Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 17059 invoked from network); 1 Sep 2009 20:56:02 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 1 Sep 2009 20:56:02 -0000 Received: (qmail 52667 invoked by uid 500); 1 Sep 2009 20:56:02 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 52566 invoked by uid 500); 1 Sep 2009 20:56:01 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 52557 invoked by uid 99); 1 Sep 2009 20:56:01 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Sep 2009 20:56:01 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Sep 2009 20:56:00 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id AF6B02388906; Tue, 1 Sep 2009 20:55:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r810234 - in /cxf/branches/2.2.x-fixes: ./ common/common/src/main/java/org/apache/cxf/common/util/ rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ systests/uncategorized/src/test/... Date: Tue, 01 Sep 2009 20:55:39 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090901205539.AF6B02388906@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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 doCXF2411(); + + public class CXF2411Result { + 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 doCXF2411() { + CXF2411Result ret = new CXF2411Result(); + CXF2411SubClass content[] = new CXF2411SubClass[1]; + content[0] = new CXF2411SubClass(); + ret.setContent(content); + return ret; + } }