Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 34792 invoked from network); 9 Apr 2007 20:24:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 9 Apr 2007 20:24:59 -0000 Received: (qmail 67662 invoked by uid 500); 9 Apr 2007 20:25:05 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 67628 invoked by uid 500); 9 Apr 2007 20:25:05 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 67617 invoked by uid 99); 9 Apr 2007 20:25:05 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Apr 2007 13:25:05 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Apr 2007 13:24:58 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 8D1281A9838; Mon, 9 Apr 2007 13:24:38 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r526904 - /geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/AxisServiceGenerator.java Date: Mon, 09 Apr 2007 20:24:23 -0000 To: scm@geronimo.apache.org From: dims@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070409202438.8D1281A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dims Date: Mon Apr 9 13:24:21 2007 New Revision: 526904 URL: http://svn.apache.org/viewvc?view=rev&rev=526904 Log: Fix for GERONIMO-3080 - Axis2: Improve AxisServiceGenerator to handle more than 1 parameter of a service method (doclitwrapped case) Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/AxisServiceGenerator.java Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/AxisServiceGenerator.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/AxisServiceGenerator.java?view=diff&rev=526904&r1=526903&r2=526904 ============================================================================== --- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/AxisServiceGenerator.java (original) +++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/AxisServiceGenerator.java Mon Apr 9 13:24:21 2007 @@ -17,6 +17,30 @@ package org.apache.geronimo.axis2; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringReader; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.Service; +import javax.wsdl.WSDLException; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; +import javax.wsdl.xml.WSDLWriter; +import javax.xml.namespace.QName; +import javax.xml.ws.WebServiceException; + import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.Constants; @@ -52,29 +76,6 @@ import org.apache.ws.commons.schema.XmlSchemaSequence; import org.apache.ws.commons.schema.XmlSchemaType; -import javax.wsdl.Definition; -import javax.wsdl.Port; -import javax.wsdl.Service; -import javax.wsdl.WSDLException; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.wsdl.xml.WSDLWriter; -import javax.xml.namespace.QName; -import javax.xml.ws.WebServiceException; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - //TODO: Handle RPC Style Messaging //TODO: Handle Fault Messages //TODO: Investigate more on JAXB Wrapper class gen default behaviour @@ -201,14 +202,19 @@ if (particle instanceof XmlSchemaSequence) { XmlSchemaSequence xmlSchemaSequence = (XmlSchemaSequence) particle; Iterator iterator = xmlSchemaSequence.getItems().getIterator(); - + int i = 0; + while (iterator.hasNext()) { XmlSchemaElement innerElement = (XmlSchemaElement) iterator.next(); XmlSchemaType innerElementSchemaType = innerElement.getSchemaType(); if(!(innerElementSchemaType instanceof XmlSchemaComplexType)){ element = innerElement; - break; + if(element != null){ + attachPDC(mdc, method, element, i); + } + i++; + element = null; }else { XmlSchemaComplexType innerComplexSchemaType = (XmlSchemaComplexType)innerElementSchemaType; XmlSchemaParticle innerParticle = innerComplexSchemaType.getParticle(); @@ -221,16 +227,15 @@ } if(element != null){ - ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); + ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); WebParamAnnot webParamAnnot = WebParamAnnot.createWebParamAnnotImpl(); webParamAnnot.setName(element.getName()); - pdc.setWebParamAnnot(webParamAnnot); - + pdc.setWebParamAnnot(webParamAnnot); Class[] paramTypes = method.getParameterTypes(); - + //TODO: I think there is a bug here - the last paramType.getName will overwrite the previous ones. for(Class paramType : paramTypes){ String strParamType = paramType.getName(); - pdc.setParameterType(strParamType); + pdc.setParameterType(strParamType); } mdc.addParameterDescriptionComposite(pdc); } @@ -408,5 +413,20 @@ } } return wsdlURL; + } + + private void attachPDC(MethodDescriptionComposite mdc, Method method, XmlSchemaElement element, int j) { + ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); + WebParamAnnot webParamAnnot = WebParamAnnot.createWebParamAnnotImpl(); + webParamAnnot.setName(element.getName()); + pdc.setMethodDescriptionCompositeRef(mdc); + pdc.setWebParamAnnot(webParamAnnot); + Class[] paramTypes = method.getParameterTypes(); + + if (paramTypes.length >= j){ + pdc.setParameterType(paramTypes[j].getName()); + pdc.setListOrder(j); + } + mdc.addParameterDescriptionComposite(pdc); } }