You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/09/14 17:18:16 UTC

svn commit: r1384815 - /camel/trunk/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/name/TypeNameStrategy.java

Author: davsclaus
Date: Fri Sep 14 15:18:15 2012
New Revision: 1384815

URL: http://svn.apache.org/viewvc?rev=1384815&view=rev
Log:
CAMEL-5615: Fixed camel-soap may marshal invalid XML with no tag name in the body.

Modified:
    camel/trunk/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/name/TypeNameStrategy.java

Modified: camel/trunk/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/name/TypeNameStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/name/TypeNameStrategy.java?rev=1384815&r1=1384814&r2=1384815&view=diff
==============================================================================
--- camel/trunk/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/name/TypeNameStrategy.java (original)
+++ camel/trunk/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/name/TypeNameStrategy.java Fri Sep 14 15:18:15 2012
@@ -16,10 +16,13 @@
  */
 package org.apache.camel.dataformat.soap.name;
 
+import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlSchema;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.namespace.QName;
 
+import org.apache.camel.util.ObjectHelper;
+
 /**
  * Strategy to determine the marshalled element name by looking at the
  * annotations of the class to be marshalled
@@ -42,7 +45,15 @@ public class TypeNameStrategy implements
                 nameSpace = xmlSchema.namespace();
             }
         }
-        return new QName(nameSpace, xmlType.name());
+        // prefer name from the XmlType, and fallback to XmlRootElement
+        String localName = xmlType.name();
+        if (ObjectHelper.isEmpty(localName)) {
+            XmlRootElement root = type.getAnnotation(XmlRootElement.class);
+            if (root != null) {
+                localName = root.name();
+            }
+        }
+        return new QName(nameSpace, localName);
     }
 
     public Class<? extends Exception> findExceptionForFaultName(QName faultName) {