diff options
Diffstat (limited to '')
4 files changed, 105 insertions, 11 deletions
diff --git a/java/sca/modules/node-impl-osgi/src/test/java/calculator/dosgi/test/OSGiTestBundles.java b/java/sca/modules/node-impl-osgi/src/test/java/calculator/dosgi/test/OSGiTestBundles.java index 610a0473e6..69ae4cada2 100644 --- a/java/sca/modules/node-impl-osgi/src/test/java/calculator/dosgi/test/OSGiTestBundles.java +++ b/java/sca/modules/node-impl-osgi/src/test/java/calculator/dosgi/test/OSGiTestBundles.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package calculator.dosgi.test; @@ -55,7 +55,7 @@ import calculator.dosgi.operations.SubtractService; import calculator.dosgi.operations.SubtractServiceImpl; /** - * + * * Utility class to create OSGi bundles * * @version $Rev$ $Date$ @@ -63,17 +63,17 @@ import calculator.dosgi.operations.SubtractServiceImpl; public class OSGiTestBundles { private static class InvocationHandlerImpl implements InvocationHandler { private Object instance; - + public InvocationHandlerImpl(Object instance) { super(); this.instance = instance; } - + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Method m = instance.getClass().getMethod(method.getName(), method.getParameterTypes()); return m.invoke(instance, args); } - + } private static String getPackageName(Class<?> cls) { @@ -271,15 +271,15 @@ public class OSGiTestBundles { DivideService.class, DivideServiceImpl.class); } - + /** * Returns a string representation of the given bundle. - * + * * @param b * @param verbose * @return */ - static String bundleStatus(Bundle bundle, boolean verbose) { + public static String bundleStatus(Bundle bundle, boolean verbose) { StringBuffer sb = new StringBuffer(); sb.append(bundle.getBundleId()).append(" ").append(bundle.getSymbolicName()); int s = bundle.getState(); @@ -309,7 +309,16 @@ public class OSGiTestBundles { return sb.toString(); } - static <T> T cast(Object obj, Class<T> cls) { + /** + * A utility to cast the object to the given interface. If the class for the object + * is loaded by a different classloader, a proxy will be created. + * + * @param <T> + * @param obj + * @param cls + * @return + */ + public static <T> T cast(Object obj, Class<T> cls) { if (cls.isInstance(obj)) { return cls.cast(obj); } else { diff --git a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/blueprint/calculator-module.xml b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/blueprint/calculator-module.xml new file mode 100644 index 0000000000..c61fc295a6 --- /dev/null +++ b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/blueprint/calculator-module.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<!-- A sample module-context.xml for OSGI RFC 124 (BluePrint Service) --> +<components xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + <component id="CalculatorComponent" class="calculator.dosgi.CalculatorServiceImpl"> + <property name="addService" ref="AddService" /> + <property name="subtractService" ref="SubtractService" /> + <property name="multiplyService" ref="MultiplyService" /> + <property name="divideService" ref="DivideService" /> + </component> + + <!-- We can derive the SCA services for the implementation.osgi --> + <service id="CalculatorService" ref="CalculatorComponent" interface="calculator.dosgi.CalculatorService"> + </service> + + <!-- We can derive the SCA references for the implementation.osgi --> + <reference id="AddService" interface="calculator.dosgi.operations.AddService"> + </reference> + <reference id="SubtractService" interface="calculator.dosgi.operations.SubtractService"> + </reference> + <reference id="MultiplyService" interface="calculator.dosgi.operations.MultiplyService"> + </reference> + <reference id="DivideService" interface="calculator.dosgi.operations.DivideService"> + </reference> + +</components>
\ No newline at end of file diff --git a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/remote-service/calculator-service-descriptions.xml b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/remote-service/calculator-service-descriptions.xml index dc456c67f1..da76d00024 100644 --- a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/remote-service/calculator-service-descriptions.xml +++ b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/OSGI-INF/remote-service/calculator-service-descriptions.xml @@ -17,7 +17,9 @@ * specific language governing permissions and limitations * under the License. --> +<!-- A consumer-side service description file for RFC 119 --> <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0" xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"> + <!-- Describe a remote OSGi service --> <service-description> <provide interface="calculator.dosgi.operations.AddService" /> <property name="service.intents">sca:SOAP sca:HTTP</property> diff --git a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/operations/OSGI-INF/blueprint/operations-module.xml b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/operations/OSGI-INF/blueprint/operations-module.xml new file mode 100644 index 0000000000..6410b55129 --- /dev/null +++ b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/operations/OSGI-INF/blueprint/operations-module.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<!-- A sample module-context.xml for OSGI RFC 124 (BluePrint Service) --> +<components xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + <component id="AddComponent" class="calculator.dosgi.operations.AddServiceImpl"> + </component> + <component id="SubtractComponent" class="calculator.dosgi.operations.SubtractServiceImpl"> + </component> + <component id="MultiplyComponent" class="calculator.dosgi.operations.MultiplyServiceImpl"> + </component> + <component id="DivideComponent" class="calculator.dosgi.operations.DivideServiceImpl"> + </component> + + <!-- We can derive the SCA services for the implementation.osgi --> + <service id="AddService" ref="AddComponent" interface="calculator.dosgi.operations.AddService"> + </service> + <service id="SubtractService" ref="SubtractComponent" interface="calculator.dosgi.operations.SubtractService"> + </service> + <service id="MultiplyService" ref="MultiplyComponent" interface="calculator.dosgi.operations.MultiplyService"> + </service> + <service id="DivideService" ref="DivideComponent" interface="calculator.dosgi.operations.DivideService"> + </service> +</components>
\ No newline at end of file |