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;
}
}