You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sc...@apache.org on 2011/02/15 15:51:36 UTC
svn commit: r1070926 - in /tuscany/sca-java-2.x/trunk/modules:
assembly/src/main/java/org/apache/tuscany/sca/interfacedef/
assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/
binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding...
Author: scottkurz
Date: Tue Feb 15 14:51:35 2011
New Revision: 1070926
URL: http://svn.apache.org/viewvc?rev=1070926&view=rev
Log:
Fix for TUSCANY-3832. Also tries to simplify wrapped vs. bare terminology by introducing "notSubjectToWrapping" as a term in place of "bare".
Modified:
tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java
tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java
tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java Tue Feb 15 14:51:35 2011
@@ -114,7 +114,20 @@ public interface InterfaceContractMapper
boolean isCompatibleByReference(Operation source, Operation target, Compatibility compatibilityType);
boolean isCompatibleByValue(Operation source, Operation target, Compatibility compatibilityType);
-
+
+ /**
+ * Similar to isCompatibleByValue with the one difference that isCompatibleByValue will "unwrap" a wrapperStyle
+ * operation to compare it to a non-wrapperStyle operation. One the other hand, isCompatibleWithoutUnwrapByValue
+ * will return false, i.e. not-compatible, if the source and target operation do not have the same wrapperStyle.
+ *
+ *
+ * @param source The source operation
+ * @param target The target operation
+ * @param compatibilityType The type of compatibility
+ * @return true if the source operation is compatible with the target
+ * operation
+ */
+ boolean isCompatibleWithoutUnwrapByValue(Operation source, Operation target, Compatibility compatibilityType);
/**
* An interface A is a Compatible Subset of a second interface B if and only if all of points 1 through 6
* in the following list apply:
Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java Tue Feb 15 14:51:35 2011
@@ -207,12 +207,35 @@ public interface Operation extends Clone
List<ParameterMode> getParameterModes();
/**
- * Returns true
+ * Returns whether the operation's outputs will flow wrapped in an array
+ * or not. (Needed to distinguish whether an array represents a single output
+ * or if it wrappers multiple outputs).
+ *
* @return
*/
public boolean hasArrayWrappedOutput();
-
+
+ /**
+ * Sets whether the operation's outputs will flow wrapped in an array
+ * or not. (Needed to distinguish whether an array represents a single output
+ * or if it wrappers multiple outputs).
+ * @param value
+ */
public void setHasArrayWrappedOutput(boolean value);
+
+ /**
+ * Sets whether operation data is not subject to wrapping along with
+ * a data transformation.
+ * @param notSubjectToWrapping
+ */
+ public void setNotSubjectToWrapping(boolean notSubjectToWrapping);
+
+ /**
+ * Returns whether operation data is not subject to wrapping along with
+ * a data transformation.
+ * @return
+ */
+ public boolean isNotSubjectToWrapping();
/**
* A special databinding for input message of an operation
Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java Tue Feb 15 14:51:35 2011
@@ -347,6 +347,15 @@ public class InterfaceContractMapperImpl
return isCompatible(source, target, compatibilityType, true);
}
+ @Override
+ public boolean isCompatibleWithoutUnwrapByValue(Operation source, Operation target, Compatibility compatibilityType) {
+ if (!source.isWrapperStyle() == target.isWrapperStyle()) {
+ return false;
+ } else {
+ return isCompatible(source, target, compatibilityType, true);
+ }
+ }
+
// FIXME: How to improve the performance for the lookup
private Operation getOperation(List<Operation> operations, String name) {
for (Operation op : operations) {
Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java Tue Feb 15 14:51:35 2011
@@ -54,6 +54,7 @@ public class OperationImpl implements Op
private boolean wrapperStyle;
private WrapperInfo wrapper;
private boolean dynamic;
+ private boolean notSubjectToWrapping;
private Map<Object, Object> attributes = new ConcurrentHashMap<Object, Object>();
@@ -308,4 +309,12 @@ public class OperationImpl implements Op
this.hasArrayWrappedOutput = value;
}
+ public void setNotSubjectToWrapping(boolean notSubjectToWrapping) {
+ this.notSubjectToWrapping = notSubjectToWrapping;
+ }
+
+ public boolean isNotSubjectToWrapping() {
+ return notSubjectToWrapping;
+ }
+
}
Modified: tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java Tue Feb 15 14:51:35 2011
@@ -153,7 +153,7 @@ public class RuntimeSCAReferenceBindingP
targetOp,
Compatibility.SUBSET)) {
passByValue = false;
- } else if (interfaceContractMapper.isCompatibleByValue(operation, targetOp, Compatibility.SUBSET)) {
+ } else if (interfaceContractMapper.isCompatibleWithoutUnwrapByValue(operation, targetOp, Compatibility.SUBSET)) {
passByValue = true;
}
}
Modified: tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.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/transformers/Input2InputTransformer.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java Tue Feb 15 14:51:35 2011
@@ -126,7 +126,7 @@ public class Input2InputTransformer exte
DataType<List<DataType>> sourceType = context.getSourceDataType();
Operation sourceOp = context.getSourceOperation();
boolean sourceWrapped = sourceOp != null && sourceOp.isWrapperStyle() && sourceOp.getWrapper() != null;
- boolean sourceBare = sourceOp != null && !sourceOp.isWrapperStyle() && sourceOp.getWrapper() == null;
+ boolean sourceNotSubjectToWrapping = sourceOp != null && sourceOp.isNotSubjectToWrapping();
// Find the wrapper handler for source data
WrapperHandler sourceWrapperHandler = null;
@@ -137,14 +137,14 @@ public class Input2InputTransformer exte
DataType<List<DataType>> targetType = context.getTargetDataType();
Operation targetOp = (Operation)context.getTargetOperation();
boolean targetWrapped = targetOp != null && targetOp.isWrapperStyle() && targetOp.getWrapper() != null;
- boolean targetBare = targetOp != null && !targetOp.isWrapperStyle() && targetOp.getWrapper() == null;
+ boolean targetNotSubjectToWrapping = targetOp != null && targetOp.isNotSubjectToWrapping();
// Find the wrapper handler for target data
WrapperHandler targetWrapperHandler = null;
String targetDataBinding = getDataBinding(targetOp);
targetWrapperHandler = getWrapperHandler(targetDataBinding, targetWrapped);
- if ((!sourceWrapped && !sourceBare) && targetWrapped) {
+ if ((!sourceWrapped && !sourceNotSubjectToWrapping) && targetWrapped) {
// Unwrapped --> Wrapped
WrapperInfo wrapper = targetOp.getWrapper();
// ElementInfo wrapperElement = wrapper.getInputWrapperElement();
@@ -201,7 +201,7 @@ public class Input2InputTransformer exte
true);
return new Object[] {targetWrapper};
- } else if (sourceWrapped && (!targetWrapped && !targetBare)) {
+ } else if (sourceWrapped && (!targetWrapped && !targetNotSubjectToWrapping)) {
// Wrapped to Unwrapped
Object sourceWrapper = source[0];
Object[] target = null;
Modified: tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.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/transformers/Output2OutputTransformer.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java Tue Feb 15 14:51:35 2011
@@ -152,7 +152,7 @@ public class Output2OutputTransformer ex
DataType<List<DataType>> sourceType = context.getSourceDataType();
Operation sourceOp = context.getSourceOperation();
boolean sourceWrapped = sourceOp != null && sourceOp.isWrapperStyle() && sourceOp.getWrapper() != null;
- boolean sourceBare = sourceOp != null && !sourceOp.isWrapperStyle() && sourceOp.getWrapper() == null;
+ boolean sourceNotSubjectToWrapping = sourceOp != null && sourceOp.isNotSubjectToWrapping();
WrapperHandler sourceWrapperHandler = null;
String sourceDataBinding = getDataBinding(sourceOp);
@@ -161,13 +161,13 @@ public class Output2OutputTransformer ex
DataType<List<DataType>> targetType = context.getTargetDataType();
Operation targetOp = (Operation)context.getTargetOperation();
boolean targetWrapped = targetOp != null && targetOp.isWrapperStyle() && targetOp.getWrapper() != null;
- boolean targetBare = targetOp != null && !targetOp.isWrapperStyle() && targetOp.getWrapper() == null;
+ boolean targetNotSubjectToWrapping = targetOp != null && targetOp.isNotSubjectToWrapping();
WrapperHandler targetWrapperHandler = null;
String targetDataBinding = getDataBinding(targetOp);
targetWrapperHandler = getWrapperHandler(targetDataBinding, targetWrapped);
- if ((!sourceWrapped &&!sourceBare) && targetWrapped) {
+ if ((!sourceWrapped &&!sourceNotSubjectToWrapping) && targetWrapped) {
// Unwrapped --> Wrapped
WrapperInfo wrapper = targetOp.getWrapper();
ElementInfo wrapperElement = wrapper.getOutputWrapperElement();
@@ -228,7 +228,7 @@ public class Output2OutputTransformer ex
false);
return targetWrapper;
- } else if (sourceWrapped && (!targetWrapped && !targetBare)) {
+ } else if (sourceWrapped && (!targetWrapped && !targetNotSubjectToWrapping)) {
// Wrapped to Unwrapped
Object sourceWrapper = response;
List<ElementInfo> childElements = sourceOp.getWrapper().getOutputChildElements();
Modified: tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java?rev=1070926&r1=1070925&r2=1070926&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java Tue Feb 15 14:51:35 2011
@@ -201,8 +201,8 @@ public class JAXWSJavaInterfaceProcessor
}
}
}
- // FIXME: [rfeng] For the BARE mapping, do we need to create a Wrapper?
- // it's null at this point
+ // Rather than relying on null wrapper, we use a flag with a clearer meaning.
+ operation.setNotSubjectToWrapping(true);
} else {
RequestWrapper requestWrapper = method.getAnnotation(RequestWrapper.class);