Author: alesj
Date: 2009-12-07 09:36:31 -0500 (Mon, 07 Dec 2009)
New Revision: 97507
Modified:
projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java
Log:
Test mixed SF usage.
Modified:
projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java
===================================================================
---
projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java 2009-12-07
13:29:53 UTC (rev 97506)
+++
projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java 2009-12-07
14:36:31 UTC (rev 97507)
@@ -301,6 +301,74 @@
}
}
+ public void testServiceFactoryMix() throws Throwable
+ {
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("C1",
C.class.getName());
+ builder.addPropertyMetaData("a", builder.createInject("A"));
+ BeanMetaData bmd = builder.getBeanMetaData();
+ Deployment bean1 = addBean("beanA1", C.class, bmd, A.class, D.class);
+ try
+ {
+ Bundle bundle1 = assembleBundle("simple2",
"/bundles/service/service-bundle4");
+ try
+ {
+ bundle1.start();
+ BundleContext bundleContext1 = bundle1.getBundleContext();
+ assertNotNull(bundleContext1);
+
+ Class<?> dClass = bundle1.loadClass(D.class.getName());
+ Object d = dClass.newInstance();
+ Hashtable<String, Object> table = new Hashtable<String,
Object>();
+ table.put("service.alias.1", "A");
+ ServiceRegistration reg1 =
bundleContext1.registerService(A.class.getName(), d, table);
+ assertNotNull(reg1);
+ ServiceReference refA = reg1.getReference();
+ assertNotNull(refA);
+
+ Object a = null;
+ try
+ {
+ checkComplete();
+
+ Object c1 = getBean("C1");
+ a = invoke(c1, "getA", "C1");
+
+ ServiceReference refD =
bundleContext1.getServiceReference(C.class.getName());
+ Bundle beanBundle = refD.getBundle();
+ assertNotNull(beanBundle);
+ BundleContext beanBC = beanBundle.getBundleContext();
+ assertNotNull(beanBC);
+ Object service = beanBC.getService(refA);
+ assertSame(a, service);
+
+ KernelControllerContext cCC = getControllerContext("C1",
null);
+ change(cCC, ControllerState.INSTANTIATED);
+
+ List as = assertInstanceOf(invoke(d, "getAs", "A"),
List.class);
+ assertNotNull(as);
+ assertEmpty(as); // SF is still in use
+ }
+ finally
+ {
+ reg1.unregister();
+ }
+
+ List as = assertInstanceOf(invoke(d, "getAs", "A"),
List.class);
+ assertNotNull(as);
+ assertEquals(1, as.size());
+ assertTrue(as.contains(a));
+ }
+ finally
+ {
+ uninstall(bundle1);
+ }
+ }
+ finally
+ {
+ undeploy(bean1);
+ }
+ }
+
public void testFiltering() throws Throwable
{
Deployment bean = addBean("beanA", A.class);
Show replies by date