gdaniels 2002/10/04 22:26:08 Modified: java/src/org/apache/axis/deployment/wsdd Tag: interop4 WSDDOperation.java WSDDFault.java WSDDConstants.java java/src/org/apache/axis/wsdl/symbolTable Tag: interop4 SymbolTable.java BindingEntry.java java/src/org/apache/axis/message Tag: interop4 SOAPFaultDetailsBuilder.java java/src/org/apache/axis/description Tag: interop4 ServiceDesc.java java/src/org/apache/axis/wsdl/toJava Tag: interop4 JavaDeployWriter.java JavaDefinitionWriter.java Log: Continue work on faults, making sure we deal correctly with fault metadata. SimpleRpcEnc fault test now passes again. Doc/lit next. Revision Changes Path No revision No revision 1.21.8.2 +8 -0 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDOperation.java Index: WSDDOperation.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDOperation.java,v retrieving revision 1.21.8.1 retrieving revision 1.21.8.2 diff -u -r1.21.8.1 -r1.21.8.2 --- WSDDOperation.java 4 Oct 2002 13:06:06 -0000 1.21.8.1 +++ WSDDOperation.java 5 Oct 2002 05:26:07 -0000 1.21.8.2 @@ -57,6 +57,7 @@ import org.apache.axis.description.OperationDesc; import org.apache.axis.description.ParameterDesc; import org.apache.axis.description.ServiceDesc; +import org.apache.axis.description.FaultDesc; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.utils.XMLUtils; import org.w3c.dom.Element; @@ -167,6 +168,13 @@ ParameterDesc parameterDesc = (ParameterDesc) i.next(); WSDDParameter p = new WSDDParameter(parameterDesc); p.writeToContext(context); + } + + ArrayList faults = desc.getFaults(); + for (Iterator i = faults.iterator(); i.hasNext();) { + FaultDesc faultDesc = (FaultDesc) i.next(); + WSDDFault f = new WSDDFault(faultDesc); + f.writeToContext(context); } context.endElement(); 1.1.2.2 +16 -2 xml-axis/java/src/org/apache/axis/deployment/wsdd/Attic/WSDDFault.java Index: WSDDFault.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/Attic/WSDDFault.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- WSDDFault.java 4 Oct 2002 15:30:59 -0000 1.1.2.1 +++ WSDDFault.java 5 Oct 2002 05:26:07 -0000 1.1.2.2 @@ -70,6 +70,10 @@ public class WSDDFault extends WSDDElement { FaultDesc desc; + public WSDDFault(FaultDesc desc) { + this.desc = desc; + } + /** * Construct a WSDDFault from a DOM Element * @param e the <fault> Element @@ -78,13 +82,19 @@ public WSDDFault(Element e) throws WSDDException { super(e); + desc = new FaultDesc(); + String qNameStr = e.getAttribute(ATTR_QNAME); if (qNameStr != null && !qNameStr.equals("")) desc.setQName(XMLUtils.getQNameFromString(qNameStr, e)); - String classNameStr = e.getAttribute(ATTR_CLASSNAME); + String classNameStr = e.getAttribute(ATTR_CLASS); if (classNameStr != null && !classNameStr.equals("")) desc.setClassName(classNameStr); + + String xmlTypeStr = e.getAttribute(ATTR_TYPE); + if (xmlTypeStr != null && !xmlTypeStr.equals("")) + desc.setXmlType(XMLUtils.getQNameFromString(xmlTypeStr, e)); } /** @@ -105,8 +115,12 @@ "CDATA", context.qName2String(desc.getQName())); - attrs.addAttribute("", ATTR_CLASSNAME, ATTR_CLASSNAME, + attrs.addAttribute("", ATTR_CLASS, ATTR_CLASS, "CDATA", desc.getClassName()); + + attrs.addAttribute("", ATTR_TYPE, ATTR_TYPE, + "CDATA", + context.qName2String(desc.getXmlType())); context.startElement(getElementName(), attrs); context.endElement(); 1.23.2.2 +1 -0 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDConstants.java Index: WSDDConstants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDConstants.java,v retrieving revision 1.23.2.1 retrieving revision 1.23.2.2 diff -u -r1.23.2.1 -r1.23.2.2 --- WSDDConstants.java 4 Oct 2002 13:06:06 -0000 1.23.2.1 +++ WSDDConstants.java 5 Oct 2002 05:26:07 -0000 1.23.2.2 @@ -178,4 +178,5 @@ public static final String ATTR_ENCSTYLE = "encodingStyle"; public static final String ATTR_SOAPACTORNAME = "soapActorName"; public static final String ATTR_CLASSNAME = "classname"; + public static final String ATTR_CLASS = "class"; } No revision No revision 1.41.4.2 +10 -2 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java Index: SymbolTable.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v retrieving revision 1.41.4.1 retrieving revision 1.41.4.2 diff -u -r1.41.4.1 -r1.41.4.2 --- SymbolTable.java 4 Oct 2002 23:36:32 -0000 1.41.4.1 +++ SymbolTable.java 5 Oct 2002 05:26:07 -0000 1.41.4.2 @@ -1495,6 +1495,8 @@ HashMap attributes = new HashMap(); List bindList = binding.getBindingOperations(); Map mimeTypes = new HashMap(); + HashMap faultMap = new HashMap(); // name to SOAPFault from WSDL4J + for (Iterator opIterator = bindList.iterator(); opIterator.hasNext();) { BindingOperation bindOp = (BindingOperation) opIterator.next(); BindingInput bindingInput = bindOp.getBindingInput(); @@ -1572,7 +1574,6 @@ } // faults - HashMap faultMap = new HashMap(); // name to SOAPFault from WSDL4J ArrayList faults = new ArrayList(); Iterator faultMapIter = bindOp.getBindingFaults().values().iterator(); for (; faultMapIter.hasNext(); ) { @@ -1624,9 +1625,15 @@ bindOp.getName(), binding.getQName().toString()})); } + + // FIXME + Part p = (Part)(opFault.getMessage().getParts().values().iterator().next()); + QName xmlType = p.getTypeName(); + // put the updated entry back in the map faults.add(new JavaDefinitionWriter.FaultInfo(opFault, - soapFault)); + soapFault, + xmlType)); } // Add this fault name and info to the map faultMap.put(bindOp, faults); @@ -1644,6 +1651,7 @@ } } // binding operations BindingEntry bEntry = new BindingEntry(binding, bindingType, bindingStyle, hasLiteral, attributes, mimeTypes); + bEntry.setFaults(faultMap); symbolTablePut(bEntry); } } // populateBindings 1.3.4.2 +4 -0 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java Index: BindingEntry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java,v retrieving revision 1.3.4.1 retrieving revision 1.3.4.2 diff -u -r1.3.4.1 -r1.3.4.2 --- BindingEntry.java 4 Oct 2002 23:36:33 -0000 1.3.4.1 +++ BindingEntry.java 5 Oct 2002 05:26:07 -0000 1.3.4.2 @@ -263,6 +263,10 @@ return faults; } + public void setFaults(HashMap faults) { + this.faults = faults; + } + /** * Contains attributes for Operations * - Body type: encoded or literal No revision No revision 1.1.2.5 +3 -3 xml-axis/java/src/org/apache/axis/message/Attic/SOAPFaultDetailsBuilder.java Index: SOAPFaultDetailsBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/Attic/SOAPFaultDetailsBuilder.java,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -r1.1.2.4 -r1.1.2.5 --- SOAPFaultDetailsBuilder.java 4 Oct 2002 23:36:33 -0000 1.1.2.4 +++ SOAPFaultDetailsBuilder.java 5 Oct 2002 05:26:07 -0000 1.1.2.5 @@ -58,8 +58,6 @@ import org.apache.axis.MessageContext; import org.apache.axis.description.OperationDesc; import org.apache.axis.description.FaultDesc; -import org.apache.axis.client.Service; -import org.apache.axis.client.Call; import org.apache.axis.encoding.DeserializationContext; import org.apache.axis.encoding.Deserializer; import org.apache.axis.encoding.Callback; @@ -116,7 +114,9 @@ builder.setWaiting(true); // register callback for the data, use the xmlType from fault info Deserializer dser = context.getDeserializerForType(faultDesc.getXmlType()); - dser.registerValueTarget(new CallbackTarget(this, "faultData")); + if (dser != null) { + dser.registerValueTarget(new CallbackTarget(this, "faultData")); + } return (SOAPHandler)dser; } } No revision No revision 1.64.2.3 +20 -14 xml-axis/java/src/org/apache/axis/description/ServiceDesc.java Index: ServiceDesc.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v retrieving revision 1.64.2.2 retrieving revision 1.64.2.3 diff -u -r1.64.2.2 -r1.64.2.3 --- ServiceDesc.java 4 Oct 2002 23:36:33 -0000 1.64.2.2 +++ ServiceDesc.java 5 Oct 2002 05:26:07 -0000 1.64.2.3 @@ -1140,21 +1140,27 @@ operation.addFault(fault); */ - // Create a single part with the dummy name "fault" - // that locates the complexType for this exception. - ParameterDesc param = new ParameterDesc( - new QName("", "fault"), - ParameterDesc.IN, - tm.getTypeQName(ex)); - param.setJavaType(ex); - ArrayList exceptionParams = new ArrayList(); - exceptionParams.add(param); + FaultDesc fault = operation.getFaultByClass(ex); + if (fault == null) { + QName xmlType = tm.getTypeQName(ex); + // Create a single part with the dummy name "fault" + // that locates the complexType for this exception. + ParameterDesc param = new ParameterDesc( + new QName("", "fault"), + ParameterDesc.IN, + xmlType); + param.setJavaType(ex); + ArrayList exceptionParams = new ArrayList(); + exceptionParams.add(param); + + fault = new FaultDesc(); + String pkgAndClsName = ex.getName(); + fault.setName(pkgAndClsName); + fault.setParameters(exceptionParams); + fault.setClassName(pkgAndClsName); + fault.setXmlType(xmlType); + } - String pkgAndClsName = ex.getName(); - FaultDesc fault = new FaultDesc(); - fault.setName(pkgAndClsName); - fault.setParameters(exceptionParams); - fault.setClassName(pkgAndClsName); operation.addFault(fault); } } No revision No revision 1.65.2.3 +3 -0 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java Index: JavaDeployWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v retrieving revision 1.65.2.2 retrieving revision 1.65.2.3 diff -u -r1.65.2.2 -r1.65.2.3 --- JavaDeployWriter.java 4 Oct 2002 23:36:02 -0000 1.65.2.2 +++ JavaDeployWriter.java 5 Oct 2002 05:26:08 -0000 1.65.2.3 @@ -468,6 +468,9 @@ pw.print(" qname=\"" + Utils.genQNameAttributeString(faultQName, "fns") + "\""); pw.print(" class=\"" + className+ "\""); + pw.print(" type=\"" + + Utils.genQNameAttributeString(faultInfo.xmlType, + "tns") + "\""); pw.println("/>"); } } 1.10.4.5 +4 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDefinitionWriter.java Index: JavaDefinitionWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDefinitionWriter.java,v retrieving revision 1.10.4.4 retrieving revision 1.10.4.5 diff -u -r1.10.4.4 -r1.10.4.5 --- JavaDefinitionWriter.java 4 Oct 2002 23:36:02 -0000 1.10.4.4 +++ JavaDefinitionWriter.java 5 Oct 2002 05:26:08 -0000 1.10.4.5 @@ -73,6 +73,7 @@ import javax.wsdl.Binding; import javax.wsdl.BindingOperation; import javax.wsdl.extensions.soap.SOAPFault; +import javax.xml.namespace.QName; import org.apache.axis.wsdl.gen.Generator; @@ -166,13 +167,15 @@ * Holder structure for fault information */ public static class FaultInfo { - public FaultInfo(Fault fault, SOAPFault soapFault) { + public FaultInfo(Fault fault, SOAPFault soapFault, QName xmlType) { this.fault = fault; this.soapFault = soapFault; + this.xmlType = xmlType; } public Fault fault; public SOAPFault soapFault; + public QName xmlType; } /**