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 Glen Daniels <gd...@macromedia.com> on 2002/09/26 22:42:00 UTC
RE: cvs commit: xml-axis/java/tools/org/apache/axis/tools/ant/wsd
l Java2WsdlAntTask.java
Rich:
This looks sweet, will give you real feedback in a while. Thanks for doing this work!
--Glen
> -----Original Message-----
> From: scheu@apache.org [mailto:scheu@apache.org]
> Sent: Thursday, September 26, 2002 4:33 PM
> To: xml-axis-cvs@apache.org
> Subject: cvs commit:
> xml-axis/java/tools/org/apache/axis/tools/ant/wsdl
> Java2WsdlAntTask.java
>
>
> scheu 2002/09/26 13:32:55
>
> Modified: java/docs reference.html
> java/src/org/apache/axis/i18n resource.properties
> java/src/org/apache/axis/providers/java
> JavaProvider.java
> java/src/org/apache/axis/wsdl Java2WSDL.java
> java/src/org/apache/axis/wsdl/fromJava Emitter.java
> Types.java
> java/tools/org/apache/axis/tools/ant/wsdl
> Java2WsdlAntTask.java
> Log:
> Summary of problem(s):
>
> 1) Java2WSDL --style DOCUMENT does not work properly. (bug 12347)
> a) types should be emitted in the types section (currently
> no types or elements are emitted.)
> b) the part element attributes are incorrect.
> c) the code should use the part type attribute
> for simple types, and use the part element attribute
> for all other situations.
>
> 2) Java2WSDL does not have a --style WRAPPED
> a) This option would be turned on for ?WSDL generation
> if the service style is wrapped.
> b) In this mode, element types are created which wrap
> the parameter types (and output types).
> c) In this mode, the message would have one part (body)
> that references the wrapper element type using
> the element attribute.
> d) the name of the element type for a request is the
> same as the operation name.
>
> -------------------
>
> Summary of changes:
>
> a) Types class improved to have more descriptive methods
> writeTypeForPart, writeElementForPart, and writeWrapperForPart.
> These replace the existing (buggy) writePartType method.
>
> b) Other minor simplification improvements to the Types class.
>
> c) Emitter class changed to recognize three styles
> STYLE_DOCUMENT, STYLE_RPC, and STYLE_DOC_WRAPPED.
> (used to have MODE_DOCUMENT and MODE_RPC).
>
> d) Changed all callers to the emitter to appropriately set
> the style (Java2WSDL, Java2WSDLAntTask, JavaProvider).
>
> e) Changed the emitter to implement (1) and (2). Provided
> ample comments. Logic is actually easier to follow now!
>
> Revision Changes Path
> 1.10 +9 -0 xml-axis/java/docs/reference.html
>
> Index: reference.html
> ===================================================================
> RCS file: /home/cvs/xml-axis/java/docs/reference.html,v
> retrieving revision 1.9
> retrieving revision 1.10
> diff -u -r1.9 -r1.10
> --- reference.html 4 Sep 2002 22:47:03 -0000 1.9
> +++ reference.html 26 Sep 2002 20:32:55 -0000 1.10
> @@ -322,6 +322,10 @@
> <argument></font></tt> <br>
> <tt><font
> color="#993366"> &nbs
> p;
> space or comma separated list of methods not to
> export</font></tt> <br>
> + <tt><font
> color="#993366">
> -y, --style
> + <argument></font></tt> <br>
> + <tt><font
> color="#993366"> &nbs
> p;
> + the style of the wsdl document: RPC, DOCUMENT or
> WRAPPED</font></tt> <br>
> <tt><font
> color="#993366">
> -c, --stopClasses
> <argument></font></tt> <br>
> <tt><font
> color="#993366"> &nbs
> p;
> @@ -416,6 +420,11 @@
> (No longer used.)
> <p><b>-x, --exclude <list></b> <br>
> List of methods to not exclude from the wsdl file.
> +<p><b>-y, --style <argument></b> <br>
> + The style of the WSDL document: RPC, DOCUMENT or WRAPPED.
> + If RPC, a rpc/encoded wsdl is generated.
> + If DOCUMENT, a document/literal wsdl is generated.
> + If WRAPPED, a document/literal wsdl is generated using
> the wrapped approach.
> <p><b>-c, --stopClasses <list></b> <br>
> List of classes which stop the Java2WSDL inheritance search.
> <p><b>-T, --typeMappingVersion <version></b> <br>
>
>
>
> 1.9 +2 -2
> xml-axis/java/src/org/apache/axis/i18n/resource.properties
>
> Index: resource.properties
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/i18n/resource.properties,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -u -r1.8 -r1.9
> --- resource.properties 25 Sep 2002 16:54:24 -0000 1.8
> +++ resource.properties 26 Sep 2002 20:32:55 -0000 1.9
> @@ -910,8 +910,8 @@
>
> generating=Generating {0}
>
> -j2woptStyle00=The style of binding in the WSDL, either
> DOCUMENT or RPC.
> -j2woptBadStyle00=The value of --style must be DOCUMENT or RPC.
> +j2woptStyle00=The style of binding in the WSDL, either
> DOCUMENT, RPC, or WRAPPED.
> +j2woptBadStyle00=The value of --style must be DOCUMENT,
> RPC, or WRAPPED.
>
> noClassForService00=Could not find class for the service
> named: {0}\nHint: you may need to copy your class files/tree
> into the right location (which depends on the servlet system
> you are using).
> j2wDuplicateClass00=The <class-of-portType> has already
> been specified as, {0}. It cannot be specified again as {1}.
>
>
>
> 1.84 +8 -3
> xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java
>
> Index: JavaProvider.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/Jav
> aProvider.java,v
> retrieving revision 1.83
> retrieving revision 1.84
> diff -u -r1.83 -r1.84
> --- JavaProvider.java 26 Sep 2002 16:43:55 -0000 1.83
> +++ JavaProvider.java 26 Sep 2002 20:32:55 -0000 1.84
> @@ -374,9 +374,14 @@
> String alias = (String)service.getOption("alias");
> if(alias != null) emitter.setServiceElementName(alias);
>
> - emitter.setMode( (service.getStyle() == Style.RPC)
> - ? Emitter.MODE_RPC
> - : Emitter.MODE_DOCUMENT);
> + Style style = serviceDesc.getStyle();
> + if (style == Style.RPC) {
> + emitter.setMode(Emitter.STYLE_RPC);
> + } else if (style == Style.DOCUMENT) {
> + emitter.setMode(Emitter.STYLE_DOCUMENT);
> + } else if (style == Style.WRAPPED) {
> + emitter.setMode(Emitter.STYLE_DOC_WRAPPED);
> + }
>
>
> emitter.setClsSmart(serviceDesc.getImplClass(), locationUrl);
>
>
>
>
> 1.27 +4 -2
> xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java
>
> Index: Java2WSDL.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java,v
> retrieving revision 1.26
> retrieving revision 1.27
> diff -u -r1.26 -r1.27
> --- Java2WSDL.java 18 Sep 2002 16:10:40 -0000 1.26
> +++ Java2WSDL.java 26 Sep 2002 20:32:55 -0000 1.27
> @@ -377,9 +377,11 @@
> case STYLE_OPT:
> value = option.getArgument();
> if (value.equalsIgnoreCase("DOCUMENT")) {
> - emitter.setMode(Emitter.MODE_DOCUMENT);
> + emitter.setMode(Emitter.STYLE_DOCUMENT);
> } else if (value.equalsIgnoreCase("RPC")) {
> - emitter.setMode(Emitter.MODE_RPC);
> + emitter.setMode(Emitter.STYLE_RPC);
> + } else if (value.equalsIgnoreCase("WRAPPED")) {
> + emitter.setMode(Emitter.STYLE_DOC_WRAPPED);
> } else {
>
> System.out.println(Messages.getMessage("j2woptBadStyle00"));
> }
>
>
>
> 1.62 +86 -26
> xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
>
> Index: Emitter.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emit
> ter.java,v
> retrieving revision 1.61
> retrieving revision 1.62
> diff -u -r1.61 -r1.62
> --- Emitter.java 29 Aug 2002 20:05:51 -0000 1.61
> +++ Emitter.java 26 Sep 2002 20:32:55 -0000 1.62
> @@ -121,13 +121,15 @@
> * @author Rich Scheuerle (scheu@us.ibm.com)
> */
> public class Emitter {
> -
> + // Generated WSDL Modes
> public static final int MODE_ALL = 0;
> public static final int MODE_INTERFACE = 1;
> public static final int MODE_IMPLEMENTATION = 2;
>
> - public static final int MODE_RPC = 0;
> - public static final int MODE_DOCUMENT = 1;
> + // Style Modes
> + public static final int STYLE_RPC = 0;
> + public static final int STYLE_DOCUMENT = 1;
> + public static final int STYLE_DOC_WRAPPED = 2;
>
> private Class cls;
> private Class implCls; // Optional
> implementation class
> @@ -144,7 +146,7 @@
> private String serviceElementName;
> private String targetService = null;
> private String description;
> - private int mode = MODE_RPC;
> + private int mode = STYLE_RPC;
> private TypeMapping tm = null; // Registered
> type mapping
> private TypeMapping defaultTM = null; // Default TM
> private Namespaces namespaces;
> @@ -617,7 +619,7 @@
> binding.setQName(bindingQName);
>
> SOAPBinding soapBinding = new SOAPBindingImpl();
> - String modeStr = (mode == MODE_RPC) ? "rpc" : "document";
> + String modeStr = (mode == STYLE_RPC) ? "rpc" : "document";
> soapBinding.setStyle(modeStr);
> soapBinding.setTransportURI(Constants.URI_SOAP11_HTTP);
>
> @@ -816,8 +818,12 @@
> names.add(param.getName());
> }
>
> - if (names.size() > 0)
> + if (names.size() > 0) {
> + if (mode == STYLE_DOC_WRAPPED) {
> + names.clear();
> + }
> oper.setParameterOrdering(names);
> + }
> }
>
> /** Create a Operation
> @@ -899,7 +905,7 @@
> private ExtensibilityElement writeSOAPBody(QName operQName) {
> SOAPBody soapBody = new SOAPBodyImpl();
> // for now, if its document, it is literal use.
> - if (mode == MODE_RPC) {
> + if (mode == STYLE_RPC) {
> soapBody.setUse("encoded");
> soapBody.setEncodingStyles(encodingList);
> } else {
> @@ -1074,30 +1080,84 @@
> javaType = JavaUtils.getHolderValueType(javaType);
> }
>
> - // Write the type representing the parameter type
> - QName elemQName = null;
> - if (mode != MODE_RPC)
> - elemQName = param.getQName();
> - if (mode == MODE_RPC) {
> - QName typeQName = types.writePartType(javaType,
> -
> param.getTypeQName());
> + switch(mode) {
> + case STYLE_RPC: {
> + // Add the type representing the param
> + // For convenience, add an element for the param
> + // Write <part name=param_name type=param_type>
> + QName typeQName =
> + types.writeTypeForPart(javaType,
> + param.getTypeQName());
> + QName elemQName =
> + types.writeElementForPart(javaType,
> + param.getTypeQName());
> if (typeQName != null) {
> + part.setName(param.getName());
> part.setTypeName(typeQName);
> + msg.addPart(part);
> + }
> + break;
> + }
> + case STYLE_DOCUMENT: {
> + // Write the type representing the param.
> + // Write the element representing the param
> + // If an element was written
> + // Write <part name=param_name element=param_element>
> + // Else its a simple type,
> + // Write <part name=param_name type=param_type>
> + QName typeQName =
> + types.writeTypeForPart(javaType,
> + param.getTypeQName());
> + QName elemQName =
> + types.writeElementForPart(javaType,
> + param.getTypeQName());
> + if (elemQName != null) {
> + part.setName(param.getName());
> + part.setElementName(elemQName);
> + msg.addPart(part);
> + } else if (typeQName != null) {
> part.setName(param.getName());
> + part.setTypeName(typeQName);
> msg.addPart(part);
> }
> - } else if (elemQName != null) {
> - String namespaceURI = elemQName.getNamespaceURI();
> - if (namespaceURI != null && !namespaceURI.equals("")) {
> -
> def.addNamespace(namespaces.getCreatePrefix(namespaceURI),
> - namespaceURI);
> - }
> - part.setElementName(elemQName);
> - part.setName(param.getName());
> - msg.addPart(part);
> - } else {
> - // ?? Throw an exception here? Must have an
> element if not
> - // RPC style?
> + break;
> + }
> + case STYLE_DOC_WRAPPED: {
> + // Write type representing the param
> + QName typeQName =
> + types.writeTypeForPart(javaType,
> + param.getTypeQName());
> +
> + // Get the QName of the wrapper element
> + QName wrapperQName = null;
> + if (request) {
> + wrapperQName =
> + new QName(
> + msg.getQName().getNamespaceURI(),
> + msg.getQName().getLocalPart().substring(0,
> +
> msg.getQName().getLocalPart().indexOf("Request")));
> + } else {
> + wrapperQName = msg.getQName();
> + }
> +
> + if (typeQName != null) {
> + // Write/Get the wrapper element
> + // and append a child element repesenting
> + // the parameter
> + if (types.writeWrapperForPart(wrapperQName,
> + param.getName(),
> + typeQName)) {
> + // If wrapper element is written
> + // add <part name="body"
> element=wrapper_elem />
> + part.setName("body");
> + part.setElementName(wrapperQName);
> + msg.addPart(part);
> + }
> + }
> + break;
> + }
> + default:
> + // ?? Throw an exception here?
> }
> return param.getName();
> }
>
>
>
> 1.61 +143 -39
> xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
>
> Index: Types.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
> retrieving revision 1.60
> retrieving revision 1.61
> diff -u -r1.60 -r1.61
> --- Types.java 26 Sep 2002 19:21:27 -0000 1.60
> +++ Types.java 26 Sep 2002 20:32:55 -0000 1.61
> @@ -115,6 +115,7 @@
> HashMap schemaTypes = null;
> HashMap schemaElementNames = null;
> HashMap schemaUniqueElementNames = null;
> + HashMap wrapperMap = new HashMap();
> List stopClasses = null;
> List beanCompatErrs = new ArrayList();
>
> @@ -216,26 +217,23 @@
> if (te instanceof
> org.apache.axis.wsdl.symbolTable.Element) {
> addToElementsList(te.getQName());
> } else if (te instanceof Type) {
> - addToTypesList(te.getQName(),
> - te.getQName().getLocalPart());
> + addToTypesList(te.getQName());
> }
> }
>
>
> }
>
> +
> /**
> - * Serialize the Class as XML schema to the document.
> - * Create a types node for the WSDL if one doesn't exist
> - * Create a schema node for the Class namespace, if
> one doesn't exist
> - *
> - * In case of a primitive type, no need to stream out
> anything, just return
> - * the QName of the primitive type
> + * Write out a type referenced by a part type attribute.
> *
> * @param type <code>Class</code> to generate the XML
> Schema info for
> + * @param qname <code>QName</code> of the type. If
> null, qname is
> + * defaulted from the class.
> * @return the QName of the generated Schema type, null if void
> */
> - public QName writePartType(Class type, QName qname)
> throws AxisFault {
> + public QName writeTypeForPart(Class type, QName qname)
> throws AxisFault {
> //patch by costin to fix an NPE; commented out
> till we find out what the problem is
> //if you get NullPointerExceptions in this class,
> turn it on and submit some
> //replicable test data to the Axis team via bugzilla
> @@ -252,38 +250,134 @@
> type = JavaUtils.getHolderValueType(type);
> }
>
> - if (qname == null) {
> + // Get the qname
> + if (qname == null ||
> + (Constants.isSOAP_ENC(qname.getNamespaceURI()) &&
> + "Array".equals(qname.getLocalPart()))) {
> qname = getTypeQName(type);
> if (qname == null) {
> - throw new AxisFault("Type was " +
> type.getName()); // FIXME!
> + throw new AxisFault("Clss:" + type.getName());
> }
> }
>
> - /**
> - * No need to do anything if this is a simple type
> (i.e. in the
> - * xsd or soap-enc schemas already)
> - */
> + // Make sure a types section is present
> + if (wsdlTypesElem == null) {
> + writeWsdlTypesElement();
> + }
> +
> + // write the type
> + writeType(type, qname);
> + return qname;
> + }
> +
> + /**
> + * Write out an element referenced by a part element attribute.
> + *
> + * @param type <code>Class</code> to generate the XML
> Schema info for
> + * @param qname <code>QName</code> of the element. If
> null, qname is
> + * defaulted from the class.
> + * @return the QName of the generated Schema type,
> null if no element
> + */
> + public QName writeElementForPart(Class type, QName
> qname) throws AxisFault {
> + //patch by costin to fix an NPE; commented out
> till we find out what the problem is
> + //if you get NullPointerExceptions in this class,
> turn it on and submit some
> + //replicable test data to the Axis team via bugzilla
> + /*
> + if( type==null ) {
> + return null;
> + }
> + */
> + if (type.getName().equals("void")) {
> + return null;
> + }
> +
> + if (Holder.class.isAssignableFrom(type)) {
> + type = JavaUtils.getHolderValueType(type);
> + }
> +
> + // Get the qname
> + if (qname == null ||
> + (Constants.isSOAP_ENC(qname.getNamespaceURI()) &&
> + "Array".equals(qname.getLocalPart()))) {
> + qname = getTypeQName(type);
> + if (qname == null) {
> + throw new AxisFault("Class:" +type.getName());
> + }
> + }
> +
> + // Return null it a simple type (not an element)
> String nsURI = qname.getNamespaceURI();
> if (Constants.isSchemaXSD(nsURI) ||
> (Constants.isSOAP_ENC(nsURI) &&
> !"Array".equals(qname.getLocalPart()))) {
> - return qname;
> + return null;
> }
>
> + // Make sure a types section is present
> if (wsdlTypesElem == null) {
> writeWsdlTypesElement();
> }
> - // If writeTypeAsElement returns null, then
> - // then no element was written due to problems.
> - // return an anytype in such situations.
> - qname = writeTypeAsElement(type, qname);
> - if (qname == null) {
> - qname = Constants.XSD_ANYTYPE;
> - }
> +
> + // Write Element
> + writeTypeAsElement(type, qname);
> return qname;
> }
>
> /**
> + * Write wrapper for part.
> + *
> + * @param wrapper <code>QName</code> of the wrapper element
> + * @param name is the name of an element to add to the
> wrapper element.
> + * @param type is the QName of the type of the element.
> + * @return true if the wrapperQName was created, false
> if it already exists.
> + */
> + public boolean writeWrapperForPart(QName wrapper,
> String name, QName type)
> + throws AxisFault {
> +
> + // Make sure a types section is present
> + if (wsdlTypesElem == null) {
> + writeWsdlTypesElement();
> + }
> +
> + // Write the namespace definition for the wrapper
> + writeTypeNamespace(wrapper);
> +
> + // See if the wrapper already exists.
> + Element sequence = (Element) wrapperMap.get(wrapper);
> + boolean isNew = (sequence == null);
> +
> + // Create a type if this is a new wrapper
> + if (isNew) {
> + // Create an <element> for the wrapper
> + Element wrapperElement =
> + docHolder.createElement("element");
> + writeSchemaElement(wrapper, wrapperElement);
> + wrapperElement.setAttribute("name",
> + wrapper.getLocalPart());
> +
> + // Create an anonymous <complexType> for the wrapper
> + Element complexType =
> docHolder.createElement("complexType");
> + wrapperElement.appendChild(complexType);
> +
> + // Create a <sequence> under the complexType
> and save it.
> + sequence = docHolder.createElement("sequence");
> + complexType.appendChild(sequence);
> + wrapperMap.put(wrapper, sequence);
> +
> + }
> +
> + // Create the child <element> and add it to the
> wrapper <sequence>
> + Element childElem = docHolder.createElement("element");
> + childElem.setAttribute("name", name);
> + String prefix =
> namespaces.getCreatePrefix(type.getNamespaceURI());
> + String prefixedName = prefix+":"+type.getLocalPart();
> + childElem.setAttribute("type", prefixedName);
> + sequence.appendChild(childElem);
> +
> + return isNew;
> + }
> +
> + /**
> * Create a schema element for the given type
> * @param type the class type
> * @return the QName of the generated Element or null
> if no element written
> @@ -316,14 +410,26 @@
> if (qName == null) {
> qName = getTypeQName(type);
> }
> - String pref = def.getPrefix(qName.getNamespaceURI());
> - if (pref == null)
> -
> def.addNamespace(namespaces.getCreatePrefix(qName.getNamespaceURI()),
> - qName.getNamespaceURI());
> + writeTypeNamespace(qName);
> return qName;
> }
>
> /**
> + * write out the namespace declaration.
> + *
> + * @param qName qname of the type
> + */
> + private void writeTypeNamespace(QName qName) {
> + if (qName != null) {
> + String pref = def.getPrefix(qName.getNamespaceURI());
> + if (pref == null)
> +
> def.addNamespace(namespaces.getCreatePrefix(qName.getNamespaceURI()),
> + qName.getNamespaceURI());
> +
> + }
> + }
> +
> + /**
> * Return the QName of the specified javaType
> * @param javaType input javaType Class
> * @return QName
> @@ -558,19 +664,17 @@
> componentTypeName = writeType(componentType,
> null) + dimString;
> }
>
> - String soapTypeName = qName.getLocalPart();
> String prefix =
> namespaces.getCreatePrefix(qName.getNamespaceURI());
> - String prefixedName = prefix+":"+soapTypeName;
> + String prefixedName = prefix+":"+qName.getLocalPart();
>
> // If processed before, or this is a known
> namespace, return
> - if (!addToTypesList(qName, soapTypeName))
> + if (!addToTypesList(qName))
> return prefixedName;
> -
> if (type.isArray()) {
> // ComplexType representation of array
> Element complexType =
> docHolder.createElement("complexType");
> writeSchemaElement(qName, complexType);
> - complexType.setAttribute("name", soapTypeName);
> + complexType.setAttribute("name", qName.getLocalPart());
>
> Element complexContent =
> docHolder.createElement("complexContent");
> complexType.appendChild(complexContent);
> @@ -818,22 +922,22 @@
> * If the type already exists, just return false to
> indicate that the type is already
> * generated in a previous iteration
> *
> - * @param qName the name space of the type
> - * @param typeName the name of the type
> - * @return if the type is added returns true, else if
> the type is already present returns false
> + * @param qName of the type.
> + * @return if the type is added returns true,
> + * else if the type is already present returns false
> */
> - private boolean addToTypesList (QName qName, String typeName) {
> + private boolean addToTypesList (QName qName) {
> boolean added = false;
> ArrayList types =
> (ArrayList)schemaTypes.get(qName.getNamespaceURI());
> if (types == null) {
> types = new ArrayList();
> - types.add(typeName);
> + types.add(qName.getLocalPart());
> schemaTypes.put(qName.getNamespaceURI(), types);
> added = true;
> }
> else {
> - if (!types.contains(typeName)) {
> - types.add(typeName);
> + if (!types.contains(qName.getLocalPart())) {
> + types.add(qName.getLocalPart());
> added = true;
> }
> }
>
>
>
> 1.3 +4 -2
> xml-axis/java/tools/org/apache/axis/tools/ant/wsdl/Java2WsdlAn
> tTask.java
>
> Index: Java2WsdlAntTask.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/tools/org/apache/axis/tools/ant/wsdl/J
> ava2WsdlAntTask.java,v
> retrieving revision 1.2
> retrieving revision 1.3
> diff -u -r1.2 -r1.3
> --- Java2WsdlAntTask.java 5 Sep 2002 21:06:10 -0000 1.2
> +++ Java2WsdlAntTask.java 26 Sep 2002 20:32:55 -0000 1.3
> @@ -149,9 +149,11 @@
> }
> if (style != null) {
> if (style.equalsIgnoreCase("DOCUMENT")) {
> - emitter.setMode(Emitter.MODE_DOCUMENT);
> + emitter.setMode(Emitter.STYLE_DOCUMENT);
> } else if (style.equalsIgnoreCase("RPC")) {
> - emitter.setMode(Emitter.MODE_RPC);
> + emitter.setMode(Emitter.STYLE_RPC);
> + } else if (style.equalsIgnoreCase("WRAPPED")) {
> + emitter.setMode(Emitter.STYLE_DOC_WRAPPED);
> }
> }
> if (input != null) {
>
>
>
>
RE: cvs commit: xml-axis/java/tools/org/apache/axis/tools/ant/wsd l
Java2WsdlAntTask.java
Posted by Matt Seibert <ms...@us.ibm.com>.
+1
Matt Seibert mseibert@us.ibm.com
IBM External: (512) 838-3656 Internal: 678-3656
Glen Daniels
<gdaniels@macrome To: "'axis-dev@xml.apache.org'" <ax...@xml.apache.org>
dia.com> cc:
Subject: RE: cvs commit: xml-axis/java/tools/org/apache/axis/tools/ant/wsd
09/26/2002 15:42 l Java2WsdlAntTask.java
Please respond to
axis-dev
Rich:
This looks sweet, will give you real feedback in a while. Thanks for doing
this work!
--Glen
> -----Original Message-----
> From: scheu@apache.org [mailto:scheu@apache.org]
> Sent: Thursday, September 26, 2002 4:33 PM
> To: xml-axis-cvs@apache.org
> Subject: cvs commit:
> xml-axis/java/tools/org/apache/axis/tools/ant/wsdl
> Java2WsdlAntTask.java
>
>
> scheu 2002/09/26 13:32:55
>
> Modified: java/docs reference.html
> java/src/org/apache/axis/i18n resource.properties
> java/src/org/apache/axis/providers/java
> JavaProvider.java
> java/src/org/apache/axis/wsdl Java2WSDL.java
> java/src/org/apache/axis/wsdl/fromJava Emitter.java
> Types.java
> java/tools/org/apache/axis/tools/ant/wsdl
> Java2WsdlAntTask.java
> Log:
> Summary of problem(s):
>
> 1) Java2WSDL --style DOCUMENT does not work properly. (bug 12347)
> a) types should be emitted in the types section (currently
> no types or elements are emitted.)
> b) the part element attributes are incorrect.
> c) the code should use the part type attribute
> for simple types, and use the part element attribute
> for all other situations.
>
> 2) Java2WSDL does not have a --style WRAPPED
> a) This option would be turned on for ?WSDL generation
> if the service style is wrapped.
> b) In this mode, element types are created which wrap
> the parameter types (and output types).
> c) In this mode, the message would have one part (body)
> that references the wrapper element type using
> the element attribute.
> d) the name of the element type for a request is the
> same as the operation name.
>
> -------------------
>
> Summary of changes:
>
> a) Types class improved to have more descriptive methods
> writeTypeForPart, writeElementForPart, and writeWrapperForPart.
> These replace the existing (buggy) writePartType method.
>
> b) Other minor simplification improvements to the Types class.
>
> c) Emitter class changed to recognize three styles
> STYLE_DOCUMENT, STYLE_RPC, and STYLE_DOC_WRAPPED.
> (used to have MODE_DOCUMENT and MODE_RPC).
>
> d) Changed all callers to the emitter to appropriately set
> the style (Java2WSDL, Java2WSDLAntTask, JavaProvider).
>
> e) Changed the emitter to implement (1) and (2). Provided
> ample comments. Logic is actually easier to follow now!
>
> Revision Changes Path
> 1.10 +9 -0 xml-axis/java/docs/reference.html
>
> Index: reference.html
> ===================================================================
> RCS file: /home/cvs/xml-axis/java/docs/reference.html,v
> retrieving revision 1.9
> retrieving revision 1.10
> diff -u -r1.9 -r1.10
> --- reference.html 4 Sep 2002 22:47:03 -0000 1.9
> +++ reference.html 26 Sep 2002 20:32:55 -0000 1.10
> @@ -322,6 +322,10 @@
> <argument></font></tt> <br>
> <tt><font
> color="#993366"> &nbs
> p;
> space or comma separated list of methods not to
> export</font></tt> <br>
> + <tt><font
> color="#993366">
> -y, --style
> + <argument></font></tt> <br>
> + <tt><font
> color="#993366"> &nbs
> p;
> + the style of the wsdl document: RPC, DOCUMENT or
> WRAPPED</font></tt> <br>
> <tt><font
> color="#993366">
> -c, --stopClasses
> <argument></font></tt> <br>
> <tt><font
> color="#993366"> &nbs
> p;
> @@ -416,6 +420,11 @@
> (No longer used.)
> <p><b>-x, --exclude <list></b> <br>
> List of methods to not exclude from the wsdl file.
> +<p><b>-y, --style <argument></b> <br>
> + The style of the WSDL document: RPC, DOCUMENT or WRAPPED.
> + If RPC, a rpc/encoded wsdl is generated.
> + If DOCUMENT, a document/literal wsdl is generated.
> + If WRAPPED, a document/literal wsdl is generated using
> the wrapped approach.
> <p><b>-c, --stopClasses <list></b> <br>
> List of classes which stop the Java2WSDL inheritance search.
> <p><b>-T, --typeMappingVersion <version></b> <br>
>
>
>
> 1.9 +2 -2
> xml-axis/java/src/org/apache/axis/i18n/resource.properties
>
> Index: resource.properties
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/i18n/resource.properties,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -u -r1.8 -r1.9
> --- resource.properties 25 Sep 2002 16:54:24 -0000
1.8
> +++ resource.properties 26 Sep 2002 20:32:55 -0000
1.9
> @@ -910,8 +910,8 @@
>
> generating=Generating {0}
>
> -j2woptStyle00=The style of binding in the WSDL, either
> DOCUMENT or RPC.
> -j2woptBadStyle00=The value of --style must be DOCUMENT or RPC.
> +j2woptStyle00=The style of binding in the WSDL, either
> DOCUMENT, RPC, or WRAPPED.
> +j2woptBadStyle00=The value of --style must be DOCUMENT,
> RPC, or WRAPPED.
>
> noClassForService00=Could not find class for the service
> named: {0}\nHint: you may need to copy your class files/tree
> into the right location (which depends on the servlet system
> you are using).
> j2wDuplicateClass00=The <class-of-portType> has already
> been specified as, {0}. It cannot be specified again as {1}.
>
>
>
> 1.84 +8 -3
> xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java
>
> Index: JavaProvider.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/Jav
> aProvider.java,v
> retrieving revision 1.83
> retrieving revision 1.84
> diff -u -r1.83 -r1.84
> --- JavaProvider.java 26 Sep 2002 16:43:55 -0000
1.83
> +++ JavaProvider.java 26 Sep 2002 20:32:55 -0000
1.84
> @@ -374,9 +374,14 @@
> String alias = (String)service.getOption("alias");
> if(alias != null) emitter.setServiceElementName(alias);
>
> - emitter.setMode( (service.getStyle() == Style.RPC)
> - ? Emitter.MODE_RPC
> - : Emitter.MODE_DOCUMENT);
> + Style style = serviceDesc.getStyle();
> + if (style == Style.RPC) {
> + emitter.setMode(Emitter.STYLE_RPC);
> + } else if (style == Style.DOCUMENT) {
> + emitter.setMode(Emitter.STYLE_DOCUMENT);
> + } else if (style == Style.WRAPPED) {
> + emitter.setMode(Emitter.STYLE_DOC_WRAPPED);
> + }
>
>
> emitter.setClsSmart(serviceDesc.getImplClass(), locationUrl);
>
>
>
>
> 1.27 +4 -2
> xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java
>
> Index: Java2WSDL.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java,v
> retrieving revision 1.26
> retrieving revision 1.27
> diff -u -r1.26 -r1.27
> --- Java2WSDL.java 18 Sep 2002 16:10:40 -0000 1.26
> +++ Java2WSDL.java 26 Sep 2002 20:32:55 -0000 1.27
> @@ -377,9 +377,11 @@
> case STYLE_OPT:
> value = option.getArgument();
> if (value.equalsIgnoreCase("DOCUMENT")) {
> - emitter.setMode(Emitter.MODE_DOCUMENT);
> + emitter.setMode(Emitter.STYLE_DOCUMENT);
> } else if (value.equalsIgnoreCase("RPC")) {
> - emitter.setMode(Emitter.MODE_RPC);
> + emitter.setMode(Emitter.STYLE_RPC);
> + } else if (value.equalsIgnoreCase("WRAPPED")) {
> + emitter.setMode(Emitter.STYLE_DOC_WRAPPED);
> } else {
>
> System.out.println(Messages.getMessage("j2woptBadStyle00"));
> }
>
>
>
> 1.62 +86 -26
> xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
>
> Index: Emitter.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emit
> ter.java,v
> retrieving revision 1.61
> retrieving revision 1.62
> diff -u -r1.61 -r1.62
> --- Emitter.java 29 Aug 2002 20:05:51 -0000 1.61
> +++ Emitter.java 26 Sep 2002 20:32:55 -0000 1.62
> @@ -121,13 +121,15 @@
> * @author Rich Scheuerle (scheu@us.ibm.com)
> */
> public class Emitter {
> -
> + // Generated WSDL Modes
> public static final int MODE_ALL = 0;
> public static final int MODE_INTERFACE = 1;
> public static final int MODE_IMPLEMENTATION = 2;
>
> - public static final int MODE_RPC = 0;
> - public static final int MODE_DOCUMENT = 1;
> + // Style Modes
> + public static final int STYLE_RPC = 0;
> + public static final int STYLE_DOCUMENT = 1;
> + public static final int STYLE_DOC_WRAPPED = 2;
>
> private Class cls;
> private Class implCls; // Optional
> implementation class
> @@ -144,7 +146,7 @@
> private String serviceElementName;
> private String targetService = null;
> private String description;
> - private int mode = MODE_RPC;
> + private int mode = STYLE_RPC;
> private TypeMapping tm = null; // Registered
> type mapping
> private TypeMapping defaultTM = null; // Default TM
> private Namespaces namespaces;
> @@ -617,7 +619,7 @@
> binding.setQName(bindingQName);
>
> SOAPBinding soapBinding = new SOAPBindingImpl();
> - String modeStr = (mode == MODE_RPC) ? "rpc" : "document";
> + String modeStr = (mode == STYLE_RPC) ? "rpc" : "document";
> soapBinding.setStyle(modeStr);
> soapBinding.setTransportURI(Constants.URI_SOAP11_HTTP);
>
> @@ -816,8 +818,12 @@
> names.add(param.getName());
> }
>
> - if (names.size() > 0)
> + if (names.size() > 0) {
> + if (mode == STYLE_DOC_WRAPPED) {
> + names.clear();
> + }
> oper.setParameterOrdering(names);
> + }
> }
>
> /** Create a Operation
> @@ -899,7 +905,7 @@
> private ExtensibilityElement writeSOAPBody(QName operQName) {
> SOAPBody soapBody = new SOAPBodyImpl();
> // for now, if its document, it is literal use.
> - if (mode == MODE_RPC) {
> + if (mode == STYLE_RPC) {
> soapBody.setUse("encoded");
> soapBody.setEncodingStyles(encodingList);
> } else {
> @@ -1074,30 +1080,84 @@
> javaType = JavaUtils.getHolderValueType(javaType);
> }
>
> - // Write the type representing the parameter type
> - QName elemQName = null;
> - if (mode != MODE_RPC)
> - elemQName = param.getQName();
> - if (mode == MODE_RPC) {
> - QName typeQName = types.writePartType(javaType,
> -
> param.getTypeQName());
> + switch(mode) {
> + case STYLE_RPC: {
> + // Add the type representing the param
> + // For convenience, add an element for the param
> + // Write <part name=param_name type=param_type>
> + QName typeQName =
> + types.writeTypeForPart(javaType,
> + param.getTypeQName());
> + QName elemQName =
> + types.writeElementForPart(javaType,
> + param.getTypeQName());
> if (typeQName != null) {
> + part.setName(param.getName());
> part.setTypeName(typeQName);
> + msg.addPart(part);
> + }
> + break;
> + }
> + case STYLE_DOCUMENT: {
> + // Write the type representing the param.
> + // Write the element representing the param
> + // If an element was written
> + // Write <part name=param_name element=param_element>
> + // Else its a simple type,
> + // Write <part name=param_name type=param_type>
> + QName typeQName =
> + types.writeTypeForPart(javaType,
> + param.getTypeQName());
> + QName elemQName =
> + types.writeElementForPart(javaType,
> + param.getTypeQName());
> + if (elemQName != null) {
> + part.setName(param.getName());
> + part.setElementName(elemQName);
> + msg.addPart(part);
> + } else if (typeQName != null) {
> part.setName(param.getName());
> + part.setTypeName(typeQName);
> msg.addPart(part);
> }
> - } else if (elemQName != null) {
> - String namespaceURI = elemQName.getNamespaceURI();
> - if (namespaceURI != null && !namespaceURI.equals("")) {
> -
> def.addNamespace(namespaces.getCreatePrefix(namespaceURI),
> - namespaceURI);
> - }
> - part.setElementName(elemQName);
> - part.setName(param.getName());
> - msg.addPart(part);
> - } else {
> - // ?? Throw an exception here? Must have an
> element if not
> - // RPC style?
> + break;
> + }
> + case STYLE_DOC_WRAPPED: {
> + // Write type representing the param
> + QName typeQName =
> + types.writeTypeForPart(javaType,
> + param.getTypeQName());
> +
> + // Get the QName of the wrapper element
> + QName wrapperQName = null;
> + if (request) {
> + wrapperQName =
> + new QName(
> + msg.getQName().getNamespaceURI(),
> + msg.getQName().getLocalPart().substring(0,
> +
> msg.getQName().getLocalPart().indexOf("Request")));
> + } else {
> + wrapperQName = msg.getQName();
> + }
> +
> + if (typeQName != null) {
> + // Write/Get the wrapper element
> + // and append a child element repesenting
> + // the parameter
> + if (types.writeWrapperForPart(wrapperQName,
> + param.getName(),
> + typeQName)) {
> + // If wrapper element is written
> + // add <part name="body"
> element=wrapper_elem />
> + part.setName("body");
> + part.setElementName(wrapperQName);
> + msg.addPart(part);
> + }
> + }
> + break;
> + }
> + default:
> + // ?? Throw an exception here?
> }
> return param.getName();
> }
>
>
>
> 1.61 +143 -39
> xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
>
> Index: Types.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
> retrieving revision 1.60
> retrieving revision 1.61
> diff -u -r1.60 -r1.61
> --- Types.java 26 Sep 2002 19:21:27 -0000 1.60
> +++ Types.java 26 Sep 2002 20:32:55 -0000 1.61
> @@ -115,6 +115,7 @@
> HashMap schemaTypes = null;
> HashMap schemaElementNames = null;
> HashMap schemaUniqueElementNames = null;
> + HashMap wrapperMap = new HashMap();
> List stopClasses = null;
> List beanCompatErrs = new ArrayList();
>
> @@ -216,26 +217,23 @@
> if (te instanceof
> org.apache.axis.wsdl.symbolTable.Element) {
> addToElementsList(te.getQName());
> } else if (te instanceof Type) {
> - addToTypesList(te.getQName(),
> - te.getQName().getLocalPart());
> + addToTypesList(te.getQName());
> }
> }
>
>
> }
>
> +
> /**
> - * Serialize the Class as XML schema to the document.
> - * Create a types node for the WSDL if one doesn't exist
> - * Create a schema node for the Class namespace, if
> one doesn't exist
> - *
> - * In case of a primitive type, no need to stream out
> anything, just return
> - * the QName of the primitive type
> + * Write out a type referenced by a part type attribute.
> *
> * @param type <code>Class</code> to generate the XML
> Schema info for
> + * @param qname <code>QName</code> of the type. If
> null, qname is
> + * defaulted from the class.
> * @return the QName of the generated Schema type, null if void
> */
> - public QName writePartType(Class type, QName qname)
> throws AxisFault {
> + public QName writeTypeForPart(Class type, QName qname)
> throws AxisFault {
> //patch by costin to fix an NPE; commented out
> till we find out what the problem is
> //if you get NullPointerExceptions in this class,
> turn it on and submit some
> //replicable test data to the Axis team via bugzilla
> @@ -252,38 +250,134 @@
> type = JavaUtils.getHolderValueType(type);
> }
>
> - if (qname == null) {
> + // Get the qname
> + if (qname == null ||
> + (Constants.isSOAP_ENC(qname.getNamespaceURI()) &&
> + "Array".equals(qname.getLocalPart()))) {
> qname = getTypeQName(type);
> if (qname == null) {
> - throw new AxisFault("Type was " +
> type.getName()); // FIXME!
> + throw new AxisFault("Clss:" + type.getName());
> }
> }
>
> - /**
> - * No need to do anything if this is a simple type
> (i.e. in the
> - * xsd or soap-enc schemas already)
> - */
> + // Make sure a types section is present
> + if (wsdlTypesElem == null) {
> + writeWsdlTypesElement();
> + }
> +
> + // write the type
> + writeType(type, qname);
> + return qname;
> + }
> +
> + /**
> + * Write out an element referenced by a part element attribute.
> + *
> + * @param type <code>Class</code> to generate the XML
> Schema info for
> + * @param qname <code>QName</code> of the element. If
> null, qname is
> + * defaulted from the class.
> + * @return the QName of the generated Schema type,
> null if no element
> + */
> + public QName writeElementForPart(Class type, QName
> qname) throws AxisFault {
> + //patch by costin to fix an NPE; commented out
> till we find out what the problem is
> + //if you get NullPointerExceptions in this class,
> turn it on and submit some
> + //replicable test data to the Axis team via bugzilla
> + /*
> + if( type==null ) {
> + return null;
> + }
> + */
> + if (type.getName().equals("void")) {
> + return null;
> + }
> +
> + if (Holder.class.isAssignableFrom(type)) {
> + type = JavaUtils.getHolderValueType(type);
> + }
> +
> + // Get the qname
> + if (qname == null ||
> + (Constants.isSOAP_ENC(qname.getNamespaceURI()) &&
> + "Array".equals(qname.getLocalPart()))) {
> + qname = getTypeQName(type);
> + if (qname == null) {
> + throw new AxisFault("Class:" +type.getName());
> + }
> + }
> +
> + // Return null it a simple type (not an element)
> String nsURI = qname.getNamespaceURI();
> if (Constants.isSchemaXSD(nsURI) ||
> (Constants.isSOAP_ENC(nsURI) &&
> !"Array".equals(qname.getLocalPart()))) {
> - return qname;
> + return null;
> }
>
> + // Make sure a types section is present
> if (wsdlTypesElem == null) {
> writeWsdlTypesElement();
> }
> - // If writeTypeAsElement returns null, then
> - // then no element was written due to problems.
> - // return an anytype in such situations.
> - qname = writeTypeAsElement(type, qname);
> - if (qname == null) {
> - qname = Constants.XSD_ANYTYPE;
> - }
> +
> + // Write Element
> + writeTypeAsElement(type, qname);
> return qname;
> }
>
> /**
> + * Write wrapper for part.
> + *
> + * @param wrapper <code>QName</code> of the wrapper element
> + * @param name is the name of an element to add to the
> wrapper element.
> + * @param type is the QName of the type of the element.
> + * @return true if the wrapperQName was created, false
> if it already exists.
> + */
> + public boolean writeWrapperForPart(QName wrapper,
> String name, QName type)
> + throws AxisFault {
> +
> + // Make sure a types section is present
> + if (wsdlTypesElem == null) {
> + writeWsdlTypesElement();
> + }
> +
> + // Write the namespace definition for the wrapper
> + writeTypeNamespace(wrapper);
> +
> + // See if the wrapper already exists.
> + Element sequence = (Element) wrapperMap.get(wrapper);
> + boolean isNew = (sequence == null);
> +
> + // Create a type if this is a new wrapper
> + if (isNew) {
> + // Create an <element> for the wrapper
> + Element wrapperElement =
> + docHolder.createElement("element");
> + writeSchemaElement(wrapper, wrapperElement);
> + wrapperElement.setAttribute("name",
> + wrapper.getLocalPart());
> +
> + // Create an anonymous <complexType> for the wrapper
> + Element complexType =
> docHolder.createElement("complexType");
> + wrapperElement.appendChild(complexType);
> +
> + // Create a <sequence> under the complexType
> and save it.
> + sequence = docHolder.createElement("sequence");
> + complexType.appendChild(sequence);
> + wrapperMap.put(wrapper, sequence);
> +
> + }
> +
> + // Create the child <element> and add it to the
> wrapper <sequence>
> + Element childElem = docHolder.createElement("element");
> + childElem.setAttribute("name", name);
> + String prefix =
> namespaces.getCreatePrefix(type.getNamespaceURI());
> + String prefixedName = prefix+":"+type.getLocalPart();
> + childElem.setAttribute("type", prefixedName);
> + sequence.appendChild(childElem);
> +
> + return isNew;
> + }
> +
> + /**
> * Create a schema element for the given type
> * @param type the class type
> * @return the QName of the generated Element or null
> if no element written
> @@ -316,14 +410,26 @@
> if (qName == null) {
> qName = getTypeQName(type);
> }
> - String pref = def.getPrefix(qName.getNamespaceURI());
> - if (pref == null)
> -
> def.addNamespace(namespaces.getCreatePrefix(qName.getNamespaceURI()),
> - qName.getNamespaceURI());
> + writeTypeNamespace(qName);
> return qName;
> }
>
> /**
> + * write out the namespace declaration.
> + *
> + * @param qName qname of the type
> + */
> + private void writeTypeNamespace(QName qName) {
> + if (qName != null) {
> + String pref = def.getPrefix(qName.getNamespaceURI());
> + if (pref == null)
> +
> def.addNamespace(namespaces.getCreatePrefix(qName.getNamespaceURI()),
> + qName.getNamespaceURI());
> +
> + }
> + }
> +
> + /**
> * Return the QName of the specified javaType
> * @param javaType input javaType Class
> * @return QName
> @@ -558,19 +664,17 @@
> componentTypeName = writeType(componentType,
> null) + dimString;
> }
>
> - String soapTypeName = qName.getLocalPart();
> String prefix =
> namespaces.getCreatePrefix(qName.getNamespaceURI());
> - String prefixedName = prefix+":"+soapTypeName;
> + String prefixedName = prefix+":"+qName.getLocalPart();
>
> // If processed before, or this is a known
> namespace, return
> - if (!addToTypesList(qName, soapTypeName))
> + if (!addToTypesList(qName))
> return prefixedName;
> -
> if (type.isArray()) {
> // ComplexType representation of array
> Element complexType =
> docHolder.createElement("complexType");
> writeSchemaElement(qName, complexType);
> - complexType.setAttribute("name", soapTypeName);
> + complexType.setAttribute("name", qName.getLocalPart());
>
> Element complexContent =
> docHolder.createElement("complexContent");
> complexType.appendChild(complexContent);
> @@ -818,22 +922,22 @@
> * If the type already exists, just return false to
> indicate that the type is already
> * generated in a previous iteration
> *
> - * @param qName the name space of the type
> - * @param typeName the name of the type
> - * @return if the type is added returns true, else if
> the type is already present returns false
> + * @param qName of the type.
> + * @return if the type is added returns true,
> + * else if the type is already present returns false
> */
> - private boolean addToTypesList (QName qName, String typeName) {
> + private boolean addToTypesList (QName qName) {
> boolean added = false;
> ArrayList types =
> (ArrayList)schemaTypes.get(qName.getNamespaceURI());
> if (types == null) {
> types = new ArrayList();
> - types.add(typeName);
> + types.add(qName.getLocalPart());
> schemaTypes.put(qName.getNamespaceURI(), types);
> added = true;
> }
> else {
> - if (!types.contains(typeName)) {
> - types.add(typeName);
> + if (!types.contains(qName.getLocalPart())) {
> + types.add(qName.getLocalPart());
> added = true;
> }
> }
>
>
>
> 1.3 +4 -2
> xml-axis/java/tools/org/apache/axis/tools/ant/wsdl/Java2WsdlAn
> tTask.java
>
> Index: Java2WsdlAntTask.java
> ===================================================================
> RCS file:
> /home/cvs/xml-axis/java/tools/org/apache/axis/tools/ant/wsdl/J
> ava2WsdlAntTask.java,v
> retrieving revision 1.2
> retrieving revision 1.3
> diff -u -r1.2 -r1.3
> --- Java2WsdlAntTask.java 5 Sep 2002 21:06:10 -0000
1.2
> +++ Java2WsdlAntTask.java 26 Sep 2002 20:32:55 -0000
1.3
> @@ -149,9 +149,11 @@
> }
> if (style != null) {
> if (style.equalsIgnoreCase("DOCUMENT")) {
> - emitter.setMode(Emitter.MODE_DOCUMENT);
> + emitter.setMode(Emitter.STYLE_DOCUMENT);
> } else if (style.equalsIgnoreCase("RPC")) {
> - emitter.setMode(Emitter.MODE_RPC);
> + emitter.setMode(Emitter.STYLE_RPC);
> + } else if (style.equalsIgnoreCase("WRAPPED")) {
> + emitter.setMode(Emitter.STYLE_DOC_WRAPPED);
> }
> }
> if (input != null) {
>
>
>
>