summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/assembly/src/main
diff options
context:
space:
mode:
authorscottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68>2011-02-15 14:51:35 +0000
committerscottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68>2011-02-15 14:51:35 +0000
commitfa76bf91f5918d44c9d72c3d7ad8461210516e3d (patch)
tree15df4da9672154063c93f0ec6d5193ef44cab8df /sca-java-2.x/trunk/modules/assembly/src/main
parentea7098f768f23e427373967e3dce730bbf51abc6 (diff)
Fix for TUSCANY-3832. Also tries to simplify wrapped vs. bare terminology by introducing "notSubjectToWrapping" as a term in place of "bare".
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1070926 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/assembly/src/main')
-rw-r--r--sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java15
-rw-r--r--sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java27
-rw-r--r--sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java9
-rw-r--r--sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java9
4 files changed, 57 insertions, 3 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java
index 94bce6d6b4..ed7b10091b 100644
--- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java
+++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InterfaceContractMapper.java
@@ -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:
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
index c3a7ca972a..59a79c72d6 100644
--- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
+++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
@@ -207,12 +207,35 @@ public interface Operation extends Cloneable, PolicySubject {
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
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java
index 486081dfec..5e0f6d4e65 100644
--- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java
+++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractMapperImpl.java
@@ -347,6 +347,15 @@ public class InterfaceContractMapperImpl implements InterfaceContractMapper {
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) {
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
index 95256101d0..b820f95fcf 100644
--- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
+++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
@@ -54,6 +54,7 @@ public class OperationImpl implements Operation {
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 Operation {
this.hasArrayWrappedOutput = value;
}
+ public void setNotSubjectToWrapping(boolean notSubjectToWrapping) {
+ this.notSubjectToWrapping = notSubjectToWrapping;
+ }
+
+ public boolean isNotSubjectToWrapping() {
+ return notSubjectToWrapping;
+ }
+
}