As Dims suggested I have now put together a test case for my new stuff as well (attached with diffs), in order to make it easier to understand where we are heading with this. One issue still to be resolved is that WSDL2Java seems to ignore minOccurs and maxOccurs attributes in doc/literal mode which makes it very difficult to pass along arrays. I can poke around a bit more with that but any pointers as to why this is the case (and whether it is expected) would be useful. /Thomas
>--- Thomas Sandholm <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I have been working on extending the doc/literal implementation in Axis to > > handle the processing of arbitrary XML fragments defined as xsd:any > > namespace="##any" in a more flexible manner. I would be grateful if > someone > > from the committer team could have a look at it and commit it to the Axis > > code base. I have made my changes to a version of Axis checked out earlier > > today, and I have run all the functional tests successfully with my > patches > > applied. > > > > You can download the files I had to modify from here: > > http://www.mcs.anl.gov/~sandholm/axis/axis-literal-patch.zip > > > > Please feel free to email me or call me if you need more details on why > the > > various changes had to be made. > > > > (1) Summary of files modified: > > > > org/apache/axis/wsdl/WSDL2Java.java > > org/apache/axis/wsdl/toJava/Emitter.java > > org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java > > org/apache/axis/wsdl/toJava/JavaServiceIfaceWriter.java > > org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java > > org/apache/axis/wsdl/toJava/JavaStubWriter.java > > org/apache/axis/wsdl/toJava/JavaImplWriter.java > > org/apache/axis/wsdl/toJava/JavaSkelWriter.java > > org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java > > org/apache/axis/wsdl/toJava/JavaWriterFactory.java > > org/apache/axis/wsdl/toJava/SchemaUtils.java > > org/apache/axis/utils/resources.properties > > org/apache/axis/encoding/AttributeSerializationContextImpl.java > > org/apache/axis/encoding/ser/BeanSerializer.java > > org/apache/axis/encoding/ser/BeanDeserializer.java > > org/apache/axis/encoding/ser/ElementDeserializer.java > > org/apache/axis/encoding/ser/ElementSerializer.java > > org/apache/axis/message/RPCHandler.java > > > > (2) Making client and service interface independent of encoding/binding > > mechanism used > > > > Section 6 JAX-RPC: "The JAX-RPC specification requires that the above > > requirements based on the operation > > style should be hidden from the JAX-RPC programming model. A JAX-RPC > > implementation should take the responsibility for the appropriate > > representation of a > > SOAP message based on the operation style." > > > > My interpretation of this is that we would like to be able to use the same > > proxy interface for both the doc/literal and the encoded model. This is > not > > possible if the Binding name is present in the interface, so I added a > > switch to WSDL2Java to allow use of the PortType name for the interface > > even in literal mode. I couldn't find anything in JAX-RPC saying that this > > model was not allowed. And in fact we just moved our entire code base from > > encoded to doc literal mode while maintaining the exact same interfaces, > > thus making the move transparent to our users. > > > > org/apache/axis/wsdl/ > > ----------------------- > > WSD2Java.java > > -added -m option to force usage of portType name for interface > > > > org/apache/axis/wsdl/toJava/ > > ---------------------------- > > Emitter.java > > -added get/set maintainPortYpe variable > > > > JavaInterfaceWriter.java > > -added check for emitter getMaintainPortType > > > > JavaServiceIfaceWriter.java > > -added check for emitter getMaintainPortType > > > > JavaServiceImplWriter.java > > -added check for emitter getMaintainPortType > > > > JavaStubWriter.java > > -added check for emitter getMaintainPortType > > > > JavaImplWriter.java > > -added check for emitter getMaintainPortType > > > > JavaSkelWriter.java > > -added check for emitter getMaintainPortType > > > > JavaTestCaseWriter.java > > -added check for emitter getMaintainPortType > > > > JavaWriterFactory.java > > -added check for emitter getMaintainPortType > > > > org/apache/axis/utils/ > > ----------------------- > > resources.properties > > -added optionMaintainPortType00 message > > > > (3) Support of <xsd:any namespace="##any"/> > > > > org/apache/axis/wsdl/toJava/ > > ---------------------------- > > SchemaUtils.java > > -added any support within sequence elements - generates java.lang.Object > > member with name 'any' and empty namespace > > > > org/apache/axis/encoding/ser/ > > ----------------------------- > > BeanSerializer.java > > -suppress any namespace="##any" element tags > > > > BeanDeserializer.java > > -recognize xsd:any elements and try to desarialize them > > -must callonStartElement on simple attribute deserializer otherwise QName > > deserializer will throw null pointer exception > > > > ElementDeserializer.java > > -if BeanDeserializer failed to deserialize xsd:any property serialize the > > whole xml element as is > > > > ElementSerializer.java > > -suppress any namespace="##any" element tags > > > > > > (4) Recognizing Elements on the wire > > > > org/apache/axis/message/ > > ----------------------- > > RPCHandler.java > > -added check for typemappings against on the wire element QName > > > > > > (4) Correctly Serializing simple types in BeanFields as XML schema > > Attributes (caused problems with Date and QName before) > > > > org/apache/axis/encoding/ser/ > > ----------------------------- > > BeanSerializer.java > > -added use of AttributeSerializationContextImpl > > > > org/apache/axis/encoding/ > > -------------------------- > > AttributeSerializationContextImpl.java > > -new file added to suppress element tag serialization for attributes and > > delegate qName2String calls to parent context > > > > /Thomas > > > > --- > > Thomas Sandholm <[EMAIL PROTECTED]> > > The Globus Project(tm) <http://www.globus.org> > > Ph: 630-252-1682, Fax: 630-252-1997 > > Argonne National Laboratory > > > > >===== >Davanum Srinivas - http://xml.apache.org/~dims/ > >__________________________________________________ >Do You Yahoo!? >Yahoo! Health - your guide to health and wellness >http://health.yahoo.comcvs diff -u (in directory >D:\JAKARTA\xml-axis.new\java\src) >? org/apache/axis/encoding/AttributeSerializationContextImpl.java >cvs server: Diffing . >cvs server: Diffing javax >cvs server: Diffing javax/xml >cvs server: Diffing javax/xml/messaging >cvs server: Diffing javax/xml/rpc >cvs server: Diffing javax/xml/rpc/encoding >cvs server: Diffing javax/xml/rpc/handler >cvs server: Diffing javax/xml/rpc/handler/soap >cvs server: Diffing javax/xml/rpc/holders >cvs server: Diffing javax/xml/rpc/namespace >cvs server: Diffing javax/xml/rpc/server >cvs server: Diffing javax/xml/rpc/soap >cvs server: Diffing javax/xml/soap >cvs server: Diffing javax/xml/transform >cvs server: Diffing org >cvs server: Diffing org/apache >cvs server: Diffing org/apache/axis >cvs server: Diffing org/apache/axis/attachments >cvs server: Diffing org/apache/axis/client >cvs server: Diffing org/apache/axis/configuration >cvs server: Diffing org/apache/axis/deployment >cvs server: Diffing org/apache/axis/deployment/v2dd >cvs server: Diffing org/apache/axis/deployment/v2dd/providers >cvs server: Diffing org/apache/axis/deployment/wsdd >cvs server: Diffing org/apache/axis/deployment/wsdd/providers >cvs server: Diffing org/apache/axis/deployment/wsml >cvs server: Diffing org/apache/axis/description >cvs server: Diffing org/apache/axis/encoding >cvs server: Diffing org/apache/axis/encoding/ser >Index: org/apache/axis/encoding/ser/BeanDeserializer.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.java,v >retrieving revision 1.22 >diff -u -r1.22 BeanDeserializer.java >--- org/apache/axis/encoding/ser/BeanDeserializer.java 1 May 2002 >22:06:47 -0000 1.22 >+++ org/apache/axis/encoding/ser/BeanDeserializer.java 6 May 2002 >16:30:09 -0000 >@@ -55,6 +55,8 @@ > > package org.apache.axis.encoding.ser; > >+import org.apache.axis.MessageContext; >+import org.apache.axis.Constants; > import org.apache.axis.description.TypeDesc; > import org.apache.axis.encoding.DeserializationContext; > import org.apache.axis.encoding.Deserializer; >@@ -72,6 +74,7 @@ > import javax.xml.rpc.namespace.QName; > import java.io.Serializable; > import java.util.HashMap; >+import java.util.Iterator; > > /** > * General purpose deserializer for an arbitrary java bean. >@@ -181,7 +184,7 @@ > // code attempts to get the meta data from the base class. > // (this fix does not work in all cases, but is necessary to > // get comprehensive tests Animal - Cat inheritance to work). >- if (propDesc == null) { >+ if (propDesc == null) { > Class superClass = javaType; > while (superClass != null && propDesc == null) { > superClass = superClass.getSuperclass(); >@@ -204,6 +207,25 @@ > } > } > } >+ // try and see if this is an xsd:any namespace="##any" element >before reporting a problem >+ QName qn = null; >+ Deserializer dSer = null; >+ MessageContext messageContext = context.getMessageContext(); >+ if (propDesc == null && !messageContext.isEncoded()) { >+ // try to put unknown elements into an Object property >+ propDesc = getObjectPropertyDesc(elemQName, context); >+ if (propDesc != null) { >+ dSer = context.getDeserializerForType(elemQName); >+ if (dSer == null) { >+ qn = Constants.XSD_ANYTYPE; >+ // make sure that the Element Deserializer >deserializes the current element and not the child >+ >messageContext.setProperty("DeserializeCurrentElement", Boolean.TRUE); >+ } else { >+ qn = elemQName; >+ } >+ } >+ } >+ > > if (propDesc == null) { > // No such field >@@ -215,10 +237,14 @@ > // Determine the QName for this child element. > // Look at the type attribute specified. If this fails, > // use the javaType of the property to get the type qname. >- QName qn = context.getTypeFromAttributes(namespace, localName, >attributes); >+ if (qn == null) { >+ qn = context.getTypeFromAttributes(namespace, localName, >attributes); >+ } > > // get the deserializer >- Deserializer dSer = context.getDeserializerForType(qn); >+ if (dSer == null) { >+ dSer = context.getDeserializerForType(qn); >+ } > > // If no deserializer, use the base DeserializerImpl. > // There may not be enough information yet to choose the >@@ -249,6 +275,17 @@ > return (SOAPHandler)dSer; > } > >+ public BeanPropertyDescriptor getObjectPropertyDesc(QName qname, >DeserializationContext context) { >+ for (Iterator iterator = propertyMap.values().iterator(); >iterator.hasNext();) { >+ BeanPropertyDescriptor propertyDesc = >(BeanPropertyDescriptor) iterator.next(); >+ // try to find xsd:any namespace="##any" property >+ if (propertyDesc.getName().equals("any") && >propertyDesc.getType().getName().equals("java.lang.Object")) { >+ return propertyDesc; >+ } >+ } >+ return null; >+ } >+ > /** > * Set the bean properties that correspond to element attributes. > * >@@ -320,6 +357,7 @@ > // Success! Create an object from the string and set > // it in the bean > try { >+ dSer.onStartElement(namespace, localName, qName, >attributes, context); > Object val = ((SimpleDeserializer)dSer). > makeValue(attributes.getValue(i)); > bpd.set(value, val); >Index: org/apache/axis/encoding/ser/BeanSerializer.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java,v >retrieving revision 1.29 >diff -u -r1.29 BeanSerializer.java >--- org/apache/axis/encoding/ser/BeanSerializer.java 28 Apr 2002 >18:10:56 -0000 1.29 >+++ org/apache/axis/encoding/ser/BeanSerializer.java 6 May 2002 >16:30:09 -0000 >@@ -60,6 +60,7 @@ > import org.apache.axis.description.FieldDesc; > import org.apache.axis.description.TypeDesc; > import org.apache.axis.encoding.SerializationContext; >+import org.apache.axis.encoding.AttributeSerializationContextImpl; > import org.apache.axis.encoding.Serializer; > import org.apache.axis.utils.BeanPropertyDescriptor; > import org.apache.axis.utils.BeanUtils; >@@ -74,6 +75,7 @@ > import javax.xml.rpc.namespace.QName; > import java.io.IOException; > import java.io.Serializable; >+import java.io.StringWriter; > import java.lang.reflect.InvocationTargetException; > import java.lang.reflect.Modifier; > import java.util.List; >@@ -125,7 +127,14 @@ > // properties are actually attributes, add those to the element > // attribute list > Attributes beanAttrs = getObjectAttributes(value, attributes, > context); >- context.startElement(name, beanAttrs); >+ >+ // check whether we have and xsd:any namespace="##any" type >+ boolean suppressElement = !context.getMessageContext().isEncoded() && >+ name.getNamespaceURI().equals("") && >+ name.getLocalPart().equals("any"); >+ >+ if (!suppressElement) >+ context.startElement(name, beanAttrs); > > try { > // Serialize each property >@@ -133,7 +142,6 @@ > String propName = propertyDescriptor[i].getName(); > if (propName.equals("class")) > continue; >- > QName qname = null; > > // If we have type metadata, check to see what we're doing >@@ -203,7 +211,8 @@ > throw new IOException(e.toString()); > } > >- context.endElement(); >+ if (!suppressElement) >+ context.endElement(); > } > > >@@ -407,15 +416,7 @@ > // the attribute may be more sophisticated. For > example, don't > // serialize if the attribute matches the default value. > if (propValue != null) { >- String propString = propValue.toString(); >- String namespace = qname.getNamespaceURI(); >- String localName = qname.getLocalPart(); >- >- attrs.addAttribute(namespace, >- localName, >- context.qName2String(qname), >- "CDATA", >- propString); >+ setAttributeProperty(propValue, qname, attrs, >context); > } > } > } >@@ -426,4 +427,25 @@ > > return attrs; > } >+ >+ private void setAttributeProperty(Object propValue, >+ QName qname, >+ AttributesImpl attrs, >+ SerializationContext context) >throws Exception { >+ StringWriter writer = new StringWriter(); >+ SerializationContext attributeContext = new >AttributeSerializationContextImpl(writer, context); >+ attributeContext.serialize(qname, >+ null, >+ propValue, propValue.getClass()); >+ writer.close(); >+ String propString = writer.getBuffer().toString(); >+ String namespace = qname.getNamespaceURI(); >+ String localName = qname.getLocalPart(); >+ >+ attrs.addAttribute(namespace, >+ localName, >+ context.qName2String(qname), >+ "CDATA", >+ propString); >+ } > } >Index: org/apache/axis/encoding/ser/ElementDeserializer.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializer.java,v >retrieving revision 1.3 >diff -u -r1.3 ElementDeserializer.java >--- org/apache/axis/encoding/ser/ElementDeserializer.java 25 Feb >2002 17:38:15 -0000 1.3 >+++ org/apache/axis/encoding/ser/ElementDeserializer.java 6 May 2002 >16:30:09 -0000 >@@ -64,8 +64,9 @@ > > import java.util.ArrayList; > >-import org.apache.axis.message.MessageElement ; >-import org.apache.axis.message.SOAPHandler ; >+import org.apache.axis.MessageContext; >+import org.apache.axis.message.MessageElement; >+import org.apache.axis.message.SOAPHandler; > > import org.apache.axis.encoding.Serializer; > import org.apache.axis.encoding.SerializerFactory; >@@ -98,6 +99,13 @@ > try { > MessageElement msgElem = context.getCurElement(); > if ( msgElem != null ) { >+ MessageContext messageContext = context.getMessageContext(); >+ Boolean currentElement = (Boolean) >messageContext.getProperty("DeserializeCurrentElement"); >+ if (currentElement != null && >currentElement.booleanValue()) { >+ value = msgElem.getAsDOM(); >+ messageContext.setProperty("SerializeCurrentElement", >Boolean.FALSE); >+ return; >+ } > ArrayList children = msgElem.getChildren(); > if ( children != null ) { > msgElem = (MessageElement) children.get(0); >Index: org/apache/axis/encoding/ser/ElementSerializer.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializer.java,v >retrieving revision 1.2 >diff -u -r1.2 ElementSerializer.java >--- org/apache/axis/encoding/ser/ElementSerializer.java 2 Feb 2002 >18:06:18 -0000 1.2 >+++ org/apache/axis/encoding/ser/ElementSerializer.java 6 May 2002 >16:30:09 -0000 >@@ -93,9 +93,16 @@ > if (!(value instanceof Element)) > throw new IOException(JavaUtils.getMessage("cantSerialize01")); > >- context.startElement(name, attributes); >+ // suppress xsd:any namespace="##any" elements >+ boolean suppressElement = >(!context.getMessageContext().isEncoded() && >+ name.getNamespaceURI().equals("") && >+ name.getLocalPart().equals("any")); >+ >+ if (!suppressElement) >+ context.startElement(name, attributes); > context.writeDOMElement((Element)value); >- context.endElement(); >+ if (!suppressElement) >+ context.endElement(); > } > > public String getMechanismType() { return Constants.AXIS_SAX; } >cvs server: Diffing org/apache/axis/handlers >cvs server: Diffing org/apache/axis/handlers/http >cvs server: Diffing org/apache/axis/handlers/soap >cvs server: Diffing org/apache/axis/message >Index: org/apache/axis/message/RPCHandler.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v >retrieving revision 1.35 >diff -u -r1.35 RPCHandler.java >--- org/apache/axis/message/RPCHandler.java 23 Apr 2002 03:54:26 >-0000 1.35 >+++ org/apache/axis/message/RPCHandler.java 6 May 2002 16:30:09 -0000 >@@ -217,6 +217,9 @@ > return( (SOAPHandler) new DeserializerImpl() ); > > Deserializer dser; >+ if ((type == null) && (namespace != null) && >(!namespace.equals(""))) { >+ type = qname; >+ } > if (type != null) { > dser = context.getDeserializerForType(type); > } else { >cvs server: Diffing org/apache/axis/providers >cvs server: Diffing org/apache/axis/providers/java >cvs server: Diffing org/apache/axis/security >cvs server: Diffing org/apache/axis/security/servlet >cvs server: Diffing org/apache/axis/security/simple >cvs server: Diffing org/apache/axis/server >cvs server: Diffing org/apache/axis/session >cvs server: Diffing org/apache/axis/soap >cvs server: Diffing org/apache/axis/strategies >cvs server: Diffing org/apache/axis/transport >cvs server: Diffing org/apache/axis/transport/http >cvs server: Diffing org/apache/axis/transport/local >cvs server: Diffing org/apache/axis/utils >Index: org/apache/axis/utils/resources.properties >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/utils/resources.properties,v >retrieving revision 1.94 >diff -u -r1.94 resources.properties >--- org/apache/axis/utils/resources.properties 1 May 2002 19:52:45 >-0000 1.94 >+++ org/apache/axis/utils/resources.properties 6 May 2002 16:30:10 -0000 >@@ -451,6 +451,10 @@ > optionTest00=emit junit testcase class for web service > > optionVerbose00=print informational messages >+ >+optionMaintainPortType00=generate a port type interface based on the port >type name even for literal bindings >+ >+ > outMsg00=Out message: {0} > params00=Parameters are: {0} > parent00=parent >cvs server: Diffing org/apache/axis/utils/bytecode >cvs server: Diffing org/apache/axis/utils/cache >cvs server: Diffing org/apache/axis/utils/compiler >cvs server: Diffing org/apache/axis/wsdl >Index: org/apache/axis/wsdl/WSDL2Java.java >=================================================================== >RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/WSDL2Java.java,v >retrieving revision 1.24 >diff -u -r1.24 WSDL2Java.java >--- org/apache/axis/wsdl/WSDL2Java.java 15 Apr 2002 02:35:58 -0000 1.24 >+++ org/apache/axis/wsdl/WSDL2Java.java 6 May 2002 16:30:11 -0000 >@@ -106,6 +106,7 @@ > protected static final int HELPER_CLASS_OPT = 'H'; > protected static final int USERNAME_OPT = 'U'; > protected static final int PASSWORD_OPT = 'P'; >+ protected static final int MAINTAIN_PORT_TYPE_OPT = 'm'; > > > // Scope constants >@@ -210,7 +211,11 @@ > new CLOptionDescriptor("password", > CLOptionDescriptor.ARGUMENT_REQUIRED, > PASSWORD_OPT, >- JavaUtils.getMessage("optionPassword")) >+ JavaUtils.getMessage("optionPassword")), >+ new CLOptionDescriptor("maintainPortTypeInterface", >+ CLOptionDescriptor.ARGUMENT_DISALLOWED, >+ MAINTAIN_PORT_TYPE_OPT, >+ JavaUtils.getMessage("optionMaintainPortType00")) > }; > > /** >@@ -441,6 +446,13 @@ > public void setPassword(String password) { > this.password = password; > } >+ >+ /** >+ * Force literal bindings to use port type interface >+ */ >+ public void setMaintainPortType() { >+ emitter.setMaintainPortType(); >+ } > // > // Command line switches > // >@@ -671,6 +683,10 @@ > > case PASSWORD_OPT: > wsdl2java.setPassword(option.getArgument()); >+ break; >+ >+ case MAINTAIN_PORT_TYPE_OPT: >+ wsdl2java.setMaintainPortType(); > break; > > } >cvs server: Diffing org/apache/axis/wsdl/fromJava >cvs server: Diffing org/apache/axis/wsdl/toJava >Index: org/apache/axis/wsdl/toJava/Emitter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java,v >retrieving revision 1.32 >diff -u -r1.32 Emitter.java >--- org/apache/axis/wsdl/toJava/Emitter.java 16 Apr 2002 20:26:32 >-0000 1.32 >+++ org/apache/axis/wsdl/toJava/Emitter.java 6 May 2002 16:30:11 -0000 >@@ -114,6 +114,8 @@ > protected String currentWSDLURI = null; > protected String NStoPkgFilename = "NStoPkg.properties"; > protected File NStoPkgFile = null; >+ protected boolean maintainPortType = false; >+ > > /** > * Default constructor. >@@ -407,6 +409,16 @@ > */ > public void setOutputDir(String outputDir) { > this.outputDir = outputDir; >+ } >+ >+ /** >+ * Force PortType to be used as stub interface even for doc/lit bindings >+ */ >+ public void setMaintainPortType() { >+ this.maintainPortType = true; >+ } >+ public boolean getMaintainPortType() { >+ return this.maintainPortType; > } > > /** >Index: org/apache/axis/wsdl/toJava/JavaImplWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaImplWriter.java,v >retrieving revision 1.16 >diff -u -r1.16 JavaImplWriter.java >--- org/apache/axis/wsdl/toJava/JavaImplWriter.java 8 Apr 2002 >23:18:45 -0000 1.16 >+++ org/apache/axis/wsdl/toJava/JavaImplWriter.java 6 May 2002 >16:30:11 -0000 >@@ -114,7 +114,7 @@ > > // If there is not literal use, the interface name is the > portType name. > // Otherwise it is the binding name. >- String portTypeName = bEntry.hasLiteral() ? >+ String portTypeName = (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) ? > bEntry.getName() : ptEntry.getName(); > pw.print("public class " + className + " implements " + > portTypeName); > pw.println(" {"); >Index: org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java,v >retrieving revision 1.6 >diff -u -r1.6 JavaInterfaceWriter.java >--- org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java 14 Feb >2002 14:59:31 -0000 1.6 >+++ org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java 6 May 2002 >16:30:11 -0000 >@@ -89,7 +89,7 @@ > > // If there is literal use in this binding, then the interface > name is > // derived from the binding name, not the portType name (the > default). >- if (bEntry.hasLiteral()) { >+ if (bEntry.hasLiteral() &&!emitter.getMaintainPortType()) { > super.className = Utils.getJavaLocalName(bEntry.getName()); > super.fileName = className + ".java"; > } >Index: org/apache/axis/wsdl/toJava/JavaServiceIfaceWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceIfaceWriter.java,v >retrieving revision 1.1 >diff -u -r1.1 JavaServiceIfaceWriter.java >--- org/apache/axis/wsdl/toJava/JavaServiceIfaceWriter.java 5 Feb 2002 >16:22:40 -0000 1.1 >+++ org/apache/axis/wsdl/toJava/JavaServiceIfaceWriter.java 6 May 2002 >16:30:11 -0000 >@@ -142,7 +142,7 @@ > > // If there is not literal use, the interface name is the > portType name. > // Otherwise it is the binding name. >- String bindingType = bEntry.hasLiteral() ? >+ String bindingType = (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) ? > bEntry.getName() : ptEntry.getName(); > > // Write out the get<PortName> methods >Index: org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java,v >retrieving revision 1.8 >diff -u -r1.8 JavaServiceImplWriter.java >--- org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java 21 Mar >2002 14:28:53 -0000 1.8 >+++ org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java 6 May 2002 >16:30:11 -0000 >@@ -152,7 +152,7 @@ > > // If there is not literal use, the interface name is the > portType name. > // Otherwise it is the binding name. >- String bindingType = bEntry.hasLiteral() ? >+ String bindingType = (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) ? > bEntry.getName() : ptEntry.getName(); > > // getPort(Class) must return a stub for an > interface. Collect all >Index: org/apache/axis/wsdl/toJava/JavaSkelWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v >retrieving revision 1.21 >diff -u -r1.21 JavaSkelWriter.java >--- org/apache/axis/wsdl/toJava/JavaSkelWriter.java 15 Apr 2002 >02:35:58 -0000 1.21 >+++ org/apache/axis/wsdl/toJava/JavaSkelWriter.java 6 May 2002 >16:30:11 -0000 >@@ -107,7 +107,7 @@ > > // If there is not literal use, the interface name is the > portType name. > // Otherwise it is the binding name. >- String portTypeName = bEntry.hasLiteral() ? >+ String portTypeName = (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) ? > bEntry.getName () : ptEntry.getName(); > boolean isRPC = true; > if (bEntry.getBindingStyle() == BindingEntry.STYLE_DOCUMENT) { >Index: org/apache/axis/wsdl/toJava/JavaStubWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v >retrieving revision 1.55 >diff -u -r1.55 JavaStubWriter.java >--- org/apache/axis/wsdl/toJava/JavaStubWriter.java 16 Apr 2002 >20:26:32 -0000 1.55 >+++ org/apache/axis/wsdl/toJava/JavaStubWriter.java 6 May 2002 >16:30:11 -0000 >@@ -110,7 +110,7 @@ > > // If there is not literal use, the interface name is the > portType name. > // Otherwise it is the binding name. >- String portTypeName = bEntry.hasLiteral() ? >+ String portTypeName = (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) ? > bEntry.getName() : ptEntry.getName(); > boolean isRPC = true; > if (bEntry.getBindingStyle() == BindingEntry.STYLE_DOCUMENT) { >Index: org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java,v >retrieving revision 1.22 >diff -u -r1.22 JavaTestCaseWriter.java >--- org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java 1 May 2002 >17:17:15 -0000 1.22 >+++ org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java 6 May 2002 >16:30:11 -0000 >@@ -174,7 +174,7 @@ > > // If there is not literal use, the interface name is the > portType name. > // Otherwise it is the binding name. >- String bindingType = bEntry.hasLiteral() ? >+ String bindingType = (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) ? > bEntry.getName() : ptEntry.getName(); > writeBindingAssignment(bindingType, portName); > >Index: org/apache/axis/wsdl/toJava/JavaWriterFactory.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java,v >retrieving revision 1.22 >diff -u -r1.22 JavaWriterFactory.java >--- org/apache/axis/wsdl/toJava/JavaWriterFactory.java 5 Apr 2002 >21:24:32 -0000 1.22 >+++ org/apache/axis/wsdl/toJava/JavaWriterFactory.java 6 May 2002 >16:30:11 -0000 >@@ -328,7 +328,7 @@ > // If there IS literal use, then the SDI will be > // named after the binding name, so there is the > // possibility of a name clash. >- if (bEntry.hasLiteral()) { >+ if (bEntry.hasLiteral() && >!emitter.getMaintainPortType()) { > entry.setName(mangleName(entry.getName(), > "_Binding")); > } >Index: org/apache/axis/wsdl/toJava/SchemaUtils.java >=================================================================== >RCS file: >/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SchemaUtils.java,v >retrieving revision 1.20 >diff -u -r1.20 SchemaUtils.java >--- org/apache/axis/wsdl/toJava/SchemaUtils.java 4 Apr 2002 >19:17:12 -0000 1.20 >+++ org/apache/axis/wsdl/toJava/SchemaUtils.java 6 May 2002 >16:30:11 -0000 >@@ -265,6 +265,12 @@ > v.addAll(processSequenceNode(children.item(j), > symbolTable)); > } else if (subNodeKind.getLocalPart().equals("group")) { > v.addAll(processGroupNode(children.item(j), > symbolTable)); >+ } else if (subNodeKind.getLocalPart().equals("any")) { >+ TypeEntry type = >(TypeEntry)symbolTable.getTypeEntry(Utils.getWSDLQName(Constants.XSD_ANYTYPE), >false); >+ if (type != null) { >+ ElementDecl elem = new ElementDecl(type, >Utils.getAxisQName(new QName("","any"))); >+ v.add(elem); >+ } > } else if (subNodeKind.getLocalPart().equals("element")) { > ElementDecl elem = > processChildElementNode(children.item(j), Thomas Sandholm <[EMAIL PROTECTED]> The Globus Project(tm) <http://www.globus.org> Ph: 630-252-1682, Fax: 630-252-1997 Argonne National Laboratory
axis-lit-src-test.zip
Description: Zip archive