diff options
author | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2010-12-03 17:07:02 +0000 |
---|---|---|
committer | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2010-12-03 17:07:02 +0000 |
commit | b45ddbd9b965d35bca5c6974c7ab2cceda794fb2 (patch) | |
tree | 7b5f3ef285a9386b85b4db9bcd2593577c813dfa /sca-java-1.x/trunk/modules/core-databinding/src/main/java | |
parent | eeabc3ec374ba9dc8b3d9f21f5f07e63b4d268f0 (diff) |
TUSCANY-3298: Enable JAXB wrappers for WSDL generation
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1041912 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/trunk/modules/core-databinding/src/main/java')
2 files changed, 34 insertions, 2 deletions
diff --git a/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java b/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java index f537dc4524..0d12d2b4fd 100644 --- a/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java +++ b/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java @@ -121,13 +121,29 @@ public class Input2InputTransformer extends BaseTransformer<Object[], Object[]> for (int i = 0; i < list1.size(); i++) { String n1 = list1.get(i).getQName().getLocalPart(); String n2 = list2.get(i).getQName().getLocalPart(); - if (!n1.equals(n2)) { + + // TUSCANY-3298: In the following situation: + // 1. The child is a java.util.Map type + // 2. The child's name is a Java keyword (e.g., return) + // 3. Tuscany is using a generated JAXB wrapper class for WSDL generation + // the Java to WSDL generation process results in the WSDL element name + // having a leading underscore added to the actual element name. This is + // because of a known JAXB issue that prevents the @XmlElement annotation + // being used on a java.util.Map type property field in the wrapper bean + // (see https://jaxb.dev.java.net/issues/show_bug.cgi?id=268). + // To prevent the compatibility match from failing in this situation, + // we strip any leading underscore before doing the comparison. + if (!stripLeadingUnderscore(n1).equals(stripLeadingUnderscore(n2))) { return false; } } return true; } + private static String stripLeadingUnderscore(String name) { + return name.startsWith("_") ? name.substring(1) : name; + } + @SuppressWarnings("unchecked") public Object[] transform(Object[] source, TransformationContext context) { // Check if the source operation is wrapped diff --git a/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java b/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java index 348d8345b2..41285a910d 100644 --- a/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java +++ b/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java @@ -142,13 +142,29 @@ public class Output2OutputTransformer extends BaseTransformer<Object, Object> im for (int i = 0; i < list1.size(); i++) { String n1 = list1.get(i).getQName().getLocalPart(); String n2 = list2.get(i).getQName().getLocalPart(); - if (!n1.equals(n2)) { + + // TUSCANY-3298: In the following situation: + // 1. The child is a java.util.Map type + // 2. The child's name is a Java keyword (e.g., return) + // 3. Tuscany is using a generated JAXB wrapper class for WSDL generation + // the Java to WSDL generation process results in the WSDL element name + // having a leading underscore added to the actual element name. This is + // because of a known JAXB issue that prevents the @XmlElement annotation + // being used on a java.util.Map type property field in the wrapper bean + // (see https://jaxb.dev.java.net/issues/show_bug.cgi?id=268). + // To prevent the compatibility match from failing in this situation, + // we strip any leading underscore before doing the comparison. + if (!stripLeadingUnderscore(n1).equals(stripLeadingUnderscore(n2))) { return false; } } return true; } + private static String stripLeadingUnderscore(String name) { + return name.startsWith("_") ? name.substring(1) : name; + } + @SuppressWarnings("unchecked") public Object transform(Object response, TransformationContext context) { try { |