Author: dkulp
Date: Tue Sep 1 20:55:38 2009
New Revision: 810234
URL: http://svn.apache.org/viewvc?rev=810234&view=rev
Log:
Merged revisions 810143 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r810143 | dkulp | 2009-09-01 13:53:18 -0400 (Tue, 01 Sep 2009) | 1 line
[CXF-2411] Fix some issues with parameratized types and JAXB
........
Modified:
cxf/branches/2.2.x-fixes/ (props changed)
cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java
cxf/branches/2.2.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerator.java
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 1 20:55:38 2009
@@ -1 +1 @@
-/cxf/trunk:782728-782730,783097,783294,783396,784059,784181-784184,784893,784895,785279-785282,785468,785621,785624,785651,785734,785866,786142,786271-786272,786395,786512,786514,786582-786583,786638,786647,786850,787200,787269,787277-787279,787290-787291,787305,787323,787366,787849,788030,788060,788187,788444,788451,788703,788752,788774,788819-788820,789013,789371,789387,789420,789527-789530,789704-789705,789788,789811,789896-789901,790074,790094,790134,790188,790294,790553,790637-790644,790868,791301,791354,791538,791753,791947,792007,792096,792183,792261-792265,792271,792604,792683-792685,792975,792985,793059,793570,794297,794396,794680,794728,794771,794778-794780,794892,795044,795104,795160,795583,795907,796022-796023,796352,796593,796741,796780,796994-796997,797117,797159,797192,797194,797231-797233,797442,797505,797517,797534,797581-797583,797587,797640,797651,797699,797882-797883,798344-798346,798363,798461,798479,798533,798551,798557,798561-798562,798570,798573,79858
4,798654,798748-798749,798816,798891,798929-798930,799245,799267,799439,799448,799637,799723-799724,799792,800453,800497-800498,801380-801381,801447,801962,802892,803056,803129,803174,803419,803460,803493,803689,804002,804175,804276,805784,805907,805909,806020-806021,806023,806405-806406,806576,806602-806604,806620,806627,806631,806633,806638,806687,806876,806922,806979-806982,807181,807205,807295,807748,807807,808035,808069,808085,808107,808464,808488,808731,808885,808925,809082-809083,809162,809190,809417-809626,809631,809663,809706,809738,809962,810090
+/cxf/trunk:782728-782730,783097,783294,783396,784059,784181-784184,784893,784895,785279-785282,785468,785621,785624,785651,785734,785866,786142,786271-786272,786395,786512,786514,786582-786583,786638,786647,786850,787200,787269,787277-787279,787290-787291,787305,787323,787366,787849,788030,788060,788187,788444,788451,788703,788752,788774,788819-788820,789013,789371,789387,789420,789527-789530,789704-789705,789788,789811,789896-789901,790074,790094,790134,790188,790294,790553,790637-790644,790868,791301,791354,791538,791753,791947,792007,792096,792183,792261-792265,792271,792604,792683-792685,792975,792985,793059,793570,794297,794396,794680,794728,794771,794778-794780,794892,795044,795104,795160,795583,795907,796022-796023,796352,796593,796741,796780,796994-796997,797117,797159,797192,797194,797231-797233,797442,797505,797517,797534,797581-797583,797587,797640,797651,797699,797882-797883,798344-798346,798363,798461,798479,798533,798551,798557,798561-798562,798570,798573,79858
4,798654,798748-798749,798816,798891,798929-798930,799245,799267,799439,799448,799637,799723-799724,799792,800453,800497-800498,801380-801381,801447,801962,802892,803056,803129,803174,803419,803460,803493,803689,804002,804175,804276,805784,805907,805909,806020-806021,806023,806405-806406,806576,806602-806604,806620,806627,806631,806633,806638,806687,806876,806922,806979-806982,807181,807205,807295,807748,807807,808035,808069,808085,808107,808464,808488,808731,808885,808925,809082-809083,809162,809190,809417-809626,809631,809663,809706,809738,809962,810090,810143
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java?rev=810234&r1=810233&r2=810234&view=diff
==============================================================================
---
cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java
(original)
+++
cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/common/util/ASMHelper.java
Tue Sep 1 20:55:38 2009
@@ -24,6 +24,7 @@
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -99,6 +100,14 @@
} else if (type instanceof GenericArrayType) {
GenericArrayType at = (GenericArrayType)type;
return "[" + getClassCode(at.getGenericComponentType());
+ } else if (type instanceof TypeVariable) {
+ TypeVariable tv = (TypeVariable)type;
+ Type[] bounds = tv.getBounds();
+ if (bounds != null && bounds.length == 1) {
+ return getClassCode(bounds[0]);
+ } else {
+ throw new IllegalArgumentException("Unable to determine type
for: " + tv);
+ }
} else if (type instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType)type;
StringBuilder a = new StringBuilder(getClassCode(pt.getRawType()));
Modified:
cxf/branches/2.2.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java?rev=810234&r1=810233&r2=810234&view=diff
==============================================================================
---
cxf/branches/2.2.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
(original)
+++
cxf/branches/2.2.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
Tue Sep 1 20:55:38 2009
@@ -27,6 +27,7 @@
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
import java.util.Collection;
import java.util.Set;
@@ -181,8 +182,24 @@
addType(t2);
}
} else if (cls instanceof GenericArrayType) {
+ Class ct;
GenericArrayType gt = (GenericArrayType)cls;
- Class ct = (Class) gt.getGenericComponentType();
+ Type componentType = gt.getGenericComponentType();
+ if (componentType instanceof Class) {
+ ct = (Class)componentType;
+ } else {
+ TypeVariable tv = (TypeVariable)componentType;
+ Type[] bounds = tv.getBounds();
+ if (bounds != null && bounds.length == 1) {
+ if (bounds[0] instanceof Class) {
+ ct = (Class)bounds[0];
+ } else {
+ throw new IllegalArgumentException("Unable to
determine type for: " + tv);
+ }
+ } else {
+ throw new IllegalArgumentException("Unable to determine
type for: " + tv);
+ }
+ }
ct = Array.newInstance(ct, 0).getClass();
addClass(ct);
Modified:
cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerator.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerator.java?rev=810234&r1=810233&r2=810234&view=diff
==============================================================================
---
cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerator.java
(original)
+++
cxf/branches/2.2.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerator.java
Tue Sep 1 20:55:38 2009
@@ -277,21 +277,25 @@
String classCode = getClassCode(clz);
String fieldDescriptor = null;
- if (genericType instanceof ParameterizedType
- && (Collection.class.isAssignableFrom(clz) || clz.isArray())) {
- ParameterizedType ptype = (ParameterizedType)genericType;
+ if (genericType instanceof ParameterizedType) {
+ if (Collection.class.isAssignableFrom(clz) || clz.isArray()) {
+ ParameterizedType ptype = (ParameterizedType)genericType;
- Type[] types = ptype.getActualTypeArguments();
- // TODO: more complex Parameterized type
- if (types.length > 0) {
- if (types[0] instanceof Class) {
- fieldDescriptor = getClassCode(genericType);
- } else if (types[0] instanceof GenericArrayType) {
- fieldDescriptor = getClassCode(genericType);
- } else if (types[0] instanceof ParameterizedType) {
- classCode =
getClassCode(((ParameterizedType)types[0]).getRawType());
- fieldDescriptor = getClassCode(genericType);
+ Type[] types = ptype.getActualTypeArguments();
+ // TODO: more complex Parameterized type
+ if (types.length > 0) {
+ if (types[0] instanceof Class) {
+ fieldDescriptor = getClassCode(genericType);
+ } else if (types[0] instanceof GenericArrayType) {
+ fieldDescriptor = getClassCode(genericType);
+ } else if (types[0] instanceof ParameterizedType) {
+ classCode =
getClassCode(((ParameterizedType)types[0]).getRawType());
+ fieldDescriptor = getClassCode(genericType);
+ }
}
+ } else {
+ classCode =
getClassCode(((ParameterizedType)genericType).getRawType());
+ fieldDescriptor = getClassCode(genericType);
}
}
String fieldName = JavaUtils.isJavaKeyword(name) ?
JavaUtils.makeNonJavaKeyword(name) : name;
Modified:
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java?rev=810234&r1=810233&r2=810234&view=diff
==============================================================================
---
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
(original)
+++
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
Tue Sep 1 20:55:38 2009
@@ -59,6 +59,8 @@
import org.apache.cxf.ordered_param_holder.ComplexStruct;
import org.apache.cxf.ordered_param_holder.OrderedParamHolder;
import org.apache.cxf.ordered_param_holder.OrderedParamHolder_Service;
+import
org.apache.cxf.systest.jaxws.DocLitWrappedCodeFirstService.CXF2411Result;
+import
org.apache.cxf.systest.jaxws.DocLitWrappedCodeFirstService.CXF2411SubClass;
import org.apache.cxf.systest.jaxws.DocLitWrappedCodeFirstService.Foo;
import org.apache.cxf.tests.inherit.Inherit;
import org.apache.cxf.tests.inherit.InheritService;
@@ -265,7 +267,7 @@
private void setASM(boolean b) throws Exception {
Field f = ASMHelper.class.getDeclaredField("oldASM");
f.setAccessible(true);
- f.set(null, b);
+ f.set(null, !b);
}
@Test
@@ -328,6 +330,11 @@
assertEquals("Hello", echoMsg);
}
private void runDocLitTest(DocLitWrappedCodeFirstService port) throws
Exception {
+ CXF2411Result<CXF2411SubClass> o = port.doCXF2411();
+ assertNotNull(o);
+ assertNotNull(o.getContent());
+ Object[] ar = o.getContent();
+ assertTrue(ar[0] instanceof CXF2411SubClass);
Foo foo = new Foo();
foo.setName("blah");
assertEquals("blah", port.modifyFoo(foo).getName());
Modified:
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java?rev=810234&r1=810233&r2=810234&view=diff
==============================================================================
---
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
(original)
+++
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
Tue Sep 1 20:55:38 2009
@@ -166,4 +166,22 @@
return dbReves;
}
}
+
+ CXF2411Result<CXF2411SubClass> doCXF2411();
+
+ public class CXF2411Result<T extends CXF2411Base> {
+ private T[] content;
+ public T[] getContent() {
+ return content;
+ }
+ public void setContent(T[] content) {
+ this.content = content;
+ }
+ }
+
+ public class CXF2411Base {
+ }
+
+ public class CXF2411SubClass extends CXF2411Base {
+ }
}
Modified:
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java?rev=810234&r1=810233&r2=810234&view=diff
==============================================================================
---
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
(original)
+++
cxf/branches/2.2.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
Tue Sep 1 20:55:38 2009
@@ -222,5 +222,13 @@
}
return f;
}
+
+ public CXF2411Result<CXF2411SubClass> doCXF2411() {
+ CXF2411Result<CXF2411SubClass> ret = new
CXF2411Result<CXF2411SubClass>();
+ CXF2411SubClass content[] = new CXF2411SubClass[1];
+ content[0] = new CXF2411SubClass();
+ ret.setContent(content);
+ return ret;
+ }
}