[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