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 2011/05/22 00:14:55 UTC
svn commit: r1125833 [2/2] - in /felix/trunk/dependencymanager: annotation/
annotation/doc/ annotation/src/main/java/org/apache/felix/dm/annotation/api/
annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/
annotation/src/main/java/org/ap...
Modified: felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/sequencer/Sequencer.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/sequencer/Sequencer.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/sequencer/Sequencer.java (original)
+++ felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/sequencer/Sequencer.java Sat May 21 22:14:54 2011
@@ -40,4 +40,10 @@ public interface Sequencer
* @param timeout max milliseconds to wait.
*/
void waitForStep(int step, int timeout);
+
+ /**
+ * Saves a thrown exception that occurred in a different thread. You can only save one exception
+ * at a time this way.
+ */
+ void throwable(Throwable throwable);
}
Modified: felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Consumer.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Consumer.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Consumer.java (original)
+++ felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Consumer.java Sat May 21 22:14:54 2011
@@ -18,11 +18,14 @@
*/
package org.apache.felix.dm.test.bundle.annotation.simple;
+import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.annotation.api.Inject;
import org.apache.felix.dm.annotation.api.Component;
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.test.bundle.annotation.sequencer.Sequencer;
+import org.osgi.framework.BundleContext;
/**
* Consumes a service which is provided by the {@link Producer} class.
@@ -35,15 +38,64 @@ public class Consumer
@ServiceDependency
Sequencer m_sequencer;
+
+ @Inject
+ BundleContext m_bc;
+ BundleContext m_bcNotInjected;
+
+ @Inject
+ DependencyManager m_dm;
+ DependencyManager m_dmNotInjected;
+
+ @Inject
+ org.apache.felix.dm.Component m_component;
+ org.apache.felix.dm.Component m_componentNotInjected;
@Start
protected void start() {
- m_sequencer.step(2);
+ checkInjectedFields();
+ m_sequencer.step(3);
m_runnable.run();
}
+ private void checkInjectedFields()
+ {
+ if (m_bc == null)
+ {
+ m_sequencer.throwable(new Exception("Bundle Context not injected"));
+ return;
+ }
+ if (m_bcNotInjected != null)
+ {
+ m_sequencer.throwable(new Exception("Bundle Context must not be injected"));
+ return;
+ }
+
+ if (m_dm == null)
+ {
+ m_sequencer.throwable(new Exception("DependencyManager not injected"));
+ return;
+ }
+ if (m_dmNotInjected != null)
+ {
+ m_sequencer.throwable(new Exception("DependencyManager must not be injected"));
+ return;
+ }
+
+ if (m_component == null)
+ {
+ m_sequencer.throwable(new Exception("Component not injected"));
+ return;
+ }
+ if (m_componentNotInjected != null)
+ {
+ m_sequencer.throwable(new Exception("Component must not be injected"));
+ return;
+ }
+ }
+
@Stop
protected void stop() {
- m_sequencer.step(4);
+ m_sequencer.step(6);
}
}
Modified: felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Producer.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Producer.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Producer.java (original)
+++ felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/simple/Producer.java Sat May 21 22:14:54 2011
@@ -19,32 +19,79 @@
package org.apache.felix.dm.test.bundle.annotation.simple;
import org.apache.felix.dm.annotation.api.Component;
+import org.apache.felix.dm.annotation.api.Property;
+import org.apache.felix.dm.annotation.api.Destroy;
+import org.apache.felix.dm.annotation.api.Init;
import org.apache.felix.dm.annotation.api.ServiceDependency;
import org.apache.felix.dm.annotation.api.Start;
+import org.apache.felix.dm.annotation.api.Registered;
import org.apache.felix.dm.annotation.api.Stop;
+import org.apache.felix.dm.annotation.api.Unregistered;
import org.apache.felix.dm.test.bundle.annotation.sequencer.Sequencer;
+import org.osgi.framework.ServiceRegistration;
/**
* Provides a <code>Runnable</code> service, which is required by the {@link Consumer} class.
*/
-@Component
+@Component(properties={@Property(name="foo", value="bar")})
public class Producer implements Runnable
{
@ServiceDependency
Sequencer m_sequencer;
+
+ @Init
+ protected void init()
+ {
+ // Our component is initializing (at this point: all required dependencies are injected).
+ m_sequencer.step(1);
+ }
@Start
- protected void start() {
- m_sequencer.step(1);
+ protected void start()
+ {
+ // We are about to be registered in the OSGi registry.
+ m_sequencer.step(2);
}
-
- @Stop
- protected void stop() {
+
+ public void run()
+ {
+ // the Consumer has been injected with our service, and is invoking our run() method.
+ m_sequencer.step(4);
+ }
+
+ @Registered
+ protected void started(ServiceRegistration sr)
+ {
+ // We are registered in the OSGi registry
+ if (sr == null)
+ {
+ m_sequencer.throwable(new Exception("ServiceRegistration is null"));
+ }
+ if (!"bar".equals(sr.getReference().getProperty("foo")))
+ {
+ m_sequencer.throwable(new Exception("Invalid Service Properties"));
+ }
m_sequencer.step(5);
}
+
+ @Stop
+ protected void stop()
+ {
+ // We are about to be unregistered from the OSGi registry, and we must stop.
+ m_sequencer.step(7);
+ }
+
+ @Unregistered
+ protected void stopped()
+ {
+ // We are unregistered from the OSGi registry.
+ m_sequencer.step(8);
+ }
- public void run()
+ @Destroy
+ public void destroy()
{
- m_sequencer.step(3);
+ // Our component is shutting down.
+ m_sequencer.step(9);
}
}
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AdapterAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AdapterAnnotationTest.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AdapterAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AdapterAnnotationTest.java Sat May 21 22:14:54 2011
@@ -76,12 +76,13 @@ public class AdapterAnnotationTest exten
* Check if an adapter gets injected with its adaptee in a named class field.
*/
@Test
- public void testAnnotatedAdapterAutoConfigField(BundleContext context)
+ public void testAnnotatedAdapterAutoConfigField(BundleContext context) throws Throwable
{
DependencyManager m = new DependencyManager(context);
// Provide the Sequencer to the org.apache.felix.dm.test.bundle.annotation.adapter.AdapterTest bundle
m.add(makeSequencer(m, "AdapterAutoConfigField"));
m_ensure.waitForStep(3, 10000);
+ m_ensure.ensure();
}
/**
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AnnotationBase.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AnnotationBase.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AnnotationBase.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AnnotationBase.java Sat May 21 22:14:54 2011
@@ -113,4 +113,9 @@ public class AnnotationBase extends Base
{
m_ensure.waitForStep(nr, timeout);
}
+
+ public void throwable(Throwable throwable)
+ {
+ m_ensure.throwable(throwable);
+ }
}
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AspectAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AspectAnnotationTest.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AspectAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/AspectAnnotationTest.java Sat May 21 22:14:54 2011
@@ -61,7 +61,7 @@ public class AspectAnnotationTest extend
}
@Test
- public void testAspectChain(BundleContext context)
+ public void testAspectChain(BundleContext context) throws Throwable
{
DependencyManager m = new DependencyManager(context);
// Activate service consumer
@@ -87,5 +87,6 @@ public class AspectAnnotationTest extend
m.remove(spSequencer);
// Make sure that service aspect 1 has been called in ts removed and stop callbacks
m_ensure.waitForStep(8, 10000);
+ m_ensure.ensure();
}
}
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/BundleDependencyAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/BundleDependencyAnnotationTest.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/BundleDependencyAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/BundleDependencyAnnotationTest.java Sat May 21 22:14:54 2011
@@ -80,13 +80,15 @@ public class BundleDependencyAnnotationT
/**
* Tests a Bundle Adapter, which adapts the dependency manager bundle to a "ServiceInterface" service.
* @param context
+ * @throws Throwable
*/
@Test
- public void testBundleAdapterServiceAnnotation(BundleContext context)
+ public void testBundleAdapterServiceAnnotation(BundleContext context) throws Throwable
{
DependencyManager m = new DependencyManager(context);
Properties props = new Properties() {{ put("test", "adapter"); }};
m.add(m.createComponent().setImplementation(this).setInterface(Sequencer.class.getName(), props));
m_ensure.waitForStep(3, 10000);
+ m_ensure.ensure();
}
}
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/FactoryConfigurationAdapterAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/FactoryConfigurationAdapterAnnotationTest.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/FactoryConfigurationAdapterAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/FactoryConfigurationAdapterAnnotationTest.java Sat May 21 22:14:54 2011
@@ -69,7 +69,7 @@ public class FactoryConfigurationAdapter
}
@Test
- public void testFactoryConfigurationAdapterAnnotation(BundleContext context)
+ public void testFactoryConfigurationAdapterAnnotation(BundleContext context) throws Throwable
{
DependencyManager m = new DependencyManager(context);
// Provide the Sequencer to the adapter bundle service (see main/src/.../factoryconfadapter/*.java).
@@ -89,7 +89,8 @@ public class FactoryConfigurationAdapter
// Remove configuration.
cf.delete();
// Check if ServiceProvider has been stopped.
- m_ensure.waitForStep(5, 1000);
+ m_ensure.waitForStep(6, 1000);
+ m_ensure.ensure();
}
catch (IOException e)
{
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/ResourceAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/ResourceAnnotationTest.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/ResourceAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/ResourceAnnotationTest.java Sat May 21 22:14:54 2011
@@ -94,12 +94,13 @@ public class ResourceAnnotationTest exte
* @param context
*/
@Test
- public void testResourceAdapterAnnotation(BundleContext context)
+ public void testResourceAdapterAnnotation(BundleContext context) throws Throwable
{
DependencyManager m = new DependencyManager(context);
Properties props = new Properties() {{ put("test", "adapter"); }};
m.add(m.createComponent().setImplementation(this).setInterface(Sequencer.class.getName(), props));
super.stopBundle("ResourceTest", context);
m_ensure.waitForStep(2, 10000);
+ m_ensure.ensure();
}
}
Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/SimpleAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/SimpleAnnotationTest.java?rev=1125833&r1=1125832&r2=1125833&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/SimpleAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/annotation/SimpleAnnotationTest.java Sat May 21 22:14:54 2011
@@ -61,7 +61,7 @@ public class SimpleAnnotationTest extend
}
@Test
- public void testSimpleAnnotations(BundleContext context)
+ public void testSimpleAnnotations(BundleContext context) throws Throwable
{
DependencyManager m = new DependencyManager(context);
// We provide ourself as a "Sequencer" service to the annotated bundles.
@@ -71,6 +71,7 @@ public class SimpleAnnotationTest extend
// Stop our annotation bundle.
stopBundle("SimpleAnnotationTest", context);
// And check if components have been deactivated orderly.
- m_ensure.waitForStep(5, 10000);
+ m_ensure.waitForStep(9, 10000);
+ m_ensure.ensure();
}
}