You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2014/10/23 16:49:48 UTC
svn commit: r1633827 -
/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java
Author: pderop
Date: Thu Oct 23 14:49:47 2014
New Revision: 1633827
URL: http://svn.apache.org/r1633827
Log:
added missing testcase for FELIX 2875 issue
Added:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java?rev=1633827&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java Thu Oct 23 14:49:47 2014
@@ -0,0 +1,77 @@
+package org.apache.felix.dm.itest;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
+
+public class FELIX2875_ServiceDependencyWithoutServiceNameTest extends TestBase {
+ Ensure m_e;
+
+ public void testServiceDependencyWithoutName() {
+ m_e = new Ensure();
+ DependencyManager dm = getDM();
+ Component consumer = dm.createComponent()
+ .setImplementation(new ConsumeServiceDependencyWithoutName())
+ .add(dm.createServiceDependency()
+ .setService("(provider=*)").setRequired(true)
+ .setCallbacks("add", null))
+ .add(dm.createServiceDependency()
+ .setService("(|(provider=provider1)(provider=provider2))").setRequired(true)
+ .setAutoConfig("m_providers"));
+
+ Hashtable<String, String> props = new Hashtable<>();
+ props.put("provider", "provider1");
+ Component provider1 = dm.createComponent()
+ .setImplementation(new Provider1())
+ .setInterface(Provider.class.getName(), props);
+
+ props = new Hashtable<>();
+ props.put("provider", "provider2");
+ Component provider2 = dm.createComponent()
+ .setImplementation(new Provider2())
+ .setInterface(Provider.class.getName(), props);
+
+ dm.add(provider1);
+ dm.add(provider2);
+ dm.add(consumer);
+ m_e.waitForStep(5, 5000);
+ }
+
+ private class ConsumeServiceDependencyWithoutName {
+ volatile Map<Object, Dictionary<String, String>> m_providers; // autoconfig
+
+ @SuppressWarnings("unused")
+ void add(Map<String, Object> props, Object service) {
+ if ("provider1".equals(props.get("provider"))) {
+ m_e.step();
+ } else if ("provider2".equals(props.get("provider"))) {
+ m_e.step();
+ }
+ }
+
+ @SuppressWarnings("unused")
+ void start() {
+ // check if all providers have been injected in our autoconfig field.
+ for (Map.Entry<Object, Dictionary<String, String>> e : m_providers.entrySet()) {
+ if ("provider1".equals(e.getValue().get("provider"))) {
+ m_e.step();
+ } else if ("provider2".equals(e.getValue().get("provider"))) {
+ m_e.step();
+ }
+ }
+ m_e.step(5);
+ }
+ }
+
+ public interface Provider {
+ }
+
+ public class Provider1 implements Provider {
+ }
+
+ public class Provider2 implements Provider {
+ }
+}