added support for annotated adapter services
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@912252 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 79d2b87..14d14c1 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
@@ -155,6 +155,10 @@
service = createAspectService(b, dm, parser);
break;
+ case AdapterService:
+ service = createAdapterService(b, dm, parser);
+ break;
+
case ServiceDependency:
checkServiceParsed(service);
service.add(createServiceDependency(b, dm, parser, false));
@@ -329,6 +333,28 @@
}
/**
+ * Creates an Adapter Service.
+ * @param b
+ * @param dm
+ * @param parser
+ * @return
+ */
+ private Service createAdapterService(Bundle b, DependencyManager dm, DescriptorParser parser)
+ throws ClassNotFoundException
+ {
+ Class<?> adapterImpl = b.loadClass(parser.getString(DescriptorParam.impl));
+ Class<?> adapterService = b.loadClass(parser.getString(DescriptorParam.adapterService));
+ Dictionary<String, String> adapterProperties = parser.getDictionary(DescriptorParam.adapterProperties, null);
+ Class<?> adapteeService = b.loadClass(parser.getString(DescriptorParam.adapteeService));
+ String adapteeFilter = parser.getString(DescriptorParam.adapteeFilter, null);
+
+ Service service = dm.createAdapterService(adapteeService, adapteeFilter, adapterService, adapterImpl, adapterProperties);
+ setServiceCallbacks(service, parser);
+ setServiceComposition(service, parser);
+ return service;
+ }
+
+ /**
* Creates a ServiceDependency that we parsed from a component descriptor "ServiceDependency" entry.
* @param b
* @param dm
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 ac8125c..4d5de4c 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
@@ -26,6 +26,7 @@
{
Service,
AspectService,
+ AdapterService,
ServiceDependency,
TemporalServiceDependency,
ConfigurationDependency
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java
index 5fd0dc9..4476adc 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java
@@ -90,7 +90,19 @@
updated,
/* TemporalServiceDependency attribute for the timeout (the parsed value is a String) */
- timeout;
+ timeout,
+
+ /* AdapterService attribute for the adapter interface (the parsed value is a String) */
+ adapterService,
+
+ /* AdapterService attribute for the adapter service properties (the parsed value is a Hashtable) */
+ adapterProperties,
+
+ /* AdapterService attribute for the adaptee service (the parsed value is a String) */
+ adapteeService,
+
+ /* AdapterService attribute for the adaptee service filter (the parsed value is a String) */
+ adapteeFilter;
/**
* Indicates if a given attribute is a Service attribute.
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java
index 4fb3d98..649750a 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java
@@ -56,7 +56,8 @@
* params := paramName '=' paramValue ( ';' paramName '=' paramValue )*
*
* paramName := init | start | stop | destroy | impl | provide | properties | factory | factoryMethod | composition | service | filter |
- * defaultImpl | required | added | changed | removed | autoConfig | pid | propagate | updated | timeout
+ * defaultImpl | required | added | changed | removed | autoConfig | pid | propagate | updated | timeout |
+ * adapterService | adapterProperties | adapteeService | adapteeFilter
* init := 'init'
* start := 'start'
* stop := 'stop'
@@ -79,7 +80,11 @@
* propagate := 'propagate'
* updated := 'updated'
* timeout := 'timeout'
- *
+ * adapterService := 'adapterService'
+ * adapterProperties := 'adapterProperties'
+ * adapteeService := 'adapteeService'
+ * adapteeFilter := 'adapteeFilter'
+ *
* paramValue := strings | attributes
* strings := string ( ',' string )*
* attributes := string ':' string ( ',' string : string )*