extended the test to include adding instance bound required dependencies to an aspect
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@888379 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/test/src/test/java/org/apache/felix/dm/test/AspectTest.java b/dependencymanager/test/src/test/java/org/apache/felix/dm/test/AspectTest.java
index 3bf4140..817861b 100644
--- a/dependencymanager/test/src/test/java/org/apache/felix/dm/test/AspectTest.java
+++ b/dependencymanager/test/src/test/java/org/apache/felix/dm/test/AspectTest.java
@@ -53,19 +53,22 @@
Ensure e = new Ensure();
// create a service provider and consumer
Service sp = m.createService().setImplementation(new ServiceProvider(e)).setInterface(ServiceInterface.class.getName(), null);
+ Service sp2 = m.createService().setImplementation(new ServiceProvider2(e)).setInterface(ServiceInterface2.class.getName(), null);
Service sc = m.createService().setImplementation(new ServiceConsumer(e)).add(m.createServiceDependency().setService(ServiceInterface.class).setRequired(true));
Service sa = m.createAspectService(ServiceInterface.class, "(|(!(" + Constants.SERVICE_RANKING + "=*))(" + Constants.SERVICE_RANKING + "<=0))", new ServiceAspect(e), new Properties() {{ put(Constants.SERVICE_RANKING, Integer.valueOf(1)); }} );
m.add(sc);
m.add(sp);
+ m.add(sp2);
e.waitForStep(3, 2000);
m.add(sa);
e.waitForStep(4, 2000);
e.step(5);
e.waitForStep(8, 2000);
m.remove(sa);
- e.waitForStep(9, 2000);
- e.step(10);
- e.waitForStep(11, 2000);
+ e.waitForStep(10, 2000);
+ e.step(11);
+ e.waitForStep(12, 2000);
+ m.remove(sp2);
m.remove(sp);
m.remove(sc);
}
@@ -73,6 +76,22 @@
static interface ServiceInterface {
public void invoke(Runnable run);
}
+
+ static interface ServiceInterface2 {
+ public void invoke();
+ }
+
+ static class ServiceProvider2 implements ServiceInterface2 {
+ private final Ensure m_ensure;
+
+ public ServiceProvider2(Ensure ensure) {
+ m_ensure = ensure;
+ }
+
+ public void invoke() {
+ m_ensure.step(8);
+ }
+ }
static class ServiceProvider implements ServiceInterface {
private final Ensure m_ensure;
@@ -87,20 +106,27 @@
static class ServiceAspect implements ServiceInterface {
private final Ensure m_ensure;
private volatile ServiceInterface m_originalService;
+ private volatile ServiceInterface2 m_injectedService;
+ private volatile Service m_service;
+ private volatile DependencyManager m_manager;
public ServiceAspect(Ensure e) {
m_ensure = e;
}
+ public void init() {
+ m_service.add(m_manager.createServiceDependency().setInstanceBound(true).setRequired(true).setService(ServiceInterface2.class));
+ }
public void start() {
m_ensure.step(4);
}
public void invoke(Runnable run) {
m_ensure.step(6);
m_originalService.invoke(run);
+ m_injectedService.invoke();
}
public void stop() {
- m_ensure.step(9);
+ m_ensure.step(10);
}
}
@@ -123,9 +149,9 @@
m_ensure.step(3);
m_ensure.waitForStep(5, 2000);
m_service.invoke(Ensure.createRunnableStep(m_ensure, 7));
- m_ensure.step(8);
- m_ensure.waitForStep(10, 2000);
- m_service.invoke(Ensure.createRunnableStep(m_ensure, 11));
+ m_ensure.step(9);
+ m_ensure.waitForStep(11, 2000);
+ m_service.invoke(Ensure.createRunnableStep(m_ensure, 12));
}
}
}