JBossWS SVN: r17239 - in thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src: test/java/org/apache/cxf/common/util and 1 other directory.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-17 23:30:36 -0500 (Thu, 17 Jan 2013)
New Revision: 17239
Added:
thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/test/java/org/apache/cxf/common/util/ASMHelperTest.java
Modified:
thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java
Log:
[JBPAPP-10590] StackOverflowError when ASMHelper tries to getClassCode from a parametrized type <E extends Enum>
Modified: thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java 2013-01-18 04:24:58 UTC (rev 17238)
+++ thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java 2013-01-18 04:30:36 UTC (rev 17239)
@@ -113,12 +113,14 @@
} else if (type instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType)type;
StringBuilder a = new StringBuilder(getClassCode(pt.getRawType()));
- a.setLength(a.length() - 1);
- a.append('<');
- for (Type t : pt.getActualTypeArguments()) {
- a.append(getClassCode(t));
+ if (!pt.getRawType().equals(Enum.class)) {
+ a.setLength(a.length() - 1);
+ a.append('<');
+ for (Type t : pt.getActualTypeArguments()) {
+ a.append(getClassCode(t));
+ }
+ a.append(">;");
}
- a.append(">;");
return a.toString();
} else if (type instanceof WildcardType) {
WildcardType wt = (WildcardType)type;
Added: thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/test/java/org/apache/cxf/common/util/ASMHelperTest.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/test/java/org/apache/cxf/common/util/ASMHelperTest.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/common/common/src/test/java/org/apache/cxf/common/util/ASMHelperTest.java 2013-01-18 04:30:36 UTC (rev 17239)
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.common.util;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ASMHelperTest extends Assert {
+ @Test
+ public void testEnumParamType() throws Exception {
+ Method method = EnumTest.class.getMethod("test", new Class[] {
+ EnumObject.class
+ });
+ Type[] types = method.getGenericParameterTypes();
+ String classCode = ASMHelper.getClassCode(types[0]);
+ assertEquals("Lorg/apache/cxf/common/util/ASMHelperTest$EnumObject<Ljava/lang/Enum;>;", classCode);
+ }
+
+ public class EnumObject<E extends Enum<E>> {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String param) {
+ this.name = param;
+ }
+ }
+
+ public class EnumTest {
+ public <T extends Enum<T>> EnumObject<T> test(EnumObject<T> o) {
+ return o;
+ }
+ }
+
+}
11 years, 11 months
JBossWS SVN: r17238 - thirdparty/cxf/branches.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-17 23:24:58 -0500 (Thu, 17 Jan 2013)
New Revision: 17238
Added:
thirdparty/cxf/branches/cxf-2.4.9.jbossorg-1-JBPAPP-10590/
Log:
Creating one-off branch
11 years, 11 months
JBossWS SVN: r17237 - thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic.
by jbossws-commits@lists.jboss.org
Author: jim.ma
Date: 2013-01-16 23:40:31 -0500 (Wed, 16 Jan 2013)
New Revision: 17237
Modified:
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
Log:
JBPAPP-10584:Unable to create JAXBContext for generated packages error on Windows when classpath is empty
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java 2013-01-15 00:00:52 UTC (rev 17236)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java 2013-01-17 04:40:31 UTC (rev 17237)
@@ -444,24 +444,26 @@
}
protected boolean compileJavaSrc(String classPath, List<File> srcList, String dest) {
- String[] javacCommand = new String[srcList.size() + 7];
+ int i = !StringUtils.isEmpty(classPath) ? 7 : 5;
+ String[] javacCommand = new String[srcList.size() + i];
javacCommand[0] = "javac";
- javacCommand[1] = "-classpath";
- javacCommand[2] = classPath;
- javacCommand[3] = "-d";
- javacCommand[4] = dest;
- javacCommand[5] = "-target";
- javacCommand[6] = "1.5";
+ javacCommand[1] = "-d";
+ javacCommand[2] = dest;
+ javacCommand[3] = "-target";
+ javacCommand[4] = "1.5";
+ if (!StringUtils.isEmpty(classPath)) {
+ javacCommand[5] = "-classpath";
+ javacCommand[6] = classPath;
+ }
- int i = 7;
for (File f : srcList) {
javacCommand[i++] = f.getAbsolutePath();
}
org.apache.cxf.common.util.Compiler javaCompiler
= new org.apache.cxf.common.util.Compiler();
- return javaCompiler.internalCompile(javacCommand, 7);
+ return javaCompiler.internalCompile(javacCommand, i);
}
static void addClasspathFromManifest(StringBuilder classPath, File file)
11 years, 11 months
JBossWS SVN: r17236 - stack/cxf/trunk.
by jbossws-commits@lists.jboss.org
Author: jim.ma
Date: 2013-01-14 19:00:52 -0500 (Mon, 14 Jan 2013)
New Revision: 17236
Modified:
stack/cxf/trunk/pom.xml
Log:
Add javax.activation dependency explicitly
Modified: stack/cxf/trunk/pom.xml
===================================================================
--- stack/cxf/trunk/pom.xml 2013-01-11 23:52:05 UTC (rev 17235)
+++ stack/cxf/trunk/pom.xml 2013-01-15 00:00:52 UTC (rev 17236)
@@ -94,7 +94,7 @@
<commons-lang.version>2.6</commons-lang.version>
<commons.logging.version>1.1.1</commons.logging.version>
<log4j.version>1.2.16</log4j.version>
- <mail.version>1.4.4</mail.version>
+ <activation.version>1.1</activation.version>
<neethi.version>3.0.2</neethi.version>
<opensaml.version>2.5.1-1</opensaml.version>
<saaj.api.version>1.0.1.Final</saaj.api.version>
@@ -1189,9 +1189,9 @@
<version>${log4j.version}</version>
</dependency>
<dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>${mail.version}</version>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>${activation.version}</version>
</dependency>
<dependency>
<groupId>org.apache.neethi</groupId>
11 years, 11 months
JBossWS SVN: r17235 - in thirdparty/cxf/branches/cxf-2.2.12: rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb and 2 other directories.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-11 18:52:05 -0500 (Fri, 11 Jan 2013)
New Revision: 17235
Added:
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java
Removed:
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java
thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java
Modified:
thirdparty/cxf/branches/cxf-2.2.12/
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
Log:
[JBPAPP-10564] Add ways to modify ordering of property types on exception classes. Merged from -r17225:17233 of https://svn.jboss.org/repos/jbossws/thirdparty/cxf/branches/cxf-2.2.12-pa...
Property changes on: thirdparty/cxf/branches/cxf-2.2.12
___________________________________________________________________
Modified: svn:mergeinfo
- /thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129:16821-17225
+ /thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129:16821-17233
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 23:08:57 UTC (rev 17234)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -38,7 +38,6 @@
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
import javax.xml.namespace.QName;
@@ -291,12 +290,10 @@
}
}
XmlJavaTypeAdapter xjta = cls.getAnnotation(XmlJavaTypeAdapter.class);
- if (xjta != null) {
- Type t = Utils.getTypeFromXmlAdapter(xjta);
- if (t != null) {
+ if (xjta != null && Utils.getTypeFromXmlAdapter(xjta) != null) {
+ Type t = Utils.getTypeFromXmlAdapter(xjta);
addType(t);
- }
- return;
+ return;
}
} else if (classes.contains(cls)) {
return;
@@ -314,7 +311,8 @@
adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
- XmlJavaTypeAdapters adapters = f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ XmlJavaTypeAdapters adapters =
+ f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
if (adapters != null) {
for (XmlJavaTypeAdapter candidate : adapters.value()) {
if (candidate != null && candidate.type().equals(f.getType())) {
@@ -441,4 +439,4 @@
}
return false;
}
-}
\ No newline at end of file
+}
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java 2013-01-11 23:08:57 UTC (rev 17234)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -48,11 +48,8 @@
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.attachment.AttachmentMarshaller;
import javax.xml.bind.attachment.AttachmentUnmarshaller;
import javax.xml.namespace.NamespaceContext;
@@ -373,7 +370,7 @@
} else {
Object o = Utils.getMethodValue(m, elValue);
writeObject(marshaller, writer, new JAXBElement(mname, String.class, o));
- }
+ }
}
writer.writeEndElement();
writer.flush();
@@ -447,9 +444,9 @@
reader.nextTag();
while (reader.getEventType() == XMLStreamReader.START_ELEMENT) {
QName q = reader.getName();
- String fieldName = q.getLocalPart();
- Field f = Utils.getField(cls, accessType, fieldName);
- if (f != null) {
+ String fieldName = q.getLocalPart();
+ Field f = Utils.getField(cls, accessType, fieldName);
+ if (f != null) {
Type type = f.getGenericType();
f.setAccessible(true);
if (JAXBSchemaInitializer.isArray(type)) {
@@ -461,18 +458,16 @@
o = java.lang.reflect.Array.newInstance(compType, ret.size());
for (int x = 0; x < ret.size(); x++) {
Array.set(o, x, ret.get(x));
- }
+ }
} else {
o = ret.toArray((Object[]) Array.newInstance(compType, ret.size()));
- }
}
-
- f.set(obj, o);
- } else {
- Object o = getElementValue(u.unmarshal(reader, Utils.getFieldType(f)));
- Utils.setFieldValue(f, obj, o);
}
-
+ f.set(obj, o);
+ } else {
+ Object o = getElementValue(u.unmarshal(reader, Utils.getFieldType(f)));
+ Utils.setFieldValue(f, obj, o);
+ }
} else {
String s = Character.toUpperCase(q.getLocalPart().charAt(0))
+ q.getLocalPart().substring(1);
@@ -507,10 +502,10 @@
Utils.setMethodValue(m, m2, obj, o);
}
}
- }
- return (Exception)obj;
+ }
+ return (Exception)obj;
} catch (Exception e) {
- throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
+ throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
}
}
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 23:08:57 UTC (rev 17234)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -26,12 +26,22 @@
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Iterator;
+import java.util.List;
+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.XmlAccessorType;
import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
@@ -367,7 +377,7 @@
MessagePartInfo part = fault.getMessageParts().get(0);
Class<?> cls = part.getTypeClass();
Class<?> cl2 = (Class)fault.getProperty(Class.class.getName());
- if (cls != cl2) {
+ if (cls != cl2) {
QName name = (QName)fault.getProperty("elementName");
part.setElementQName(name);
JAXBBeanInfo beanInfo = getBeanInfo(cls);
@@ -426,6 +436,8 @@
XmlSchemaSequence seq = new XmlSchemaSequence();
ct.setParticle(seq);
+ List<XmlSchemaElement> elementList = new ArrayList<XmlSchemaElement>();
+
Method methods[] = cls.getMethods();
for (Method m : methods) {
if (m.getName().startsWith("get")
@@ -453,15 +465,38 @@
el.setSchemaTypeName(typeName);
}
- seq.getItems().add(el);
+ elementList.add(el);
} catch (Exception e) {
//not mappable
}
}
}
+ XmlAccessorOrder xmlAccessorOrder = cls.getAnnotation(XmlAccessorOrder.class);
+ XmlType xmlTypeAnno = cls.getAnnotation(XmlType.class);
+ String[] propertyOrder = null;
+
+ if (xmlTypeAnno != null && xmlTypeAnno.propOrder().length > 0) {
+ propertyOrder = xmlTypeAnno.propOrder();
+ //TODO: handle @XmlAccessOrder
+ }
+
+ if (propertyOrder != null && propertyOrder.length == elementList.size()) {
+ sortItems(elementList, propertyOrder);
+ } else if (propertyOrder != null && propertyOrder.length != elementList.size()) {
+ 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(elementList);
+ }
+
+ for (XmlSchemaElement elem : elementList) {
+ seq.getItems().add(elem);
+ }
}
}
-
private void buildExceptionType(MessagePartInfo part, Class<?> cls) {
SchemaInfo schemaInfo = null;
@@ -471,6 +506,15 @@
break;
}
}
+ XmlAccessorOrder xmlAccessorOrder = cls.getAnnotation(XmlAccessorOrder.class);
+ XmlType xmlTypeAnno = cls.getAnnotation(XmlType.class);
+ String[] propertyOrder = null;
+
+ if (xmlTypeAnno != null && xmlTypeAnno.propOrder().length > 0) {
+ propertyOrder = xmlTypeAnno.propOrder();
+ //TODO: handle @XmlAccessOrder
+ }
+
XmlSchema schema;
if (schemaInfo == null) {
schema = schemas.newXmlSchemaInCollection(part.getElementQName().getNamespaceURI());
@@ -516,14 +560,22 @@
ct.setParticle(seq);
String namespace = part.getElementQName().getNamespaceURI();
+ XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
+ if (accessorType == null && cls.getPackage() != null) {
+ accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
+ }
+
XmlAccessType accessType = Utils.getXmlAccessType(cls);
+
+ List<XmlSchemaElement> elementList = new ArrayList<XmlSchemaElement>();
+
for (Field f : Utils.getFields(cls, accessType)) {
//map field
Type type = Utils.getFieldType(f);
JAXBBeanInfo beanInfo = getBeanInfo(type);
if (beanInfo != null) {
- addElement(schema, seq, beanInfo, new QName(namespace, f.getName()), isArray(type));
- }
+ addElement(elementList, beanInfo, new QName(namespace, f.getName()), isArray(type));
+ }
}
for (Method m : Utils.getGetters(cls, accessType)) {
//map method
@@ -533,9 +585,26 @@
int idx = m.getName().startsWith("get") ? 3 : 2;
String name = m.getName().substring(idx);
name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
- addElement(schema, seq, beanInfo, new QName(namespace, name), isArray(type));
- }
+ addElement(elementList, beanInfo, new QName(namespace, name), isArray(type));
+ }
}
+
+ if (propertyOrder != null && propertyOrder.length == elementList.size()) {
+ sortItems(elementList, propertyOrder);
+ } else if (propertyOrder != null && propertyOrder.length != elementList.size()) {
+ 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(elementList);
+ }
+
+ for (XmlSchemaElement elem : elementList) {
+ seq.getItems().add(elem);
+ }
+
part.setProperty(JAXBDataBinding.class.getName() + ".CUSTOM_EXCEPTION", Boolean.TRUE);
}
@@ -550,8 +619,7 @@
return false;
}
- public void addElement(XmlSchema schema,
- XmlSchemaSequence seq, JAXBBeanInfo beanInfo,
+ public void addElement(List<XmlSchemaElement> elementList, JAXBBeanInfo beanInfo,
QName name, boolean isArray) {
XmlSchemaElement el = new XmlSchemaElement();
el.setName(name.getLocalPart());
@@ -581,7 +649,7 @@
el.setSchemaTypeName(typeName);
}
- seq.getItems().add(el);
+ elementList.add(el);
}
@@ -599,4 +667,25 @@
}
return isExist;
}
+
+ //sort to Alphabetical order
+ private void sort(final List<XmlSchemaElement> elementList) {
+ Collections.sort(elementList, new Comparator<XmlSchemaElement>() {
+ public int compare(XmlSchemaElement e1, XmlSchemaElement e2) {
+ return e1.getName().compareTo(e2.getName());
+ }
+ });
+ }
+
+ private void sortItems(List<XmlSchemaElement> elementList, String[] propOrder) {
+ final List<String> propList = Arrays.asList(propOrder);
+
+ Collections.sort(elementList, new Comparator<XmlSchemaElement>() {
+ public int compare(XmlSchemaElement el1, XmlSchemaElement el2) {
+ int index1 = propList.indexOf(el1.getName());
+ int index2 = propList.indexOf(el2.getName());
+ return index1 - index2;
+ }
+ });
+ }
}
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java 2013-01-11 23:08:57 UTC (rev 17234)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -72,7 +72,8 @@
return fields;
}
- private static Collection<Method> getMethods(Class<?> cls, XmlAccessType accessType, boolean acceptSetters) {
+ private static Collection<Method> getMethods(Class<?> cls,
+ XmlAccessType accessType, boolean acceptSetters) {
return getMethodsInternal(cls, accessType, acceptSetters);
}
@@ -147,7 +148,9 @@
}
private static boolean isGetter(Method m) {
- if (m.getReturnType() != Void.class && m.getReturnType() != Void.TYPE && m.getParameterTypes().length == 0) {
+ if (m.getReturnType() != Void.class
+ && m.getReturnType() != Void.TYPE
+ && m.getParameterTypes().length == 0) {
Method setter = getSetter(m);
if (setter != null) {
return !setter.isAnnotationPresent(XmlTransient.class);
@@ -251,7 +254,8 @@
adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
- XmlJavaTypeAdapters adapters = f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ XmlJavaTypeAdapters adapters =
+ f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
if (adapters != null) {
for (XmlJavaTypeAdapter candidate : adapters.value()) {
if (candidate != null && candidate.type().equals(f.getType())) {
@@ -274,7 +278,8 @@
adapter = m.getReturnType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
- XmlJavaTypeAdapters adapters = m.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ XmlJavaTypeAdapters adapters =
+ m.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
if (adapters != null) {
for (XmlJavaTypeAdapter candidate : adapters.value()) {
if (candidate != null && candidate.type().equals(m.getGenericReturnType())) {
Deleted: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -1,26 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.tools.fortest.exception;
-
-import javax.jws.WebService;
-
-@WebService(targetNamespace = "http://cxf.apache.org/test/HelloService", name = "HelloService")
-public interface Echo {
- String echo(String request) throws MyException;
-}
Copied: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java (from rev 17233, thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java)
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -0,0 +1,26 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+import javax.jws.WebService;
+
+@WebService(targetNamespace = "http://cxf.apache.org/test/HelloService", name = "HelloService")
+public interface Echo {
+ String echo(String request) throws MyException;
+}
Deleted: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -1,33 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.tools.fortest.exception;
-
-import javax.jws.WebService;
-
-@WebService(serviceName = "HelloService",
- portName = "HelloPort",
- endpointInterface = "org.apache.cxf.tools.fortest.exception.Echo",
- targetNamespace = "http://cxf.apache.org/test/HelloService")
-public class EchoImpl {
- public String echo(String request) throws MyException {
- return "Response";
-
- }
-
-}
Copied: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java (from rev 17233, thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java)
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+import javax.jws.WebService;
+
+@WebService(serviceName = "HelloService",
+ portName = "HelloPort",
+ endpointInterface = "org.apache.cxf.tools.fortest.exception.Echo",
+ targetNamespace = "http://cxf.apache.org/test/HelloService")
+public class EchoImpl {
+ public String echo(String request) throws MyException {
+ return "Response";
+
+ }
+
+}
Deleted: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -1,52 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.tools.fortest.exception;
-
-import javax.xml.bind.annotation.XmlType;
-
-(a)javax.xml.ws.WebFault
-@XmlType(namespace = "http://cxf.apache.org/test/HelloService",
- name = "MyException",
- propOrder = { "summary", "from", "id" })
-public class MyException extends SuperException {
- private static final long serialVersionUID = 8575109064272599936L;
- private String summary;
- private String from;
-
- public MyException(String message) {
- super(message);
- }
-
- public void setSummary(String summary) {
- this.summary = summary;
- }
-
- public void setFrom(String from) {
- this.from = from;
- }
-
- public String getSummary() {
- return summary;
- }
-
- public String getFrom() {
- return from;
- }
-
-}
Copied: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java (from rev 17233, thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java)
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+import javax.xml.bind.annotation.XmlType;
+
+(a)javax.xml.ws.WebFault
+@XmlType(namespace = "http://cxf.apache.org/test/HelloService",
+ name = "MyException",
+ propOrder = { "summary", "from", "id" })
+public class MyException extends SuperException {
+ private static final long serialVersionUID = 8575109064272599936L;
+ private String summary;
+ private String from;
+
+ public MyException(String message) {
+ super(message);
+ }
+
+ public void setSummary(String summary) {
+ this.summary = summary;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getSummary() {
+ return summary;
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+}
Deleted: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.tools.fortest.exception;
-
-public class SuperException extends Exception {
- private static final long serialVersionUID = 1L;
- private int id;
-
- public SuperException(String message) {
- super(message);
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public int getId() {
- return id;
- }
-}
Copied: thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java (from rev 17233, thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java)
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java 2013-01-11 23:52:05 UTC (rev 17235)
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+public class SuperException extends Exception {
+ private static final long serialVersionUID = 1L;
+ private int id;
+
+ public SuperException(String message) {
+ super(message);
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public int getId() {
+ return id;
+ }
+}
11 years, 11 months
JBossWS SVN: r17234 - in thirdparty/cxf/branches/cxf-2.2.12: rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb and 1 other directory.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-11 18:08:57 -0500 (Fri, 11 Jan 2013)
New Revision: 17234
Added:
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
Modified:
thirdparty/cxf/branches/cxf-2.2.12/
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
Log:
[JBPAPP-10568][JBPAPP-10566] Fix @XmlTransient and @XmlJavaTypeAdapter issue for exception types. Merged -r16828:17225 from https://svn.jboss.org/repos/jbossws/thirdparty/cxf/branches/cxf-2.2.12-pa...
Property changes on: thirdparty/cxf/branches/cxf-2.2.12
___________________________________________________________________
Added: svn:mergeinfo
+ /thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129:16821-17225
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 23:08:57 UTC (rev 17234)
@@ -33,7 +33,6 @@
import java.util.Set;
import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
@@ -41,6 +40,7 @@
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
import javax.xml.namespace.QName;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
@@ -196,13 +196,19 @@
if (anns != null) {
for (Annotation a : anns) {
if (XmlJavaTypeAdapter.class.isAssignableFrom(a.annotationType())) {
- inspectTypeAdapter(((XmlJavaTypeAdapter)a).value());
+ Type t = Utils.getTypeFromXmlAdapter((XmlJavaTypeAdapter)a);
+ if (t != null) {
+ addType(t);
+ }
}
}
}
XmlJavaTypeAdapter xjta = clazz.getAnnotation(XmlJavaTypeAdapter.class);
if (xjta != null) {
- inspectTypeAdapter(xjta.value());
+ Type t = Utils.getTypeFromXmlAdapter(xjta);
+ if (t != null) {
+ addType(t);
+ }
}
}
@@ -286,8 +292,11 @@
}
XmlJavaTypeAdapter xjta = cls.getAnnotation(XmlJavaTypeAdapter.class);
if (xjta != null) {
- Class<? extends XmlAdapter> c2 = xjta.value();
- inspectTypeAdapter(c2);
+ Type t = Utils.getTypeFromXmlAdapter(xjta);
+ if (t != null) {
+ addType(t);
+ }
+ return;
}
} else if (classes.contains(cls)) {
return;
@@ -299,16 +308,23 @@
}
}
- private void inspectTypeAdapter(Class<? extends XmlAdapter> aclass) {
- Class<?> c2 = aclass;
- Type sp = c2.getGenericSuperclass();
- while (!XmlAdapter.class.equals(c2) && c2 != null) {
- sp = c2.getGenericSuperclass();
- c2 = c2.getSuperclass();
+ static XmlJavaTypeAdapter getFieldXJTA(final Field f) {
+ XmlJavaTypeAdapter adapter = f.getAnnotation(XmlJavaTypeAdapter.class);
+ if (adapter == null) {
+ adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class);
}
- if (sp instanceof ParameterizedType) {
- addType(((ParameterizedType)sp).getActualTypeArguments()[0]);
+ if (adapter == null) {
+ XmlJavaTypeAdapters adapters = f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ if (adapters != null) {
+ for (XmlJavaTypeAdapter candidate : adapters.value()) {
+ if (candidate != null && candidate.type().equals(f.getType())) {
+ adapter = candidate;
+ break;
+ }
+ }
+ }
}
+ return adapter;
}
private void walkReferences(Class<?> cls) {
@@ -325,11 +341,7 @@
//We'll grab the public field/method types and then add the ObjectFactory stuff
//as well as look for jaxb.index files in those packages.
- XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
- if (accessorType == null && cls.getPackage() != null) {
- accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
- }
- XmlAccessType accessType = accessorType != null ? accessorType.value() : XmlAccessType.PUBLIC_MEMBER;
+ XmlAccessType accessType = Utils.getXmlAccessType(cls);
if (accessType != XmlAccessType.PROPERTY) { // only look for fields if we are instructed to
//fields are accessible even if not public, must look at the declared fields
@@ -368,9 +380,6 @@
&& !Modifier.isPublic(field.getModifiers())) {
return false;
}
- if (field.getAnnotation(XmlJavaTypeAdapter.class) != null) {
- return false;
- }
if (accessType == XmlAccessType.NONE
|| accessType == XmlAccessType.PROPERTY) {
return checkJaxbAnnotation(field.getAnnotations());
@@ -397,12 +406,6 @@
return false;
}
- boolean isPropGetter = method.getName().startsWith("get") || method.getName().startsWith("is");
-
- if (!isPropGetter
- || method.getAnnotation(XmlJavaTypeAdapter.class) != null) {
- return false;
- }
int beginIndex = 3;
if (method.getName().startsWith("is")) {
beginIndex = 2;
@@ -428,7 +431,7 @@
* @param annotations the array of annotations from the class member
* @return true if JAXB annotations are present, false otherwise
*/
- private static boolean checkJaxbAnnotation(Annotation[] annotations) {
+ static boolean checkJaxbAnnotation(Annotation[] annotations) {
// must check if there are any jaxb annotations
Package jaxbAnnotationsPackage = XmlElement.class.getPackage();
for (Annotation annotation : annotations) {
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java 2013-01-11 23:08:57 UTC (rev 17234)
@@ -49,7 +49,10 @@
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.attachment.AttachmentMarshaller;
import javax.xml.bind.attachment.AttachmentUnmarshaller;
import javax.xml.namespace.NamespaceContext;
@@ -65,7 +68,6 @@
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-
import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.SOAPConstants;
@@ -335,12 +337,7 @@
try {
writer.writeStartElement("ns1", qn.getLocalPart(), qn.getNamespaceURI());
Class<?> cls = part.getTypeClass();
- XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
- if (accessorType == null && cls.getPackage() != null) {
- accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
- }
- XmlAccessType accessType = accessorType != null
- ? accessorType.value() : XmlAccessType.PUBLIC_MEMBER;
+ XmlAccessType accessType = Utils.getXmlAccessType(cls);
String namespace = part.getElementQName().getNamespaceURI();
SchemaInfo sch = part.getMessageInfo().getOperation().getInterface()
@@ -353,33 +350,31 @@
LOG.warning("Schema associated with " + namespace + " is null");
}
- for (Field f : cls.getDeclaredFields()) {
- if (JAXBContextInitializer.isFieldAccepted(f, accessType)) {
+ for (Field f : Utils.getFields(cls, accessType)) {
+ XmlAttribute at = f.getAnnotation(XmlAttribute.class);
+ if (at == null) {
QName fname = new QName(namespace, f.getName());
f.setAccessible(true);
if (JAXBSchemaInitializer.isArray(f.getGenericType())) {
- writeArrayObject(marshaller, writer, fname, f.get(elValue));
+ writeArrayObject(marshaller, writer, fname, f.get(elValue));
} else {
- writeObject(marshaller, writer, new JAXBElement(fname, String.class,
- f.get(elValue)));
+ Object o = Utils.getFieldValue(f, elValue);
+ writeObject(marshaller, writer, new JAXBElement(fname, String.class, o));
}
}
}
- for (Method m : cls.getMethods()) {
- if (JAXBContextInitializer.isMethodAccepted(m, accessType)) {
- int idx = m.getName().startsWith("get") ? 3 : 2;
- String name = m.getName().substring(idx);
- name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
- QName mname = new QName(namespace, name);
- if (JAXBSchemaInitializer.isArray(m.getGenericReturnType())) {
- writeArrayObject(marshaller, writer, mname, m.invoke(elValue));
- } else {
- writeObject(marshaller, writer, new JAXBElement(mname, String.class,
- m.invoke(elValue)));
+ for (Method m : Utils.getGetters(cls, accessType)) {
+ int idx = m.getName().startsWith("get") ? 3 : 2;
+ String name = m.getName().substring(idx);
+ name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
+ QName mname = new QName(namespace, name);
+ if (JAXBSchemaInitializer.isArray(m.getGenericReturnType())) {
+ writeArrayObject(marshaller, writer, mname, m.invoke(elValue));
+ } else {
+ Object o = Utils.getMethodValue(m, elValue);
+ writeObject(marshaller, writer, new JAXBElement(mname, String.class, o));
}
- }
}
-
writer.writeEndElement();
writer.flush();
} catch (Exception e) {
@@ -448,55 +443,45 @@
obj = cons.newInstance(new Object[1]);
}
- XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
- if (accessorType == null && cls.getPackage() != null) {
- accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
- }
- XmlAccessType accessType = accessorType != null
- ? accessorType.value() : XmlAccessType.PUBLIC_MEMBER;
+ XmlAccessType accessType = Utils.getXmlAccessType(cls);
reader.nextTag();
while (reader.getEventType() == XMLStreamReader.START_ELEMENT) {
QName q = reader.getName();
- try {
- Field f = cls.getField(q.getLocalPart());
+ String fieldName = q.getLocalPart();
+ Field f = Utils.getField(cls, accessType, fieldName);
+ if (f != null) {
Type type = f.getGenericType();
- if (JAXBContextInitializer.isFieldAccepted(f, accessType)) {
- f.setAccessible(true);
- if (JAXBSchemaInitializer.isArray(type)) {
- Class<?> compType = JAXBSchemaInitializer
- .getArrayComponentType(type);
- List<Object> ret = unmarshallArray(u, reader,
- q,
- compType,
- createList(type));
- Object o = ret;
- if (!isList(type)) {
- if (compType.isPrimitive()) {
- o = java.lang.reflect.Array.newInstance(compType, ret.size());
- for (int x = 0; x < ret.size(); x++) {
- Array.set(o, x, ret.get(x));
- }
- } else {
- o = ret.toArray((Object[])Array.newInstance(compType, ret.size()));
- }
+ f.setAccessible(true);
+ if (JAXBSchemaInitializer.isArray(type)) {
+ Class<?> compType = JAXBSchemaInitializer.getArrayComponentType(type);
+ List<Object> ret = unmarshallArray(u, reader, q, compType, createList(type));
+ Object o = ret;
+ if (!isList(type)) {
+ if (compType.isPrimitive()) {
+ o = java.lang.reflect.Array.newInstance(compType, ret.size());
+ for (int x = 0; x < ret.size(); x++) {
+ Array.set(o, x, ret.get(x));
+ }
+ } else {
+ o = ret.toArray((Object[]) Array.newInstance(compType, ret.size()));
+ }
}
f.set(obj, o);
} else {
- f.set(obj, u.unmarshal(reader, f.getType()));
+ Object o = getElementValue(u.unmarshal(reader, Utils.getFieldType(f)));
+ Utils.setFieldValue(f, obj, o);
}
- }
- } catch (NoSuchFieldException ex) {
+
+ } else {
String s = Character.toUpperCase(q.getLocalPart().charAt(0))
+ q.getLocalPart().substring(1);
- Method m = null;
- try {
- m = cls.getMethod("get" + s);
- } catch (NoSuchMethodException mex) {
- m = cls.getMethod("is" + s);
+ Method m = Utils.getMethod(cls, accessType, "get" + s);
+ if (m == null) {
+ m = Utils.getMethod(cls, accessType, "is" + s);
}
Type type = m.getGenericReturnType();
- Method m2 = cls.getMethod("set" + s, m.getReturnType());
+ Method m2 = Utils.getMethod(cls, accessType, "set" + s, m.getReturnType());
if (JAXBSchemaInitializer.isArray(type)) {
Class<?> compType = JAXBSchemaInitializer
.getArrayComponentType(type);
@@ -518,16 +503,17 @@
m2.invoke(obj, o);
} else {
- Object o = getElementValue(u.unmarshal(reader, m.getReturnType()));
- m2.invoke(obj, o);
+ Object o = getElementValue(u.unmarshal(reader, Utils.getMethodReturnType(m)));
+ Utils.setMethodValue(m, m2, obj, o);
}
}
- }
- return (Exception)obj;
+ }
+ return (Exception)obj;
} catch (Exception e) {
- throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
+ throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
}
- }
+ }
+
private static void writeObject(Marshaller u, Object source, Object mObj) throws Fault, JAXBException {
if (source instanceof XMLStreamWriter) {
Modified: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 21:19:36 UTC (rev 17233)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 23:08:57 UTC (rev 17234)
@@ -31,7 +31,6 @@
import javax.xml.bind.JAXBContext;
import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -517,35 +516,25 @@
ct.setParticle(seq);
String namespace = part.getElementQName().getNamespaceURI();
- XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
- if (accessorType == null && cls.getPackage() != null) {
- accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
- }
- XmlAccessType accessType = accessorType != null ? accessorType.value() : XmlAccessType.PUBLIC_MEMBER;
-
-
- for (Field f : cls.getDeclaredFields()) {
- if (JAXBContextInitializer.isFieldAccepted(f, accessType)) {
- //map field
- Type type = f.getGenericType();
- JAXBBeanInfo beanInfo = getBeanInfo(type);
- if (beanInfo != null) {
- addElement(seq, beanInfo, new QName(namespace, f.getName()), isArray(type));
+ XmlAccessType accessType = Utils.getXmlAccessType(cls);
+ for (Field f : Utils.getFields(cls, accessType)) {
+ //map field
+ Type type = Utils.getFieldType(f);
+ JAXBBeanInfo beanInfo = getBeanInfo(type);
+ if (beanInfo != null) {
+ addElement(schema, seq, beanInfo, new QName(namespace, f.getName()), isArray(type));
}
- }
}
- for (Method m : cls.getMethods()) {
- if (JAXBContextInitializer.isMethodAccepted(m, accessType)) {
- //map field
- Type type = m.getGenericReturnType();
- JAXBBeanInfo beanInfo = getBeanInfo(type);
- if (beanInfo != null) {
- int idx = m.getName().startsWith("get") ? 3 : 2;
- String name = m.getName().substring(idx);
- name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
- addElement(seq, beanInfo, new QName(namespace, name), isArray(type));
+ for (Method m : Utils.getGetters(cls, accessType)) {
+ //map method
+ Type type = Utils.getMethodReturnType(m);
+ JAXBBeanInfo beanInfo = getBeanInfo(type);
+ if (beanInfo != null) {
+ int idx = m.getName().startsWith("get") ? 3 : 2;
+ String name = m.getName().substring(idx);
+ name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
+ addElement(schema, seq, beanInfo, new QName(namespace, name), isArray(type));
}
- }
}
part.setProperty(JAXBDataBinding.class.getName() + ".CUSTOM_EXCEPTION", Boolean.TRUE);
}
@@ -561,7 +550,8 @@
return false;
}
- public void addElement(XmlSchemaSequence seq, JAXBBeanInfo beanInfo,
+ public void addElement(XmlSchema schema,
+ XmlSchemaSequence seq, JAXBBeanInfo beanInfo,
QName name, boolean isArray) {
XmlSchemaElement el = new XmlSchemaElement();
el.setName(name.getLocalPart());
Copied: thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java (from rev 17225, thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java)
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java 2013-01-11 23:08:57 UTC (rev 17234)
@@ -0,0 +1,305 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxb;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
+
+/**
+ * JAXB reflection utilities.
+ */
+final class Utils {
+ private Utils() {
+ }
+
+ static XmlAccessType getXmlAccessType(Class<?> cls) {
+ XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
+ if (accessorType == null && cls.getPackage() != null) {
+ accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
+ }
+ return accessorType != null
+ ? accessorType.value() : XmlAccessType.PUBLIC_MEMBER;
+ }
+
+ static Collection<Field> getFields(Class<?> cls, XmlAccessType accessType) {
+ return getFieldsInternal(cls, accessType);
+ }
+
+ private static Collection<Field> getFieldsInternal(Class<?> cls, XmlAccessType accessType) {
+ Set<Field> fields = new HashSet<Field>();
+ Class<?> superClass = cls.getSuperclass();
+ if (superClass != null && !superClass.equals(Object.class) && !superClass.equals(Throwable.class)) {
+ // process super class until java.lang.Object or java.lang.Throwable is not reached
+ fields.addAll(getFieldsInternal(superClass, accessType));
+ }
+ // process current class
+ for (Field field : cls.getDeclaredFields()) {
+ if (JAXBContextInitializer.isFieldAccepted(field, accessType)) {
+ fields.add(field);
+ }
+ }
+ return fields;
+ }
+
+ private static Collection<Method> getMethods(Class<?> cls, XmlAccessType accessType, boolean acceptSetters) {
+ return getMethodsInternal(cls, accessType, acceptSetters);
+ }
+
+ private static Collection<Method> getMethodsInternal(Class<?> cls, XmlAccessType accessType,
+ boolean acceptSetters) {
+ Set<Method> methods = new HashSet<Method>();
+ Class<?> superClass = cls.getSuperclass();
+ if (superClass != null && !superClass.equals(Object.class) && !superClass.equals(Throwable.class)) {
+ // process super class until java.lang.Object or java.lang.Throwable is not reached
+ methods.addAll(getMethodsInternal(superClass, accessType, acceptSetters));
+ }
+ // process current class
+ for (Method method : cls.getDeclaredMethods()) {
+ if (isMethodAccepted(method, accessType, acceptSetters)) {
+ methods.add(method);
+ }
+ }
+ return methods;
+ }
+
+ static Method getMethod(Class<?> cls, XmlAccessType accessType, String methodName,
+ Class<?>... paramTypes) {
+ for (Method m : getMethods(cls, accessType, true)) {
+ if (m.getName().equals(methodName) && Arrays.equals(m.getParameterTypes(), paramTypes)) {
+ return m;
+ }
+ }
+ return null;
+ }
+
+ static Field getField(Class<?> cls, XmlAccessType accessType, String fieldName) {
+ for (final Field f : getFields(cls, accessType)) {
+ if (f.getName().equals(fieldName)) {
+ return f;
+ }
+ }
+ return null;
+ }
+
+ static Collection<Method> getGetters(Class<?> cls, XmlAccessType accessType) {
+ return getMethods(cls, accessType, false);
+ }
+
+ static boolean isMethodAccepted(Method method, XmlAccessType accessType, boolean acceptSetters) {
+ // ignore bridge, static, @XmlTransient methods plus methods declared in Throwable
+ if (method.isBridge()
+ || Modifier.isStatic(method.getModifiers())
+ || method.isAnnotationPresent(XmlTransient.class)
+ || method.getDeclaringClass().equals(Throwable.class)) {
+ return false;
+ }
+ // Allow only public methods if PUBLIC_MEMBER access is requested
+ if (accessType == XmlAccessType.PUBLIC_MEMBER && !Modifier.isPublic(method.getModifiers())) {
+ return false;
+ }
+ if (isGetter(method)) {
+ // does nothing
+ } else if (isSetter(method)) {
+ if (!acceptSetters) {
+ return false;
+ }
+ } else {
+ // we accept only getters and setters
+ return false;
+ }
+ // let JAXB annotations decide if NONE or FIELD access is requested
+ if (accessType == XmlAccessType.NONE || accessType == XmlAccessType.FIELD) {
+ return JAXBContextInitializer.checkJaxbAnnotation(method.getAnnotations());
+ }
+ // method accepted
+ return true;
+ }
+
+ private static boolean isGetter(Method m) {
+ if (m.getReturnType() != Void.class && m.getReturnType() != Void.TYPE && m.getParameterTypes().length == 0) {
+ Method setter = getSetter(m);
+ if (setter != null) {
+ return !setter.isAnnotationPresent(XmlTransient.class);
+ }
+ }
+ return false;
+ }
+
+ private static Method getSetter(Method m) {
+ final int index = getterIndex(m.getName());
+ if (index != -1) {
+ String setterName = "set" + m.getName().substring(index);
+ Class<?> paramTypes = m.getReturnType();
+ return getDeclaredMethod(m.getDeclaringClass(), setterName, paramTypes);
+ }
+ return null;
+ }
+
+ private static boolean isSetter(Method m) {
+ Class<?> declaringClass = m.getDeclaringClass();
+ boolean isVoidReturnType = m.getReturnType() == Void.class || m.getReturnType() == Void.TYPE;
+ if (isVoidReturnType && m.getParameterTypes().length == 1 && m.getName().startsWith("set")) {
+ String getterName = "get" + m.getName().substring(3);
+ Class<?> setterParamType = m.getParameterTypes()[0];
+ Method getter = getDeclaredMethod(declaringClass, getterName);
+ if (getter != null && getter.getReturnType().equals(setterParamType)
+ && !getter.isAnnotationPresent(XmlTransient.class)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static int getterIndex(String methodName) {
+ if (methodName.startsWith("is")) {
+ return 2;
+ }
+ if (methodName.startsWith("get")) {
+ return 3;
+ }
+ return -1;
+ }
+
+ private static Method getDeclaredMethod(Class<?> cls, String methodName, Class<?>... paramTypes) {
+ try {
+ return cls.getDeclaredMethod(methodName, paramTypes);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ static Class<?> getFieldType(Field f) {
+ XmlJavaTypeAdapter adapter = getFieldXJTA(f);
+ Class<?> adapterType = getTypeFromXmlAdapter(adapter);
+ return adapterType != null ? adapterType : f.getType();
+ }
+
+ static Class<?> getMethodReturnType(Method m) {
+ XmlJavaTypeAdapter adapter = getMethodXJTA(m);
+ Class<?> adapterType = getTypeFromXmlAdapter(adapter);
+ return adapterType != null ? adapterType : m.getReturnType();
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ static Object getFieldValue(Field f, Object target) throws Exception {
+ XmlJavaTypeAdapter adapterAnnotation = getFieldXJTA(f);
+ XmlAdapter adapter = getXmlAdapter(adapterAnnotation);
+ return adapter != null ? adapter.marshal(f.get(target)) : f.get(target);
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ static Object getMethodValue(Method m, Object target) throws Exception {
+ XmlJavaTypeAdapter adapterAnnotation = getMethodXJTA(m);
+ XmlAdapter adapter = getXmlAdapter(adapterAnnotation);
+ return adapter != null ? adapter.marshal(m.invoke(target)) : m.invoke(target);
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ static void setFieldValue(Field f, Object target, Object value) throws Exception {
+ XmlJavaTypeAdapter xjta = getFieldXJTA(f);
+ XmlAdapter adapter = getXmlAdapter(xjta);
+ f.set(target, adapter != null ? adapter.unmarshal(value) : value);
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ static void setMethodValue(Method getter, Method setter, Object target, Object value) throws Exception {
+ XmlJavaTypeAdapter xjta = getMethodXJTA(getter);
+ XmlAdapter adapter = getXmlAdapter(xjta);
+ setter.invoke(target, adapter != null ? adapter.unmarshal(value) : value);
+ }
+
+ @SuppressWarnings("rawtypes")
+ static XmlAdapter getXmlAdapter(XmlJavaTypeAdapter adapterAnnotation)
+ throws InstantiationException, IllegalAccessException {
+ return adapterAnnotation != null ? adapterAnnotation.value().newInstance() : null;
+ }
+
+ static XmlJavaTypeAdapter getFieldXJTA(final Field f) {
+ XmlJavaTypeAdapter adapter = f.getAnnotation(XmlJavaTypeAdapter.class);
+ if (adapter == null) {
+ adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class);
+ }
+ if (adapter == null) {
+ XmlJavaTypeAdapters adapters = f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ if (adapters != null) {
+ for (XmlJavaTypeAdapter candidate : adapters.value()) {
+ if (candidate != null && candidate.type().equals(f.getType())) {
+ adapter = candidate;
+ break;
+ }
+ }
+ }
+ }
+ return adapter;
+ }
+
+ static XmlJavaTypeAdapter getMethodXJTA(final Method m) {
+ XmlJavaTypeAdapter adapter = m.getAnnotation(XmlJavaTypeAdapter.class);
+ if (adapter == null) {
+ Method setter = getSetter(m);
+ adapter = setter.getAnnotation(XmlJavaTypeAdapter.class);
+ }
+ if (adapter == null) {
+ adapter = m.getReturnType().getAnnotation(XmlJavaTypeAdapter.class);
+ }
+ if (adapter == null) {
+ XmlJavaTypeAdapters adapters = m.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ if (adapters != null) {
+ for (XmlJavaTypeAdapter candidate : adapters.value()) {
+ if (candidate != null && candidate.type().equals(m.getGenericReturnType())) {
+ adapter = candidate;
+ break;
+ }
+ }
+ }
+ }
+ return adapter;
+ }
+
+ static Class<?> getTypeFromXmlAdapter(XmlJavaTypeAdapter xjta) {
+ if (xjta != null) {
+ Class<?> c2 = xjta.value();
+ Type sp = c2.getGenericSuperclass();
+ while (!XmlAdapter.class.equals(c2) && c2 != null) {
+ sp = c2.getGenericSuperclass();
+ c2 = c2.getSuperclass();
+ }
+ if (sp instanceof ParameterizedType) {
+ return (Class<?>)((ParameterizedType)sp).getActualTypeArguments()[0];
+ }
+ }
+ return null;
+ }
+
+}
11 years, 11 months
JBossWS SVN: r17233 - in thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest: exception and 1 other directory.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-11 16:19:36 -0500 (Fri, 11 Jan 2013)
New Revision: 17233
Added:
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java
Log:
[JBPAPP-10129] Adding test case for @XmlType.propOrder fix
Added: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/Echo.java 2013-01-11 21:19:36 UTC (rev 17233)
@@ -0,0 +1,26 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+import javax.jws.WebService;
+
+@WebService(targetNamespace = "http://cxf.apache.org/test/HelloService", name = "HelloService")
+public interface Echo {
+ String echo(String request) throws MyException;
+}
Added: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/EchoImpl.java 2013-01-11 21:19:36 UTC (rev 17233)
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+import javax.jws.WebService;
+
+@WebService(serviceName = "HelloService",
+ portName = "HelloPort",
+ endpointInterface = "org.apache.cxf.tools.fortest.exception.Echo",
+ targetNamespace = "http://cxf.apache.org/test/HelloService")
+public class EchoImpl {
+ public String echo(String request) throws MyException {
+ return "Response";
+
+ }
+
+}
Added: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/MyException.java 2013-01-11 21:19:36 UTC (rev 17233)
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+import javax.xml.bind.annotation.XmlType;
+
+(a)javax.xml.ws.WebFault
+@XmlType(namespace = "http://cxf.apache.org/test/HelloService",
+ name = "MyException",
+ propOrder = { "summary", "from", "id" })
+public class MyException extends SuperException {
+ private static final long serialVersionUID = 8575109064272599936L;
+ private String summary;
+ private String from;
+
+ public MyException(String message) {
+ super(message);
+ }
+
+ public void setSummary(String summary) {
+ this.summary = summary;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getSummary() {
+ return summary;
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+}
Added: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java (rev 0)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/exception/SuperException.java 2013-01-11 21:19:36 UTC (rev 17233)
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.tools.fortest.exception;
+
+public class SuperException extends Exception {
+ private static final long serialVersionUID = 1L;
+ private int id;
+
+ public SuperException(String message) {
+ super(message);
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public int getId() {
+ return id;
+ }
+}
11 years, 11 months
JBossWS SVN: r17232 - thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-11 16:18:38 -0500 (Fri, 11 Jan 2013)
New Revision: 17232
Modified:
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
Log:
[JBPAPP-10129] fixing checkstyle errors
Modified: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 18:56:30 UTC (rev 17231)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 21:18:38 UTC (rev 17232)
@@ -290,11 +290,9 @@
}
}
XmlJavaTypeAdapter xjta = cls.getAnnotation(XmlJavaTypeAdapter.class);
- if (xjta != null) {
+ if (xjta != null && Utils.getTypeFromXmlAdapter(xjta) != null) {
Type t = Utils.getTypeFromXmlAdapter(xjta);
- if (t != null) {
- addType(t);
- }
+ addType(t);
return;
}
} else if (classes.contains(cls)) {
Modified: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java 2013-01-11 18:56:30 UTC (rev 17231)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBEncoderDecoder.java 2013-01-11 21:18:38 UTC (rev 17232)
@@ -48,11 +48,8 @@
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.attachment.AttachmentMarshaller;
import javax.xml.bind.attachment.AttachmentUnmarshaller;
import javax.xml.namespace.NamespaceContext;
@@ -373,7 +370,7 @@
} else {
Object o = Utils.getMethodValue(m, elValue);
writeObject(marshaller, writer, new JAXBElement(mname, String.class, o));
- }
+ }
}
writer.writeEndElement();
writer.flush();
@@ -447,9 +444,9 @@
reader.nextTag();
while (reader.getEventType() == XMLStreamReader.START_ELEMENT) {
QName q = reader.getName();
- String fieldName = q.getLocalPart();
- Field f = Utils.getField(cls, accessType, fieldName);
- if (f != null) {
+ String fieldName = q.getLocalPart();
+ Field f = Utils.getField(cls, accessType, fieldName);
+ if (f != null) {
Type type = f.getGenericType();
f.setAccessible(true);
if (JAXBSchemaInitializer.isArray(type)) {
@@ -461,18 +458,16 @@
o = java.lang.reflect.Array.newInstance(compType, ret.size());
for (int x = 0; x < ret.size(); x++) {
Array.set(o, x, ret.get(x));
- }
+ }
} else {
o = ret.toArray((Object[]) Array.newInstance(compType, ret.size()));
- }
}
-
- f.set(obj, o);
- } else {
- Object o = getElementValue(u.unmarshal(reader, Utils.getFieldType(f)));
- Utils.setFieldValue(f, obj, o);
}
-
+ f.set(obj, o);
+ } else {
+ Object o = getElementValue(u.unmarshal(reader, Utils.getFieldType(f)));
+ Utils.setFieldValue(f, obj, o);
+ }
} else {
String s = Character.toUpperCase(q.getLocalPart().charAt(0))
+ q.getLocalPart().substring(1);
@@ -507,10 +502,10 @@
Utils.setMethodValue(m, m2, obj, o);
}
}
- }
- return (Exception)obj;
+ }
+ return (Exception)obj;
} catch (Exception e) {
- throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
+ throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
}
}
Modified: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 18:56:30 UTC (rev 17231)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 21:18:38 UTC (rev 17232)
@@ -575,7 +575,7 @@
JAXBBeanInfo beanInfo = getBeanInfo(type);
if (beanInfo != null) {
addElement(elementList, beanInfo, new QName(namespace, f.getName()), isArray(type));
- }
+ }
}
for (Method m : Utils.getGetters(cls, accessType)) {
//map method
@@ -586,7 +586,7 @@
String name = m.getName().substring(idx);
name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
addElement(elementList, beanInfo, new QName(namespace, name), isArray(type));
- }
+ }
}
if (propertyOrder != null && propertyOrder.length == elementList.size()) {
Modified: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java 2013-01-11 18:56:30 UTC (rev 17231)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java 2013-01-11 21:18:38 UTC (rev 17232)
@@ -72,7 +72,8 @@
return fields;
}
- private static Collection<Method> getMethods(Class<?> cls, XmlAccessType accessType, boolean acceptSetters) {
+ private static Collection<Method> getMethods(Class<?> cls,
+ XmlAccessType accessType, boolean acceptSetters) {
return getMethodsInternal(cls, accessType, acceptSetters);
}
@@ -147,7 +148,9 @@
}
private static boolean isGetter(Method m) {
- if (m.getReturnType() != Void.class && m.getReturnType() != Void.TYPE && m.getParameterTypes().length == 0) {
+ if (m.getReturnType() != Void.class
+ && m.getReturnType() != Void.TYPE
+ && m.getParameterTypes().length == 0) {
Method setter = getSetter(m);
if (setter != null) {
return !setter.isAnnotationPresent(XmlTransient.class);
@@ -251,7 +254,8 @@
adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
- XmlJavaTypeAdapters adapters = f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ XmlJavaTypeAdapters adapters =
+ f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
if (adapters != null) {
for (XmlJavaTypeAdapter candidate : adapters.value()) {
if (candidate != null && candidate.type().equals(f.getType())) {
@@ -274,7 +278,8 @@
adapter = m.getReturnType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
- XmlJavaTypeAdapters adapters = m.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ XmlJavaTypeAdapters adapters =
+ m.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
if (adapters != null) {
for (XmlJavaTypeAdapter candidate : adapters.value()) {
if (candidate != null && candidate.type().equals(m.getGenericReturnType())) {
11 years, 11 months
JBossWS SVN: r17231 - thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb.
by jbossws-commits@lists.jboss.org
Author: klape
Date: 2013-01-11 13:56:30 -0500 (Fri, 11 Jan 2013)
New Revision: 17231
Modified:
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
Log:
[JBPAPP-10129] Adding in fixes from CXF-4729 and CXF-4680 regarding property order of exception types
Modified: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 16:45:53 UTC (rev 17230)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java 2013-01-11 18:56:30 UTC (rev 17231)
@@ -38,7 +38,6 @@
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
import javax.xml.namespace.QName;
@@ -292,11 +291,11 @@
}
XmlJavaTypeAdapter xjta = cls.getAnnotation(XmlJavaTypeAdapter.class);
if (xjta != null) {
- Type t = Utils.getTypeFromXmlAdapter(xjta);
- if (t != null) {
- addType(t);
- }
- return;
+ Type t = Utils.getTypeFromXmlAdapter(xjta);
+ if (t != null) {
+ addType(t);
+ }
+ return;
}
} else if (classes.contains(cls)) {
return;
@@ -314,7 +313,8 @@
adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
- XmlJavaTypeAdapters adapters = f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
+ XmlJavaTypeAdapters adapters =
+ f.getDeclaringClass().getPackage().getAnnotation(XmlJavaTypeAdapters.class);
if (adapters != null) {
for (XmlJavaTypeAdapter candidate : adapters.value()) {
if (candidate != null && candidate.type().equals(f.getType())) {
@@ -441,4 +441,4 @@
}
return false;
}
-}
\ No newline at end of file
+}
Modified: thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 16:45:53 UTC (rev 17230)
+++ thirdparty/cxf/branches/cxf-2.2.12-patch02_JBPAPP-10129/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java 2013-01-11 18:56:30 UTC (rev 17231)
@@ -26,12 +26,22 @@
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Iterator;
+import java.util.List;
+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.XmlAccessorType;
import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
@@ -367,7 +377,7 @@
MessagePartInfo part = fault.getMessageParts().get(0);
Class<?> cls = part.getTypeClass();
Class<?> cl2 = (Class)fault.getProperty(Class.class.getName());
- if (cls != cl2) {
+ if (cls != cl2) {
QName name = (QName)fault.getProperty("elementName");
part.setElementQName(name);
JAXBBeanInfo beanInfo = getBeanInfo(cls);
@@ -426,6 +436,8 @@
XmlSchemaSequence seq = new XmlSchemaSequence();
ct.setParticle(seq);
+ List<XmlSchemaElement> elementList = new ArrayList<XmlSchemaElement>();
+
Method methods[] = cls.getMethods();
for (Method m : methods) {
if (m.getName().startsWith("get")
@@ -453,15 +465,38 @@
el.setSchemaTypeName(typeName);
}
- seq.getItems().add(el);
+ elementList.add(el);
} catch (Exception e) {
//not mappable
}
}
}
+ XmlAccessorOrder xmlAccessorOrder = cls.getAnnotation(XmlAccessorOrder.class);
+ XmlType xmlTypeAnno = cls.getAnnotation(XmlType.class);
+ String[] propertyOrder = null;
+
+ if (xmlTypeAnno != null && xmlTypeAnno.propOrder().length > 0) {
+ propertyOrder = xmlTypeAnno.propOrder();
+ //TODO: handle @XmlAccessOrder
+ }
+
+ if (propertyOrder != null && propertyOrder.length == elementList.size()) {
+ sortItems(elementList, propertyOrder);
+ } else if (propertyOrder != null && propertyOrder.length != elementList.size()) {
+ 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(elementList);
+ }
+
+ for (XmlSchemaElement elem : elementList) {
+ seq.getItems().add(elem);
+ }
}
}
-
private void buildExceptionType(MessagePartInfo part, Class<?> cls) {
SchemaInfo schemaInfo = null;
@@ -471,6 +506,15 @@
break;
}
}
+ XmlAccessorOrder xmlAccessorOrder = cls.getAnnotation(XmlAccessorOrder.class);
+ XmlType xmlTypeAnno = cls.getAnnotation(XmlType.class);
+ String[] propertyOrder = null;
+
+ if (xmlTypeAnno != null && xmlTypeAnno.propOrder().length > 0) {
+ propertyOrder = xmlTypeAnno.propOrder();
+ //TODO: handle @XmlAccessOrder
+ }
+
XmlSchema schema;
if (schemaInfo == null) {
schema = schemas.newXmlSchemaInCollection(part.getElementQName().getNamespaceURI());
@@ -516,13 +560,21 @@
ct.setParticle(seq);
String namespace = part.getElementQName().getNamespaceURI();
+ XmlAccessorType accessorType = cls.getAnnotation(XmlAccessorType.class);
+ if (accessorType == null && cls.getPackage() != null) {
+ accessorType = cls.getPackage().getAnnotation(XmlAccessorType.class);
+ }
+
XmlAccessType accessType = Utils.getXmlAccessType(cls);
+
+ List<XmlSchemaElement> elementList = new ArrayList<XmlSchemaElement>();
+
for (Field f : Utils.getFields(cls, accessType)) {
//map field
Type type = Utils.getFieldType(f);
JAXBBeanInfo beanInfo = getBeanInfo(type);
if (beanInfo != null) {
- addElement(schema, seq, beanInfo, new QName(namespace, f.getName()), isArray(type));
+ addElement(elementList, beanInfo, new QName(namespace, f.getName()), isArray(type));
}
}
for (Method m : Utils.getGetters(cls, accessType)) {
@@ -533,9 +585,26 @@
int idx = m.getName().startsWith("get") ? 3 : 2;
String name = m.getName().substring(idx);
name = Character.toLowerCase(name.charAt(0)) + name.substring(1);
- addElement(schema, seq, beanInfo, new QName(namespace, name), isArray(type));
+ addElement(elementList, beanInfo, new QName(namespace, name), isArray(type));
}
}
+
+ if (propertyOrder != null && propertyOrder.length == elementList.size()) {
+ sortItems(elementList, propertyOrder);
+ } else if (propertyOrder != null && propertyOrder.length != elementList.size()) {
+ 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(elementList);
+ }
+
+ for (XmlSchemaElement elem : elementList) {
+ seq.getItems().add(elem);
+ }
+
part.setProperty(JAXBDataBinding.class.getName() + ".CUSTOM_EXCEPTION", Boolean.TRUE);
}
@@ -550,8 +619,7 @@
return false;
}
- public void addElement(XmlSchema schema,
- XmlSchemaSequence seq, JAXBBeanInfo beanInfo,
+ public void addElement(List<XmlSchemaElement> elementList, JAXBBeanInfo beanInfo,
QName name, boolean isArray) {
XmlSchemaElement el = new XmlSchemaElement();
el.setName(name.getLocalPart());
@@ -581,7 +649,7 @@
el.setSchemaTypeName(typeName);
}
- seq.getItems().add(el);
+ elementList.add(el);
}
@@ -599,4 +667,25 @@
}
return isExist;
}
+
+ //sort to Alphabetical order
+ private void sort(final List<XmlSchemaElement> elementList) {
+ Collections.sort(elementList, new Comparator<XmlSchemaElement>() {
+ public int compare(XmlSchemaElement e1, XmlSchemaElement e2) {
+ return e1.getName().compareTo(e2.getName());
+ }
+ });
+ }
+
+ private void sortItems(List<XmlSchemaElement> elementList, String[] propOrder) {
+ final List<String> propList = Arrays.asList(propOrder);
+
+ Collections.sort(elementList, new Comparator<XmlSchemaElement>() {
+ public int compare(XmlSchemaElement el1, XmlSchemaElement el2) {
+ int index1 = propList.indexOf(el1.getName());
+ int index2 = propList.indexOf(el2.getName());
+ return index1 - index2;
+ }
+ });
+ }
}
11 years, 11 months
JBossWS SVN: r17230 - shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2013-01-11 11:45:53 -0500 (Fri, 11 Jan 2013)
New Revision: 17230
Modified:
shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/JBWS1702TestCase.java
shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSBareSEI.java
shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSWithDocument_Bare.java
Log:
Fixing testcase by removing ambiguity (multiple no soap-action 0 parameter ws methods on a doc/lit bare endpoints)
Modified: shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/JBWS1702TestCase.java
===================================================================
--- shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/JBWS1702TestCase.java 2013-01-10 11:14:14 UTC (rev 17229)
+++ shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/JBWS1702TestCase.java 2013-01-11 16:45:53 UTC (rev 17230)
@@ -31,6 +31,7 @@
import org.jboss.test.ws.jaxws.jbws1702.types.ClassB;
import org.jboss.test.ws.jaxws.jbws1702.types.ClassC;
import org.jboss.test.ws.jaxws.jbws1702.types.ResponseWrapperB;
+import org.jboss.test.ws.jaxws.jbws1702.types.ResponseWrapperC;
import org.jboss.wsf.test.JBossWSTest;
import org.jboss.wsf.test.JBossWSTestSetup;
@@ -67,6 +68,9 @@
ResponseWrapperB wrapper = port.getClassCAsClassB();
ClassB b = wrapper.getData();
assertTrue("Should be an instance of ClassC, but was " + b, (b instanceof ClassC));
+
+ ResponseWrapperC wrapperC = port.getClassC();
+ assertNotNull(wrapperC.getData());
}
public void testInheritanceWrapped() throws Exception
Modified: shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSBareSEI.java
===================================================================
--- shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSBareSEI.java 2013-01-10 11:14:14 UTC (rev 17229)
+++ shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSBareSEI.java 2013-01-11 16:45:53 UTC (rev 17230)
@@ -39,7 +39,9 @@
)
public interface SampleWSBareSEI
{
+ @WebMethod(action="getClassCAsClassB")
ResponseWrapperB getClassCAsClassB();
+ @WebMethod(action="getClassC")
ResponseWrapperC getClassC();
}
Modified: shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSWithDocument_Bare.java
===================================================================
--- shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSWithDocument_Bare.java 2013-01-10 11:14:14 UTC (rev 17229)
+++ shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws1702/SampleWSWithDocument_Bare.java 2013-01-11 16:45:53 UTC (rev 17230)
@@ -21,14 +21,12 @@
*/
package org.jboss.test.ws.jaxws.jbws1702;
-import org.jboss.test.ws.jaxws.jbws1702.types.ResponseWrapperB;
+import javax.jws.WebService;
+
import org.jboss.test.ws.jaxws.jbws1702.types.ClassC;
+import org.jboss.test.ws.jaxws.jbws1702.types.ResponseWrapperB;
import org.jboss.test.ws.jaxws.jbws1702.types.ResponseWrapperC;
-import javax.jws.soap.SOAPBinding;
-import javax.jws.WebService;
-import javax.jws.WebMethod;
-
/**
*
*
11 years, 11 months