[jboss-osgi-commits] JBoss-OSGI SVN: r97517 - in projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service: support/a and 1 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Mon Dec 7 16:07:49 EST 2009


Author: alesj
Date: 2009-12-07 16:07:48 -0500 (Mon, 07 Dec 2009)
New Revision: 97517

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/support/a/A.java
   projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/c/C.java
Log:
Test invoke dispatch on osgi service.

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 17:23:56 UTC (rev 97516)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java	2009-12-07 21:07:48 UTC (rev 97517)
@@ -106,7 +106,7 @@
       }
    }
 
-   private static Object invoke(Object target, String getter, String name) throws Throwable
+   private static Object getter(Object target, String getter, String name) throws Throwable
    {
       assertNotNull("Target " + name + " is not null", target);
       Class<?> clazz = target.getClass();
@@ -114,6 +114,15 @@
       return m.invoke(target);
    }
 
+   private static Object setter(Object target, String setter, Object value, String name) throws Throwable
+   {
+      assertNotNull("Target " + name + " is not null", target);
+      assertNotNull("Value is not null", value);
+      Class<?> clazz = target.getClass();
+      Method m = clazz.getDeclaredMethod(setter, value.getClass());
+      return m.invoke(target, value);
+   }
+
    public void testInjectionToMC() throws Throwable
    {
       BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("C", C.class.getName());
@@ -140,7 +149,7 @@
                checkComplete();
 
                Object c = getBean("C");
-               assertSame(a, invoke(c, "getA", "C"));
+               assertSame(a, getter(c, "getA", "C"));
 
                ServiceReference ref1 = bundleContext1.getServiceReference(A.class.getName());
                assertUsingBundles(ref1, LazyBundle.getBundle(getDeploymentUnit(bean)));
@@ -199,7 +208,7 @@
                checkComplete();
 
                Object c = getBean("C");
-               assertSame(a, invoke(c, "getA", "C"));
+               assertSame(a, getter(c, "getA", "C"));
 
                ServiceReference ref1 = bundleContext1.getServiceReference(A.class.getName());
                assertUsingBundles(ref1, LazyBundle.getBundle(getDeploymentUnit(bean)));
@@ -230,6 +239,53 @@
       }
    }
 
+   public void testInvokeDispatch() throws Throwable
+   {
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("C", C.class.getName());
+      builder.addPropertyMetaData("msg", builder.createInject("A", "msg"));
+      builder.addInstall("calc", "A", int.class.getName(), 123);
+      BeanMetaData bmd = builder.getBeanMetaData();
+      Deployment bean = addBean("beanA", C.class, bmd, A.class);
+      try
+      {
+         Bundle bundle1 = assembleBundle("simple2", "/bundles/service/service-bundle3");
+         try
+         {
+            bundle1.start();
+            BundleContext bundleContext1 = bundle1.getBundleContext();
+            assertNotNull(bundleContext1);
+
+            Class<?> aClass = bundle1.loadClass(A.class.getName());
+            Object a = aClass.newInstance();
+            setter(a, "setMsg", "HelloWorld!", "A");
+            Hashtable<String, Object> table = new Hashtable<String, Object>();
+            table.put("service.alias.1", "A");
+            ServiceRegistration reg1 = bundleContext1.registerService(A.class.getName(), a, table);
+            assertNotNull(reg1);
+            try
+            {
+               checkComplete();
+
+               Object c = getBean("C");
+               assertSame(getter(a, "getMsg", "A"), getter(c, "getMsg", "C"));
+               assertEquals(123, getter(a, "getX", "A"));
+            }
+            finally
+            {
+               reg1.unregister();
+            }
+         }
+         finally
+         {
+            uninstall(bundle1);
+         }
+      }
+      finally
+      {
+         undeploy(bean);
+      }
+   }
+
    public void testServiceFactoryInjection() throws Throwable
    {
       BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("C1", C.class.getName());
@@ -265,13 +321,13 @@
                   checkComplete();
 
                   Object c1 = getBean("C1");
-                  a1 = invoke(c1, "getA", "C1");
-                  Object msg1 = invoke(a1, "getMsg", "A1");
+                  a1 = getter(c1, "getA", "C1");
+                  Object msg1 = getter(a1, "getMsg", "A1");
                   assertEquals(msg1, getBundle(bean1).getSymbolicName());
 
                   Object c2 = getBean("C2");
-                  a2 = invoke(c2, "getA", "C2");
-                  Object msg2 = invoke(a2, "getMsg", "A2");
+                  a2 = getter(c2, "getA", "C2");
+                  Object msg2 = getter(a2, "getMsg", "A2");
                   assertEquals(msg2, getBundle(bean2).getSymbolicName());
                }
                finally
@@ -279,7 +335,7 @@
                   reg1.unregister();
                }
 
-               List as = assertInstanceOf(invoke(d, "getAs", "A"), List.class);
+               List as = assertInstanceOf(getter(d, "getAs", "A"), List.class);
                assertNotNull(as);
                assertEquals(2, as.size());
                assertTrue(as.contains(a1));
@@ -331,7 +387,7 @@
                   checkComplete();
 
                   Object c1 = getBean("C1");
-                  a = invoke(c1, "getA", "C1");
+                  a = getter(c1, "getA", "C1");
 
                   ServiceReference refD = bundleContext1.getServiceReference(C.class.getName());
                   Bundle beanBundle = refD.getBundle();
@@ -344,7 +400,7 @@
                   KernelControllerContext cCC = getControllerContext("C1", null);
                   change(cCC, ControllerState.INSTANTIATED);
 
-                  List as = assertInstanceOf(invoke(d, "getAs", "A"), List.class);
+                  List as = assertInstanceOf(getter(d, "getAs", "A"), List.class);
                   assertNotNull(as);
                   assertEmpty(as); // SF is still in use
                }
@@ -353,7 +409,7 @@
                   reg1.unregister();
                }
 
-               List as = assertInstanceOf(invoke(d, "getAs", "A"), List.class);
+               List as = assertInstanceOf(getter(d, "getAs", "A"), List.class);
                assertNotNull(as);
                assertEquals(1, as.size());
                assertTrue(as.contains(a));

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/a/A.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/a/A.java	2009-12-07 17:23:56 UTC (rev 97516)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/a/A.java	2009-12-07 21:07:48 UTC (rev 97517)
@@ -30,9 +30,25 @@
 public class A
 {
    public String msg;
+   private int x;
 
    public String getMsg()
    {
       return msg;
    }
+
+   public void setMsg(String msg)
+   {
+      this.msg = msg;
+   }
+
+   public void calc(int x)
+   {
+      this.x = x;
+   }
+
+   public int getX()
+   {
+      return x;
+   }
 }

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/c/C.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/c/C.java	2009-12-07 17:23:56 UTC (rev 97516)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/src/test/java/org/jboss/test/osgi/service/support/c/C.java	2009-12-07 21:07:48 UTC (rev 97517)
@@ -29,6 +29,7 @@
 public class C
 {
    private A a;
+   private String msg;
 
    public C()
    {
@@ -48,4 +49,14 @@
    {
       this.a = a;
    }
+
+   public String getMsg()
+   {
+      return msg;
+   }
+
+   public void setMsg(String msg)
+   {
+      this.msg = msg;
+   }
 }



More information about the jboss-osgi-commits mailing list