summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
diff options
context:
space:
mode:
authornash <nash@13f79535-47bb-0310-9956-ffa450edef68>2010-12-03 17:07:02 +0000
committernash <nash@13f79535-47bb-0310-9956-ffa450edef68>2010-12-03 17:07:02 +0000
commitb45ddbd9b965d35bca5c6974c7ab2cceda794fb2 (patch)
tree7b5f3ef285a9386b85b4db9bcd2593577c813dfa /sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
parenteeabc3ec374ba9dc8b3d9f21f5f07e63b4d268f0 (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 '')
-rw-r--r--sca-java-1.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java18
1 files changed, 17 insertions, 1 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