You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2010/12/13 12:16:52 UTC
svn commit: r1045067 - in
/tuscany/sca-java-2.x/trunk/modules/core-databinding: META-INF/MANIFEST.MF
src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java
Author: slaws
Date: Mon Dec 13 11:16:51 2010
New Revision: 1045067
URL: http://svn.apache.org/viewvc?rev=1045067&view=rev
Log:
TUSCANY-3801, update the databinding transformer so that it can be used with native async
Modified:
tuscany/sca-java-2.x/trunk/modules/core-databinding/META-INF/MANIFEST.MF
tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java
Modified: tuscany/sca-java-2.x/trunk/modules/core-databinding/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core-databinding/META-INF/MANIFEST.MF?rev=1045067&r1=1045066&r2=1045067&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core-databinding/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/core-databinding/META-INF/MANIFEST.MF Mon Dec 13 11:16:51 2010
@@ -12,6 +12,7 @@ Bundle-License: http://www.apache.org/li
Bundle-Description: Apache Tuscany SCA Core/DataBinding Integration
Import-Package: javax.xml.namespace,
org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.core.invocation;version="2.0.0",
org.apache.tuscany.sca.databinding;version="2.0.0",
org.apache.tuscany.sca.databinding.annotation;version="2.0.0",
org.apache.tuscany.sca.databinding.impl;version="2.0.0",
Modified: tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java?rev=1045067&r1=1045066&r2=1045067&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java Mon Dec 13 11:16:51 2010
@@ -26,12 +26,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl;
import org.apache.tuscany.sca.databinding.Mediator;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.java.JavaOperation;
-import org.apache.tuscany.sca.invocation.Interceptor;
-import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.runtime.Invocable;
@@ -40,8 +39,7 @@ import org.apache.tuscany.sca.runtime.In
*
* @version $Rev$ $Date$
*/
-public class DataTransformationInterceptor implements Interceptor {
- private Invoker next;
+public class DataTransformationInterceptor extends InterceptorAsyncImpl {
private Operation sourceOperation;
@@ -64,11 +62,49 @@ public class DataTransformationIntercept
this.mediator = mediator;
this.invocable = invocable;
}
-
- public Invoker getNext() {
- return next;
+
+ public Message processRequest(Message msg) {
+ Map<String, Object> metadata = new HashMap<String, Object>();
+ metadata.put(Invocable.class.getName(), invocable);
+ Object input = mediator.mediateInput(msg.getBody(), sourceOperation, targetOperation, metadata);
+ msg.setBody(input);
+ return msg;
}
+ public Message processResponse(Message msg) {
+ Message resultMsg = msg;
+ Map<String, Object> metadata = new HashMap<String, Object>();
+ metadata.put(Invocable.class.getName(), invocable);
+
+ if (sourceOperation.isNonBlocking()) {
+ // Not to reset the message body
+ return resultMsg;
+ }
+
+ Object result = resultMsg.getBody();
+
+ if (resultMsg.isFault()) {
+ Object transformedFault = null;
+ if ((result instanceof Exception) && !(result instanceof RuntimeException)) {
+ transformedFault = mediator.mediateFault(result, sourceOperation, targetOperation, metadata);
+ if (transformedFault != result) {
+ resultMsg.setFaultBody(transformedFault);
+ }
+ }
+ //
+ // Leave it to another layer to actually throw the Exception which constitutes
+ // the message body. We don't throw it here.
+ //
+ } else {
+ assert !(result instanceof Throwable) : "Expected messages that are not throwable " + result;
+ Object newResult = mediator.mediateOutput(result, sourceOperation, targetOperation, metadata);
+ resultMsg.setBody(newResult);
+ }
+
+ return resultMsg;
+ }
+
+/*
public Message invoke(Message msg) {
Map<String, Object> metadata = new HashMap<String, Object>();
metadata.put(Invocable.class.getName(), invocable);
@@ -103,10 +139,8 @@ public class DataTransformationIntercept
return resultMsg;
}
+*/
- public void setNext(Invoker next) {
- this.next = next;
- }
/**
* Returns return type for first Holder in input list.