diff options
Diffstat (limited to 'sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime')
20 files changed, 997 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/META-INF/MANIFEST.MF b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..ab90529320 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/META-INF/MANIFEST.MF @@ -0,0 +1,31 @@ +Manifest-Version: 1.0
+SCA-Version: 1.1
+Bundle-Name: Apache Tuscany SCA Binding Hazelcast Runtime
+Bundle-Vendor: The Apache Software Foundation
+Bundle-Version: 2.0.0
+Bundle-ManifestVersion: 2
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-Description: Apache Tuscany Hazelcast Binding
+Bundle-SymbolicName: org.apache.tuscany.sca.binding.hazelcast.runtime
+Bundle-DocURL: http://www.apache.org/
+Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 +Import-Package: javax.xml.namespace,
+ org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.assembly.xml;version="2.0.0",
+ org.apache.tuscany.sca.assembly.impl;version="2.0.0",
+ org.apache.tuscany.sca.binding.ws;version="2.0.0",
+ org.apache.tuscany.sca.binding.ws.wsdlgen;version="2.0.0",
+ org.apache.tuscany.sca.common.xml.dom;version="2.0.0",
+ org.apache.tuscany.sca.context;version="2.0.0",
+ org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.databinding.xml;version="2.0.0",
+ org.apache.tuscany.sca.endpoint.hazelcast;version="2.0.0",
+ org.apache.tuscany.sca.interfacedef;version="2.0.0",
+ org.apache.tuscany.sca.interfacedef.util;version="2.0.0",
+ org.apache.tuscany.sca.invocation;version="2.0.0",
+ org.apache.tuscany.sca.provider;version="2.0.0",
+ org.apache.tuscany.sca.runtime;version="2.0.0",
+ org.oasisopen.sca,
+ org.oasisopen.sca.annotation,
+ org.w3c.dom,
+ org.xml.sax
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/pom.xml b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/pom.xml new file mode 100644 index 0000000000..0fb226de70 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/pom.xml @@ -0,0 +1,58 @@ +<?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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-modules</artifactId> + <version>2.0-M5.1</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>tuscany-binding-hazelcast-runtime</artifactId> + <name>Apache Tuscany SCA Binding Hazelcast Runtime</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-endpoint-hazelcast</artifactId> + <version>2.0-M5.1</version> + </dependency> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-ws-wsdlgen</artifactId> + <version>2.0-M5.1</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-node-impl</artifactId> + <version>2.0-M5.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>2.0-M5.1</version> + <scope>test</scope> + </dependency> + </dependencies> + +</project> diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/EndpointStash.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/EndpointStash.java new file mode 100644 index 0000000000..36d4e74813 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/EndpointStash.java @@ -0,0 +1,54 @@ +/*
+ * 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.binding.hazelcast;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+
+
+public class EndpointStash {
+
+ // TODO a better way of sharing these endpoints than a static
+ // the issue is that the ServiceInvoker needs to get hold of the Endpoint
+ // for a URI. The ServiceInvoker runs in the context of a Hazelcast spawned
+ // thread so can only get to Tuscany via a static. The Hazelcast endpoint
+ // registry does actually have these endpoints so perhaps an alternative could be
+ // to use NodeFactory.getNodeFactories to get at the Hazelcast endpoint registry.
+ private static Map<String, RuntimeEndpoint> endpoints = new ConcurrentHashMap<String, RuntimeEndpoint>();
+
+ public static void addEndpoint(RuntimeEndpoint endpoint) {
+ endpoints.put(endpoint.getURI(), endpoint);
+ }
+
+ public static RuntimeEndpoint getEndpoint(String uri) {
+ for (RuntimeEndpoint ep : endpoints.values()) {
+ if (ep.matches(uri)) {
+ return ep;
+ }
+ }
+ return null;
+ }
+
+ public static void removeEndpoint(String uri) {
+ endpoints.remove(uri);
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBinding.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBinding.java new file mode 100644 index 0000000000..63b18ce8a2 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBinding.java @@ -0,0 +1,33 @@ +/*
+ * 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.binding.hazelcast;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.assembly.impl.BindingImpl;
+
+public class HazelcastBinding extends BindingImpl {
+
+ public static final QName TYPE = new QName(SCA11_TUSCANY_NS, "binding.hazelcast");
+
+ public HazelcastBinding() {
+ super(TYPE);
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingProviderFactory.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingProviderFactory.java new file mode 100644 index 0000000000..b56d8a1e50 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingProviderFactory.java @@ -0,0 +1,66 @@ +/*
+ * 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.binding.hazelcast;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Contract;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.databinding.xml.DOMDataBinding;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.provider.BindingProviderFactory;
+import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
+import org.apache.tuscany.sca.provider.ServiceBindingProvider;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
+
+public class HazelcastBindingProviderFactory implements BindingProviderFactory<HazelcastBinding> {
+
+ private ExtensionPointRegistry extensionsRegistry;
+
+ public HazelcastBindingProviderFactory(ExtensionPointRegistry extensionsRegistry) {
+ this.extensionsRegistry = extensionsRegistry;
+ }
+
+ public ReferenceBindingProvider createReferenceBindingProvider(RuntimeEndpointReference endpointReference) {
+ InterfaceContract interfaceContract = createDOMInterfaceContract(endpointReference.getComponent(), endpointReference.getReference());
+ return new HazelcastReferenceBindingProvider(extensionsRegistry, endpointReference.getBinding().getURI(), interfaceContract);
+ }
+
+ public ServiceBindingProvider createServiceBindingProvider(RuntimeEndpoint endpoint) {
+ InterfaceContract interfaceContract = createDOMInterfaceContract(endpoint.getComponent(), endpoint.getService());
+ return new HazelcastServiceBindingProvider(endpoint, interfaceContract);
+ }
+
+ private InterfaceContract createDOMInterfaceContract(Component component, Contract contract) {
+ WebServiceBindingFactory wsFactory = extensionsRegistry.getExtensionPoint(WebServiceBindingFactory.class);
+ WebServiceBinding wsBinding = wsFactory.createWebServiceBinding();
+ BindingWSDLGenerator.generateWSDL(component, contract, wsBinding, extensionsRegistry, null);
+ InterfaceContract interfaceContract = wsBinding.getBindingInterfaceContract();
+ interfaceContract.getInterface().resetDataBinding(DOMDataBinding.NAME);
+ return interfaceContract;
+ }
+
+ public Class<HazelcastBinding> getModelType() {
+ return HazelcastBinding.class;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastReferenceBindingProvider.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastReferenceBindingProvider.java new file mode 100644 index 0000000000..f7cb0ffeee --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastReferenceBindingProvider.java @@ -0,0 +1,58 @@ +/*
+ * 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.binding.hazelcast;
+
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
+
+public class HazelcastReferenceBindingProvider implements ReferenceBindingProvider {
+
+ private ExtensionPointRegistry extensionsRegistry;
+ private String serviceURI;
+ private InterfaceContract interfaceContract;
+
+ public HazelcastReferenceBindingProvider(ExtensionPointRegistry extensionsRegistry, String serviceURI, InterfaceContract interfaceContract) {
+ this.extensionsRegistry = extensionsRegistry;
+ this.serviceURI = serviceURI;
+ this.interfaceContract = interfaceContract;
+ }
+
+ public Invoker createInvoker(Operation operation) {
+ return new ReferenceInvoker(extensionsRegistry, serviceURI, operation);
+ }
+
+ public InterfaceContract getBindingInterfaceContract() {
+ return interfaceContract;
+ }
+
+ public boolean supportsOneWayInvocation() {
+ return false;
+ }
+
+ public void start() {
+ }
+
+ public void stop() {
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastServiceBindingProvider.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastServiceBindingProvider.java new file mode 100644 index 0000000000..d911e5b245 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastServiceBindingProvider.java @@ -0,0 +1,52 @@ +/*
+ * 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.binding.hazelcast;
+
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.provider.ServiceBindingProvider;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+
+public class HazelcastServiceBindingProvider implements ServiceBindingProvider {
+
+ private RuntimeEndpoint endpoint;
+ private InterfaceContract interfaceContract;
+
+
+ public HazelcastServiceBindingProvider(RuntimeEndpoint endpoint, InterfaceContract interfaceContract) {
+ this.endpoint = endpoint;
+ this.interfaceContract = interfaceContract;
+ }
+
+ public void start() {
+ EndpointStash.addEndpoint(endpoint);
+ }
+
+ public void stop() {
+ EndpointStash.removeEndpoint(endpoint.getURI());
+ }
+
+ public InterfaceContract getBindingInterfaceContract() {
+ return interfaceContract;
+ }
+
+ public boolean supportsOneWayInvocation() {
+ return false;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java new file mode 100644 index 0000000000..f588f87bdd --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java @@ -0,0 +1,127 @@ +/*
+ * 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.binding.hazelcast;
+
+import java.io.IOException;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.FutureTask;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.endpoint.hazelcast.HazelcastEndpointRegistry;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.runtime.DomainRegistryFactory;
+import org.apache.tuscany.sca.runtime.EndpointRegistry;
+import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
+import org.oasisopen.sca.ServiceRuntimeException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+import com.hazelcast.core.DistributedTask;
+import com.hazelcast.core.Member;
+
+public class ReferenceInvoker implements Invoker {
+
+ HazelcastEndpointRegistry hzRegistry;
+ DOMHelper domHelper;
+ String serviceURI;
+ private Operation operation;
+ MessageFactory messageFactory;
+
+ public ReferenceInvoker(ExtensionPointRegistry extensionsRegistry, String serviceURI, Operation operation) {
+ this.serviceURI = serviceURI;
+ this.operation = operation;
+ DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionsRegistry);
+ for (EndpointRegistry r : domainRegistryFactory.getEndpointRegistries()) {
+ if (r instanceof HazelcastEndpointRegistry) {
+ hzRegistry = (HazelcastEndpointRegistry)r;
+ break;
+ }
+ }
+ this.domHelper = DOMHelper.getInstance(extensionsRegistry);
+ FactoryExtensionPoint modelFactories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class);
+ this.messageFactory = modelFactories.getFactory(MessageFactory.class);
+ }
+
+ public Message invoke(Message msg) {
+ Member owningMember = hzRegistry.getOwningMember(serviceURI);
+ if (owningMember == null) {
+ throw new ServiceRuntimeException("service not found: " + serviceURI);
+ }
+ String requestXML = getRequestXML(msg);
+ Callable<String> callable = new ServiceInvoker(serviceURI, operation.getName(), requestXML);
+ FutureTask<String> task = new DistributedTask<String>(callable, owningMember);
+ ExecutorService executorService = getExecutorService();
+ executorService.execute(task);
+ try {
+ return getResponseNode(task.get());
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ /**
+ * Hazelcast ExecutorService can't nest invocations so use a separate ExecutorService
+ * for nested calls. See http://groups.google.com/group/hazelcast/browse_thread/thread/1cc0b943716476e9
+ */
+ private ExecutorService getExecutorService() {
+ String threadName = Thread.currentThread().getName();
+ if (!threadName.startsWith("hz.executor.") || threadName.indexOf("binding.sca.") == -1) {
+ return hzRegistry.getHazelcastInstance().getExecutorService("binding.sca.1");
+ } else {
+ String oldName = threadName.substring(threadName.lastIndexOf("binding.sca."), threadName.lastIndexOf(".thread-"));
+ int x = Integer.parseInt(oldName.substring(oldName.lastIndexOf('.') + 1));
+ return hzRegistry.getHazelcastInstance().getExecutorService(oldName.substring(0, 12) + (x + 1));
+ }
+ }
+
+ private String getRequestXML(Message msg) {
+ Object[] args = msg.getBody();
+ String msgXML = domHelper.saveAsString((Node)args[0]);
+ return msgXML;
+ }
+
+ private Message getResponseNode(String responseXML) throws IOException, SAXException {
+ Message msg = messageFactory.createMessage();
+ if (responseXML.startsWith("DECLAREDEXCEPTION:")) {
+ Document responseDOM = domHelper.load(responseXML.substring(18));
+ FaultException e = new FaultException("remote exception", responseDOM);
+ Node node = ((Node)responseDOM).getFirstChild();
+ e.setFaultName(new QName(node.getNamespaceURI(), node.getLocalName()));
+ msg.setFaultBody(e);
+ } else if (responseXML.startsWith("EXCEPTION:")) {
+ throw new ServiceRuntimeException("Remote exception:" + responseXML.substring(10));
+ } else {
+ Document responseDOM = domHelper.load(responseXML);
+ msg.setBody(responseDOM);
+ }
+ return msg;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java new file mode 100644 index 0000000000..d25c32a68c --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java @@ -0,0 +1,98 @@ +/*
+ * 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.binding.hazelcast;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.util.concurrent.Callable;
+
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.interfacedef.Interface;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.oasisopen.sca.NoSuchServiceException;
+import org.oasisopen.sca.ServiceRuntimeException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+public class ServiceInvoker implements Callable<String>, Serializable {
+ private static final long serialVersionUID = 1L;
+
+ // all fields MUST be Serializable
+ private String serviceURI;
+ private String operationName;
+ private String requestXML;
+
+ public ServiceInvoker(String serviceURI, String operationName, String msgXML) {
+ this.serviceURI = serviceURI;
+ this.operationName = operationName;
+ this.requestXML = msgXML;
+ }
+
+ public String call() throws Exception {
+ RuntimeEndpoint endpoint = EndpointStash.getEndpoint(serviceURI);
+ if (endpoint == null) {
+ throw new NoSuchServiceException(serviceURI);
+ }
+ Operation operation = getRequestOperation(endpoint);
+ DOMHelper domHelper = DOMHelper.getInstance(endpoint.getCompositeContext().getExtensionPointRegistry());
+ Object[] args = getRequestArgs(domHelper);
+ String responseXML;
+ try {
+ Object response = endpoint.invoke(operation, args);
+ responseXML = getResponseXML(domHelper, response);
+ } catch (Exception e) {
+ if (e instanceof InvocationTargetException && ((InvocationTargetException)e).getTargetException() instanceof FaultException) {
+ responseXML = "DECLAREDEXCEPTION:" + getResponseXML(domHelper, ((FaultException)((InvocationTargetException)e).getTargetException()).getFaultInfo());
+ } else {
+ responseXML = "EXCEPTION: " + e.getClass() + ":" + e.getMessage();
+ }
+ }
+ return responseXML;
+ }
+
+ private Operation getRequestOperation(RuntimeEndpoint endpoint) {
+ InterfaceContract ic = endpoint.getBindingInterfaceContract();
+ Interface iface = ic.getInterface();
+ for (Operation op : iface.getOperations()) {
+ if (op.getName().equals(operationName)) {
+ return op;
+ }
+
+ }
+ // TODO: return err msg
+ throw new ServiceRuntimeException("operation not found " + operationName);
+ }
+
+ private Object[] getRequestArgs(DOMHelper domHelper) throws IOException, SAXException {
+ Document requestDOM = domHelper.load(requestXML);
+ return new Object[] {requestDOM};
+ }
+
+ private String getResponseXML(DOMHelper domHelper, Object response) {
+ String responseXML = domHelper.saveAsString((Node)response);
+ return responseXML;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor new file mode 100644 index 0000000000..2fc977b41f --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor @@ -0,0 +1,21 @@ +# 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.
+
+# Implementation class for the artifact processor extension
+org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#binding.hazelcast,model=org.apache.tuscany.sca.binding.hazelcast.HazelcastBinding
+
+
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory new file mode 100644 index 0000000000..3878c5f0da --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory @@ -0,0 +1,19 @@ +# 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.
+
+# Implementation class for the binding extension
+org.apache.tuscany.sca.binding.hazelcast.HazelcastBindingProviderFactory;model=org.apache.tuscany.sca.binding.hazelcast.HazelcastBinding
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/BadStringException.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/BadStringException.java new file mode 100644 index 0000000000..f7ca89e7bb --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/BadStringException.java @@ -0,0 +1,29 @@ +/*
+ * 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.binding.hazelcast;
+
+public class BadStringException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ public BadStringException(String msg) {
+ super(msg);
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/ComplexType.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/ComplexType.java new file mode 100644 index 0000000000..79e695d38a --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/ComplexType.java @@ -0,0 +1,33 @@ +/*
+ * 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.binding.hazelcast;
+
+public class ComplexType {
+
+ private String s;
+
+ public void setString(String s) {
+ this.s = s;
+ }
+
+ public String getString() {
+ return s;
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java new file mode 100644 index 0000000000..1183ae9732 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java @@ -0,0 +1,114 @@ +/*
+ * 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.binding.hazelcast;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.oasisopen.sca.ServiceRuntimeException;
+
+public class HazelcastBindingTestCase {
+
+ private static Node serviceNode;
+ private static Node clientNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ // Note use of NodeFactory.newInstance() so as to start separate runtimes
+ serviceNode = NodeFactory.newInstance("uri:HazelcastBindingTestCase?bind=127.0.0.1").createNode("service.composite", new String[]{"target/test-classes"});
+ serviceNode.start();
+ clientNode = NodeFactory.newInstance("uri:HazelcastBindingTestCase?bind=127.0.0.1").createNode("client.composite", new String[]{"target/test-classes"});
+ clientNode.start();
+ }
+
+ @Test
+ public void testNestedClient() throws Exception {
+ Node client2Node = NodeFactory.newInstance("uri:HazelcastBindingTestCase?bind=127.0.0.1").createNode("client2.composite", new String[]{"target/test-classes"});
+ client2Node.start();
+ TestService service = client2Node.getService(TestService.class, "TestServiceClient2");
+ assertNotNull(service);
+ assertEquals("Petra", service.echoString("Petra"));
+ client2Node.stop();
+ }
+
+ @Test
+ public void testEchoString() throws Exception {
+ TestService service = clientNode.getService(TestService.class, "TestServiceClient");
+ assertNotNull(service);
+ assertEquals("Petra", service.echoString("Petra"));
+ }
+
+ @Test
+ public void testOnewayString() throws Exception {
+ TestService service = clientNode.getService(TestService.class, "TestServiceClient");
+ assertNotNull(service);
+ service.onewayString("Petra");
+ }
+
+ @Test
+ public void testEchoComplexType() throws Exception {
+ TestService service = clientNode.getService(TestService.class, "TestServiceClient");
+ assertNotNull(service);
+ ComplexType ct = new ComplexType();
+ ct.setString("beate");
+ assertEquals("beate", service.echoComplexType(ct).getString());
+ }
+
+ @Test
+ public void testDeclaredException() throws Exception {
+ TestService service = clientNode.getService(TestService.class, "TestServiceClient");
+ assertNotNull(service);
+ try {
+ service.testExceptions("Sue");
+ fail();
+ } catch (BadStringException e) {
+ assertEquals("Sue", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testRuntimeException() throws Exception {
+ TestService service = clientNode.getService(TestService.class, "TestServiceClient");
+ assertNotNull(service);
+ try {
+ service.testExceptions("runtime");
+ fail();
+ } catch (ServiceRuntimeException e) {
+ assertEquals("org.oasisopen.sca.ServiceRuntimeException: Remote exception: class java.lang.RuntimeException:runtime", e.getMessage());
+ }
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (clientNode != null) {
+ clientNode.stop();
+ }
+ if (serviceNode != null) {
+ serviceNode.stop();
+ }
+ }
+}
+
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestService.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestService.java new file mode 100644 index 0000000000..e2462daa76 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestService.java @@ -0,0 +1,30 @@ +/*
+ * 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.binding.hazelcast;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface TestService {
+ String echoString(String s);
+ void onewayString(String s);
+ ComplexType echoComplexType(ComplexType ct);
+ String testExceptions(String s) throws BadStringException;
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceClient.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceClient.java new file mode 100644 index 0000000000..18cd2555b3 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceClient.java @@ -0,0 +1,45 @@ +/*
+ * 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.binding.hazelcast;
+
+import org.oasisopen.sca.annotation.Reference;
+
+public class TestServiceClient implements TestService {
+
+ @Reference
+ public TestService service;
+
+ public String echoString(String s) {
+ return service.echoString(s);
+ }
+
+ public void onewayString(String s) {
+ service.onewayString(s);
+ }
+
+ public ComplexType echoComplexType(ComplexType ct) {
+ return service.echoComplexType(ct);
+ }
+
+ public String testExceptions(String s) throws BadStringException {
+ return service.testExceptions(s);
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java new file mode 100644 index 0000000000..6c9a5d71bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java @@ -0,0 +1,43 @@ +/*
+ * 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.binding.hazelcast;
+
+public class TestServiceImpl implements TestService {
+
+ public String echoString(String s) {
+ return s;
+ }
+
+ public void onewayString(String s) {
+ System.out.println("onewayString " + s);
+ }
+
+ public ComplexType echoComplexType(ComplexType ct) {
+ return ct;
+ }
+
+ public String testExceptions(String s) throws BadStringException {
+ if (s.equals("runtime")) {
+ throw new RuntimeException("runtime");
+ }
+ throw new BadStringException(s);
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/client.composite b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/client.composite new file mode 100644 index 0000000000..7436a5e24b --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/client.composite @@ -0,0 +1,29 @@ +<?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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://itest"
+ name="TestServiceClient">
+
+ <component name="TestServiceClient">
+ <implementation.java class="org.apache.tuscany.sca.binding.hazelcast.TestServiceClient"/>
+ <reference name="service" target="TestService"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/client2.composite b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/client2.composite new file mode 100644 index 0000000000..20667984ca --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/client2.composite @@ -0,0 +1,29 @@ +<?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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://itest"
+ name="TestServiceClient2">
+
+ <component name="TestServiceClient2">
+ <implementation.java class="org.apache.tuscany.sca.binding.hazelcast.TestServiceClient"/>
+ <reference name="service" target="TestServiceClient"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/service.composite b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/service.composite new file mode 100644 index 0000000000..83f13a35f2 --- /dev/null +++ b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-hazelcast-runtime/src/test/resources/service.composite @@ -0,0 +1,28 @@ +<?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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://itest"
+ name="TestService">
+
+ <component name="TestService">
+ <implementation.java class="org.apache.tuscany.sca.binding.hazelcast.TestServiceImpl"/>
+ </component>
+
+</composite>
|