You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by nt...@apache.org on 2007/04/10 00:55:04 UTC

svn commit: r526943 [2/2] - in /webservices/axis2/trunk/java/modules: jaxws/ jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/ jaxws/src/org/apache/axis2/jaxws/message/databinding/ jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/ jaxws/te...

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java Mon Apr  9 15:55:00 2007
@@ -33,6 +33,7 @@
 import org.apache.axis2.jaxws.message.XMLFaultReason;
 import org.apache.axis2.jaxws.message.databinding.JAXBBlockContext;
 import org.apache.axis2.jaxws.message.databinding.JAXBUtils;
+import org.apache.axis2.jaxws.message.databinding.XSDListUtils;
 import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
 import org.apache.axis2.jaxws.message.util.XMLFaultUtils;
 import org.apache.axis2.jaxws.registry.FactoryRegistry;
@@ -57,6 +58,7 @@
 import javax.xml.ws.ProtocolException;
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.soap.SOAPFaultException;
+import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -65,7 +67,9 @@
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Collection;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
@@ -146,7 +150,24 @@
                 // Create an Element rendering
                 Element element = null;
                 if (!marshalDesc.getAnnotationDesc(formalType).hasXmlRootElement()) {
-                    element = new Element(value, qName, formalType);
+                    /* when a schema defines a SimpleType with xsd list jaxws tooling generates art-effects with array rather than a java.util.List
+                     * However the ObjectFactory definition uses a List and thus marshalling fails. Lets convert the Arrays to List and recreate
+                     * the JAXBElements for the same.
+                     */
+                    if(pd.isListType()){
+                        
+                       List<Object> list= new ArrayList<Object>();
+                       if(formalType.isArray()){
+                            for(int count = 0; count < Array.getLength(value); count++){
+                                Object obj = Array.get(value, count);
+                                list.add(obj);
+                            }
+                            element = new Element(list, qName, List.class);
+                        }
+                      }
+                    else{
+                        element = new Element(value, qName, formalType);
+                    }
                 } else {
                     element = new Element(value, qName);
                 }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XSDListUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XSDListUtils.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XSDListUtils.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XSDListUtils.java Mon Apr  9 15:55:00 2007
@@ -77,7 +77,7 @@
             IllegalArgumentException, InstantiationException, IllegalAccessException,
             InvocationTargetException {
         // TODO only supports arrays right now.  Need to implement this for List
-        if (container.getClass().isArray()) {
+    	if (container !=null && container.getClass().isArray()) {
             String xsdString = "";
             for (int i = 0; i < Array.getLength(container); i++) {
                 Object component = Array.get(container, i);
@@ -87,7 +87,20 @@
                 xsdString += getAsText(component);
             }
             return xsdString;
-        } else {
+            
+        } else if(container!=null && List.class.isAssignableFrom(container.getClass())){
+            String xsdString = "";
+            List containerAsList = (List)container;
+            for (Object component:containerAsList) {
+                if (xsdString.length() != 0) {
+                    xsdString += " ";
+                }
+                xsdString += getAsText(component);
+            }
+            return xsdString;
+            
+        }
+        else {
             throw new IllegalArgumentException(container.getClass().toString());
         }
     }
@@ -129,7 +142,7 @@
             }
             Object array = Array.newInstance(arrayType, list.size());
             return list.toArray((Object[])array);
-        } else {
+        }else {
             throw new IllegalArgumentException(type.toString());
         }
     }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java Mon Apr  9 15:55:00 2007
@@ -423,4 +423,5 @@
         }
         return obj;
     }
+    
 }

