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 bu...@apache.org on 2002/10/08 22:33:25 UTC
cvs commit: xml-axis/java/test/wsdl/inheritance InheritanceTestCase.java
butek 2002/10/08 13:33:25
Modified: java/samples/echo Tag: explicitHeaderWork deploy.wsdd
java/src/org/apache/axis/client Tag: explicitHeaderWork
Call.java
java/src/org/apache/axis/description Tag: explicitHeaderWork
OperationDesc.java
java/src/org/apache/axis/message Tag: explicitHeaderWork
RPCElement.java RPCHandler.java
java/src/org/apache/axis/wsdl/symbolTable Tag:
explicitHeaderWork SymbolTable.java
java/src/org/apache/axis/wsdl/toJava Tag: explicitHeaderWork
JavaDeployWriter.java JavaSkelWriter.java
JavaStubWriter.java
java/test/wsdl/inheritance Tag: explicitHeaderWork
InheritanceTestCase.java
Added: java/test/wsdl/header Tag: explicitHeaderWork build.xml
header.wsdl
Log:
Output (and return) headers now work.
To get these to work, we had to explicitly define the return QName so that
it could be gathered either from the header or the body by name. With this
change, problems in two tests were exposed:
- samples/echo test failed because it wasn't defining all operations.
- test/wsdl/inheritance failed. It does WSDL2Java->Java2WSDL->
WSDL2Java. We lose the return name through this process and the test
case was using the Locator from the FIRST WSDL2Java when it should
have been using the Locator from the SECOND WSDL2Java.
Revision Changes Path
No revision
No revision
1.23.6.1 +30 -0 xml-axis/java/samples/echo/deploy.wsdd
Index: deploy.wsdd
===================================================================
RCS file: /home/cvs/xml-axis/java/samples/echo/deploy.wsdd,v
retrieving revision 1.23
retrieving revision 1.23.6.1
diff -u -r1.23 -r1.23.6.1
--- deploy.wsdd 2 Sep 2002 18:20:05 -0000 1.23
+++ deploy.wsdd 8 Oct 2002 20:33:23 -0000 1.23.6.1
@@ -164,5 +164,35 @@
<operation name="echoMapArray" returnQName="return" returnType="RTypeNS:ArrayOf_apachesoap_Map" xmlns:RTypeNS="http://soapinterop.org/" >
<parameter name="input" type="tns:ArrayOf_apachesoap_Map" xmlns:tns="http://soapinterop.org/"/>
</operation>
+ <operation name="echoToken" qname="operNS:echoToken" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:token" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputToken" type="tns:token" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoNormalizedString" qname="operNS:echoNormalizedString" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:normalizedString" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputNormalizedString" type="tns:normalizedString" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoUnsignedLong" qname="operNS:echoUnsignedLong" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedLong" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputUnsignedLong" type="tns:unsignedLong" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoUnsignedInt" qname="operNS:echoUnsignedInt" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedInt" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputUnsignedInt" type="tns:unsignedInt" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoUnsignedShort" qname="operNS:echoUnsignedShort" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedShort" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputUnsignedShort" type="tns:unsignedShort" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoUnsignedByte" qname="operNS:echoUnsignedByte" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedByte" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputUnsignedByte" type="tns:unsignedByte" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoNonNegativeInteger" qname="operNS:echoNonNegativeInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:nonNegativeInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputNonNegativeInteger" type="tns:nonNegativeInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoPositiveInteger" qname="operNS:echoPositiveInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:positiveInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputPositiveInteger" type="tns:positiveInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoNonPositiveInteger" qname="operNS:echoNonPositiveInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:nonPositiveInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputNonPositiveInteger" type="tns:nonPositiveInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
+ <operation name="echoNegativeInteger" qname="operNS:echoNegativeInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:negativeInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
+ <parameter name="inputNegativeInteger" type="tns:negativeInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
+ </operation>
</service>
</deployment>
No revision
No revision
1.180.4.4 +39 -12 xml-axis/java/src/org/apache/axis/client/Call.java
Index: Call.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
retrieving revision 1.180.4.3
retrieving revision 1.180.4.4
diff -u -r1.180.4.3 -r1.180.4.4
--- Call.java 4 Oct 2002 20:20:55 -0000 1.180.4.3
+++ Call.java 8 Oct 2002 20:33:23 -0000 1.180.4.4
@@ -199,9 +199,6 @@
// The desired return Java type, so we can do conversions if needed
private Class returnJavaType = null;
- // If a parameter is sent as a header, this flag will be set to true;
- private boolean headerParameters = false;
-
public static final String SEND_TYPE_ATTR = "send_type_attr" ;
public static final String TRANSPORT_NAME = "transport_name" ;
public static final String TRANSPORT_PROPERTY= "java.protocol.handler.pkgs";
@@ -837,33 +834,47 @@
}
/**
- * Adds a parameter type as a soap:header. Note that we do not
- * currently support an INOUT parameter split between header and
- * body of the soap message. It's either header both ways or
- * body both ways.
+ * Adds a parameter type as a soap:header.
+ * @param paramName - Name of the parameter
+ * @param xmlType - XML datatype of the parameter
+ * @param javaType - The Java class of the parameter
+ * @param parameterMode - Mode of the parameter-whether IN, OUT or INOUT
+ * @param headerMode - Mode of the header. Even if this is an INOUT
+ * parameter, it need not be in the header in both
+ * directions.
+ * @exception JAXRPCException - if isParameterAndReturnSpecRequired returns
+ * false, then addParameter MAY throw
+ * JAXRPCException....actually Axis allows
+ * modification in such cases
*/
public void addParameterAsHeader(QName paramName, QName xmlType,
- Class javaType, ParameterMode parameterMode) {
+ Class javaType, ParameterMode parameterMode,
+ ParameterMode headerMode) {
ParameterDesc param = new ParameterDesc();
param.setQName(paramName);
param.setTypeQName(xmlType);
param.setJavaType(javaType);
if (parameterMode == ParameterMode.IN) {
param.setMode(ParameterDesc.IN);
- param.setInHeader(true);
}
else if (parameterMode == ParameterMode.INOUT) {
param.setMode(ParameterDesc.INOUT);
- param.setInHeader(true);
- param.setOutHeader(true);
}
else if (parameterMode == ParameterMode.OUT) {
param.setMode(ParameterDesc.OUT);
+ }
+ if (headerMode == ParameterMode.IN) {
+ param.setInHeader(true);
+ }
+ else if (headerMode == ParameterMode.INOUT) {
+ param.setInHeader(true);
+ param.setOutHeader(true);
+ }
+ else if (headerMode == ParameterMode.OUT) {
param.setOutHeader(true);
}
operation.addParameter(param);
parmAndRetReq = true;
- headerParameters = true;
} // addParameterAsHeader
/**
@@ -931,6 +942,22 @@
returnJavaType = javaType;
operation.setReturnClass(javaType); // Use specified type as the operation return
}
+
+ /**
+ * Set the return type as a header
+ */
+ public void setReturnTypeAsHeader(QName xmlType) {
+ setReturnType(xmlType);
+ operation.setReturnHeader(true);
+ } // setReturnTypeAsHeader
+
+ /**
+ * Set the return type as a header
+ */
+ public void setReturnTypeAsHeader(QName xmlType, Class javaType) {
+ setReturnType(xmlType, javaType);
+ operation.setReturnHeader(true);
+ } // setReturnTypeAsHeader
/**
* Returns the QName of the type of the return value of this Call - or null if
No revision
No revision
1.23.4.3 +6 -0 xml-axis/java/src/org/apache/axis/description/OperationDesc.java
Index: OperationDesc.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/OperationDesc.java,v
retrieving revision 1.23.4.2
retrieving revision 1.23.4.3
diff -u -r1.23.4.2 -r1.23.4.3
--- OperationDesc.java 4 Oct 2002 20:20:56 -0000 1.23.4.2
+++ OperationDesc.java 8 Oct 2002 20:33:23 -0000 1.23.4.3
@@ -306,10 +306,16 @@
this.method = method;
}
+ /**
+ * Is the return value in the header of the response message?
+ */
public boolean isReturnHeader() {
return returnDesc.isOutHeader();
}
+ /**
+ * Set whether the return value is in the response message.
+ */
public void setReturnHeader(boolean value) {
returnDesc.setOutHeader(value);
}
No revision
No revision
1.76.4.4 +2 -2 xml-axis/java/src/org/apache/axis/message/RPCElement.java
Index: RPCElement.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCElement.java,v
retrieving revision 1.76.4.3
retrieving revision 1.76.4.4
diff -u -r1.76.4.3 -r1.76.4.4
--- RPCElement.java 4 Oct 2002 20:20:56 -0000 1.76.4.3
+++ RPCElement.java 8 Oct 2002 20:33:24 -0000 1.76.4.4
@@ -164,7 +164,7 @@
// We're going to need this below, so create one.
RPCHandler rpcHandler = new RPCHandler(this, isResponse);
- if (operations != null && !msgContext.isClient()) {
+ if (operations != null) {
int numParams = (getChildren() == null) ? 0 : getChildren().size();
SAXException savedException = null;
@@ -248,7 +248,7 @@
if (savedException != null) {
throw savedException;
- } else {
+ } else if (!msgContext.isClient()) {
throw new SAXException(
Messages.getMessage("noSuchOperation", name));
}
1.65.4.2 +1 -1 xml-axis/java/src/org/apache/axis/message/RPCHandler.java
Index: RPCHandler.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
retrieving revision 1.65.4.1
retrieving revision 1.65.4.2
diff -u -r1.65.4.1 -r1.65.4.2
--- RPCHandler.java 2 Oct 2002 20:39:06 -0000 1.65.4.1
+++ RPCHandler.java 8 Oct 2002 20:33:24 -0000 1.65.4.2
@@ -216,6 +216,7 @@
} else {
paramDesc = operation.getInputParamByQName(qname);
}
+
// If that didn't work, try position
// FIXME : Do we need to be in EITHER named OR positional
@@ -230,7 +231,6 @@
paramDesc = operation.getParameter(params.size() - 1);
}
}
-
if (paramDesc == null) {
throw new SAXException(Messages.getMessage("noParmDesc"));
No revision
No revision
1.41.6.4 +2 -1 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.6.3
retrieving revision 1.41.6.4
diff -u -r1.41.6.3 -r1.41.6.4
--- SymbolTable.java 4 Oct 2002 20:20:57 -0000 1.41.6.3
+++ SymbolTable.java 8 Oct 2002 20:33:24 -0000 1.41.6.4
@@ -996,7 +996,7 @@
}
}
}
- } // populate Parameters
+ } // populateParameters
/**
* For the given operation, this method returns the parameter info conveniently collated.
@@ -1112,6 +1112,7 @@
// out parameters.
if (outputs.size() == 1) {
parameters.returnParam = (Parameter)outputs.get(0);
+ parameters.returnParam.setMode(Parameter.OUT);
if (parameters.returnParam.getType() instanceof DefinedElement) {
parameters.returnParam.setQName(
((DefinedElement)parameters.returnParam.getType())
No revision
No revision
1.65.4.4 +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.4.3
retrieving revision 1.65.4.4
diff -u -r1.65.4.3 -r1.65.4.4
--- JavaDeployWriter.java 4 Oct 2002 20:20:57 -0000 1.65.4.3
+++ JavaDeployWriter.java 8 Oct 2002 20:33:24 -0000 1.65.4.4
@@ -425,6 +425,9 @@
Utils.genQNameAttributeString(returnType, "rtns") +
"\"");
}
+ if (params.returnParam != null && params.returnParam.isOutHeader()) {
+ pw.print(" returnHeader=\"true\"");
+ }
pw.println(" >");
Vector paramList = params.list;
1.49.6.4 +5 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java
Index: JavaSkelWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v
retrieving revision 1.49.6.3
retrieving revision 1.49.6.4
diff -u -r1.49.6.3 -r1.49.6.4
--- JavaSkelWriter.java 4 Oct 2002 20:20:57 -0000 1.49.6.3
+++ JavaSkelWriter.java 8 Oct 2002 20:33:24 -0000 1.49.6.4
@@ -220,7 +220,11 @@
if (retType != null) {
pw.println(" _oper.setReturnType(" +
- Utils.getNewQName(retType) + ");");
+ Utils.getNewQName(retType) + ");");
+ if (parameters.returnParam != null &&
+ parameters.returnParam.isOutHeader()) {
+ pw.println(" _oper.setReturnHeader(true);");
+ }
}
// If we need to know the QName (if we have a namespace or
1.98.4.4 +28 -19 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
Index: JavaStubWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
retrieving revision 1.98.4.3
retrieving revision 1.98.4.4
diff -u -r1.98.4.3 -r1.98.4.4
--- JavaStubWriter.java 4 Oct 2002 20:20:58 -0000 1.98.4.3
+++ JavaStubWriter.java 8 Oct 2002 20:33:24 -0000 1.98.4.4
@@ -520,10 +520,19 @@
// Generate the addParameter call with the
// name qname, typeQName, optional javaType, and mode
- if (p.getMode() != Parameter.OUT && p.isInHeader()) {
- pw.println(" _call.addParameterAsHeader(" + paramNameText + ", "
+ boolean isInHeader = p.isInHeader();
+ boolean isOutHeader = p.isOutHeader();
+ if (isInHeader || isOutHeader) {
+ String headerMode = isInHeader ?
+ (isOutHeader ? "javax.xml.rpc.ParameterMode.INOUT" :
+ "javax.xml.rpc.ParameterMode.IN") :
+ "javax.xml.rpc.ParameterMode.OUT";
+ pw.println(" _call.addParameterAsHeader("
+ + paramNameText + ", "
+ paramTypeText + ", "
- + javaType + "javax.xml.rpc.ParameterMode.IN);");
+ + javaType
+ + "javax.xml.rpc.ParameterMode.IN, "
+ + headerMode + ");");
}
else if (p.getMode() == Parameter.IN) {
pw.println(" _call.addParameter(" + paramNameText + ", "
@@ -546,7 +555,7 @@
// Get the QName for the return Type
QName returnType = Utils.getXSIType(parms.returnParam);
-
+
// Get the javaType
String javaType = null;
if (parms.returnParam.getMIMEType() != null) {
@@ -556,12 +565,21 @@
javaType = parms.returnParam.getType().getName();
}
if (javaType == null) {
- pw.println(" _call.setReturnType(" +
- Utils.getNewQName(returnType) + ");");
- } else {
- pw.println(" _call.setReturnType(" +
- Utils.getNewQName(returnType) +
- ", " + javaType + ".class);");
+ javaType = "";
+ }
+ else {
+ javaType = ", " + javaType + ".class";
+ }
+ String method = "setReturnType";
+ if (parms.returnParam.isOutHeader()) {
+ method = "setReturnTypeAsHeader";
+ }
+ pw.println(" _call." + method + "("
+ + Utils.getNewQName(returnType)
+ + javaType + ");");
+ QName returnQName = parms.returnParam.getQName();
+ if (returnQName != null) {
+ pw.println(" _call.setReturnQName(" + Utils.getNewQName(returnQName) + ");");
}
}
else {
@@ -612,15 +630,6 @@
Part p = (Part)partsMap.values().iterator().next();
QName q = p.getElementName();
pw.println(" _call.setOperationName(" + Utils.getNewQName(q) + ");" );
-
- // Special return info for wrapped - the QName of the element
- // which is the return type
- if (parms.returnParam != null) {
- QName returnQName = parms.returnParam.getQName();
- if (returnQName != null) {
- pw.println(" _call.setReturnQName(" + Utils.getNewQName(returnQName) + ");" );
- }
- }
} else {
QName elementQName =
Utils.getOperationQName(operation, bEntry, symbolTable);
No revision
No revision
1.1.2.1 +85 -0 xml-axis/java/test/wsdl/header/Attic/build.xml
1.1.2.1 +96 -0 xml-axis/java/test/wsdl/header/Attic/header.wsdl
No revision
No revision
1.4.12.1 +1 -1 xml-axis/java/test/wsdl/inheritance/InheritanceTestCase.java
Index: InheritanceTestCase.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/inheritance/InheritanceTestCase.java,v
retrieving revision 1.4
retrieving revision 1.4.12.1
diff -u -r1.4 -r1.4.12.1
--- InheritanceTestCase.java 24 May 2002 18:11:12 -0000 1.4
+++ InheritanceTestCase.java 8 Oct 2002 20:33:24 -0000 1.4.12.1
@@ -108,7 +108,7 @@
public void testInheritanceTest() {
test.wsdl.inheritance.InheritancePortType binding;
try {
- binding = new InheritanceTestLocator().getInheritanceTest();
+ binding = new InheritancePortTypeServiceLocator().getInheritanceTest();
} catch (ServiceException jre) {
throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
}