gdaniels 02/04/16 13:26:32 Modified: java/src/org/apache/axis AxisServiceConfig.java java/src/org/apache/axis/description TypeDesc.java java/src/org/apache/axis/encoding DefaultSOAP12TypeMappingImpl.java DefaultTypeMappingImpl.java java/src/org/apache/axis/encoding/ser ArrayDeserializer.java ArraySerializer.java java/src/org/apache/axis/utils JavaUtils.java java/src/org/apache/axis/wsdl/toJava Emitter.java JavaStubWriter.java Log: * Support Collections, not just Lists. * Some more code cleanup, remove dead imports, fix JavaDocs, etc. * Add a slot to hold XMLType in TypeDesc Revision Changes Path 1.6 +0 -2 xml-axis/java/src/org/apache/axis/AxisServiceConfig.java Index: AxisServiceConfig.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisServiceConfig.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- AxisServiceConfig.java 13 Feb 2002 20:55:42 -0000 1.5 +++ AxisServiceConfig.java 16 Apr 2002 20:26:32 -0000 1.6 @@ -65,8 +65,6 @@ { /** Get the allowed method names. * - * (The only method right now) - * * @return a space-delimited list of method names which may be called * via SOAP. */ 1.10 +15 -3 xml-axis/java/src/org/apache/axis/description/TypeDesc.java Index: TypeDesc.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/TypeDesc.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- TypeDesc.java 3 Apr 2002 06:09:55 -0000 1.9 +++ TypeDesc.java 16 Apr 2002 20:26:32 -0000 1.10 @@ -58,9 +58,8 @@ import org.apache.axis.encoding.ser.BeanSerializer; import javax.xml.rpc.namespace.QName; -import java.util.HashMap; -import java.lang.reflect.Array; import java.lang.reflect.Method; +import java.util.HashMap; /** * A TypeDesc represents a Java<->XML data binding. It is essentially @@ -113,8 +112,13 @@ return null; } + /** The Java class for this type */ private Class javaClass = null; - + + /** The XML type QName for this type */ + private QName xmlType = null; + + /** The various fields in here */ private FieldDesc [] fields; /** A cache of FieldDescs by name */ @@ -343,5 +347,13 @@ */ public boolean hasAttributes() { return _hasAttributes; + } + + public QName getXmlType() { + return xmlType; + } + + public void setXmlType(QName xmlType) { + this.xmlType = xmlType; } } 1.3 +1 -27 xml-axis/java/src/org/apache/axis/encoding/DefaultSOAP12TypeMappingImpl.java Index: DefaultSOAP12TypeMappingImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultSOAP12TypeMappingImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultSOAP12TypeMappingImpl.java 15 Apr 2002 02:35:57 -0000 1.2 +++ DefaultSOAP12TypeMappingImpl.java 16 Apr 2002 20:26:32 -0000 1.3 @@ -56,34 +56,8 @@ package org.apache.axis.encoding; import org.apache.axis.Constants; - -import javax.xml.rpc.namespace.QName; -import javax.xml.rpc.JAXRPCException; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.apache.axis.encoding.ser.ArraySerializerFactory; -import org.apache.axis.encoding.ser.ArrayDeserializerFactory; -import org.apache.axis.encoding.ser.BeanSerializerFactory; -import org.apache.axis.encoding.ser.BeanDeserializerFactory; -import org.apache.axis.encoding.ser.DateSerializerFactory; -import org.apache.axis.encoding.ser.DateDeserializerFactory; -import org.apache.axis.encoding.ser.Base64SerializerFactory; import org.apache.axis.encoding.ser.Base64DeserializerFactory; -import org.apache.axis.encoding.ser.MapSerializerFactory; -import org.apache.axis.encoding.ser.MapDeserializerFactory; -import org.apache.axis.encoding.ser.HexSerializerFactory; -import org.apache.axis.encoding.ser.HexDeserializerFactory; -import org.apache.axis.encoding.ser.ElementSerializerFactory; -import org.apache.axis.encoding.ser.ElementDeserializerFactory; -import org.apache.axis.encoding.ser.VectorDeserializerFactory; -import org.apache.axis.encoding.ser.SimpleDeserializerFactory; -import org.apache.axis.encoding.ser.SimplePrimitiveSerializerFactory; -import org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory; -import java.util.Vector; -import java.util.Hashtable; -import java.util.List; +import org.apache.axis.encoding.ser.Base64SerializerFactory; /** * @author Rich Scheuerle ([EMAIL PROTECTED]) 1.21 +5 -5 xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java Index: DefaultTypeMappingImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- DefaultTypeMappingImpl.java 15 Apr 2002 02:35:57 -0000 1.20 +++ DefaultTypeMappingImpl.java 16 Apr 2002 20:26:32 -0000 1.21 @@ -287,14 +287,14 @@ // which is the reason that ArrayList is associated with SOAP_ARRAY. // In addition, handle all objects that implement the List interface // as a SOAP_ARRAY - myRegister(Constants.SOAP_ARRAY, java.util.List.class, - new ArraySerializerFactory(), - new ArrayDeserializerFactory(), - false); - myRegister(Constants.SOAP_ARRAY, java.util.ArrayList.class, + myRegister(Constants.SOAP_ARRAY, java.util.Collection.class, new ArraySerializerFactory(), new ArrayDeserializerFactory(), false); +// myRegister(Constants.SOAP_ARRAY, java.util.ArrayList.class, +// new ArraySerializerFactory(), +// new ArrayDeserializerFactory(), +// false); myRegister(Constants.SOAP_ARRAY, Object[].class, new ArraySerializerFactory(), new ArrayDeserializerFactory(), 1.10 +9 -21 xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java Index: ArrayDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- ArrayDeserializer.java 25 Mar 2002 04:44:02 -0000 1.9 +++ ArrayDeserializer.java 16 Apr 2002 20:26:32 -0000 1.10 @@ -55,35 +55,23 @@ package org.apache.axis.encoding.ser; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.AttributesImpl; - -import javax.xml.rpc.namespace.QName; -import java.io.IOException; -import org.apache.axis.message.SOAPHandler; -import org.apache.axis.encoding.Serializer; -import org.apache.axis.encoding.SerializerFactory; -import org.apache.axis.encoding.SerializationContext; -import org.apache.axis.encoding.Deserializer; -import org.apache.axis.encoding.DeserializerTarget; -import org.apache.axis.encoding.DeserializerFactory; +import org.apache.axis.Constants; import org.apache.axis.encoding.DeserializationContext; +import org.apache.axis.encoding.Deserializer; import org.apache.axis.encoding.DeserializerImpl; -import org.apache.axis.Constants; +import org.apache.axis.encoding.DeserializerTarget; +import org.apache.axis.message.SOAPHandler; import org.apache.axis.utils.JavaUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; -import java.lang.reflect.Array; +import javax.xml.rpc.namespace.QName; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.Stack; -import java.util.Vector; -import java.util.List; import java.util.StringTokenizer; -import java.beans.IntrospectionException; /** @@ -547,7 +535,7 @@ * For example "[2]" returns 2. * For example "[2,3]" depends on the size of the multiple dimensions. * if the dimensions are "[3,5]" then 13 is returned (2*5) + 3. - * @param string representing index text + * @param text representing index text * @param exceptKey exception message key * @return index */ @@ -630,7 +618,7 @@ /** * Converts multiple index to single index. - * @param Array list of multiple indices + * @param indexArray list of multiple indices * @return single index */ private int toSingleIndex(ArrayList indexArray) { 1.16 +35 -39 xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java Index: ArraySerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- ArraySerializer.java 4 Apr 2002 22:30:24 -0000 1.15 +++ ArraySerializer.java 16 Apr 2002 20:26:32 -0000 1.16 @@ -55,39 +55,21 @@ package org.apache.axis.encoding.ser; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.AttributesImpl; - +import org.apache.axis.Constants; +import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.Serializer; +import org.apache.axis.utils.JavaUtils; +import org.apache.axis.wsdl.fromJava.Types; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.xml.sax.Attributes; +import org.xml.sax.helpers.AttributesImpl; import javax.xml.rpc.namespace.QName; import java.io.IOException; - -import org.apache.axis.Constants; -import org.apache.axis.encoding.Serializer; -import org.apache.axis.encoding.SerializerFactory; -import org.apache.axis.encoding.SerializationContext; -import org.apache.axis.encoding.Deserializer; -import org.apache.axis.encoding.DeserializerFactory; -import org.apache.axis.encoding.DeserializationContext; -import org.apache.axis.encoding.DeserializerImpl; - -import org.apache.axis.Constants; -import org.apache.axis.wsdl.fromJava.Types; -import org.apache.axis.utils.JavaUtils; -import org.w3c.dom.Element; -import org.w3c.dom.Document; - import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.HashSet; -import java.util.List; -import java.util.StringTokenizer; - -import java.beans.IntrospectionException; +import java.util.Collection; +import java.util.Iterator; /** * An ArraySerializer handles serializing of arrays. @@ -120,14 +102,14 @@ throw new IOException(JavaUtils.getMessage("cantDoNullArray00")); Class cls = value.getClass(); - List list = null; + Collection list = null; if (!cls.isArray()) { - if (!(value instanceof List)) { + if (!(value instanceof Collection)) { throw new IOException( JavaUtils.getMessage("cantSerialize00", cls.getName())); } - list = (List)value; + list = (Collection)value; } Class componentType; @@ -276,15 +258,29 @@ if (dim2Len < 0) { // Normal case, serialize each array element - for (int index = 0; index < len; index++) { - Object aValue = (list == null) ? Array.get(value, index) : list.get(index); - Class aClass = (aValue == null) ? null : aValue.getClass(); - - // Serialize the element. - context.serialize(elementName, null, aValue, aClass, - componentQName, // prefered type QName - true, // Send null values - false); // Don't send xsi:type if it matches preferred QName + if (list == null) { + for (int index = 0; index < len; index++) { + Object aValue = Array.get(value, index); + Class aClass = (aValue == null) ? null : aValue.getClass(); + + // Serialize the element. + context.serialize(elementName, null, aValue, aClass, + componentQName, // prefered type QName + true, // Send null values + false); // Don't send xsi:type if it matches preferred QName + } + } else { + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + Object aValue = (Object)iterator.next(); + Class aClass = (aValue == null) ? null : aValue.getClass(); + + // Serialize the element. + context.serialize(elementName, null, aValue, aClass, + componentQName, // prefered type QName + true, // Send null values + false); // Don't send xsi:type if it matches preferred QName + + } } } else { // Serialize as a 2 dimensional array 1.42 +20 -14 xml-axis/java/src/org/apache/axis/utils/JavaUtils.java Index: JavaUtils.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- JavaUtils.java 15 Apr 2002 02:35:58 -0000 1.41 +++ JavaUtils.java 16 Apr 2002 20:26:32 -0000 1.42 @@ -64,10 +64,11 @@ import java.text.Collator; import java.text.MessageFormat; import java.util.Arrays; -import java.util.List; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; +import java.util.Collection; +import java.util.Iterator; /** Utility class to deal with Java language related issues, such * as type conversions. @@ -213,7 +214,7 @@ // Return if no conversion is available - if (!(arg instanceof List || + if (!(arg instanceof Collection || (arg != null && arg.getClass().isArray())) && ((destHeldType == null && argHeldType == null) || (destHeldType != null && argHeldType != null))) { @@ -268,7 +269,7 @@ if (arg.getClass().isArray()) { length = Array.getLength(arg); } else { - length = ((List) arg).size(); + length = ((Collection) arg).size(); } if (destClass.isArray()) { if (destClass.getComponentType().isPrimitive()) { @@ -281,8 +282,10 @@ Array.set(array, i, Array.get(arg, i)); } } else { - for (int i = 0; i < length; i++) { - Array.set(array, i, ((List) arg).get(i)); + int idx = 0; + for (Iterator i = ((Collection)arg).iterator(); + i.hasNext();) { + Array.set(array, idx++, i.next()); } } destValue = array; @@ -303,18 +306,20 @@ destClass.getComponentType()); } } else { - for (int i = 0; i < length; i++) { - array[i] = convert(((List) arg).get(i), + int idx = 0; + for (Iterator i = ((Collection)arg).iterator(); + i.hasNext();) { + array[idx++] = convert(i.next(), destClass.getComponentType()); } } destValue = array; } } - else if (List.class.isAssignableFrom(destClass)) { - List newList = null; + else if (Collection.class.isAssignableFrom(destClass)) { + Collection newList = null; try { - newList = (List)destClass.newInstance(); + newList = (Collection)destClass.newInstance(); } catch (Exception e) { // Couldn't build one for some reason... so forget it. return arg; @@ -325,8 +330,9 @@ newList.add(Array.get(arg, j)); } } else { - for (int j = 0; j < length; j++) { - newList.add(((List) arg).get(j)); + for (Iterator j = ((Collection)arg).iterator(); + j.hasNext();) { + newList.add(j.next()); } } destValue = newList; @@ -369,8 +375,8 @@ return true; // If it's List -> Array or vice versa, we're good. - if ((List.class.isAssignableFrom(src) || src.isArray()) && - (List.class.isAssignableFrom(dest) || dest.isArray())) + if ((Collection.class.isAssignableFrom(src) || src.isArray()) && + (Collection.class.isAssignableFrom(dest) || dest.isArray())) return true; if ((src == Hex.class && dest == byte[].class) || 1.32 +10 -23 xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java Index: Emitter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- Emitter.java 11 Apr 2002 15:45:09 -0000 1.31 +++ Emitter.java 16 Apr 2002 20:26:32 -0000 1.32 @@ -60,34 +60,22 @@ import org.apache.axis.utils.CLUtil; import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.XMLUtils; - import org.w3c.dom.Document; import javax.wsdl.Binding; import javax.wsdl.Definition; -import javax.wsdl.Message; -import javax.wsdl.PortType; -import javax.wsdl.Service; import javax.wsdl.WSDLException; import javax.wsdl.factory.WSDLFactory; import javax.wsdl.xml.WSDLReader; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; - -import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Properties; import java.util.Vector; -import javax.wsdl.QName; - -import org.apache.axis.encoding.TypeMapping; -import org.apache.axis.encoding.DefaultSOAP12TypeMappingImpl; /** * This class produces java files for stubs, skeletons, and types from a @@ -154,7 +142,7 @@ public WriterFactory getWriterFactory() { return writerFactory;} /** * Call this method if you have a uri for the WSDL document - * @param String wsdlURI the location of the WSDL file. + * @param uri wsdlURI the location of the WSDL file. */ public void emit(String uri) throws IOException, WSDLException { if (bVerbose) @@ -169,8 +157,8 @@ /** * Call this method if your WSDL document has already been parsed as an XML DOM document. - * @param String context This is directory context for the Document. If the Document were from file "/x/y/z.wsdl" then the context could be "/x/y" (even "/x/y/z.wsdl" would work). If context is null, then the context becomes the current directory. - * @param Document doc This is the XML Document containing the WSDL. + * @param context context This is directory context for the Document. If the Document were from file "/x/y/z.wsdl" then the context could be "/x/y" (even "/x/y/z.wsdl" would work). If context is null, then the context becomes the current directory. + * @param doc doc This is the XML Document containing the WSDL. */ public void emit(String context, Document doc) throws IOException, WSDLException { currentWSDLURI = context; @@ -294,7 +282,7 @@ /** * Turn on/off server skeleton creation - * @param boolean value + * @param value */ public void generateServerSide(boolean value) { this.bEmitServer = value; @@ -309,7 +297,7 @@ /** * Turn on/off server skeleton deploy - * @param boolean value + * @param value */ public void deploySkeleton(boolean value) { bDeploySkeleton = value; @@ -324,7 +312,7 @@ /** * Turn on/off Helper class generation - * @param boolean value + * @param value */ public void setHelperGeneration(boolean value) { bHelperGeneration = value; @@ -339,7 +327,7 @@ /** * Turn on/off test case creation - * @param boolean value + * @param value */ public void generateTestCase(boolean value) { this.bEmitTestCase = value; @@ -354,7 +342,7 @@ /** * Turn on/off generation of elements from imported files. - * @param boolean generateImports + * @param generateImports */ public void generateImports(boolean generateImports) { this.bGenerateImports = generateImports; @@ -373,7 +361,7 @@ /** * Turn on/off debug messages. - * @param boolean value + * @param value */ public void debug(boolean value) { bDebug = value; @@ -388,7 +376,7 @@ /** * Turn on/off verbose messages - * @param boolean value + * @param value */ public void verbose(boolean value) { this.bVerbose = value; @@ -591,7 +579,6 @@ public static void main(String[] args) { String wsdlURI = null; - HashMap namespaceMap = new HashMap(); Emitter emitter = new Emitter(new NoopWriterFactory()); // Parse the arguments 1.55 +9 -17 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java Index: JavaStubWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- JavaStubWriter.java 5 Apr 2002 21:24:32 -0000 1.54 +++ JavaStubWriter.java 16 Apr 2002 20:26:32 -0000 1.55 @@ -54,35 +54,28 @@ */ package org.apache.axis.wsdl.toJava; -import java.io.IOException; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; +import org.apache.axis.utils.JavaUtils; +import org.w3c.dom.Node; import javax.wsdl.Binding; import javax.wsdl.BindingInput; import javax.wsdl.BindingOperation; import javax.wsdl.BindingOutput; import javax.wsdl.Fault; -import javax.wsdl.Input; import javax.wsdl.Operation; import javax.wsdl.OperationType; -import javax.wsdl.Output; import javax.wsdl.Part; import javax.wsdl.PortType; import javax.wsdl.QName; - -import org.w3c.dom.Node; - import javax.wsdl.extensions.soap.SOAPBody; import javax.wsdl.extensions.soap.SOAPOperation; - -import org.apache.axis.utils.JavaUtils; +import java.io.IOException; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Vector; /** * This is Wsdl2java's stub writer. It writes the <BindingName>Stub.java @@ -114,7 +107,6 @@ PortType portType = binding.getPortType(); PortTypeEntry ptEntry = symbolTable.getPortTypeEntry(portType.getQName()); - String name = Utils.xmlNameToJavaClass(qname.getLocalPart()); // If there is not literal use, the interface name is the portType name. // Otherwise it is the binding name.