You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by gd...@apache.org on 2005/04/18 19:17:12 UTC
cvs commit: ws-axis/java/test/wsdl/echo2 Echo2ServiceTestCase.java
gdaniels 2005/04/18 10:17:12
Modified: java/src/org/apache/axis/deployment/wsdd WSDDConstants.java
WSDDOperation.java WSDDParameter.java
java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
JavaStubWriter.java Utils.java
java/test/wsdl/echo2 Echo2ServiceTestCase.java
Log:
Flesh out echo2 test case to actually check the XML, and also make
it work.
Pass itemQName info through the generated Stub and also the WSDD
when appropriate, which allows the server to do the right thing when
serializing arrays.
This isn't 100% right yet, in that the xsi:type on the maxOccurs test for
echo2 shouldn't be "soapenc:Array", but it's close (and heck, .NET
ignores xsi:type attributes anyway... :))
NOTE : Checking this in without a successful all-tests run, because the
terra server (for test/wsdl/terra) seems broken - damned external
dependencies. :(
Revision Changes Path
1.36 +2 -0 ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDConstants.java
Index: WSDDConstants.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDConstants.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- WSDDConstants.java 22 Jun 2004 16:58:17 -0000 1.35
+++ WSDDConstants.java 18 Apr 2005 17:17:12 -0000 1.36
@@ -137,6 +137,8 @@
public static final String ATTR_LOCKED = "locked";
public static final String ATTR_RETQNAME = "returnQName";
public static final String ATTR_RETTYPE = "returnType";
+ public static final String ATTR_RETITEMQNAME = "returnItemQName";
+ public static final String ATTR_ITEMQNAME = "itemQName";
public static final String ATTR_MODE = "mode";
public static final String ATTR_INHEADER = "inHeader";
public static final String ATTR_OUTHEADER = "outHeader";
1.31 +14 -0 ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDOperation.java
Index: WSDDOperation.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDOperation.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- WSDDOperation.java 22 Jun 2004 16:58:18 -0000 1.30
+++ WSDDOperation.java 18 Apr 2005 17:17:12 -0000 1.31
@@ -84,6 +84,12 @@
desc.setReturnHeader(JavaUtils.isTrueExplicitly(retHStr));
}
+ String retItemQName = e.getAttribute(ATTR_RETITEMQNAME);
+ if (retItemQName != null && !retItemQName.equals("")) {
+ ParameterDesc param = desc.getReturnParamDesc();
+ param.setItemQName(XMLUtils.getQNameFromString(retItemQName, e));
+ }
+
String soapAction = e.getAttribute(ATTR_SOAPACTION);
if (soapAction != null) {
desc.setSoapAction(soapAction);
@@ -147,6 +153,14 @@
"CDATA",
context.qName2String(desc.getElementQName()));
}
+
+ QName retItemQName = desc.getReturnParamDesc().getItemQName();
+ if (retItemQName != null) {
+ attrs.addAttribute("", ATTR_RETITEMQNAME, ATTR_RETITEMQNAME,
+ "CDATA",
+ context.qName2String(retItemQName));
+ }
+
if (desc.getSoapAction() != null) {
attrs.addAttribute("", ATTR_SOAPACTION, ATTR_SOAPACTION, "CDATA", desc.getSoapAction());
}
1.19 +13 -2 ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDParameter.java
Index: WSDDParameter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/deployment/wsdd/WSDDParameter.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- WSDDParameter.java 25 Feb 2004 14:02:34 -0000 1.18
+++ WSDDParameter.java 18 Apr 2005 17:17:12 -0000 1.19
@@ -67,7 +67,12 @@
if (typeStr != null && !typeStr.equals("")) {
parameter.setTypeQName(XMLUtils.getQNameFromString(typeStr, e));
}
-
+
+ String itemQNameStr = e.getAttribute(ATTR_ITEMQNAME);
+ if (itemQNameStr != null && !itemQNameStr.equals("")) {
+ parameter.setItemQName(XMLUtils.getQNameFromString(itemQNameStr, e));
+ }
+
Element docElem = getChildElement(e, ELEM_WSDD_DOC);
if (docElem != null) {
WSDDDocumentation documentation = new WSDDDocumentation(docElem);
@@ -124,7 +129,13 @@
attrs.addAttribute("", ATTR_TYPE, ATTR_TYPE, "CDATA",
context.qName2String(typeQName));
}
-
+
+ QName itemQName = parameter.getItemQName();
+ if (itemQName != null) {
+ attrs.addAttribute("", ATTR_ITEMQNAME, ATTR_ITEMQNAME, "CDATA",
+ context.qName2String(itemQName));
+ }
+
context.startElement(getElementName(), attrs);
if (parameter.getDocumentation() != null) {
1.91 +17 -0 ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
Index: JavaDeployWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- JavaDeployWriter.java 21 Mar 2005 12:37:20 -0000 1.90
+++ JavaDeployWriter.java 18 Apr 2005 17:17:12 -0000 1.91
@@ -571,6 +571,16 @@
+ "\"");
}
+ Parameter retParam = params.returnParam;
+ if (retParam != null) {
+ QName returnItemQName = Utils.getItemQName(retParam.getType());
+ if (returnItemQName != null) {
+ pw.print(" returnItemQName=\"");
+ pw.print(Utils.genQNameAttributeString(returnItemQName, "tns"));
+ pw.print("\"");
+ }
+ }
+
if (SOAPAction != null) {
pw.print(" soapAction=\""
+ SOAPAction
@@ -629,6 +639,13 @@
pw.print(" outHeader=\"true\"");
}
+ QName itemQName = Utils.getItemQName(param.getType());
+ if (itemQName != null) {
+ pw.print(" itemQName=\"");
+ pw.print(Utils.genQNameAttributeString(itemQName, "tns"));
+ pw.print("\"");
+ }
+
pw.println("/>");
}
1.146 +16 -10 ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
Index: JavaStubWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -r1.145 -r1.146
--- JavaStubWriter.java 12 Apr 2005 22:18:16 -0000 1.145
+++ JavaStubWriter.java 18 Apr 2005 17:17:12 -0000 1.146
@@ -627,11 +627,8 @@
paramTypeText + ", " +
javaType +
isInHeader + ", " + isOutHeader + ");");
- TypeEntry te = p.getType();
- if (te instanceof DefinedElement) {
- te = te.getRefType();
- }
- QName itemQName = te.getItemQName();
+
+ QName itemQName = Utils.getItemQName(p.getType());
if (itemQName != null) {
pw.println(" param.setItemQName(" +
Utils.getNewQName(itemQName) + ");");
@@ -641,13 +638,14 @@
}
// set output type
- if (parameters.returnParam != null) {
+ Parameter returnParam = parameters.returnParam;
+ if (returnParam != null) {
// Get the QName for the return Type
- QName returnType = Utils.getXSIType(parameters.returnParam);
+ QName returnType = Utils.getXSIType(returnParam);
// Get the javaType
- String javaType = Utils.getParameterTypeName(parameters.returnParam);
+ String javaType = Utils.getParameterTypeName(returnParam);
if (javaType == null) {
javaType = "";
@@ -659,16 +657,24 @@
+ Utils.getNewQName(returnType) + ");");
pw.println(" oper.setReturnClass(" + javaType + ");");
- QName returnQName = parameters.returnParam.getQName();
+ QName returnQName = returnParam.getQName();
if (returnQName != null) {
pw.println(" oper.setReturnQName("
+ Utils.getNewQNameWithLastLocalPart(returnQName) + ");");
}
- if (parameters.returnParam.isOutHeader()) {
+ if (returnParam.isOutHeader()) {
pw.println(" oper.setReturnHeader(true);");
}
+
+ QName itemQName = Utils.getItemQName(returnParam.getType());
+ if (itemQName != null) {
+ pw.println(" param = oper.getReturnParamDesc();");
+ pw.println(" param.setItemQName(" +
+ Utils.getNewQName(itemQName) + ");");
+ }
+
} else {
pw.println(
" oper.setReturnType(org.apache.axis.encoding.XMLType.AXIS_VOID);");
1.93 +7 -0 ws-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java
Index: Utils.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -r1.92 -r1.93
--- Utils.java 8 Feb 2005 18:44:36 -0000 1.92
+++ Utils.java 18 Apr 2005 17:17:12 -0000 1.93
@@ -1298,4 +1298,11 @@
&& type.getNode().getLocalName().equals(
"attributeGroup"))));
}
+
+ public static QName getItemQName(TypeEntry te) {
+ if (te instanceof DefinedElement) {
+ te = te.getRefType();
+ }
+ return te.getItemQName();
+ }
} // class Utils
1.2 +31 -3 ws-axis/java/test/wsdl/echo2/Echo2ServiceTestCase.java
Index: Echo2ServiceTestCase.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/wsdl/echo2/Echo2ServiceTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Echo2ServiceTestCase.java 17 Apr 2005 02:25:53 -0000 1.1
+++ Echo2ServiceTestCase.java 18 Apr 2005 17:17:12 -0000 1.2
@@ -12,6 +12,10 @@
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import org.apache.axis.message.SOAPBody;
+import org.apache.axis.message.MessageElement;
+
+import java.util.List;
+import java.util.Iterator;
public class Echo2ServiceTestCase extends junit.framework.TestCase {
public Echo2ServiceTestCase(java.lang.String name) {
@@ -102,13 +106,37 @@
// Time out after a minute
binding.setTimeout(60000);
// Test operation
+ String [] args = new String[] {"one", "two", "", null};
java.lang.String[] value = null;
value = binding
- .echoArrayOfString_MaxOccursUnbounded(new String[]{"one", "two", "", null});
- // TBD - validate results
+ .echoArrayOfString_MaxOccursUnbounded(args);
+
+ // Validate results - NOTE: This checks the XML directly, so if
+ // any changes are made to the WSDL/code for this test, equivalent
+ // changes must be made in this code.
Service service = (Service)binding._getService();
SOAPBody body = (SOAPBody)service.getCall().getResponseMessage().getSOAPBody();
- System.out.println(body.toString());
+ MessageElement element;
+ QName responseQName = new QName("urn:echo2.wsdl.test", "echoArrayOfString_MaxOccursUnboundedResponse");
+ QName returnQName = new QName("", "return");
+ QName itemQName = new QName("", "varStringArray");
+ element = body.getChildElement(responseQName);
+ assertNotNull("Couldn't find response element", element);
+ element = element.getChildElement(returnQName);
+ assertNotNull("Couldn't find return element", element);
+ Iterator elements = element.getChildElements(itemQName);
+ assertNotNull("Couldn't find items", elements);
+ int count = 0;
+ while (elements.hasNext()) {
+ element = (MessageElement) elements.next();
+ count++;
+ }
+ assertEquals("Wrong # of items", 4, count);
+
+ // OK, now that we know the XML looked right, just for yuks check the values
+ for (int i = 0; i < value.length; i++) {
+ assertEquals("Item " + i + " didn't match!", args[i], value[i]);
+ }
}
public void test3Echo2EchoArrayOfString_SoapEncArray() throws Exception {