You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/05/04 15:03:44 UTC
svn commit: r535224 - in /incubator/tuscany/java/sca/modules/binding-rmi/src:
main/java/org/apache/tuscany/binding/rmi/
main/java/org/apache/tuscany/binding/rmi/impl/
main/java/org/apache/tuscany/binding/rmi/xml/ test/java/helloworld/
test/java/org/apa...
Author: svkrish
Date: Fri May 4 06:03:42 2007
New Revision: 535224
URL: http://svn.apache.org/viewvc?view=rev&rev=535224
Log:
Fixed to work with the new runtime SPIs
Added:
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java
- copied, changed from r535105, incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/DefaultRMIBindingFactory.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingImpl.java
- copied, changed from r535105, incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/RMIBindingImpl.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingInterceptor.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java
Removed:
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIInvoker.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReferenceBinding.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIServiceBinding.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/
Modified:
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingFactory.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java
incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldImpl.java
incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiImpl.java
incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiService.java
incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldService.java
incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java
Copied: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java (from r535105, incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/DefaultRMIBindingFactory.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java?view=diff&rev=535224&p1=incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/DefaultRMIBindingFactory.java&r1=535105&p2=incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/DefaultRMIBindingFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java Fri May 4 06:03:42 2007
@@ -16,10 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.binding.rmi.impl;
+package org.apache.tuscany.binding.rmi;
-import org.apache.tuscany.binding.rmi.RMIBinding;
-import org.apache.tuscany.binding.rmi.RMIBindingFactory;
+import org.apache.tuscany.rmi.RMIHostExtensionPoint;
/**
* A factory for the WSDL model.
@@ -27,9 +26,14 @@
* @version $Rev: 526508 $ $Date: 2007-04-08 07:42:42 +0530 (Sun, 08 Apr 2007) $
*/
public class DefaultRMIBindingFactory implements RMIBindingFactory {
-
- public RMIBinding createWebServiceBinding() {
- return new RMIBindingImpl();
+ private RMIHostExtensionPoint rmiHost = null;
+
+ public DefaultRMIBindingFactory(RMIHostExtensionPoint rmiHost) {
+ this.rmiHost = rmiHost;
+ }
+
+ public RMIBinding createRMIBinding() {
+ return new RMIBindingProvider(rmiHost);
}
}
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingFactory.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingFactory.java Fri May 4 06:03:42 2007
@@ -28,6 +28,6 @@
*
* @return a new RMI binding
*/
- RMIBinding createWebServiceBinding();
+ RMIBinding createRMIBinding();
}
Copied: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingImpl.java (from r535105, incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/RMIBindingImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingImpl.java?view=diff&rev=535224&p1=incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/RMIBindingImpl.java&r1=535105&p2=incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingImpl.java&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/impl/RMIBindingImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingImpl.java Fri May 4 06:03:42 2007
@@ -14,11 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.tuscany.binding.rmi.impl;
+package org.apache.tuscany.binding.rmi;
import org.apache.tuscany.assembly.impl.BindingImpl;
-import org.apache.tuscany.binding.rmi.RMIBinding;
-import org.apache.tuscany.binding.rmi.RMIBindingConstants;
/**
* Represents a binding to an RMI service.
Added: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingInterceptor.java?view=auto&rev=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingInterceptor.java (added)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingInterceptor.java Fri May 4 06:03:42 2007
@@ -0,0 +1,103 @@
+/**
+ * * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ */
+package org.apache.tuscany.binding.rmi;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.Remote;
+
+import org.apache.tuscany.rmi.RMIHostException;
+import org.apache.tuscany.rmi.RMIHostExtensionPoint;
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.Message;
+
+public class RMIBindingInterceptor implements Interceptor {
+ private RMIHostExtensionPoint rmiHost;
+ private String host;
+ private String port;
+ private String svcName;
+ private Method remoteMethod;
+ private Remote proxy;
+
+ private Interceptor next;
+
+ public RMIBindingInterceptor(RMIHostExtensionPoint rmiHost, String host, String port, String svcName, Method remoteMethod) {
+ this.rmiHost = rmiHost;
+ this.remoteMethod = remoteMethod;
+ this.host = host;
+ this.port = port;
+ this.svcName = svcName;
+ }
+
+ public Message invoke(Message msg) throws InvocationRuntimeException {
+ try {
+ Object resp = invokeTarget((Object[])msg.getBody());
+ msg.setBody(resp);
+ } catch (InvocationTargetException e) {
+ msg.setBodyWithFault(e.getCause());
+ } catch (Throwable e) {
+ msg.setBodyWithFault(e);
+ }
+ return msg;
+ }
+
+
+ public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ try {
+ if (proxy == null) {
+ proxy = rmiHost.findService(host, port, svcName);
+ // proxy = Naming.lookup(serviceURI);
+ }
+ remoteMethod = proxy.getClass().getMethod(remoteMethod.getName(), remoteMethod.getParameterTypes());
+
+ if (payload != null && !payload.getClass().isArray()) {
+ return remoteMethod.invoke(proxy, payload);
+ } else {
+ return remoteMethod.invoke(proxy, (Object[])payload);
+
+ }
+ } catch (RMIHostException e) {
+ // the method we are passed must be accessible
+ throw new AssertionError(e);
+ } catch (IllegalAccessException e) {
+ // the method we are passed must be accessible
+ throw new AssertionError(e);
+ } catch (NoSuchMethodException e) {
+ throw new AssertionError(e);
+ }
+
+ }
+
+ @Override
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
+ public Interceptor getNext() {
+ return next;
+ }
+
+ public void setNext(Interceptor next) {
+ this.next = next;
+ }
+
+ public boolean isOptimizable() {
+ return false;
+ }
+
+}
Added: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java?view=auto&rev=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java (added)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java Fri May 4 06:03:42 2007
@@ -0,0 +1,277 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ */
+
+package org.apache.tuscany.binding.rmi;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.rmi.Remote;
+import java.rmi.server.UnicastRemoteObject;
+
+import net.sf.cglib.asm.ClassWriter;
+import net.sf.cglib.asm.Constants;
+import net.sf.cglib.asm.Type;
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
+import org.apache.tuscany.assembly.Component;
+import org.apache.tuscany.assembly.ComponentReference;
+import org.apache.tuscany.assembly.ComponentService;
+import org.apache.tuscany.core.ReferenceBindingActivator;
+import org.apache.tuscany.core.ReferenceBindingProvider;
+import org.apache.tuscany.core.RuntimeComponentService;
+import org.apache.tuscany.core.RuntimeWire;
+import org.apache.tuscany.core.ServiceBindingActivator;
+import org.apache.tuscany.core.ServiceBindingProvider;
+import org.apache.tuscany.core.component.SimpleWorkContext;
+import org.apache.tuscany.interfacedef.Interface;
+import org.apache.tuscany.interfacedef.InterfaceContract;
+import org.apache.tuscany.interfacedef.Operation;
+import org.apache.tuscany.interfacedef.java.JavaInterface;
+import org.apache.tuscany.interfacedef.java.impl.JavaInterfaceUtil;
+import org.apache.tuscany.rmi.RMIHostException;
+import org.apache.tuscany.rmi.RMIHostExtensionPoint;
+import org.apache.tuscany.spi.Scope;
+import org.apache.tuscany.spi.bootstrap.ComponentNames;
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextTunnel;
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.InvocationChain;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * @author administrator
+ *
+ */
+public class RMIBindingProvider extends RMIBindingImpl implements ReferenceBindingActivator,
+ReferenceBindingProvider, ServiceBindingActivator, ServiceBindingProvider, MethodInterceptor {
+
+ private RMIHostExtensionPoint rmiHost;
+ private RuntimeWire wire;
+
+ //need this member to morph the service interface to extend from Remote if it does not
+ // the base class's member variable interfaze is to be maintained to enable the connection
+ // of the service outbound to the component's inbound wire which requires that the service
+ // and the component match in their service contracts.
+ private Interface serviceInterface;
+
+ public RMIBindingProvider(RMIHostExtensionPoint rmiHost) {
+ this.rmiHost = rmiHost;
+ }
+
+ public InterfaceContract getBindingInterfaceContract(ComponentService service) {
+ return service.getInterfaceContract();
+ }
+
+ public void start(Component component, ComponentReference reference) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void stop(Component component, ComponentReference reference) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void start(Component component, ComponentService service) {
+ URI uri = URI.create(component.getURI() + "/" + getName());
+ setURI(uri.toString());
+ RuntimeComponentService componentService = (RuntimeComponentService) service;
+
+ //TODO : Need to figure out why we do a get(0)... will this work always...
+ this.wire = componentService.getRuntimeWires().get(0);
+ this.serviceInterface = service.getInterfaceContract().getInterface();
+
+ Remote rmiProxy = createRmiService();
+
+ try {
+ rmiHost.registerService(getRmiServiceName(),
+ getPort(getRmiPort()),
+ rmiProxy);
+ } catch (RMIHostException e) {
+ throw new NoRemoteServiceException(e);
+ }
+ }
+
+ public void stop(Component component, ComponentService service) {
+ try {
+ rmiHost.unregisterService(getRmiServiceName(),
+ getPort(getRmiPort()));
+ } catch (RMIHostException e) {
+ throw new NoRemoteServiceException(e.getMessage());
+ }
+
+ }
+
+ public Interceptor createInterceptor(Component component, ComponentReference reference, Operation operation, boolean isCallback) {
+ try {
+ Method remoteMethod =
+ JavaInterfaceUtil.findMethod(((JavaInterface)reference.getInterfaceContract().getInterface()).getJavaClass(),
+ operation);
+ return new RMIBindingInterceptor(rmiHost,
+ getRmiHostName(),
+ getRmiPort(),
+ getRmiServiceName(),
+ remoteMethod);
+ } catch (NoSuchMethodException e) {
+ throw new NoRemoteMethodException(operation.toString(), e);
+ }
+ }
+
+ public InterfaceContract getBindingInterfaceContract(ComponentReference reference) {
+ return reference.getInterfaceContract();
+ }
+
+ protected Remote createRmiService() {
+ Enhancer enhancer = new Enhancer();
+ enhancer.setSuperclass(UnicastRemoteObject.class);
+ enhancer.setCallback(this);
+ Class targetJavaInterface = getTargetJavaClass(serviceInterface);
+ if (!Remote.class.isAssignableFrom(targetJavaInterface)) {
+ RMIServiceClassLoader classloader =
+ new RMIServiceClassLoader(getClass().getClassLoader());
+ final byte[] byteCode = generateRemoteInterface(targetJavaInterface);
+ targetJavaInterface = classloader.defineClass(byteCode);
+ enhancer.setClassLoader(classloader);
+ }
+ enhancer.setInterfaces(new Class[]{targetJavaInterface});
+ return (Remote) enhancer.create();
+ }
+
+ // if the interface of the component whose serviceBindings must be exposed as RMI Service, does not
+ // implement java.rmi.Remote, then generate such an interface. This method will stop with
+ // just generating the bytecode. Defining the class from the byte code must tbe the responsibility
+ // of the caller of this method, since it requires a classloader to be created to define and load
+ // this interface.
+ protected byte[] generateRemoteInterface(Class serviceInterface) {
+ String interfazeName = serviceInterface.getCanonicalName();
+ ClassWriter cw = new ClassWriter(false);
+
+ String simpleName = serviceInterface.getSimpleName();
+ cw.visit(Constants.V1_5, Constants.ACC_PUBLIC + Constants.ACC_ABSTRACT + Constants.ACC_INTERFACE,
+ interfazeName.replace('.', '/'), "java/lang/Object", new String[]{"java/rmi/Remote"}, simpleName + ".java");
+
+ StringBuffer argsAndReturn = null;
+ Method[] methods = serviceInterface.getMethods();
+ for (Method method : methods) {
+ argsAndReturn = new StringBuffer("(");
+ Class[] paramTypes = method.getParameterTypes();
+ Class returnType = method.getReturnType();
+
+ for (Class paramType : paramTypes) {
+ argsAndReturn.append(Type.getType(paramType));
+ }
+ argsAndReturn.append(")");
+ argsAndReturn.append(Type.getType(returnType));
+
+ cw.visitMethod(Constants.ACC_PUBLIC + Constants.ACC_ABSTRACT, method.getName(), argsAndReturn.toString(),
+ new String[]{"java/rmi/RemoteException"}, null);
+ }
+ cw.visitEnd();
+ return cw.toByteArray();
+ }
+
+ public Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
+ // since incoming method signatures have 'remotemethod invocation' it will not match with the
+ // wired component's method signatures. Hence need to pull in the corresponding method from the
+ // component's service contract interface to make this invocation.
+
+
+ return invokeTarget(JavaInterfaceUtil.findOperation(method, serviceInterface.getOperations()),
+ args);
+ }
+
+ public Object invokeTarget(Operation op,
+ Object[] args) throws InvocationTargetException {
+ InvocationChain chain = null;
+
+ for (InvocationChain ic : wire.getInvocationChains()) {
+ if (ic.getSourceOperation().equals(op)) {
+ chain = ic;
+ }
+ }
+ if (chain == null) {
+ throw new IllegalStateException("no InvocationChain on wire for operation " + op);
+ }
+
+ Interceptor headInterceptor = chain.getHeadInterceptor();
+ WorkContext workContext = WorkContextTunnel.getThreadWorkContext();
+ if (workContext == null) {
+ workContext = new SimpleWorkContext();
+ workContext.setIdentifier(Scope.COMPOSITE, ComponentNames.TUSCANY_APPLICATION_ROOT.resolve("default"));
+ WorkContextTunnel.setThreadWorkContext(workContext);
+ }
+
+ String oldConversationID = (String) workContext.getIdentifier(Scope.CONVERSATION);
+
+ try {
+ if (headInterceptor == null) {
+ // short-circuit the dispatch and invoke the target directly
+ TargetInvoker targetInvoker = chain.getTargetInvoker();
+ if (targetInvoker == null) {
+ throw new AssertionError("No target invoker [" + chain.getTargetOperation().getName() + "]");
+ }
+ return targetInvoker.invokeTarget(args, TargetInvoker.NONE, null);
+ } else {
+ Message msg = new MessageImpl();
+ msg.setTargetInvoker(chain.getTargetInvoker());
+ msg.setBody(args);
+ msg.setWorkContext(workContext);
+
+ Message resp;
+ // dispatch the wire down the chain and get the response
+ resp = headInterceptor.invoke(msg);
+ Object body = resp.getBody();
+ if (resp.isFault()) {
+ throw new InvocationTargetException((Throwable) body);
+ }
+ return body;
+ }
+ } finally {
+ }
+ }
+
+ protected int getPort(String port) {
+ int portNumber = RMIHostExtensionPoint.RMI_DEFAULT_PORT;
+ if (port != null && port.length() > 0) {
+ portNumber = Integer.decode(port);
+ }
+
+ return portNumber;
+ }
+
+ private Class<?> getTargetJavaClass(Interface targetInterface) {
+ //TODO: right now assume that the target is always a Java Implementation. Need to figure out
+ // how to generate Java Interface in cases where the target is not a Java Implementation
+ return ((JavaInterface)targetInterface).getJavaClass();
+ }
+
+ private class RMIServiceClassLoader extends ClassLoader {
+ public RMIServiceClassLoader(ClassLoader parent) {
+ super(parent);
+ }
+
+ public Class defineClass(byte[] byteArray) {
+ return defineClass(null, byteArray, 0, byteArray.length);
+ }
+ }
+
+}
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java Fri May 4 06:03:42 2007
@@ -23,7 +23,6 @@
import org.apache.tuscany.assembly.AssemblyFactory;
import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
-import org.apache.tuscany.binding.rmi.impl.DefaultRMIBindingFactory;
import org.apache.tuscany.binding.rmi.xml.RMIBindingProcessor;
import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.core.ExtensionPointRegistry;
@@ -31,36 +30,22 @@
import org.apache.tuscany.policy.PolicyFactory;
import org.apache.tuscany.policy.impl.DefaultPolicyFactory;
import org.apache.tuscany.rmi.RMIHostExtensionPoint;
-import org.apache.tuscany.spi.builder.BuilderRegistry;
public class RMIModuleActivator implements ModuleActivator {
- private RMIBindingBuilder builder;
-
public void start(ExtensionPointRegistry registry) {
StAXArtifactProcessorExtensionPoint processors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- RMIBindingFactory rmiFactory = new DefaultRMIBindingFactory();
AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
PolicyFactory policyFactory = new DefaultPolicyFactory();
- processors.addArtifactProcessor(new RMIBindingProcessor(assemblyFactory, policyFactory, rmiFactory));
-
- RMIHostExtensionPoint rmiHost = registry.getExtensionPoint(RMIHostExtensionPoint.class);
- BuilderRegistry builderRegistry = registry.getExtensionPoint(BuilderRegistry.class);
- builder = new RMIBindingBuilder();
- builder.setBuilderRegistry(builderRegistry);
- builder.setRmiHost(rmiHost);
- builder.init();
+ RMIHostExtensionPoint rmiHost = registry.getExtensionPoint(RMIHostExtensionPoint.class);
+ RMIBindingFactory rmiFactory = new DefaultRMIBindingFactory(rmiHost);
+ processors.addArtifactProcessor(new RMIBindingProcessor(assemblyFactory, policyFactory, rmiFactory));
}
public void stop(ExtensionPointRegistry registry) {
- //FIXME
- // release resources held by bindings
- // needed because the stop methods in ReferenceImpl and ServiceImpl aren't being called
- // TODO: revisit this as part of the lifecycle work
- builder.destroy(); // release connections
}
public Map<Class, Object> getExtensionPoints() {
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java Fri May 4 06:03:42 2007
@@ -53,7 +53,7 @@
public RMIBinding read(XMLStreamReader reader) throws ContributionReadException {
try {
- RMIBinding rmiBinding = rmiBindingFactory.createWebServiceBinding();
+ RMIBinding rmiBinding = rmiBindingFactory.createRMIBinding();
rmiBinding.setUnresolved(true);
//Read policies
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldImpl.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldImpl.java Fri May 4 06:03:42 2007
@@ -30,4 +30,8 @@
public String sayHello(String name) {
return "Hello from the RMI Service to - " + name;
}
+
+ public String sayHi(String name, String greeter) {
+ return "Hi from " + greeter + " in RMI Service to - " + name;
+ }
}
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiImpl.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiImpl.java Fri May 4 06:03:42 2007
@@ -40,5 +40,9 @@
public String sayRmiHello(String name) {
return extService.sayHello(name) + " thro the RMI Reference";
}
+
+ public String sayRmiHi(String name, String greeter) {
+ return extService.sayHi(name, greeter) + " thro the RMI Reference";
+ }
}
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiService.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiService.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldRmiService.java Fri May 4 06:03:42 2007
@@ -24,5 +24,6 @@
public interface HelloWorldRmiService {
String sayRmiHello(String name);
+ String sayRmiHi(String name, String greeter);
}
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldService.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldService.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/helloworld/HelloWorldService.java Fri May 4 06:03:42 2007
@@ -24,5 +24,6 @@
public interface HelloWorldService {
String sayHello(String name);
+ String sayHi(String name, String greeter);
}
Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java?view=diff&rev=535224&r1=535223&r2=535224
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java Fri May 4 06:03:42 2007
@@ -21,11 +21,12 @@
import helloworld.HelloWorldRmiService;
import junit.framework.Assert;
-import org.apache.tuscany.host.embedded.SCARuntime;
+import org.apache.tuscany.host.embedded.SCARuntimeActivator;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.osoa.sca.CurrentCompositeContext;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
public class BindingTestCase {
private static HelloWorldRmiService helloWorldRmiService;
@@ -35,22 +36,26 @@
System.out.println(helloWorldRmiService.sayRmiHello("Tuscany World!"));
Assert.assertEquals("Hello from the RMI Service to - Tuscany World! thro the RMI Reference",
helloWorldRmiService.sayRmiHello("Tuscany World!"));
+
+ System.out.println(helloWorldRmiService.sayRmiHi("Tuscany World!", "Apache World"));
+
+ Assert.assertEquals("Hi from Apache World in RMI Service to - Tuscany World! thro the RMI Reference",
+ helloWorldRmiService.sayRmiHi("Tuscany World!", "Apache World"));
}
@BeforeClass
public static void init() throws Exception {
- SCARuntime.start("META-INF/sca/RMIBindingTest.composite");
- helloWorldRmiService =
- CurrentCompositeContext.getContext().locateService(HelloWorldRmiService.class,
- "HelloWorldRmiServiceComponent");
-
- }
+ SCARuntimeActivator.start("META-INF/sca/RMIBindingTest.composite");
+ ComponentContext context = SCARuntimeActivator.getComponentContext("HelloWorldRmiServiceComponent");
+ ServiceReference<HelloWorldRmiService> serviceReference = context.createSelfReference(HelloWorldRmiService.class);
+ helloWorldRmiService = serviceReference.getService();
+ }
@AfterClass
public static void destroy() throws Exception {
- SCARuntime.stop();
+ SCARuntimeActivator.stop();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org