SLING-5779 : Packaged OSGi config intermittently do not get installed before bundle start

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1767224 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 2c8bfb5..5f000c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>26</version>
+        <version>29</version>
         <relativePath/>
     </parent>
 
@@ -64,16 +64,18 @@
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <artifactId>osgi.core</artifactId>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>org.osgi.service.cm</artifactId>
+            <version>1.5.0</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.installer.core</artifactId>
-            <version>3.6.2</version>
+            <version>3.7.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
index 7205195..6d4818a 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
@@ -42,7 +42,6 @@
         return CONFIG_INSTALL_ORDER + getCompositePid();
     }
 
-    @SuppressWarnings("unchecked")
 	@Override
     public void execute(final InstallationContext ctx) {
         synchronized ( Coordinator.SHARED ) {
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java
index e0bf6ea..ea42565 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java
@@ -43,7 +43,6 @@
      * @see org.apache.sling.installer.api.tasks.InstallTask#execute(org.apache.sling.installer.api.tasks.InstallationContext)
      */
     @Override
-    @SuppressWarnings("unchecked")
     public void execute(final InstallationContext ctx) {
         synchronized ( Coordinator.SHARED ) {
             try {
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java
index 1184c20..afa7293 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java
@@ -67,7 +67,8 @@
      *
 	 * @see org.apache.sling.installer.api.tasks.InstallTaskFactory#createTask(org.apache.sling.installer.api.tasks.TaskResourceGroup)
 	 */
-	public InstallTask createTask(final TaskResourceGroup group) {
+	@Override
+    public InstallTask createTask(final TaskResourceGroup group) {
         final TaskResource toActivate = group.getActiveResource();
         if ( !toActivate.getType().equals(InstallableResource.TYPE_CONFIG) ) {
             return null;
@@ -94,7 +95,7 @@
     /**
      * @see org.osgi.service.cm.ConfigurationListener#configurationEvent(org.osgi.service.cm.ConfigurationEvent)
      */
-    @SuppressWarnings("unchecked")
+    @Override
     public void configurationEvent(final ConfigurationEvent event) {
         synchronized ( Coordinator.SHARED ) {
             final String id;
@@ -156,6 +157,7 @@
     /**
      * @see org.apache.sling.installer.api.tasks.ResourceTransformer#transform(org.apache.sling.installer.api.tasks.RegisteredResource)
      */
+    @Override
     public TransformationResult[] transform(final RegisteredResource resource) {
         if ( resource.getType().equals(InstallableResource.TYPE_PROPERTIES) ) {
             return checkConfiguration(resource);
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ServicesListener.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ServicesListener.java
index a0f1161..851e5e4 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ServicesListener.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ServicesListener.java
@@ -53,7 +53,7 @@
     private final Listener configAdminListener;
 
     /** Registration the service. */
-    private ServiceRegistration configTaskCreatorRegistration;
+    private ServiceRegistration<?> configTaskCreatorRegistration;
 
     private ConfigTaskCreator configTaskCreator;
 
@@ -75,6 +75,8 @@
                 final Hashtable<String, String> props = new Hashtable<String, String>();
                 props.put(Constants.SERVICE_DESCRIPTION, "Apache Sling Configuration Install Task Factory");
                 props.put(Constants.SERVICE_VENDOR, VENDOR);
+                props.put(InstallTaskFactory.NAME, "org.osgi.service.cm");
+                props.put(ResourceTransformer.NAME, "org.osgi.service.cm");
 
                 this.configTaskCreator = new ConfigTaskCreator(listener, configAdmin);
                 // start and register osgi installer service
@@ -112,7 +114,7 @@
 
         private final String serviceName;
 
-        private ServiceReference reference;
+        private ServiceReference<?> reference;
         private Object service;
 
         public Listener(final String serviceName) {
@@ -163,6 +165,7 @@
         /**
          * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
          */
+        @Override
         public void serviceChanged(ServiceEvent event) {
             if (event.getType() == ServiceEvent.REGISTERED ) {
                 this.retainService();