Modified annotation service factory test in order to validate that dependency filters are properly configured from init methods.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@953564 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyService.java b/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyService.java
index c8293a8..974bb72 100644
--- a/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyService.java
+++ b/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyService.java
@@ -19,23 +19,46 @@
package org.apache.felix.dm.test.bundle.annotation.factory;
import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Map;
+import junit.framework.Assert;
+
+import org.apache.felix.dm.annotation.api.Init;
import org.apache.felix.dm.annotation.api.Property;
import org.apache.felix.dm.annotation.api.Service;
+import org.apache.felix.dm.annotation.api.ServiceDependency;
import org.apache.felix.dm.annotation.api.Start;
import org.apache.felix.dm.annotation.api.Stop;
-import org.apache.felix.dm.annotation.api.ServiceDependency;
import org.apache.felix.dm.test.bundle.annotation.sequencer.Sequencer;
+/**
+ * This service will be instantiated by our MyServiceFactory class.
+ */
@Service(factory = "MyServiceFactory", factoryConfigure = "configure", properties = { @Property(name = "foo", value = "bar") })
public class MyService implements MyServiceInterface
{
- @ServiceDependency
- Sequencer m_sequencer;
-
+ /**
+ * The configuration provided by MyServiceFactory
+ */
@SuppressWarnings("unchecked")
Dictionary m_configuration;
+ /**
+ * Our sequencer.
+ */
+ @ServiceDependency
+ Sequencer m_sequencer;
+
+ /**
+ * An extra dependency (we'll dynamically configure the filter from our init() method).
+ */
+ @ServiceDependency(name="extra")
+ Runnable m_extra;
+
+ /**
+ * This is the first method called: we are provided with the MyServiceFactory configuration.
+ */
public void configure(Dictionary<?, ?> configuration)
{
if (m_configuration == null)
@@ -48,12 +71,32 @@
}
}
+ /**
+ * Initialize our Service: we'll dynamically configure our dependency whose name is "extra".
+ */
+ @Init
+ Map init()
+ {
+ return new HashMap() {{
+ put("extra.filter", "(foo=bar2)");
+ put("extra.required", "true");
+ }};
+ }
+
+ /**
+ * our Service is starting: at this point, all required dependencies have been injected.
+ */
@Start
public void start()
{
+ Assert.assertNotNull("Extra dependency not injected", m_extra);
+ m_extra.run();
m_sequencer.step(2);
}
+ /**
+ * Our service is stopping.
+ */
@Stop
public void stop()
{
diff --git a/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyServiceFactory.java b/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyServiceFactory.java
index f688e00..b132488 100644
--- a/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyServiceFactory.java
+++ b/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/factory/MyServiceFactory.java
@@ -26,8 +26,8 @@
import junit.framework.Assert;
import org.apache.felix.dm.annotation.api.Service;
-import org.apache.felix.dm.annotation.api.Start;
import org.apache.felix.dm.annotation.api.ServiceDependency;
+import org.apache.felix.dm.annotation.api.Start;
import org.apache.felix.dm.test.bundle.annotation.sequencer.Sequencer;
@SuppressWarnings("unchecked")
@@ -36,10 +36,10 @@
{
@ServiceDependency(filter = "(dm.factory.name=MyServiceFactory)")
Set<Dictionary> m_myServiceFactory;
-
+
@ServiceDependency
- Sequencer m_sequencer;
-
+ Sequencer m_sequencer;
+
Hashtable m_conf;
@Start