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 to...@apache.org on 2002/10/14 22:02:22 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl/symbolTable FaultInfo.java
tomj 2002/10/14 13:02:22
Modified: java/src/org/apache/axis/deployment/wsdd WSDDFault.java
java/src/org/apache/axis/message
SOAPFaultDetailsBuilder.java
java/src/org/apache/axis/description ServiceDesc.java
FaultDesc.java
java/src/org/apache/axis/i18n resource.properties
java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
java/src/org/apache/axis/wsdl/symbolTable FaultInfo.java
Log:
Continuation of previous submit of fromJava/emitter.java.
Some improvements on generating WSDL from Java for faults.
Now we actually generate reasonable fault information for the
Group H fault interop services.
Of particular note, I added a name= attirbute to the <fault> tag in WSDD.
This allows us to round trip various names nicely.
Revision Changes Path
1.3 +4 -0 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDFault.java
Index: WSDDFault.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDFault.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSDDFault.java 8 Oct 2002 03:31:32 -0000 1.2
+++ WSDDFault.java 14 Oct 2002 20:02:21 -0000 1.3
@@ -84,6 +84,10 @@
desc = new FaultDesc();
+ String nameStr = e.getAttribute(ATTR_NAME);
+ if (nameStr != null && !nameStr.equals(""))
+ desc.setName(nameStr);
+
String qNameStr = e.getAttribute(ATTR_QNAME);
if (qNameStr != null && !qNameStr.equals(""))
desc.setQName(XMLUtils.getQNameFromString(qNameStr, e));
1.4 +6 -1 xml-axis/java/src/org/apache/axis/message/SOAPFaultDetailsBuilder.java
Index: SOAPFaultDetailsBuilder.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFaultDetailsBuilder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SOAPFaultDetailsBuilder.java 8 Oct 2002 03:31:33 -0000 1.3
+++ SOAPFaultDetailsBuilder.java 14 Oct 2002 20:02:21 -0000 1.4
@@ -111,7 +111,12 @@
FaultDesc faultDesc = op.getFaultByQName(qn);
if (faultDesc != null) {
// Set the class
- builder.setFaultClass(faultDesc.getClass());
+ try {
+ Class faultClass = ClassUtils.forName(faultDesc.getClassName());
+ builder.setFaultClass(faultClass);
+ } catch (ClassNotFoundException e) {
+ // Just create an AxisFault, no custom exception
+ }
builder.setWaiting(true);
// register callback for the data, use the xmlType from fault info
Deserializer dser = null;
1.67 +43 -12 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.66
retrieving revision 1.67
diff -u -r1.66 -r1.67
--- ServiceDesc.java 9 Oct 2002 19:06:30 -0000 1.66
+++ ServiceDesc.java 14 Oct 2002 20:02:21 -0000 1.67
@@ -1157,26 +1157,57 @@
*/
FaultDesc fault = operation.getFaultByClass(ex);
+ // If we didn't find one, create a new one
if (fault == null) {
- QName xmlType = tm.getTypeQName(ex);
- // Create a single part with the dummy name "fault"
- // that locates the complexType for this exception.
+ fault = new FaultDesc();
+ }
+
+ // Try to fil in any parts of the faultDesc that aren't there
+
+ // XMLType
+ QName xmlType = fault.getXmlType();
+ if (xmlType == null) {
+ fault.setXmlType(tm.getTypeQName(ex));
+ }
+
+ // Name and Class Name
+ String pkgAndClsName = ex.getName();
+ if (fault.getClassName() == null) {
+ fault.setClassName(pkgAndClsName);
+ }
+ if (fault.getName() == null) {
+ String name = pkgAndClsName.substring(
+ pkgAndClsName.lastIndexOf('.') + 1,
+ pkgAndClsName.length());
+ fault.setName(name);
+ }
+
+ // Parameters
+ // We add a single parameter which points to the type
+ if (fault.getParameters() == null) {
+ if (xmlType == null) {
+ xmlType = tm.getTypeQName(ex);
+ }
+ QName qname = fault.getQName();
+ if (qname == null) {
+ qname = new QName("", "fault");
+ }
ParameterDesc param = new ParameterDesc(
- new QName("", "fault"),
- ParameterDesc.IN,
- xmlType);
+ qname,
+ 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);
+ }
+
+ // QName
+ if (fault.getQName() == null) {
+ fault.setQName(new QName(pkgAndClsName));
}
+ // Add the fault to the operation
operation.addFault(fault);
}
}
1.5 +3 -4 xml-axis/java/src/org/apache/axis/description/FaultDesc.java
Index: FaultDesc.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/FaultDesc.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FaultDesc.java 8 Oct 2002 03:31:32 -0000 1.4
+++ FaultDesc.java 14 Oct 2002 20:02:21 -0000 1.5
@@ -65,6 +65,7 @@
* @author Tom Jordahl (tomj@apache.org)
*/
public class FaultDesc {
+ private String name;
private QName qname;
private ArrayList parameters;
private String className;
@@ -81,14 +82,12 @@
public String getName()
{
- if (qname != null)
- return qname.getLocalPart();
- return null;
+ return name;
}
public void setName(String name)
{
- qname = new QName("", name);
+ this.name = name;
}
public ArrayList getParameters() {
1.16 +1 -1 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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- resource.properties 10 Oct 2002 20:46:59 -0000 1.15
+++ resource.properties 14 Oct 2002 20:02:21 -0000 1.16
@@ -861,7 +861,7 @@
mustSpecifyReturnType=No returnType was specified to the Call object! You must call setReturnType() if you have called addParameter().
mustSpecifyParms=No parameters specified to the Call object! You must call addParameter() for all parameters if you have called setReturnType().
noElemOrType=Error: Message part {0} of operation {1} should have either an element or a type attribute
-badTypeNode=Error: Missing type resolution for element {2}, in WSDL message part {0} of operation {1}
+badTypeNode=Error: Missing type resolution for element {2}, in WSDL message part {0} of operation {1}. Hint: Try turning off 'wrapped' processing (--noWrapped).
# NOTE: in noUse, do no translate "soap:operation", "binding operation", "use".
noUse=The soap:operation for binding operation {0} must have a "use" attribute.
1.69 +1 -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.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- JavaDeployWriter.java 9 Oct 2002 20:51:30 -0000 1.68
+++ JavaDeployWriter.java 14 Oct 2002 20:02:21 -0000 1.69
@@ -486,6 +486,7 @@
String className = Utils.getFullExceptionName(
faultInfo.getMessage(), symbolTable);
pw.print(" <fault");
+ pw.print(" name=\"" + faultInfo.getName() + "\"");
pw.print(" qname=\"" +
Utils.genQNameAttributeString(faultQName, "fns") + "\"");
pw.print(" class=\"" + className+ "\"");
1.3 +8 -2 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/FaultInfo.java
Index: FaultInfo.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/FaultInfo.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FaultInfo.java 10 Oct 2002 15:12:15 -0000 1.2
+++ FaultInfo.java 14 Oct 2002 20:02:22 -0000 1.3
@@ -82,6 +82,7 @@
private QName xmlType;
private Use use;
private QName qName;
+ private String name;
/**
* This constructor creates FaultInfo for a binding fault.
@@ -98,6 +99,7 @@
this.message = fault.getMessage();
this.xmlType = getFaultType(symbolTable, getFaultPart());
this.use = use;
+ this.name = fault.getName();
Part part = getFaultPart();
if (part == null) {
@@ -135,6 +137,8 @@
else {
this.qName = part.getElementName();
}
+ this.name = qName.getLocalPart();
+
} // ctor
public Message getMessage() {
@@ -165,10 +169,12 @@
} // getQName
/**
- * Convenience method for getting the local part of the QName.
+ * Return the name of the fault.
+ * This is the name= attribute from a portType fault
+ * or the localname of a header fault.
*/
public String getName() {
- return qName == null ? null : qName.getLocalPart();
+ return name;
} // getName
/**