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 );
     }