summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/databinding
diff options
context:
space:
mode:
authorscottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68>2011-01-13 20:54:22 +0000
committerscottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68>2011-01-13 20:54:22 +0000
commit15b4f6b9d66d71f584a0a98b23454b36727ccdaf (patch)
treef75a625bcdbdf73596a7ea35a4f1e19720de5350 /sca-java-2.x/trunk/modules/databinding
parent3ee7931ccba5f8afd21027dc4a6e50883fe8ae24 (diff)
Add context via MediatorImpl so a transformer can know whether a transform is for input/output/fault.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1058748 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/databinding')
-rw-r--r--sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/Mediator.java12
-rw-r--r--sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java15
-rw-r--r--sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/TransformationContextImpl.java5
3 files changed, 27 insertions, 5 deletions
diff --git a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/Mediator.java b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/Mediator.java
index e768c60030..ceb2f59e80 100644
--- a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/Mediator.java
+++ b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/Mediator.java
@@ -33,6 +33,17 @@ import org.apache.tuscany.sca.interfacedef.Operation;
*/
public interface Mediator {
+ // Constants used by the databinding framework's TransformationContext metadata
+ public final static String SOURCE_OPERATION = "source.operation";
+ public final static String TARGET_OPERATION = "target.operation";
+
+ // Use String constants rather than an enum, in case the dependency isn't factored
+ // out well enough and someone needs to use the String values.
+ public static final String BODY_TYPE = "body.type";
+ public static final String BODY_TYPE_INPUT = "input";
+ public static final String BODY_TYPE_OUTPUT = "output";
+ public static final String BODY_TYPE_FAULT = "fault";
+
/**
* Mediate the data from the source type to the target type
* @param source The data to be mediated
@@ -201,4 +212,5 @@ public interface Mediator {
TransformationContext createTransformationContext(DataType sourceDataType,
DataType targetDataType,
Map<String, Object> metadata);
+
}
diff --git a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java
index 5137338f4d..d6d56e2711 100644
--- a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java
+++ b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java
@@ -64,8 +64,7 @@ import org.oasisopen.sca.ServiceRuntimeException;
* @tuscany.spi.extension.asclient
*/
public class MediatorImpl implements Mediator {
- private static final String TARGET_OPERATION = "target.operation";
- private static final String SOURCE_OPERATION = "source.operation";
+
private ExtensionPointRegistry registry;
private DataBindingExtensionPoint dataBindings;
private TransformerExtensionPoint transformers;
@@ -327,6 +326,10 @@ public class MediatorImpl implements Mediator {
if (sourceOperation != null) {
context.put(TARGET_OPERATION, sourceOperation);
}
+ if (context.get(BODY_TYPE) == null) {
+ context.put(BODY_TYPE, BODY_TYPE_FAULT);
+ }
+
Object newResult =
transformException(result, targetDataType, sourceDataType, targetFaultType, sourceFaultType, context);
@@ -403,6 +406,10 @@ public class MediatorImpl implements Mediator {
if (sourceOperation != null) {
context.put(TARGET_OPERATION, sourceOperation);
}
+ if (context.get(BODY_TYPE) == null) {
+ context.put(BODY_TYPE, BODY_TYPE_OUTPUT);
+ }
+
return mediate(output, targetType, sourceType, context);
}
@@ -429,6 +436,10 @@ public class MediatorImpl implements Mediator {
if (targetOperation != null) {
context.put(TARGET_OPERATION, targetOperation);
}
+ if (context.get(BODY_TYPE) == null) {
+ context.put(BODY_TYPE, BODY_TYPE_INPUT);
+ }
+
return mediate(input, sourceType, targetType, context);
}
diff --git a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/TransformationContextImpl.java b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/TransformationContextImpl.java
index 7af63f1ad6..e8b1ac3c01 100644
--- a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/TransformationContextImpl.java
+++ b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/TransformationContextImpl.java
@@ -21,14 +21,13 @@ package org.apache.tuscany.sca.databinding.impl;
import java.util.HashMap;
import java.util.Map;
+import static org.apache.tuscany.sca.databinding.Mediator.SOURCE_OPERATION;
+import static org.apache.tuscany.sca.databinding.Mediator.TARGET_OPERATION;
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Operation;
public class TransformationContextImpl implements TransformationContext {
- private static final String SOURCE_OPERATION = "source.operation";
-
- private static final String TARGET_OPERATION = "target.operation";
private DataType sourceDataType;