[jboss-cvs] JBossAS SVN: r97507 - projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Dec 7 09:36:31 EST 2009


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);




More information about the jboss-cvs-commits mailing list