Author: ema
Date: Sat Jan 5 08:40:03 2013
New Revision: 1429236
URL: http://svn.apache.org/viewvc?rev=1429236&view=rev
Log:
Merged revisions 1429231 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1429231 | ema | 2013-01-05 16:04:23 +0800 (Sat, 05 Jan 2013) | 1 line
[CXF-4729]:Support @XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL) in
Exception class
........
Added:
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/OrderEcho.java
- copied unchanged from r1429231,
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/OrderEcho.java
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/OrderEchoImpl.java
- copied unchanged from r1429231,
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/OrderEchoImpl.java
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/OrderException.java
- copied unchanged from r1429231,
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/OrderException.java
Modified:
cxf/branches/2.6.x-fixes/ (props changed)
cxf/branches/2.6.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
svn:mergeinfo = /cxf/trunk:1429231
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
cxf/branches/2.6.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java?rev=1429236&r1=1429235&r2=1429236&view=diff
==============================================================================
---
cxf/branches/2.6.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
(original)
+++
cxf/branches/2.6.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
Sat Jan 5 08:40:03 2013
@@ -36,7 +36,9 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
+import javax.xml.bind.annotation.XmlAccessOrder;
import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorOrder;
import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlAdapter;
@@ -469,6 +471,7 @@ class JAXBSchemaInitializer extends Serv
break;
}
}
+ XmlAccessorOrder xmlAccessorOrder =
cls.getAnnotation(XmlAccessorOrder.class);
XmlType xmlTypeAnno = cls.getAnnotation(XmlType.class);
String[] propertyOrder = null;
boolean respectXmlTypeNS = false;
@@ -556,7 +559,6 @@ class JAXBSchemaInitializer extends Serv
exEle.setSchemaTypeName(getTypeName(beanInfo));
exEle.setMinOccurs(0);
seq.getItems().add(exEle);
-
}
if (propertyOrder != null && propertyOrder.length ==
seq.getItems().size()) {
@@ -565,6 +567,11 @@ class JAXBSchemaInitializer extends Serv
LOG.log(Level.WARNING, "propOrder in @XmlType doesn't define all
schema elements :"
+ Arrays.toString(propertyOrder));
}
+
+ if (xmlAccessorOrder != null &&
xmlAccessorOrder.value().equals(XmlAccessOrder.ALPHABETICAL)
+ && propertyOrder == null) {
+ sort(seq);
+ }
schemas.addCrossImports();
part.setProperty(JAXBDataBinding.class.getName() +
".CUSTOM_EXCEPTION", Boolean.TRUE);
@@ -651,4 +658,16 @@ class JAXBSchemaInitializer extends Serv
});
}
+ //sort to Alphabetical order
+ private void sort(final XmlSchemaSequence seq) {
+ Collections.sort(seq.getItems(), new
Comparator<XmlSchemaSequenceMember>() {
+ public int compare(XmlSchemaSequenceMember o1,
XmlSchemaSequenceMember o2) {
+ XmlSchemaElement element1 = (XmlSchemaElement)o1;
+ XmlSchemaElement element2 = (XmlSchemaElement)o2;
+ return element1.getName().compareTo(element2.getName());
+ }
+
+ });
+ }
+
}
Modified:
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java?rev=1429236&r1=1429235&r2=1429236&view=diff
==============================================================================
---
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
(original)
+++
cxf/branches/2.6.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
Sat Jan 5 08:40:03 2013
@@ -723,8 +723,33 @@ public class JavaToProcessorTest extends
assertTrue(summaryIndex > -1);
assertTrue(fromIndex > -1);
assertTrue(idIndex > -1);
- assertTrue(fromIndex > summaryIndex && idIndex > fromIndex);
+ assertTrue(fromIndex > summaryIndex && idIndex > fromIndex);
+ }
+
+ @Test
+ public void testXmlAccessorOrderInException() throws Exception {
+ env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() +
"/exception_order.wsdl");
+ env.put(ToolConstants.CFG_CLASSNAME,
"org.apache.cxf.tools.fortest.exception.OrderEchoImpl");
+ env.put(ToolConstants.CFG_VERBOSE, ToolConstants.CFG_VERBOSE);
+ try {
+ processor.setEnvironment(env);
+ processor.process();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ File wsdlFile = new File(output, "exception_order.wsdl");
+ assertTrue(wsdlFile.exists());
+ String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
+
+ int fromIndex = wsdlContent.indexOf("<xs:element name=\"from\"");
+ int idIndex = wsdlContent.indexOf("<xs:element name=\"id\"");
+ int summaryIndex = wsdlContent.indexOf("<xs:element name=\"summary\"");
+
+ assertTrue(fromIndex > -1);
+ assertTrue(idIndex > -1);
+ assertTrue(summaryIndex > -1);
+ assertTrue(summaryIndex > idIndex && idIndex > fromIndex);
}