Fixed bug when parsing BundleDependency's propagate attribute. Added ResourceAdapter and ResourceDependency annotations.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@919864 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 deaf0c0..903333e 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
@@ -31,6 +31,7 @@
import org.apache.felix.dm.dependencies.BundleDependency;
import org.apache.felix.dm.dependencies.ConfigurationDependency;
import org.apache.felix.dm.dependencies.Dependency;
+import org.apache.felix.dm.dependencies.ResourceDependency;
import org.apache.felix.dm.dependencies.ServiceDependency;
import org.apache.felix.dm.dependencies.TemporalServiceDependency;
import org.apache.felix.dm.service.Service;
@@ -164,6 +165,10 @@
service = createBundleAdapterService(b, dm, parser);
break;
+ case ResourceAdapterService:
+ service = createResourceAdapterService(b, dm, parser);
+ break;
+
case ServiceDependency:
checkServiceParsed(service);
service.add(createServiceDependency(b, dm, parser, false));
@@ -183,6 +188,11 @@
checkServiceParsed(service);
service.add(createBundleDependency(b, dm, parser));
break;
+
+ case ResourceDependency:
+ checkServiceParsed(service);
+ service.add(createResourceDependency(b, dm, parser));
+ break;
}
}
@@ -386,6 +396,27 @@
}
/**
+ * Creates a Resource Adapter Service.
+ * @param b
+ * @param dm
+ * @param parser
+ * @return
+ */
+ private Service createResourceAdapterService(Bundle b, DependencyManager dm, DescriptorParser parser)
+ throws ClassNotFoundException
+ {
+ String filter = parser.getString(DescriptorParam.filter, null);
+ Class<?> impl = b.loadClass(parser.getString(DescriptorParam.impl));
+ String service = parser.getString(DescriptorParam.service);
+ Class<?> serviceClass = b.loadClass(service);
+ Dictionary<String, String> properties = parser.getDictionary(DescriptorParam.properties, null);
+ boolean propagate = "true".equals(parser.getString(DescriptorParam.propagate, "false"));
+ Service srv = dm.createResourceAdapterService(filter, serviceClass, properties, impl, propagate);
+ setCommonServiceParams(srv, parser);
+ return srv;
+ }
+
+ /**
* Creates a ServiceDependency that we parsed from a component descriptor "ServiceDependency" entry.
* @param b
* @param dm
@@ -510,7 +541,33 @@
}
// propagate
- bd.setPropagate("true".equals(parser.getString(DescriptorParam.stateMask, "false")));
+ bd.setPropagate("true".equals(parser.getString(DescriptorParam.propagate, "false")));
return bd;
}
-}
+
+ private Dependency createResourceDependency(Bundle b, DependencyManager dm,
+ DescriptorParser parser)
+ {
+ ResourceDependency rd = dm.createResourceDependency();
+
+ // Set add/changed/removed
+ String added = parser.getString(DescriptorParam.added, null);
+ String changed = parser.getString(DescriptorParam.changed, null);
+ String removed = parser.getString(DescriptorParam.removed, null);
+ rd.setCallbacks(added, changed, removed);
+
+ // required
+ rd.setRequired("true".equals(parser.getString(DescriptorParam.required, "true")));
+
+ // filter
+ String filter = parser.getString(DescriptorParam.filter, null);
+ if (filter != null)
+ {
+ rd.setFilter(filter);
+ }
+
+ // propagate
+ rd.setPropagate("true".equals(parser.getString(DescriptorParam.propagate, "false")));
+ return rd;
+ }
+}
\ No newline at end of file
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java
index 70f890a..da8d2c0 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java
@@ -28,8 +28,10 @@
AspectService,
AdapterService,
BundleAdapterService,
+ ResourceAdapterService,
ServiceDependency,
TemporalServiceDependency,
ConfigurationDependency,
- BundleDependency
+ BundleDependency,
+ ResourceDependency
}