summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/pom.xml6
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/Handler2.java280
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RemoteServiceInvocationHandler.java (renamed from sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java)130
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RuntimeUtils.java85
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryFinderImpl.java2
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java199
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl2.java94
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl3.java74
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientModuleActivator.java4
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientProxyHandler.java76
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/resources/META-INF/services/org.oasisopen.sca.client.SCAClientFactory2
11 files changed, 194 insertions, 758 deletions
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/pom.xml b/sca-java-2.x/trunk/modules/sca-client-impl/pom.xml
index d46e7ff192..8a1c7a67a3 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/pom.xml
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/pom.xml
@@ -41,12 +41,6 @@
<artifactId>tuscany-core</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-node-impl</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
-
</dependencies>
</project>
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/Handler2.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/Handler2.java
deleted file mode 100644
index 16252ed94c..0000000000
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/Handler2.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.tuscany.sca.client.impl;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.ComponentReference;
-import org.apache.tuscany.sca.assembly.ComponentService;
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.assembly.EndpointReference;
-import org.apache.tuscany.sca.assembly.Multiplicity;
-import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.context.CompositeContext;
-import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory;
-import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
-import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint;
-import org.apache.tuscany.sca.interfacedef.Interface;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
-import org.apache.tuscany.sca.runtime.DomainRegistryFactory;
-import org.apache.tuscany.sca.runtime.EndpointRegistry;
-import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
-import org.apache.tuscany.sca.runtime.RuntimeProperties;
-import org.apache.tuscany.sca.work.WorkScheduler;
-import org.oasisopen.sca.NoSuchDomainException;
-import org.oasisopen.sca.NoSuchServiceException;
-import org.oasisopen.sca.ServiceRuntimeException;
-
-public class Handler2 {
-
- private Properties properties;
- private ExtensionPointRegistry extensionPointRegistry;
- private EndpointRegistry endpointRegistry;
- private boolean localRuntime;
- private boolean closableClient;
- private String domainURI;
-
-
- public Handler2(ExtensionPointRegistry extensionPointRegistry, EndpointRegistry endpointRegistry, Properties properties) {
- this.extensionPointRegistry = extensionPointRegistry;
- this.endpointRegistry = endpointRegistry;
- this.localRuntime = true;
- this.properties = properties;
- initCloseable(properties);
- }
-
- public Handler2(String domainURI, Properties properties) throws NoSuchDomainException {
- this.domainURI = domainURI;
- this.properties = properties;
- initCloseable(properties);
- initExtensionPointRegistry();
- }
-
-
- private void initExtensionPointRegistry() throws NoSuchDomainException {
- this.extensionPointRegistry = new DefaultExtensionPointRegistry();
- extensionPointRegistry.start();
-
- FactoryExtensionPoint modelFactories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class);
- RuntimeAssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(extensionPointRegistry);
- modelFactories.addFactory(assemblyFactory);
-
- UtilityExtensionPoint utilities = extensionPointRegistry.getExtensionPoint(UtilityExtensionPoint.class);
-
- properties.setProperty("client", "true");
-
- utilities.getUtility(RuntimeProperties.class).setProperties(properties);
- utilities.getUtility(WorkScheduler.class);
-
- // Initialize the Tuscany module activators
- // The module activators will be started
- extensionPointRegistry.getExtensionPoint(ModuleActivatorExtensionPoint.class);
-
- getEndpointRegistry();
- }
-
- private EndpointRegistry getEndpointRegistry() throws NoSuchDomainException {
- DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionPointRegistry);
-
- String registryURI = domainURI;
-
- // TODO: theres better ways to do this but this gets things working for now
- if (registryURI.indexOf(":") == -1) {
- registryURI = "tuscanyclient:" + registryURI;
- }
- if (registryURI.startsWith("uri:")) {
- registryURI = "tuscanyclient:" + registryURI.substring(4);
- }
- if (registryURI.startsWith("tuscany:")) {
- registryURI = "tuscanyclient:" + registryURI.substring(8);
- }
-
-
- try {
- return domainRegistryFactory.getEndpointRegistry(registryURI, domainURI);
- } catch (Exception e) {
- throw new NoSuchDomainException(domainURI, e);
- }
- }
-
-
- private void initCloseable(Properties properties) {
- String s = properties.getProperty("org.apache.tuscany.sca.client.closeable");
- closableClient = (s != null) && Boolean.parseBoolean(s);
- }
-
- public <T> T getService(Class<T> interfaze, String serviceURI) throws NoSuchServiceException, NoSuchDomainException {
- String serviceName = null;
- if (serviceURI.contains("/")) {
- int i = serviceURI.indexOf("/");
- if (i < serviceURI.length() - 1) {
- serviceName = serviceURI.substring(i + 1);
- }
- }
-
- if (localRuntime) {
- return localRuntimeService(interfaze, serviceURI, serviceName);
- } else {
- return remoteService(interfaze, serviceURI, serviceName);
- }
- }
-
- private <T> T remoteService(Class<T> interfaze, String serviceURI, String serviceName) throws NoSuchDomainException {
- InvocationHandler handler = new SCAClientHandler(domainURI, serviceURI, interfaze, properties);
- return (T)Proxy.newProxyInstance(interfaze.getClassLoader(), new Class[]{interfaze}, handler);
- }
-
- private void initRegistries() {
- // TODO Auto-generated method stub
- }
-
- private <T> T localRuntimeService(Class<T> interfaze, String serviceURI, String serviceName)
- throws NoSuchServiceException {
- List<Endpoint> endpoints = endpointRegistry.findEndpoint(serviceURI);
- if (endpoints.size() < 1) {
- throw new NoSuchServiceException(serviceURI);
- }
-
- Endpoint ep = endpoints.get(0);
- if (((RuntimeComponent)ep.getComponent()).getComponentContext() != null) {
- return ((RuntimeComponent)ep.getComponent()).getServiceReference(interfaze, serviceName).getService();
- } else {
- return getRemoteProxy(interfaze, ep);
- }
- }
-
- private <T> T getRemoteProxy(Class<T> serviceInterface, Endpoint endpoint) throws NoSuchServiceException {
- FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class);
- AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
- JavaInterfaceFactory javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class);
- ProxyFactory proxyFactory =
- new ExtensibleProxyFactory(extensionPointRegistry.getExtensionPoint(ProxyFactoryExtensionPoint.class));
-
- CompositeContext compositeContext =
- new CompositeContext(extensionPointRegistry, endpointRegistry, null, null, null, null);
-
- RuntimeEndpointReference epr;
- try {
- epr =
- createEndpointReference(javaInterfaceFactory,
- compositeContext,
- assemblyFactory,
- endpoint,
- serviceInterface);
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
-
- return proxyFactory.createProxy(serviceInterface, epr);
- }
-
- private RuntimeEndpointReference createEndpointReference(JavaInterfaceFactory javaInterfaceFactory,
- CompositeContext compositeContext,
- AssemblyFactory assemblyFactory,
- Endpoint endpoint,
- Class<?> businessInterface)
- throws CloneNotSupportedException, InvalidInterfaceException {
- Component component = endpoint.getComponent();
- ComponentService service = endpoint.getService();
- ComponentReference componentReference = assemblyFactory.createComponentReference();
- componentReference.setName("sca.client." + service.getName());
-
- componentReference.setCallback(service.getCallback());
- componentReference.getTargets().add(service);
- componentReference.getPolicySets().addAll(service.getPolicySets());
- componentReference.getRequiredIntents().addAll(service.getRequiredIntents());
- componentReference.getBindings().add(endpoint.getBinding());
-
- InterfaceContract interfaceContract = service.getInterfaceContract();
- Service componentTypeService = service.getService();
- if (componentTypeService != null && componentTypeService.getInterfaceContract() != null) {
- interfaceContract = componentTypeService.getInterfaceContract();
- }
- interfaceContract = getInterfaceContract(javaInterfaceFactory, interfaceContract, businessInterface);
- componentReference.setInterfaceContract(interfaceContract);
- componentReference.setMultiplicity(Multiplicity.ONE_ONE);
- // component.getReferences().add(componentReference);
-
- // create endpoint reference
- EndpointReference endpointReference = assemblyFactory.createEndpointReference();
- endpointReference.setComponent(component);
- endpointReference.setReference(componentReference);
- endpointReference.setBinding(endpoint.getBinding());
- endpointReference.setUnresolved(false);
- endpointReference.setStatus(EndpointReference.Status.WIRED_TARGET_FOUND_AND_MATCHED);
-
- endpointReference.setTargetEndpoint(endpoint);
-
- componentReference.getEndpointReferences().add(endpointReference);
- ((RuntimeComponentReference)componentReference).setComponent((RuntimeComponent)component);
- ((RuntimeEndpointReference)endpointReference).bind(compositeContext);
-
- return (RuntimeEndpointReference)endpointReference;
- }
-
- private InterfaceContract getInterfaceContract(JavaInterfaceFactory javaInterfaceFactory,
- InterfaceContract interfaceContract,
- Class<?> businessInterface)
- throws CloneNotSupportedException, InvalidInterfaceException {
- if (businessInterface == null) {
- return interfaceContract;
- }
- boolean compatible = false;
- if (interfaceContract != null && interfaceContract.getInterface() != null) {
- Interface interfaze = interfaceContract.getInterface();
- if (interfaze instanceof JavaInterface) {
- Class<?> cls = ((JavaInterface)interfaze).getJavaClass();
- if (cls != null && businessInterface.isAssignableFrom(cls)) {
- compatible = true;
- }
- }
- }
-
- if (!compatible) {
- // The interface is not assignable from the interface contract
- interfaceContract = javaInterfaceFactory.createJavaInterfaceContract();
- JavaInterface callInterface = javaInterfaceFactory.createJavaInterface(businessInterface);
- interfaceContract.setInterface(callInterface);
- if (callInterface.getCallbackClass() != null) {
- interfaceContract.setCallbackInterface(javaInterfaceFactory.createJavaInterface(callInterface
- .getCallbackClass()));
- }
- }
-
- return interfaceContract;
- }
-}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RemoteServiceInvocationHandler.java
index d86fc97f14..a79e4bee0a 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RemoteServiceInvocationHandler.java
@@ -23,7 +23,6 @@ import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;
-import java.util.Properties;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Component;
@@ -34,12 +33,8 @@ import org.apache.tuscany.sca.assembly.EndpointReference;
import org.apache.tuscany.sca.assembly.Multiplicity;
import org.apache.tuscany.sca.assembly.Service;
import org.apache.tuscany.sca.context.CompositeContext;
-import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory;
import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory;
import org.apache.tuscany.sca.core.invocation.ProxyFactory;
import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint;
@@ -48,103 +43,94 @@ import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
-import org.apache.tuscany.sca.runtime.DomainRegistryFactory;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
-import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
-import org.apache.tuscany.sca.runtime.RuntimeProperties;
-import org.apache.tuscany.sca.work.WorkScheduler;
import org.oasisopen.sca.NoSuchDomainException;
import org.oasisopen.sca.NoSuchServiceException;
import org.oasisopen.sca.ServiceRuntimeException;
-public class SCAClientHandler implements InvocationHandler {
+/**
+ * An InvocationHandler for invoking services where the component is not running locally.
+ * It has two modes of operation for the cases where there either is or is not an existing
+ * Tuscany runtime locally. The SCAClient API has no close so when there is no existing
+ * local runtime then one must be created and destroyed for each service invocation.
+ */
+public class RemoteServiceInvocationHandler implements InvocationHandler {
private String domainURI;
private String serviceName;
private Class<?> serviceInterface;
- private Properties config;
+
private ExtensionPointRegistry extensionsRegistry;
+ private EndpointRegistry endpointRegistry;
- public SCAClientHandler(String domainURI, String serviceName, Class<?> serviceInterface, Properties properties) throws NoSuchDomainException {
- this.domainURI = domainURI;
+ private InvocationHandler handler;
+ private boolean reuse;
+
+ /**
+ * Constructor for when there is an existing Tuscany runtime for the domain
+ */
+ public RemoteServiceInvocationHandler(ExtensionPointRegistry extensionsRegistry, EndpointRegistry endpointRegistry, String serviceName, Class<?> serviceInterface) {
+ this.extensionsRegistry = extensionsRegistry;
+ this.endpointRegistry = endpointRegistry;
+ this.domainURI = endpointRegistry.getDomainURI();
this.serviceName = serviceName;
this.serviceInterface = serviceInterface;
- this.config = properties;
- initExtensionPointRegistry();
- extensionsRegistry.stop();
+ this.reuse = true;
}
-
- private void initExtensionPointRegistry() throws NoSuchDomainException {
- this.extensionsRegistry = new DefaultExtensionPointRegistry();
- extensionsRegistry.start();
-
- FactoryExtensionPoint modelFactories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class);
- RuntimeAssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(extensionsRegistry);
- modelFactories.addFactory(assemblyFactory);
-
- UtilityExtensionPoint utilities = extensionsRegistry.getExtensionPoint(UtilityExtensionPoint.class);
-
- config.setProperty("client", "true");
-
- utilities.getUtility(RuntimeProperties.class).setProperties(config);
- utilities.getUtility(WorkScheduler.class);
-
- // Initialize the Tuscany module activators
- // The module activators will be started
- extensionsRegistry.getExtensionPoint(ModuleActivatorExtensionPoint.class);
-
- getEndpointRegistry();
+
+ /**
+ * Constructor for when there is no existing Tuscany runtime for the domain
+ * @param endpointRegistry2
+ * @param extensionPointRegistry
+ */
+ public RemoteServiceInvocationHandler(ExtensionPointRegistry extensionsRegistry, EndpointRegistry endpointRegistry, String domainURI, String serviceName, Class<?> serviceInterface) throws NoSuchDomainException {
+ this.extensionsRegistry = extensionsRegistry;
+ this.endpointRegistry = endpointRegistry;
+ this.domainURI = domainURI;
+ this.serviceName = serviceName;
+ this.serviceInterface = serviceInterface;
+ this.reuse = false;
}
- private EndpointRegistry getEndpointRegistry() throws NoSuchDomainException {
- DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionsRegistry);
-
- String registryURI = domainURI;
-
- // TODO: theres better ways to do this but this gets things working for now
- if (registryURI.indexOf(":") == -1) {
- registryURI = "tuscanyclient:" + registryURI;
- }
- if (registryURI.startsWith("uri:")) {
- registryURI = "tuscanyclient:" + registryURI.substring(4);
- }
- if (registryURI.startsWith("tuscany:")) {
- registryURI = "tuscanyclient:" + registryURI.substring(8);
- }
-
-
- try {
- return domainRegistryFactory.getEndpointRegistry(registryURI, domainURI);
- } catch (Exception e) {
- throw new NoSuchDomainException(domainURI, e);
- }
- }
-
-
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- if (extensionsRegistry == null) {
- initExtensionPointRegistry();
- }
try {
- EndpointRegistry endpointRegistry = getEndpointRegistry();
+ return getHandler().invoke(proxy, method, args);
+ } finally {
+ if (!reuse) {
+ extensionsRegistry.stop();
+ extensionsRegistry = null;
+ handler = null;
+ }
+ }
+ }
+
+ private InvocationHandler getHandler() throws NoSuchDomainException, NoSuchServiceException {
+ if (handler == null) {
+ if (extensionsRegistry == null) {
+ extensionsRegistry = RuntimeUtils.createExtensionPointRegistry();
+ }
+ if (endpointRegistry == null) {
+ endpointRegistry = RuntimeUtils.getClientEndpointRegistry(extensionsRegistry, domainURI);
+ }
+
FactoryExtensionPoint factories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class);
AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
JavaInterfaceFactory javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class);
ProxyFactory proxyFactory = new ExtensibleProxyFactory(extensionsRegistry.getExtensionPoint(ProxyFactoryExtensionPoint.class));
- CompositeContext compositeContext = new CompositeContext(extensionsRegistry, endpointRegistry, null, domainURI.toString(), null, null);
+ CompositeContext compositeContext = new CompositeContext(extensionsRegistry, endpointRegistry, null, domainURI, null, null);
List<Endpoint> eps = endpointRegistry.findEndpoint(serviceName);
if (eps == null || eps.size() < 1) {
throw new NoSuchServiceException(serviceName);
}
Endpoint endpoint = eps.get(0); // TODO: what should be done with multiple endpoints?
-
+
RuntimeEndpointReference epr;
try {
epr = createEndpointReference(javaInterfaceFactory, compositeContext, assemblyFactory, endpoint, serviceInterface);
@@ -152,13 +138,9 @@ public class SCAClientHandler implements InvocationHandler {
throw new ServiceRuntimeException(e);
}
- InvocationHandler handler = Proxy.getInvocationHandler(proxyFactory.createProxy(serviceInterface, epr));
- return handler.invoke(proxy, method, args);
-
- } finally {
- extensionsRegistry.stop();
- extensionsRegistry = null;
+ this.handler = Proxy.getInvocationHandler(proxyFactory.createProxy(serviceInterface, epr));
}
+ return handler;
}
private RuntimeEndpointReference createEndpointReference(JavaInterfaceFactory javaInterfaceFactory, CompositeContext compositeContext, AssemblyFactory assemblyFactory, Endpoint endpoint, Class<?> businessInterface) throws CloneNotSupportedException, InvalidInterfaceException {
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RuntimeUtils.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RuntimeUtils.java
new file mode 100644
index 0000000000..57690de199
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/RuntimeUtils.java
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+package org.apache.tuscany.sca.client.impl;
+
+import java.util.Properties;
+
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory;
+import org.apache.tuscany.sca.runtime.DomainRegistryFactory;
+import org.apache.tuscany.sca.runtime.EndpointRegistry;
+import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
+import org.apache.tuscany.sca.runtime.RuntimeProperties;
+import org.apache.tuscany.sca.work.WorkScheduler;
+import org.oasisopen.sca.NoSuchDomainException;
+
+public class RuntimeUtils {
+
+ public static ExtensionPointRegistry createExtensionPointRegistry() throws NoSuchDomainException {
+ ExtensionPointRegistry extensionsRegistry = new DefaultExtensionPointRegistry();
+ extensionsRegistry.start();
+
+ FactoryExtensionPoint modelFactories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class);
+ RuntimeAssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(extensionsRegistry);
+ modelFactories.addFactory(assemblyFactory);
+
+ UtilityExtensionPoint utilities = extensionsRegistry.getExtensionPoint(UtilityExtensionPoint.class);
+
+ Properties domainConfigProps = new Properties();
+ domainConfigProps.setProperty("client", "true");
+ utilities.getUtility(RuntimeProperties.class).setProperties(domainConfigProps);
+
+ // TODO: is this needed?
+ utilities.getUtility(WorkScheduler.class);
+
+ // Initialize the Tuscany module activators
+ // The module activators will be started
+ extensionsRegistry.getExtensionPoint(ModuleActivatorExtensionPoint.class);
+
+ return extensionsRegistry;
+ }
+
+ public static EndpointRegistry getClientEndpointRegistry(ExtensionPointRegistry extensionsRegistry, String domainURI) throws NoSuchDomainException {
+ DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionsRegistry);
+
+ String registryURI = domainURI;
+
+ // TODO: theres better ways to do this but this gets things working for now
+ if (registryURI.indexOf(":") == -1) {
+ registryURI = "tuscanyclient:" + registryURI;
+ }
+ if (registryURI.startsWith("uri:")) {
+ registryURI = "tuscanyclient:" + registryURI.substring(4);
+ }
+ if (registryURI.startsWith("tuscany:")) {
+ registryURI = "tuscanyclient:" + registryURI.substring(8);
+ }
+
+ try {
+ return domainRegistryFactory.getEndpointRegistry(registryURI, domainURI);
+ } catch (Exception e) {
+ throw new NoSuchDomainException(domainURI, e);
+ }
+ }
+}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryFinderImpl.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryFinderImpl.java
index 8e3a512bc6..c06384a6cb 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryFinderImpl.java
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryFinderImpl.java
@@ -43,7 +43,7 @@ public class SCAClientFactoryFinderImpl implements SCAClientFactoryFinder {
public SCAClientFactory find(Properties properties,
ClassLoader classLoader,
URI domainURI ) throws NoSuchDomainException, ServiceRuntimeException {
- return new SCAClientFactoryImpl3(properties, domainURI);
+ return new SCAClientFactoryImpl(domainURI);
}
}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java
index d32afb2acb..3252b900c5 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java
@@ -19,184 +19,87 @@
package org.apache.tuscany.sca.client.impl;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
import java.net.URI;
import java.util.List;
-import java.util.UUID;
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.ComponentReference;
-import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.assembly.EndpointReference;
-import org.apache.tuscany.sca.assembly.Multiplicity;
-import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.context.CompositeContext;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
-import org.apache.tuscany.sca.interfacedef.Interface;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
-import org.apache.tuscany.sca.node.NodeFactory;
-import org.apache.tuscany.sca.node.impl.NodeFactoryImpl;
-import org.apache.tuscany.sca.runtime.DomainRegistryFactory;
+import org.apache.tuscany.sca.core.ExtensionPointRegistryLocator;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
import org.oasisopen.sca.NoSuchDomainException;
import org.oasisopen.sca.NoSuchServiceException;
-import org.oasisopen.sca.ServiceRuntimeException;
import org.oasisopen.sca.client.SCAClientFactory;
import org.oasisopen.sca.client.SCAClientFactoryFinder;
public class SCAClientFactoryImpl extends SCAClientFactory {
+ private ExtensionPointRegistry extensionPointRegistry;
+ private EndpointRegistry endpointRegistry;
+ private boolean remoteClient;
+
public static void setSCAClientFactoryFinder(SCAClientFactoryFinder factoryFinder) {
SCAClientFactory.factoryFinder = factoryFinder;
}
- private final ExtensionPointRegistry extensionsRegistry;
- private final AssemblyFactory assemblyFactory;
- private final JavaInterfaceFactory javaInterfaceFactory;
- private final ProxyFactory proxyFactory;
- private final EndpointRegistry endpointRegistry;
- private final NodeFactoryImpl nodeFactory;
- private final CompositeContext compositeContext;
-
public SCAClientFactoryImpl(URI domainURI) throws NoSuchDomainException {
super(domainURI);
-
- this.nodeFactory = (NodeFactoryImpl)NodeFactory.getInstance();
- this.nodeFactory.init();
- this.extensionsRegistry = nodeFactory.getExtensionPointRegistry();
- DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionsRegistry);
-
- String registryURI = getDomainURI().toString();
-
- this.endpointRegistry = domainRegistryFactory.getEndpointRegistry(registryURI, getDomainURI().toString()); // TODO: shouldnt use null for reg uri
-
- // TODO: if there is not an existing endpoint registry for the domain URI the
- // this should create an endpoint registry client for the remote domain (eg hazelcast native client)
- // for now just throw an exception
- if (endpointRegistry == null) {
- throw new NoSuchDomainException(domainURI.toString());
+ findLocalRuntime();
+ }
+
+ private void findLocalRuntime() throws NoSuchDomainException {
+ String domainURI = getDomainURI().toString();
+ for (ExtensionPointRegistry xpr : ExtensionPointRegistryLocator.getExtensionPointRegistries()) {
+ ExtensibleDomainRegistryFactory drf = ExtensibleDomainRegistryFactory.getInstance(xpr);
+ for (EndpointRegistry epr : drf.getEndpointRegistries()) {
+ if (domainURI.equals(epr.getDomainURI())) {
+ this.extensionPointRegistry = xpr;
+ this.endpointRegistry = epr;
+ return;
+ }
+ }
}
- FactoryExtensionPoint factories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class);
- this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
- this.javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class);
- this.proxyFactory = ExtensibleProxyFactory.getInstance(extensionsRegistry);
- String client = "sca.client." + UUID.randomUUID();
+ remoteClient = true;
+ extensionPointRegistry = RuntimeUtils.createExtensionPointRegistry();
+ endpointRegistry = RuntimeUtils.getClientEndpointRegistry(extensionPointRegistry, domainURI);
+ }
- this.compositeContext =
- new CompositeContext(extensionsRegistry,
- endpointRegistry,
- null,
- domainURI.toString(),
- client,
- this.nodeFactory.getDeployer().getSystemDefinitions());
- }
-
@Override
- public <T> T getService(Class<T> serviceInterface, String serviceName) throws NoSuchServiceException, NoSuchDomainException {
+ public <T> T getService(Class<T> serviceInterface, String serviceURI) throws NoSuchServiceException, NoSuchDomainException {
- List<Endpoint> eps = endpointRegistry.findEndpoint(serviceName);
- if (eps == null || eps.size() < 1) {
- throw new NoSuchServiceException(serviceName);
- }
- Endpoint endpoint = eps.get(0); // TODO: what should be done with multiple endpoints?
-
- RuntimeEndpointReference epr;
- try {
- epr = createEndpointReference(endpoint, serviceInterface);
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
+ String serviceName = null;
+ if (serviceURI.contains("/")) {
+ int i = serviceURI.indexOf("/");
+ if (i < serviceURI.length() - 1) {
+ serviceName = serviceURI.substring(i + 1);
+ }
}
- return proxyFactory.createProxy(serviceInterface, epr);
- }
-
- private RuntimeEndpointReference createEndpointReference(Endpoint endpoint, Class<?> businessInterface)
- throws CloneNotSupportedException, InvalidInterfaceException {
- Component component = endpoint.getComponent();
- ComponentService service = endpoint.getService();
- ComponentReference componentReference = assemblyFactory.createComponentReference();
- componentReference.setName("sca.client." + service.getName());
-
- componentReference.setCallback(service.getCallback());
- componentReference.getTargets().add(service);
- componentReference.getPolicySets().addAll(service.getPolicySets());
- componentReference.getRequiredIntents().addAll(service.getRequiredIntents());
- componentReference.getBindings().add(endpoint.getBinding());
-
- InterfaceContract interfaceContract = service.getInterfaceContract();
- Service componentTypeService = service.getService();
- if (componentTypeService != null && componentTypeService.getInterfaceContract() != null) {
- interfaceContract = componentTypeService.getInterfaceContract();
- }
- interfaceContract = getInterfaceContract(interfaceContract, businessInterface);
- componentReference.setInterfaceContract(interfaceContract);
- componentReference.setMultiplicity(Multiplicity.ONE_ONE);
- // component.getReferences().add(componentReference);
-
- // create endpoint reference
- EndpointReference endpointReference = assemblyFactory.createEndpointReference();
- endpointReference.setComponent(component);
- endpointReference.setReference(componentReference);
- endpointReference.setBinding(endpoint.getBinding());
- endpointReference.setUnresolved(false);
- endpointReference.setStatus(EndpointReference.Status.WIRED_TARGET_FOUND_AND_MATCHED);
-
- endpointReference.setTargetEndpoint(endpoint);
-
- componentReference.getEndpointReferences().add(endpointReference);
- ((RuntimeComponentReference)componentReference).setComponent((RuntimeComponent)component);
- ((RuntimeEndpointReference)endpointReference).bind(compositeContext);
-
- return (RuntimeEndpointReference) endpointReference;
- }
-
- /**
- * @param interfaceContract
- * @param businessInterface
- * @return
- * @throws CloneNotSupportedException
- * @throws InvalidInterfaceException
- */
- private InterfaceContract getInterfaceContract(InterfaceContract interfaceContract, Class<?> businessInterface)
- throws CloneNotSupportedException, InvalidInterfaceException {
- if (businessInterface == null) {
- return interfaceContract;
- }
- boolean compatible = false;
- if (interfaceContract != null && interfaceContract.getInterface() != null) {
- Interface interfaze = interfaceContract.getInterface();
- if (interfaze instanceof JavaInterface) {
- Class<?> cls = ((JavaInterface)interfaze).getJavaClass();
- if (cls != null && businessInterface.isAssignableFrom(cls)) {
- compatible = true;
- }
+ // The service is a component in a local runtime
+ if (!remoteClient) {
+ List<Endpoint> endpoints = endpointRegistry.findEndpoint(serviceURI);
+ if (endpoints.size() < 1) {
+ throw new NoSuchServiceException(serviceURI);
}
- }
-
- if (!compatible) {
- // The interface is not assignable from the interface contract
- interfaceContract = javaInterfaceFactory.createJavaInterfaceContract();
- JavaInterface callInterface = javaInterfaceFactory.createJavaInterface(businessInterface);
- interfaceContract.setInterface(callInterface);
- if (callInterface.getCallbackClass() != null) {
- interfaceContract.setCallbackInterface(javaInterfaceFactory.createJavaInterface(callInterface
- .getCallbackClass()));
+ Endpoint ep = endpoints.get(0);
+ if (((RuntimeComponent)ep.getComponent()).getComponentContext() != null) {
+ return ((RuntimeComponent)ep.getComponent()).getServiceReference(serviceInterface, serviceName).getService();
}
}
-
- return interfaceContract;
- }
+ InvocationHandler handler;
+ if (!remoteClient) {
+ // There is a local runtime but the service is a remote component
+ handler = new RemoteServiceInvocationHandler(extensionPointRegistry, endpointRegistry, serviceURI, serviceInterface);
+ } else {
+ // no local runtime
+ handler = new RemoteServiceInvocationHandler(extensionPointRegistry, endpointRegistry, getDomainURI().toString(), serviceURI, serviceInterface);
+ }
+
+ return (T)Proxy.newProxyInstance(serviceInterface.getClassLoader(), new Class[]{serviceInterface}, handler);
+ }
}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl2.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl2.java
deleted file mode 100644
index 79ae43e45e..0000000000
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl2.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.tuscany.sca.client.impl;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
-import java.net.URI;
-import java.util.List;
-
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.node.Node;
-import org.apache.tuscany.sca.node.NodeFactory;
-import org.apache.tuscany.sca.node.impl.NodeFactoryImpl;
-import org.apache.tuscany.sca.node.impl.NodeImpl;
-import org.oasisopen.sca.NoSuchDomainException;
-import org.oasisopen.sca.NoSuchServiceException;
-import org.oasisopen.sca.client.SCAClientFactory;
-import org.oasisopen.sca.client.SCAClientFactoryFinder;
-
-public class SCAClientFactoryImpl2 extends SCAClientFactory {
-
- public static void setSCAClientFactoryFinder(SCAClientFactoryFinder factoryFinder) {
- SCAClientFactory.factoryFinder = factoryFinder;
- }
-
- public SCAClientFactoryImpl2(URI domainURI) throws NoSuchDomainException {
- super(domainURI);
- checkDomainURI(domainURI);
- }
-
- private void checkDomainURI(URI domainURI) throws NoSuchDomainException {
- // Check for local node
- String domainName = getDomainName();
- for ( NodeFactory nodeFactory : NodeFactory.getNodeFactories()) {
- List<Node> nodes = ((NodeFactoryImpl)nodeFactory).getNodesInDomain(domainName);
- if ( !nodes.isEmpty() ) {
- return;
- }
- }
-
- // Check for remote node
- SCAClientHandler handler = new SCAClientHandler(domainName, null, null, null);
-// handler.checkDomain();
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> T getService(Class<T> serviceInterface, String serviceName) throws NoSuchServiceException, NoSuchDomainException {
-
- boolean foundDomain = false;
- for (NodeFactory nodeFactory : NodeFactory.getNodeFactories()) {
- for (Node node : ((NodeFactoryImpl)nodeFactory).getNodesInDomain(getDomainName())) {
- foundDomain = true;
- for (Endpoint ep : ((NodeImpl)node).getServiceEndpoints()) {
- if (ep.matches(serviceName)) {
- return node.getService(serviceInterface, serviceName);
- }
- }
- }
- }
-
- // assume that if a local node with the looked for domain name is found then that will
- // know about all services in the domain so if the service isn't found then it doesn't exist
- if (foundDomain) {
- throw new NoSuchServiceException(serviceName);
- }
-
- InvocationHandler handler = new SCAClientHandler(getDomainURI().toString(), serviceName, serviceInterface, null);
- return (T)Proxy.newProxyInstance(serviceInterface.getClassLoader(), new Class[]{serviceInterface}, handler);
- }
-
- private String getDomainName() {
- // TODO: if the domain URI encodes config (eg uri:someDomain?bla=etc) then need to parse the domain name
- String domainName = getDomainURI().toString();
- return domainName;
- }
-}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl3.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl3.java
deleted file mode 100644
index 77b5f7bb1b..0000000000
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl3.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.tuscany.sca.client.impl;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ExtensionPointRegistryLocator;
-import org.apache.tuscany.sca.runtime.EndpointRegistry;
-import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
-import org.oasisopen.sca.NoSuchDomainException;
-import org.oasisopen.sca.NoSuchServiceException;
-import org.oasisopen.sca.client.SCAClientFactory;
-import org.oasisopen.sca.client.SCAClientFactoryFinder;
-
-public class SCAClientFactoryImpl3 extends SCAClientFactory {
-
- private Handler2 handler2;
-
- public static void setSCAClientFactoryFinder(SCAClientFactoryFinder factoryFinder) {
- SCAClientFactory.factoryFinder = factoryFinder;
- }
-
- public SCAClientFactoryImpl3(URI domainURI) throws NoSuchDomainException {
- this(null, domainURI);
- }
-
- public SCAClientFactoryImpl3(Properties properties, URI domainURI) throws NoSuchDomainException {
- super(domainURI);
- if (properties == null) {
- properties = new Properties();
- }
- initRegistries(properties);
- }
-
- private void initRegistries(Properties properties) throws NoSuchDomainException {
- String domainURI = getDomainURI().toString();
- for (ExtensionPointRegistry xpr : ExtensionPointRegistryLocator.getExtensionPointRegistries()) {
- ExtensibleDomainRegistryFactory drf = ExtensibleDomainRegistryFactory.getInstance(xpr);
- for (EndpointRegistry epr : drf.getEndpointRegistries()) {
- if (domainURI.equals(epr.getDomainURI())) {
- this.handler2 = new Handler2(xpr, epr, properties);
- break;
- }
- }
- }
- if (handler2 == null) {
- handler2 = new Handler2(domainURI, properties);
- }
- }
-
- @Override
- public <T> T getService(Class<T> serviceInterface, String serviceName) throws NoSuchServiceException, NoSuchDomainException {
- return handler2.getService(serviceInterface, serviceName);
- }
-}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientModuleActivator.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientModuleActivator.java
index 64f982796c..0cf41e071c 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientModuleActivator.java
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientModuleActivator.java
@@ -19,14 +19,10 @@
package org.apache.tuscany.sca.client.impl;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.ModuleActivator;
public class SCAClientModuleActivator implements ModuleActivator {
- public SCAClientModuleActivator(ExtensionPointRegistry registry) {
- }
-
public void start() {
SCAClientFactoryImpl.setSCAClientFactoryFinder(new SCAClientFactoryFinderImpl());
}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientProxyHandler.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientProxyHandler.java
deleted file mode 100644
index bc1d151d7d..0000000000
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientProxyHandler.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.tuscany.sca.client.impl;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.util.List;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.assembly.EndpointReference;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.runtime.EndpointRegistry;
-import org.oasisopen.sca.NoSuchServiceException;
-
-/**
- * TODO: What this wants is a way to create a generic invoker for an arbitrary binding
- * that could mean extending the BindingProvider API to include something like a
- * createClient method which creates an Invoker for an Endpoint
- */
-public class SCAClientProxyHandler implements InvocationHandler {
-
- protected EndpointRegistry endpointRegistry;
- protected EndpointReference endpointReference;
- protected String serviceName;
-
- public SCAClientProxyHandler(String serviceName, ExtensionPointRegistry extensionsRegistry, EndpointRegistry endpointRegistry) {
- this.endpointRegistry = endpointRegistry;
- this.serviceName = serviceName;
-
-// RMIHostExtensionPoint rmiHosts = extensionsRegistry.getExtensionPoint(RMIHostExtensionPoint.class);
-// this.rmiHost = new ExtensibleRMIHost(rmiHosts);
-
- FactoryExtensionPoint factories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class);
- AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
-
- this.endpointReference = assemblyFactory.createEndpointReference();
- endpointReference.setReference(assemblyFactory.createComponentReference());
- Endpoint targetEndpoint = assemblyFactory.createEndpoint();
- targetEndpoint.setURI(serviceName);
- endpointReference.setTargetEndpoint(targetEndpoint);
- }
-
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-
- List<Endpoint> endpoints = endpointRegistry.findEndpoint(endpointReference);
- if (endpoints.size() <1 ) {
- throw new NoSuchServiceException(serviceName);
- }
-
- String uri = endpoints.get(0).getBinding().getURI();
-// RMIBindingInvoker invoker = new RMIBindingInvoker(rmiHost, uri, method);
-//
-// return invoker.invokeTarget(args);
- return null;
- }
-
-}
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/resources/META-INF/services/org.oasisopen.sca.client.SCAClientFactory b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/resources/META-INF/services/org.oasisopen.sca.client.SCAClientFactory
index 62e42c0cb4..5ac3eedff4 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/resources/META-INF/services/org.oasisopen.sca.client.SCAClientFactory
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/resources/META-INF/services/org.oasisopen.sca.client.SCAClientFactory
@@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.
# Implementation class for the ModuleActivator
-org.apache.tuscany.sca.client.impl.SCAClientFactoryImpl3
+org.apache.tuscany.sca.client.impl.SCAClientFactoryImpl