summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-12-01 17:08:08 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-12-01 17:08:08 +0000
commitdf985887c3369c9bb1de8e8a4f846d1ee9e0a2db (patch)
tree0b8a99c981c34b8ee5d13449bcb3b092242eea37 /sca-java-2.x
parent3bdbdf7d81877bf0c34390938265a63a02d3af61 (diff)
Make it clear the this invoker is for handling async responses.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1041080 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x')
-rw-r--r--sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java4
-rw-r--r--sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java68
2 files changed, 70 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java b/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
index bc56877469..80193277da 100644
--- a/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
+++ b/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
@@ -95,7 +95,7 @@ class SampleAsyncProvider implements ImplementationAsyncProvider {
}
}
- public Invoker createAsyncInvoker(RuntimeComponentService service, Operation operation) {
- return new SampleAsyncInvoker(asyncMessageMap, operation, impl.clazz, instance);
+ public Invoker createAsyncResponseInvoker(RuntimeComponentService service, Operation operation) {
+ return new SampleAsyncResponseInvoker(asyncMessageMap, operation, impl.clazz, instance);
}
}
diff --git a/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java b/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java
new file mode 100644
index 0000000000..3e7e0f6a51
--- /dev/null
+++ b/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java
@@ -0,0 +1,68 @@
+/*
+ * 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 sampleasync.impl;
+
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import org.apache.tuscany.sca.core.invocation.Constants;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+import org.w3c.dom.Element;
+
+/**
+ * Invoker for Sample components that implement a WSDL interface using a generic
+ * call method.
+ *
+ * @version $Rev$ $Date$
+ */
+class SampleAsyncResponseInvoker implements Invoker {
+ final String name;
+ final Object instance;
+ final Operation op;
+ Map<String, Object> asyncMessageMap;
+
+ SampleAsyncResponseInvoker(Map<String, Object> asyncMessageMap, final Operation op, final Class<?> clazz, final Object instance) {
+ this.asyncMessageMap = asyncMessageMap;
+ this.name = op.getName();
+ this.instance = instance;
+ this.op = op;
+ }
+
+ public Message invoke(final Message msg) {
+ try {
+ String messageID = (String) msg.getHeaders().get(Constants.MESSAGE_ID);
+ String forwardOpName = (String)asyncMessageMap.get(messageID);
+
+ // process the async response
+ Object reponse = ((Object[])msg.getBody())[0];
+
+ //Method method = instance.getClass().getMethod(forwardOpName + "Callback", Element.class);
+ Method method = instance.getClass().getMethod(forwardOpName + "Callback", String.class);
+ method.invoke(instance, reponse);
+ } catch(Exception e) {
+ e.printStackTrace();
+ msg.setFaultBody(e.getCause());
+ }
+ return msg;
+ }
+}