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 gd...@apache.org on 2001/04/27 00:57:29 UTC
cvs commit: xml-axis/java/src/org/apache/axis/client HTTPMessage.java HTTPCall.java
gdaniels 01/04/26 15:57:29
Modified: java/src/org/apache/axis/client HTTPMessage.java
HTTPCall.java
Log:
Various changes for new message model.
Revision Changes Path
1.26 +11 -11 xml-axis/java/src/org/apache/axis/client/HTTPMessage.java
Index: HTTPMessage.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/HTTPMessage.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- HTTPMessage.java 2001/03/31 00:53:09 1.25
+++ HTTPMessage.java 2001/04/26 22:57:28 1.26
@@ -58,11 +58,9 @@
import java.util.* ;
import org.apache.axis.* ;
-import org.apache.axis.message.RPCArg;
-import org.apache.axis.message.RPCBody;
-import org.apache.axis.message.SOAPBody;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.SOAPHeader;
+import org.apache.axis.message.DebugHeader;
import org.apache.axis.handlers.* ;
import org.apache.axis.registries.* ;
import org.apache.axis.utils.* ;
@@ -78,6 +76,7 @@
* connect to the server and send a Messaging SOAP request.
*
* @author Doug Davis (dug@us.ibm.com)
+ * @author Glen Daniels (gdaniels@macromedia.com)
*/
@@ -156,11 +155,12 @@
if ( inMsg.getCurrentForm().equals("SOAPEnvelope") )
reqEnv = (SOAPEnvelope) inMsg.getAs("SOAPEnvelope");
else {
- reqEnv = new SOAPEnvelope();
+ reqEnv = (SOAPEnvelope) inMsg.getAs("SOAPEnvelope");
if ( encodingStyleURI != null )
reqEnv.setEncodingStyleURI( encodingStyleURI );
- SOAPBody body = new SOAPBody( (Document) inMsg.getAs("Document") );
- reqEnv.addBody( body );
+
+ //SOAPBody body = new SOAPBody( (Document) inMsg.getAs("Document") );
+ //!!!reqEnv.addBodyElement( body );
}
Handler client = null ;
@@ -204,10 +204,7 @@
}
if ( Debug.getDebugLevel() > 0 ) {
- Element elem = doc.createElementNS( Constants.URI_DEBUG, "d:Debug" );
- elem.setAttribute( "xmlns:d", Constants.URI_DEBUG );
- elem.appendChild( doc.createTextNode( ""+Debug.getDebugLevel() ) );
- SOAPHeader header = new SOAPHeader(elem);
+ DebugHeader header = new DebugHeader(Debug.getDebugLevel());
header.setActor( Constants.URI_NEXT_ACTOR );
reqEnv.addHeader( header );
@@ -232,7 +229,9 @@
Message resMsg = msgContext.getResponseMessage();
SOAPEnvelope resEnv = (SOAPEnvelope) resMsg.getAs( "SOAPEnvelope" );
- SOAPBody resBody = resEnv.getFirstBody();
+ mc.setResponseMessage(resMsg);
+ /*
+ SOAPBody resBody = null; //resEnv.getFirstBody();
doc = XMLUtils.newDocument();
Element root = resBody.getRoot();
@@ -242,6 +241,7 @@
doc.appendChild( root );
mc.setResponseMessage( new Message(doc, "Document") );
+ */
Debug.Print( 1, "Exit: HTTPMessage.invoke" );
}
1.19 +51 -15 xml-axis/java/src/org/apache/axis/client/HTTPCall.java
Index: HTTPCall.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/HTTPCall.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- HTTPCall.java 2001/03/30 19:26:14 1.18
+++ HTTPCall.java 2001/04/26 22:57:28 1.19
@@ -56,9 +56,9 @@
package org.apache.axis.client ;
import java.util.* ;
-import org.apache.axis.message.RPCArg;
-import org.apache.axis.message.RPCBody;
-import org.apache.axis.message.SOAPBody;
+import org.apache.axis.encoding.ServiceDescription;
+import org.apache.axis.message.RPCElement;
+import org.apache.axis.message.RPCParam;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.SOAPHeader;
import org.apache.axis.handlers.* ;
@@ -69,12 +69,16 @@
import org.w3c.dom.* ;
+import java.io.*;
+import org.apache.axis.encoding.SerializationContext;
+
/**
* This class is meant to be the interface that client/requestor code
* uses to access the SOAP server. In this class, we'll use HTTP to
* connect to the server and send an RPC SOAP request.
*
* @author Doug Davis (dug@us.ibm.com)
+ * @author Glen Daniels (gdaniels@macromedia.com)
*/
@@ -87,6 +91,7 @@
private String userID ;
private String passwd ;
private String encodingStyleURI ;
+ private ServiceDescription serviceDesc;
// For testing
public boolean doLocal = false ;
@@ -134,6 +139,11 @@
public String getEncodingStyleURI() {
return( encodingStyleURI );
}
+
+ public void setServiceDescription(ServiceDescription serviceDesc)
+ {
+ this.serviceDesc = serviceDesc;
+ }
public static Object invoke(String url, String act, String m, Object[] args)
throws AxisFault
@@ -141,15 +151,16 @@
HTTPCall ahc = new HTTPCall();
ahc.setURL( url );
ahc.setAction( act );
- return( ahc.invoke( m, args ) );
+ return( ahc.invoke( null, m, args ) );
}
- public Object invoke( String method, Object[] args ) throws AxisFault {
- RPCBody body = new RPCBody( method, args );
+ public Object invoke( String namespace, String method, Object[] args ) throws AxisFault {
+ RPCElement body = new RPCElement( method, args );
+ body.setNamespaceURI(namespace);
return( invoke( body ) );
}
- public Object invoke( RPCBody body ) throws AxisFault {
+ public Object invoke( RPCElement body ) throws AxisFault {
// quote = HTTPCall.invoke( "getQuote", Object[] { "IBM" } );
Debug.Print( 1, "Enter: HTTPCall.invoke" );
SOAPEnvelope reqEnv = new SOAPEnvelope();
@@ -160,22 +171,33 @@
MessageContext msgContext = new MessageContext( reqMsg );
Vector resBodies = null ;
Vector resArgs = null ;
- RPCArg arg = null ;
Object result = null ;
hMsg.setUserID( userID );
hMsg.setPassword( passwd );
if ( encodingStyleURI != null )
reqEnv.setEncodingStyleURI( encodingStyleURI );
+
+ reqEnv.setServiceDescription(serviceDesc);
+ reqEnv.setMessageType(ServiceDescription.REQUEST);
+
+ reqEnv.addBodyElement(body);
// for testing - skip HTTP layer
hMsg.doLocal = this.doLocal ;
-
+
if ( body.getPrefix() == null ) body.setPrefix( "m" );
if ( body.getNamespaceURI() == null ) body.setNamespaceURI( action );
- reqEnv.addBody( body.getAsSOAPBody() );
try {
+ SerializationContext ctx = new SerializationContext(new PrintWriter(System.out));
+ reqEnv.output(ctx);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ try {
hMsg.invoke( msgContext );
}
catch( Exception e ) {
@@ -185,12 +207,26 @@
}
resMsg = msgContext.getResponseMessage();
- Document doc = (Document) resMsg.getAs("Document");
+
+ if (resMsg == null)
+ throw new AxisFault(new Exception("Null response message!"));
+
+ resEnv = (SOAPEnvelope)resMsg.getAs("SOAPEnvelope");
+
+ /** This must happen before deserialization...
+ */
+ resEnv.setServiceDescription(serviceDesc);
+ resEnv.setMessageType(ServiceDescription.RESPONSE);
+
+ body = (RPCElement)resEnv.getFirstBody();
+ resArgs = body.getParams();
+
+ if (resArgs != null && resArgs.size() > 0) {
+ RPCParam param = (RPCParam)resArgs.get(0);
+ System.out.println("Got param '" + param.getName() + "' = " + param.getValue());
+ result = param.getValue();
+ }
- body = new RPCBody( doc.getDocumentElement() );
- resArgs = body.getArgs();
- if ( resArgs != null && resArgs.size() > 0 )
- result = (String) ((RPCArg) resArgs.get(0)).getValue() ;
Debug.Print( 1, "Exit: HTTPCall.invoke" );
return( result );
}