Added: webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/StringList.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/StringList.wsdl?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/StringList.wsdl (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/StringList.wsdl Mon Apr  9 15:55:00 2007
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<definitions name="StringList" targetNamespace="http://org/test/StringList"
+	xmlns:tns="http://org/test/StringList" xmlns="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+
+
+	<types>
+		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+			elementFormDefault="qualified" targetNamespace="http://org/test/StringList">
+			<xsd:element name="StringList" type="tns:StringListType" />
+			<xsd:element name="StringListResponse" type="tns:StringListType" />
+    
+			<xsd:simpleType name="StringListType">
+				<xsd:list itemType="xsd:string"/>
+			</xsd:simpleType>
+			
+		</xsd:schema>
+	</types>
+
+	<message name="StringList">
+		<part name="parameters" element="tns:StringList" />
+	</message>
+	<message name="StringListResponse">
+		<part name="result" element="tns:StringListResponse" />
+	</message>
+	
+	<portType name="StringListPortType">
+		<operation name="StringList">
+			<input message="tns:StringList" name="add" />
+			<output message="tns:StringListResponse" name="addResponse" />
+			
+		</operation>
+	</portType>
+	<binding name="StringListBinding" type="tns:StringListPortType">
+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" />
+		<operation name="StringList">
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			
+		</operation>
+		
+	</binding>
+	<service name="StringListService">
+		<port name="StringListPort" binding="tns:StringListBinding">
+			<soap:address
+				location="http://localhost:8080/axis2/services/StringListService" />
+		</port>
+	</service>
+</definitions>

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java Mon Apr  9 15:55:00 2007
@@ -72,6 +72,7 @@
 import org.apache.axis2.jaxws.sample.FaultyWebServiceTests;
 import org.apache.axis2.jaxws.sample.MtomSampleTests;
 import org.apache.axis2.jaxws.sample.NonWrapTests;
+import org.apache.axis2.jaxws.sample.StringListTests;
 import org.apache.axis2.jaxws.sample.WSGenTests;
 import org.apache.axis2.jaxws.sample.WrapTests;
 import org.apache.axis2.jaxws.security.BasicAuthSecurityTests;
@@ -178,7 +179,7 @@
         suite.addTestSuite(SchemaReaderTests.class);
         suite.addTestSuite(RPCLitEnumTests.class);
         suite.addTestSuite(BindingProviderTests.class);
-
+        suite.addTestSuite(StringListTests.class);
         // Start (and stop) the server only once for all the tests
         TestSetup testSetup = new TestSetup(suite) {
             public void setUp() {

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/StringListTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/StringListTests.java?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/StringListTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/StringListTests.java Mon Apr  9 15:55:00 2007
@@ -0,0 +1,42 @@
+/*
+ * 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.axis2.jaxws.sample;
+
+import org.apache.axis2.jaxws.stringlist.sei.StringListPortType;
+import org.apache.axis2.jaxws.stringlist.sei.StringListService;
+
+import junit.framework.TestCase;
+
+
+public class StringListTests extends TestCase{
+    public void testStringListScenario(){
+        System.out.println("----------------------------------");
+        System.out.println("test: " + getName());
+        try{
+            StringListService sls = new StringListService();
+            StringListPortType portType =sls.getStringListPort();
+            String[] retString = portType.stringList(new String[]{"String1","String2","String3"});
+            assertNotNull(retString);
+            assertTrue(retString.length == 3);
+        }catch(Exception e){
+            e.printStackTrace();
+            fail();
+        }
+    }
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/StringList.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/StringList.wsdl?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/StringList.wsdl (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/StringList.wsdl Mon Apr  9 15:55:00 2007
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<definitions name="StringList" targetNamespace="http://org/test/StringList"
+	xmlns:tns="http://org/test/StringList" xmlns="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+
+
+	<types>
+		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+			elementFormDefault="qualified" targetNamespace="http://org/test/StringList">
+			<xsd:element name="StringList" type="tns:StringListType" />
+			<xsd:element name="StringListResponse" type="tns:StringListType" />
+    
+			<xsd:simpleType name="StringListType">
+				<xsd:list itemType="xsd:string"/>
+			</xsd:simpleType>
+			
+		</xsd:schema>
+	</types>
+
+	<message name="StringList">
+		<part name="parameters" element="tns:StringList" />
+	</message>
+	<message name="StringListResponse">
+		<part name="result" element="tns:StringListResponse" />
+	</message>
+	
+	<portType name="StringListPortType">
+		<operation name="StringList">
+			<input message="tns:StringList" name="add" />
+			<output message="tns:StringListResponse" name="addResponse" />
+			
+		</operation>
+	</portType>
+	<binding name="StringListBinding" type="tns:StringListPortType">
+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" />
+		<operation name="StringList">
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			
+		</operation>
+		
+	</binding>
+	<service name="StringListService">
+		<port name="StringListPort" binding="tns:StringListBinding">
+			<soap:address
+				location="http://localhost:8080/axis2/services/StringListService" />
+		</port>
+	</service>
+</definitions>

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/services.xml?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/services.xml (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/META-INF/services.xml Mon Apr  9 15:55:00 2007
@@ -0,0 +1,8 @@
+<serviceGroup>
+ <service name="StringListService">
+  <messageReceivers>
+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+  </messageReceivers>
+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.stringlist.StringListPortTypeImpl</parameter>
+ </service>
+</serviceGroup>

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/StringListPortTypeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/StringListPortTypeImpl.java?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/StringListPortTypeImpl.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/StringListPortTypeImpl.java Mon Apr  9 15:55:00 2007
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.stringlist;
+
+import javax.jws.WebService;
+
+import org.apache.axis2.jaxws.stringlist.sei.StringListPortType;
+
+@WebService(endpointInterface="org.apache.axis2.jaxws.stringlist.sei.StringListPortType")
+public class StringListPortTypeImpl implements StringListPortType {
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.stringlist.sei.StringListPortType#stringList(java.lang.String[])
+     */
+    public String[] stringList(String[] parameters) {
+        // TODO Auto-generated method stub
+        return new String[]{"str1", "str2", "str3"};
+    }
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListPortType.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListPortType.java?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListPortType.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListPortType.java Mon Apr  9 15:55:00 2007
@@ -0,0 +1,38 @@
+
+package org.apache.axis2.jaxws.stringlist.sei;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.xml.bind.annotation.XmlList;
+
+
+/**
+ * This class was generated by the JAXWS SI.
+ * JAX-WS RI 2.0_01-b15-fcs
+ * Generated source version: 2.0
+ * 
+ */
+@WebService(name = "StringListPortType", targetNamespace = "http://org/test/StringList")
+@SOAPBinding(parameterStyle = ParameterStyle.BARE)
+public interface StringListPortType {
+
+
+    /**
+     * 
+     * @param parameters
+     * @return
+     *     returns java.lang.String[]
+     */
+    @XmlList
+    @WebMethod(operationName = "StringList")
+    @WebResult(name = "StringListResponse", targetNamespace = "http://org/test/StringList", partName = "result")
+    public String[] stringList(
+        @XmlList
+        @WebParam(name = "StringList", targetNamespace = "http://org/test/StringList", partName = "parameters")
+        String[] parameters);
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListService.java?view=auto&rev=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListService.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/stringlist/sei/StringListService.java Mon Apr  9 15:55:00 2007
@@ -0,0 +1,61 @@
+
+package org.apache.axis2.jaxws.stringlist.sei;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+
+
+/**
+ * This class was generated by the JAXWS SI.
+ * JAX-WS RI 2.0_01-b15-fcs
+ * Generated source version: 2.0
+ * 
+ */
+@WebServiceClient(name = "StringListService", targetNamespace = "http://org/test/StringList", wsdlLocation = "StringList.wsdl")
+public class StringListService
+    extends Service
+{
+
+    private final static URL STRINGLISTSERVICE_WSDL_LOCATION;
+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/stringlist/META-INF/StringList.wsdl";
+    static {
+        URL url = null;
+        try {
+                try{
+                        String baseDir = new File(System.getProperty("basedir",".")).getCanonicalPath();
+                        wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();
+                }catch(Exception e){
+                        e.printStackTrace();
+                }
+                File file = new File(wsdlLocation);
+                url = file.toURL();
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        }
+        STRINGLISTSERVICE_WSDL_LOCATION = url;
+    }
+
+    public StringListService(URL wsdlLocation, QName serviceName) {
+        super(wsdlLocation, serviceName);
+    }
+
+    public StringListService() {
+        super(STRINGLISTSERVICE_WSDL_LOCATION, new QName("http://org/test/StringList", "StringListService"));
+    }
+
+    /**
+     * 
+     * @return
+     *     returns StringListPortType
+     */
+    @WebEndpoint(name = "StringListPort")
+    public StringListPortType getStringListPort() {
+        return (StringListPortType)super.getPort(new QName("http://org/test/StringList", "StringListPort"), StringListPortType.class);
+    }
+
+}

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java Mon Apr  9 15:55:00 2007
@@ -68,6 +68,9 @@
     public ParameterDescription getParameterDescription(String parameterName);
 
     public ParameterDescription[] getParameterDescriptions();
+    
+    // indicates whether or not an @XmlList annotation was found on the method
+    public boolean isListType();
 
     public abstract AxisOperation getAxisOperation();
 

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ParameterDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ParameterDescription.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ParameterDescription.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ParameterDescription.java Mon Apr  9 15:55:00 2007
@@ -59,7 +59,10 @@
     public String getPartName();
 
     public boolean isHolderType();
-
+    
+    // Indicates whether or not an @XMLList annotation was found on a parameter
+    public boolean isListType();
+    
     public Class getParameterType();
 
     public Class getParameterActualType();

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java Mon Apr  9 15:55:00 2007
@@ -9,6 +9,9 @@
     //Method reflective information
     private String fieldName;        //field name
     private String modifierType;    //field modifier
+	
+	// indicates whether the field was annotated with @XmlList or not
+	private boolean isListType = false;
 
     private HandlerChainAnnot handlerChainAnnot;
     private WebServiceRefAnnot webServiceRefAnnot;
@@ -72,6 +75,14 @@
         this.webServiceRefAnnot = webServiceRefAnnot;
     }
 
+	public void setIsListType(boolean isListType) {
+		this.isListType = isListType;
+	}
+	
+	public boolean isListType() {
+		return isListType;
+	}
+	
     /**
      * Convenience method for unit testing. We will print all of the
      * data members here.

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java Mon Apr  9 15:55:00 2007
@@ -16,6 +16,8 @@
     private String declaringClass; //the class/interface that actually declares this method
 
     boolean oneWayAnnotated;
+	// boolean that indicates if an @XmlList annotation was found on the method
+	private boolean 				isListType = false;
     private WebMethodAnnot webMethodAnnot;
     private WebResultAnnot webResultAnnot;
     private WebServiceContextAnnot webServiceContextAnnot;
@@ -337,6 +339,14 @@
         }
     }
 
+	public void setIsListType(boolean isListType) {
+		this.isListType = isListType;
+	}
+	
+	public boolean isListType() {
+		return isListType;
+	}
+	
     /**
      * Convenience method for unit testing. We will print all of the
      * data members here.

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java Mon Apr  9 15:55:00 2007
@@ -10,6 +10,8 @@
     private WebServiceRefAnnot webServiceRefAnnot;
     private WebServiceContextAnnot webServiceContextAnnot;
     private int listOrder;
+	// Will indicate whether or not we found an @XMLList annotation on the parameter
+	private boolean                 isListType;
 
     private MethodDescriptionComposite parentMDC;
 
@@ -173,6 +175,15 @@
         }
     }
 
+    	
+    public void setIsListType(boolean isListType) {
+    	this.isListType = isListType;
+    }
+
+    public boolean isListType() {
+    	return isListType;
+    }
+    
     /** Convenience method for unit testing. We will print all of the data members here. */
     public String toString() {
         StringBuffer sb = new StringBuffer();
@@ -207,4 +218,5 @@
     public boolean isHolderType() {
         return DescriptionBuilderUtils.isHolderType(parameterType);
     }
+    
 }

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java Mon Apr  9 15:55:00 2007
@@ -47,6 +47,7 @@
 import javax.jws.WebParam.Mode;
 import javax.jws.WebResult;
 import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlList;
 import javax.xml.namespace.QName;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.RequestWrapper;
@@ -94,6 +95,9 @@
     private Oneway onewayAnnotation;
     private Boolean onewayIsOneway;
 
+    // ANNOTATION: @XmlList
+    private boolean 			isListType = false;
+    
     // ANNOTATION: @RequestWrapper
     private RequestWrapper requestWrapperAnnotation;
     private String requestWrapperTargetNamespace;
@@ -162,7 +166,7 @@
         // TODO: Look for WebMethod anno; get name and action off of it
         parentEndpointInterfaceDescription = parent;
         setSEIMethod(method);
-
+		checkForXmlListAnnotation(method.getAnnotations());
         // The operationQName is intentionally unqualified to be consistent with the remaining parts of the system. 
         // Using a qualified name will cause breakage.
         // Don't do --> this.operationQName = new QName(parent.getTargetNamespace(), getOperationName());
@@ -190,6 +194,7 @@
 
         parameterDescriptions = createParameterDescriptions();
         faultDescriptions = createFaultDescriptions();
+		isListType = mdc.isListType();
 
         //If an AxisOperation was already created for us by populateService then just use that one
         //Otherwise, create it
@@ -1488,6 +1493,18 @@
         runtimeDescMap.put(ord.getKey(), ord);
     }
 
+    private void checkForXmlListAnnotation(Annotation[] annotations) {
+    	for(Annotation annotation : annotations) {
+    		if(annotation.annotationType() == XmlList.class) {
+    			isListType = true;
+    		}
+    	}
+    }
+    
+    public boolean isListType() {
+    	return isListType;
+    }
+    
     public String toString() {
         final String newline = "\n";
         final String sameline = "; ";

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ParameterDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ParameterDescriptionImpl.java?view=diff&rev=526943&r1=526942&r2=526943
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ParameterDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ParameterDescriptionImpl.java Mon Apr  9 15:55:00 2007
@@ -27,6 +27,7 @@
 
 import javax.jws.WebParam;
 import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlList;
 import javax.xml.ws.Holder;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Array;
@@ -60,7 +61,10 @@
     private WebParam.Mode webParamMode;
     public static final Boolean WebParam_Header_DEFAULT = new Boolean(false);
     private Boolean webParamHeader;
-
+    
+    // This boolean indicates whether or not there was an @XMLList on the parameter
+    private boolean isListType = false;
+    
     ParameterDescriptionImpl(int parameterNumber, Class parameterType, Type parameterGenericType,
                              Annotation[] parameterAnnotations, OperationDescription parent) {
         this.parameterNumber = parameterNumber;
@@ -75,6 +79,7 @@
                     getGenericParameterActualType((ParameterizedType)parameterGenericType);
         }
         findWebParamAnnotation(parameterAnnotations);
+        findXmlListAnnotation(parameterAnnotations);
     }
 
     ParameterDescriptionImpl(int parameterNumber, ParameterDescriptionComposite pdc,
@@ -83,6 +88,7 @@
         this.parameterNumber = parameterNumber;
         this.parentOperationDescription = parent;
         webParamAnnotation = pdc.getWebParamAnnot();
+        this.isListType = pdc.isListType();
 
         //TODO: Need to build the schema map. Need to add logic to add this parameter
         //      to the schema map.
@@ -107,6 +113,18 @@
         }
     }
 
+    /**
+     * This method will search array of parameter annotations for the presence of the @XmlList
+     * annotation.
+     */
+    private void findXmlListAnnotation(Annotation[] annotations) {
+    	for (Annotation checkAnnotation:annotations) {
+            if (checkAnnotation.annotationType() == XmlList.class) {
+                isListType = true;
+            }
+        }
+    }
+    
     public OperationDescription getOperationDescription() {
         return parentOperationDescription;
     }
@@ -363,5 +381,9 @@
             return string.toString();
         }
         return string.toString();
+    }
+
+    public boolean isListType() {
+    	return isListType;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org