Add systemserverclasspath_fragments property to apex.

- All contents of the fragment are added as java_lib dependencies.
- Generated classpaths.proto is added into etc as required.

Bug: 180105615
Test: m nothing
Change-Id: I8e8e8b019c4ca2909182f205a47deffa946de6da
diff --git a/java/systemserver_classpath_fragment.go b/java/systemserver_classpath_fragment.go
index 4e65c05..a505c6d 100644
--- a/java/systemserver_classpath_fragment.go
+++ b/java/systemserver_classpath_fragment.go
@@ -67,14 +67,19 @@
 	}).(android.ConfiguredJarList)
 }
 
-type systemServerClasspathModule struct {
+type SystemServerClasspathModule struct {
 	android.ModuleBase
+	android.ApexModuleBase
 
 	ClasspathFragmentBase
 
 	properties systemServerClasspathFragmentProperties
 }
 
+func (s *SystemServerClasspathModule) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error {
+	return nil
+}
+
 type systemServerClasspathFragmentProperties struct {
 	// The contents of this systemserverclasspath_fragment, could be either java_library, or java_sdk_library.
 	//
@@ -83,14 +88,15 @@
 }
 
 func systemServerClasspathFactory() android.Module {
-	m := &systemServerClasspathModule{}
+	m := &SystemServerClasspathModule{}
 	m.AddProperties(&m.properties)
+	android.InitApexModule(m)
 	initClasspathFragment(m, SYSTEMSERVERCLASSPATH)
 	android.InitAndroidArchModule(m, android.DeviceSupported, android.MultilibCommon)
 	return m
 }
 
-func (s *systemServerClasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+func (s *SystemServerClasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
 	if len(s.properties.Contents) == 0 {
 		ctx.PropertyErrorf("contents", "empty contents are not allowed")
 	}
@@ -98,7 +104,7 @@
 	s.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, configuredJarListToClasspathJars(ctx, s.ClasspathFragmentToConfiguredJarList(ctx)))
 }
 
-func (s *systemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx android.ModuleContext) android.ConfiguredJarList {
+func (s *SystemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx android.ModuleContext) android.ConfiguredJarList {
 	// TODO(satayev): populate with actual content
 	return android.EmptyConfiguredJarList()
 }
@@ -114,7 +120,7 @@
 	return tag == systemServerClasspathFragmentContentDepTag
 }
 
-func (s *systemServerClasspathModule) ComponentDepsMutator(ctx android.BottomUpMutatorContext) {
+func (s *SystemServerClasspathModule) ComponentDepsMutator(ctx android.BottomUpMutatorContext) {
 	module := ctx.Module()
 
 	for _, name := range s.properties.Contents {