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 aj...@apache.org on 2005/02/22 15:44:30 UTC
svn commit: r154854 - in webservices/axis/trunk/java/modules/samples/src:
java/interop/doclit/InteropStub.java
java/interop/doclit/SOAPStructEncoder.java
java/org/apache/axis/testUtils/SimpleTypeEncodingUtils.java jsp/
test/interop/ test/interop/doclit/ test/interop/doclit/InteropStubTest.java
Author: ajith
Date: Tue Feb 22 06:44:24 2005
New Revision: 154854
URL: http://svn.apache.org/viewcvs?view=rev&rev=154854
Log:
Adding the interop client and the test code
Added:
webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/InteropStub.java
webservices/axis/trunk/java/modules/samples/src/jsp/
webservices/axis/trunk/java/modules/samples/src/test/interop/
webservices/axis/trunk/java/modules/samples/src/test/interop/doclit/
webservices/axis/trunk/java/modules/samples/src/test/interop/doclit/InteropStubTest.java
Modified:
webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/SOAPStructEncoder.java
webservices/axis/trunk/java/modules/samples/src/java/org/apache/axis/testUtils/SimpleTypeEncodingUtils.java
Added: webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/InteropStub.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/InteropStub.java?view=auto&rev=154854
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/InteropStub.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/InteropStub.java Tue Feb 22 06:44:24 2005
@@ -0,0 +1,202 @@
+package interop.doclit;
+
+import org.apache.axis.addressing.AddressingConstants;
+import org.apache.axis.addressing.EndpointReference;
+import org.apache.axis.clientapi.Call;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.om.OMNamespace;
+import org.apache.axis.om.OMText;
+import org.apache.axis.om.SOAPBody;
+import org.apache.axis.om.SOAPEnvelope;
+import org.apache.axis.testUtils.SimpleTypeEncodingUtils;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+public class InteropStub {
+
+ private static final String INTEROP_NS_URI = "http://soapinterop.org/xsd";
+ private static final String INTEROP_PREFIX = "itop";
+
+ private OMFactory factory ;
+ //private XMLOutputFactory outputFactory;
+ private OMNamespace interopNS;
+ private String endpointURL;
+ private String SOAPAction;
+
+ public String getSOAPAction() {
+ return SOAPAction;
+ }
+
+ public void setSOAPAction(String SOAPAction) {
+ this.SOAPAction = SOAPAction;
+ }
+
+
+ public InteropStub(String endpointURL) {
+ this.endpointURL = endpointURL;
+ factory= OMFactory.newInstance();
+
+ //outputFactory = XMLOutputFactory.newInstance();
+ this.interopNS = this.factory.createOMNamespace(INTEROP_NS_URI,INTEROP_PREFIX);
+
+ }
+
+ private SOAPEnvelope getEmptyEnvelop(){
+ return factory.getDefaultEnvelope();
+ }
+
+ public SOAPStruct echoStruct(SOAPStruct inputEchoStruct){
+ try{
+
+ OMElement echoStructElementNode = factory.createOMElement("echoStructParam",interopNS);
+
+ OMElement echoStructVarFloatElement = factory.createOMElement("varFloat",interopNS);
+ echoStructVarFloatElement.addChild(factory.createText(inputEchoStruct.getVarFloat() +""));
+ echoStructElementNode.addChild(echoStructVarFloatElement);
+
+ OMElement echoStructVarIntElementNode = factory.createOMElement("varInt",interopNS);
+ echoStructVarIntElementNode.addChild(factory.createText(inputEchoStruct.getVarInt() +""));
+ echoStructElementNode.addChild(echoStructVarIntElementNode);
+
+ OMElement echoStructVarStringElementNode = factory.createOMElement("varString",interopNS);
+ echoStructVarStringElementNode.addChild(factory.createText(inputEchoStruct.getVarString()));
+ echoStructElementNode.addChild(echoStructVarStringElementNode);
+
+ SOAPEnvelope sendEnvelope = getEmptyEnvelop();
+ sendEnvelope.getBody().addChild(echoStructElementNode);
+
+ SOAPEnvelope returnEnvelope = getSyncResult(sendEnvelope);
+
+ SOAPBody SOAPBody = returnEnvelope.getBody();
+ if (SOAPBody.hasFault()){
+ throw new AxisFault("SOAP Fault",SOAPBody.getFault().getException());
+ }
+
+ OMElement elt = (OMElement)SOAPBody.getChildWithName(new QName(INTEROP_NS_URI,"echoStructReturn"));
+ if (elt==null){
+ throw new AxisFault("Return element not found");
+ }
+
+
+ XMLStreamReader pullParser = elt.getPullParser(false);
+ pullParser.next();
+ SOAPStruct soapStructure = (SOAPStruct)new SOAPStructEncoder().deSerialize(pullParser);
+
+ return soapStructure;
+
+ } catch (AxisFault axisFault) {
+ axisFault.printStackTrace();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ return null;
+
+
+ }
+
+
+ public String[] echoStringArray(String[] input){
+ try {
+
+ OMElement echoStringArrayParamElementNode = factory.createOMElement("echoStringArrayParam",interopNS);
+ OMElement echoStringArrayElement;
+ for (int i = 0; i < input.length; i++) {
+ echoStringArrayElement = factory.createOMElement("string",interopNS);
+ echoStringArrayParamElementNode.addChild(echoStringArrayElement);
+ echoStringArrayElement.addChild(factory.createText(input[i]));
+ }
+
+ SOAPEnvelope sendEnvelope = getEmptyEnvelop();
+ sendEnvelope.getBody().addChild(echoStringArrayParamElementNode);
+
+ SOAPEnvelope returnEnvelope = getSyncResult(sendEnvelope);
+
+
+ SOAPBody SOAPBody = returnEnvelope.getBody();
+ if (SOAPBody.hasFault()){
+ throw new AxisFault("SOAP Fault",SOAPBody.getFault().getException());
+ }
+
+ OMElement elt = (OMElement)SOAPBody.getChildWithName(new QName(INTEROP_NS_URI,"echoStringArrayReturn"));
+ if (elt==null){
+ throw new AxisFault("Return element not found");
+ }
+
+ return SimpleTypeEncodingUtils.deserializeStringArray(elt.getPullParser(true));
+
+
+ } catch (AxisFault axisFault) {
+ axisFault.printStackTrace();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public String echoString(String input){
+ try {
+
+ OMElement echoStringParamElementNode = factory.createOMElement("echoStringParam",interopNS);
+ OMText echoStringTextNode = factory.createText(echoStringParamElementNode,input);
+ echoStringParamElementNode.addChild(echoStringTextNode);
+
+ SOAPEnvelope sendEnvelope = getEmptyEnvelop();
+ sendEnvelope.getBody().addChild(echoStringParamElementNode);
+
+ SOAPEnvelope returnEnvelope = getSyncResult(sendEnvelope);
+
+ SOAPBody SOAPBody = returnEnvelope.getBody();
+ if (SOAPBody.hasFault()){
+ throw new AxisFault("SOAP Fault",SOAPBody.getFault().getException());
+ }
+
+ OMElement elt = (OMElement)SOAPBody.getChildWithName(new QName(INTEROP_NS_URI,"echoStringReturn"));
+ if (elt==null){
+ throw new AxisFault("Return element not found");
+ }
+
+ return elt.getFirstChild().getValue();
+
+ } catch (AxisFault axisFault) {
+ axisFault.printStackTrace();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+
+ private SOAPEnvelope getSyncResult(SOAPEnvelope env) throws AxisFault {
+ EndpointReference targetEPR = new EndpointReference(AddressingConstants.WSA_TO,
+ this.endpointURL);
+ Call call = new Call();
+ call.setTo(targetEPR);
+ if (SOAPAction!=null){
+ call.setAction(SOAPAction);
+ }
+ return call.sendReceive(env);
+
+ }
+
+
+}
Modified: webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/SOAPStructEncoder.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/SOAPStructEncoder.java?view=diff&r1=154853&r2=154854
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/SOAPStructEncoder.java (original)
+++ webservices/axis/trunk/java/modules/samples/src/java/interop/doclit/SOAPStructEncoder.java Tue Feb 22 06:44:24 2005
@@ -15,16 +15,16 @@
*/
package interop.doclit;
-import javax.xml.stream.XMLStreamConstants;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
import org.apache.axis.engine.AxisFault;
import org.apache.axis.om.OMException;
import org.apache.axis.testUtils.Encoder;
import org.apache.axis.testUtils.SimpleTypeEncodingUtils;
import org.xml.sax.ContentHandler;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
public class SOAPStructEncoder implements Encoder {
public static final String URI = "http://soapinterop.org/xsd";
@@ -60,7 +60,7 @@
}else if(VAR_FLOAT.equals(localName)){
struct.setVarFloat(SimpleTypeEncodingUtils.deserializeFloat(xpp));
}else{
- throw new AxisFault("Unknown elemnt "+ localName);
+ throw new AxisFault("Unknown element "+ localName);
}
}
if (XMLStreamConstants.END_ELEMENT == event) {
Modified: webservices/axis/trunk/java/modules/samples/src/java/org/apache/axis/testUtils/SimpleTypeEncodingUtils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/java/org/apache/axis/testUtils/SimpleTypeEncodingUtils.java?view=diff&r1=154853&r2=154854
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/java/org/apache/axis/testUtils/SimpleTypeEncodingUtils.java (original)
+++ webservices/axis/trunk/java/modules/samples/src/java/org/apache/axis/testUtils/SimpleTypeEncodingUtils.java Tue Feb 22 06:44:24 2005
@@ -96,11 +96,13 @@
event = xpp.next();
}
event = xpp.next();
+ System.out.println("Element name ----" + xpp.getLocalName());
while (XMLStreamConstants.END_ELEMENT != event) {
if (XMLStreamConstants.CHARACTERS == event && !xpp.isWhiteSpace()) {
value = xpp.getText();
}
event = xpp.next();
+ System.out.println("Element name ----" + xpp.getLocalName());
}
} catch (XMLStreamException e) {
throw AxisFault.makeFault(e);
Added: webservices/axis/trunk/java/modules/samples/src/test/interop/doclit/InteropStubTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/test/interop/doclit/InteropStubTest.java?view=auto&rev=154854
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/test/interop/doclit/InteropStubTest.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/test/interop/doclit/InteropStubTest.java Tue Feb 22 06:44:24 2005
@@ -0,0 +1,84 @@
+package interop.doclit;
+
+import junit.framework.TestCase;
+
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*
+*/
+public class InteropStubTest extends TestCase{
+
+// private static String ASP_NET_ENDPOINT = "http://mssoapinterop.org/asmx/wsdl/InteropTestDocLit.asmx";
+ private static String ASP_NET_ENDPOINT = "http://localhost:8081/asmx/wsdl/InteropTestDocLit.asmx";
+ private static String OPENLINK_ENDPOINT = "http://demo.openlinksw.com/r3/DocLit";
+
+
+ private void testEchoString(String endpoint,String soapAction){
+ InteropStub stub = new InteropStub(endpoint);
+ stub.setSOAPAction(soapAction==null?"":soapAction);
+ String echoValue = "Hello World";
+ assertEquals(stub.echoString(echoValue),echoValue);
+ }
+ private void testEchoStringArray(String endpoint,String soapAction){
+ InteropStub stub = new InteropStub(endpoint);
+ stub.setSOAPAction(soapAction==null?"":soapAction);
+ String[] echoValueArray = new String[20];
+ for (int i = 0; i < echoValueArray.length; i++) {
+ echoValueArray[i]="s"+i;
+ }
+ String[] returnEchoArray = stub.echoStringArray(echoValueArray);
+
+ //the elements are added in reverse order. So comparison must be
+ //inverted
+ int length = returnEchoArray.length;
+ for (int i = 0; i < length; i++) {
+ assertEquals(returnEchoArray[i],echoValueArray[length-1-i]);
+ }
+ }
+
+ private void testEchoStruct(String endpoint,String soapAction){
+ InteropStub stub = new InteropStub(endpoint);
+ stub.setSOAPAction(soapAction==null?"":soapAction);
+
+ SOAPStruct structToSend = new SOAPStruct();
+ structToSend.setVarFloat(new Float(22.22).floatValue());
+ structToSend.setVarInt(12);
+ structToSend.setVarString("Hello");
+
+ SOAPStruct returnStruct = stub.echoStruct(structToSend);
+
+ assertTrue(returnStruct.equals(structToSend));
+
+ }
+
+ public void testASPEndPoint(){
+// testEchoString(ASP_NET_ENDPOINT,"\"http://soapinterop.org/\"");
+// testEchoStringArray(ASP_NET_ENDPOINT,"\"http://soapinterop.org/\"");
+ testEchoStruct(ASP_NET_ENDPOINT,"\"http://soapinterop.org/\"");
+
+ }
+ public void testOpenlinkEndPoint(){
+ testEchoString(OPENLINK_ENDPOINT,null);
+
+ }
+
+// public static void main(String[] args) {
+// String x = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header></soapenv:Header><soapenv:Body><itop:echoStringParam xmlns:itop=\"http://soapinterop.org/xsd\">Hello World</itop:echoStringParam></soapenv:Body></soapenv:Envelope>";
+//
+// System.out.println(x);
+// System.out.println(x.getBytes().length);
+// }
+}