added annotation support for BundleAdapterService. Fixed wrong default value for "propagate" BundleDependency attribute

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@918680 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
index 4a53343..d324513 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
@@ -160,6 +160,10 @@
                         service = createAdapterService(b, dm, parser);
                         break;
                         
+                    case BundleAdapterService:
+                        service = createBundleAdapterService(b, dm, parser);
+                        break;
+
                     case ServiceDependency:
                         checkServiceParsed(service);
                         service.add(createServiceDependency(b, dm, parser, false));
@@ -362,6 +366,28 @@
     }
 
     /**
+     * Creates a Bundle Adapter Service.
+     * @param b
+     * @param dm
+     * @param parser
+     * @return
+     */
+    private Service createBundleAdapterService(Bundle b, DependencyManager dm, DescriptorParser parser)
+        throws ClassNotFoundException
+    {
+        int stateMask = parser.getInt(DescriptorParam.stateMask, Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE);
+        String filter = parser.getString(DescriptorParam.filter, null);
+        Class<?> adapterImpl = b.loadClass(parser.getString(DescriptorParam.impl));
+        String service = parser.getString(DescriptorParam.service);
+        Dictionary<String, String> properties = parser.getDictionary(DescriptorParam.properties, null);
+        boolean propagate = "true".equals(parser.getString(DescriptorParam.propagate, "false"));
+        Service srv = dm.createBundleAdapterService(stateMask, filter, adapterImpl, service, properties, propagate);  
+        setServiceCallbacks(srv, parser);
+        setServiceComposition(srv, parser);
+        return srv;
+    }
+
+    /**
      * Creates a ServiceDependency that we parsed from a component descriptor "ServiceDependency" entry.
      * @param b
      * @param dm
@@ -486,7 +512,7 @@
         }
 
         // propagate
-        bd.setPropagate("true".equals(parser.getString(DescriptorParam.stateMask, "true")));
+        bd.setPropagate("true".equals(parser.getString(DescriptorParam.stateMask, "false")));
         return bd;
     }
 }