diff options
author | scottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68> | 2011-01-13 20:54:22 +0000 |
---|---|---|
committer | scottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68> | 2011-01-13 20:54:22 +0000 |
commit | 15b4f6b9d66d71f584a0a98b23454b36727ccdaf (patch) | |
tree | f75a625bcdbdf73596a7ea35a4f1e19720de5350 /sca-java-2.x/trunk/modules/databinding | |
parent | 3ee7931ccba5f8afd21027dc4a6e50883fe8ae24 (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')
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; |