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 ja...@apache.org on 2001/02/12 02:11:18 UTC

cvs commit: xml-axis/java/src/org/apache/axis/transport/http HTTPDispatchHandler.java AxisServlet.java HTTPConstants.java

jacek       01/02/11 17:11:17

  Modified:    java/src/org/apache/axis Constants.java MessageContext.java
               java/src/org/apache/axis/client EchoClient.java
                        HTTPCall.java HTTPMessage.java
                        TransportRoutingClient.java
               java/src/org/apache/axis/handlers HTTPActionHandler.java
                        MsgDispatchHandler.java RPCDispatchHandler.java
                        Router.java ServiceHandler.java
                        SimpleAuthenticationHandler.java
                        SimpleAuthorizationHandler.java
               java/src/org/apache/axis/server SimpleAxisEngine.java
               java/src/org/apache/axis/transport/http AxisServlet.java
                        HTTPConstants.java
  Added:       java/src/org/apache/axis/transport/http
                        HTTPDispatchHandler.java
  Removed:     java/src/org/apache/axis/handlers HTTPDispatchHandler.java
  Log:
  More cleanup and constant shuffling and documentation updates.
  
  Revision  Changes    Path
  1.4       +0 -21     xml-axis/java/src/org/apache/axis/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Constants.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Constants.java	2001/02/10 04:39:53	1.3
  +++ Constants.java	2001/02/12 01:11:11	1.4
  @@ -64,27 +64,6 @@
     public static String HANDLER_REGISTRY = "HandlerRegistry" ;
     public static String SERVICE_REGISTRY = "ServiceRegistry" ;
   
  -  // MessageContext Property Names
  -  // (A hierarchical namespace is strongly suggested 
  -  //  in order to lower the chance for conflicts)
  -  //////////////////////////////////////////////////////////////////////////
  -  public static String MC_SVC_HANDLER   = "service.handler" ;   // Handler
  -  
  -  public static String MC_TARGET        = "service.target";
  -
  -  public static String MC_HTTP_STATUS_CODE    = "transport.http.statusCode" ;    
  -                                                              // Integer
  -  public static String MC_HTTP_STATUS_MESSAGE = "transport.http.statusMessage" ; 
  -                                                              // String
  -  public static String MC_TRANS_URL           = "transport.url" ;
  -                                                              // String
  -  // this can be put into MC_TRANS_SOAPACTION if more transports have it
  -  public static String MC_HTTP_SOAPACTION     = "transport.soapAction" ;      
  -                                                              // String
  -  
  -  public static String MC_USERID   = "user.id" ;              // String
  -  public static String MC_PASSWORD = "user.password" ;        // String
  -
     // Envelope Stuff
     //////////////////////////////////////////////////////////////////////////
     public static String NSPREFIX_SOAP_ENV   = "SOAP-ENV" ;
  
  
  
  1.8       +53 -0     xml-axis/java/src/org/apache/axis/MessageContext.java
  
  Index: MessageContext.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/MessageContext.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- MessageContext.java	2001/02/10 04:39:53	1.7
  +++ MessageContext.java	2001/02/12 01:11:11	1.8
  @@ -59,8 +59,27 @@
   import org.apache.axis.* ;
   
   /**
  + * Some more general docs will go here.
    *
  + * This class also contains constants for accessing some
  + * well-known properties. Using a hierarchical namespace is
  + * strongly suggested in order to lower the chance for
  + * conflicts.
  + *
  + * (These constants should be viewed as an explicit list of well
  + *  known and widely used context keys, there's nothing wrong
  + *  with directly using the key strings. This is the reason for
  + *  the hierarchical constant namespace.
  + *
  + *  Actually I think we might just list the keys in the docs and
  + *  provide no such constants since they create yet another
  + *  namespace, but we'd have no compile-time checks then. 
  + *
  + *  Whaddya think? - todo by Jacek)
  + *
  + *
    * @author Doug Davis (dug@us.ibm.com)
  + * @author Jacek Kopecky (jacek@idoox.com)
    */
   public class MessageContext {
       /**
  @@ -112,6 +131,40 @@
           outMessage = inMsg ;
       };
   
  +    /** Contains an instance of Handler, which is the
  +     *  ServiceContext and the entrypoint of this service.
  +     *
  +     *  (if it has been so configured - will our deployment
  +     *   tool do this by default?  - todo by Jacek)
  +     */
  +    public static String SVC_HANDLER         = "service.handler";
  +
  +    /** Contains a String that should uniquely identify the
  +     *  service that the current message is being sent to
  +     */
  +    public static String TARGET_SERVICE      = "service.target";
  +
  +
  +    /** This String is the URL that the message came to
  +     */
  +    public static String TRANS_URL           = "transport.url";
  +
  +    /** This String identifies the transport through which this
  +     *  message has come. This will be (todo) used for
  +     *  identifying the transport chain.
  +     */
  +    public static String TRANS_ID            = "transport.id";
  +
  +   
  +    /** A String with the user's ID (if available)
  +     */
  +    public static String USERID              = "user.id";
  +
  +    /** A String with the user's password (if available)
  +     */
  +    public static String PASSWORD            = "user.password";
  +
  +   
       public Object getProperty(String propName) {
           if ( bag == null ) return( null );
           return( bag.get(propName) );
  
  
  
  1.12      +1 -1      xml-axis/java/src/org/apache/axis/client/EchoClient.java
  
  Index: EchoClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/EchoClient.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- EchoClient.java	2001/02/10 04:39:54	1.11
  +++ EchoClient.java	2001/02/12 01:11:12	1.12
  @@ -121,7 +121,7 @@
                   msgContext.setIncomingMessage(message);
                   
                   // This is fixed, as this client tightly binds to the echo service.
  -                msgContext.setProperty(Constants.MC_TARGET, "EchoService");
  +                msgContext.setProperty(MessageContext.TARGET_SERVICE, "EchoService");
                   engine.init();
                   engine.invoke(msgContext);
                   
  
  
  
  1.9       +7 -5      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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- HTTPCall.java	2001/02/10 04:39:54	1.8
  +++ HTTPCall.java	2001/02/12 01:11:12	1.9
  @@ -63,6 +63,8 @@
   import org.apache.axis.handlers.* ;
   import org.apache.axis.utils.* ;
   import org.apache.axis.* ;
  +import org.apache.axis.transport.http.HTTPConstants;
  +import org.apache.axis.transport.http.HTTPDispatchHandler;
   
   /**
    *
  @@ -130,7 +132,7 @@
       RPCBody              body   = new RPCBody( method, args );
       SOAPEnvelope         reqEnv = new SOAPEnvelope();
       SOAPEnvelope         resEnv = null ;
  -    HTTPDispatchHandler  client = new HTTPDispatchHandler();
  +    Handler              client = new HTTPDispatchHandler();
       Message              reqMsg = new Message( reqEnv, "SOAPEnvelope" );
       Message              resMsg = null ;
       MessageContext       msgContext = new MessageContext( reqMsg );
  @@ -156,12 +158,12 @@
         reqEnv.addHeader( header );
       }
   
  -    msgContext.setProperty( Constants.MC_TRANS_URL, url );
  -    msgContext.setProperty( Constants.MC_HTTP_SOAPACTION, action );
  +    msgContext.setProperty( MessageContext.TRANS_URL, url );
  +    msgContext.setProperty( HTTPConstants.MC_HTTP_SOAPACTION, action );
       if ( userID != null ) {
  -      msgContext.setProperty( Constants.MC_USERID, userID );
  +      msgContext.setProperty( MessageContext.USERID, userID );
         if ( passwd != null )
  -        msgContext.setProperty( Constants.MC_PASSWORD, passwd );
  +        msgContext.setProperty( MessageContext.PASSWORD, passwd );
       }
       try {
         client.init();
  
  
  
  1.6       +5 -3      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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HTTPMessage.java	2001/02/10 04:39:54	1.5
  +++ HTTPMessage.java	2001/02/12 01:11:13	1.6
  @@ -63,6 +63,8 @@
   import org.apache.axis.handlers.* ;
   import org.apache.axis.* ;
   import org.apache.axis.utils.* ;
  +import org.apache.axis.transport.http.HTTPConstants;
  +import org.apache.axis.transport.http.HTTPDispatchHandler;
   
   /**
    *
  @@ -114,7 +116,7 @@
       Element              root = doc.getDocumentElement();
       SOAPBody             reqBody = new SOAPBody( root );
       SOAPEnvelope         reqEnv = new SOAPEnvelope();
  -    HTTPDispatchHandler  client = new HTTPDispatchHandler();
  +    Handler              client = new HTTPDispatchHandler();
       Message              reqMsg = new Message( reqEnv, "SOAPEnvelope" );
       MessageContext       msgContext = new MessageContext( reqMsg );
   
  @@ -125,8 +127,8 @@
         // Debug.Print( 1, (String) reqMsg.getAs("String") );
       // }
   
  -    msgContext.setProperty( Constants.MC_TRANS_URL, url );
  -    msgContext.setProperty( Constants.MC_HTTP_SOAPACTION, action );
  +    msgContext.setProperty( MessageContext.TRANS_URL, url );
  +    msgContext.setProperty( HTTPConstants.MC_HTTP_SOAPACTION, action );
       try {
         client.init();
         client.invoke( msgContext );
  
  
  
  1.3       +5 -4      xml-axis/java/src/org/apache/axis/client/TransportRoutingClient.java
  
  Index: TransportRoutingClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/TransportRoutingClient.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TransportRoutingClient.java	2001/02/10 04:39:54	1.2
  +++ TransportRoutingClient.java	2001/02/12 01:11:13	1.3
  @@ -61,11 +61,12 @@
   
   import org.apache.axis.*;
   import org.apache.axis.server.SimpleAxisEngine;
  +import org.apache.axis.transport.http.HTTPConstants;
   
   /** This is a quick in-memory client to demonstrate how transport-dependent
    * routing works.  It pretends to be the AxisServlet with a SOAPAction header
    * of "EchoService".  This ends up calling the AxisServlet chain, which
  - * sets the new TARGET to be the value of the SOAPAction header, and then
  + * sets the new TARGET_SERVICE to be the value of the SOAPAction header, and then
    * uses the Router handler to dispatch to the service.
    *
    * @author Glen Daniels (gdaniels@allaire.com)
  @@ -93,14 +94,14 @@
               Message message = new Message(msg, "String");
               msgContext.setIncomingMessage(message);
               
  -            /** The TARGET is "AxisServlet"
  +            /** The transport is http.
                */
  -            msgContext.setProperty(Constants.MC_TARGET, "AxisServlet");
  +            msgContext.setProperty(MessageContext.TRANS_ID, HTTPConstants.TRANSPORT_ID);
               
               /** If we were a real servlet, we might have made the SOAPAction
                * HTTP header available like this...
                */
  -            msgContext.setProperty(Constants.MC_HTTP_SOAPACTION, "EchoService");
  +            msgContext.setProperty(HTTPConstants.MC_HTTP_SOAPACTION, "EchoService");
   
               engine.init();
               engine.invoke(msgContext);
  
  
  
  1.3       +5 -4      xml-axis/java/src/org/apache/axis/handlers/HTTPActionHandler.java
  
  Index: HTTPActionHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/HTTPActionHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HTTPActionHandler.java	2001/02/11 22:07:17	1.2
  +++ HTTPActionHandler.java	2001/02/12 01:11:14	1.3
  @@ -57,14 +57,15 @@
   import org.apache.axis.*;
   import org.apache.axis.registries.SimpleServiceRegistry;
   import org.apache.axis.utils.Debug;
  +import org.apache.axis.transport.http.HTTPConstants;
   
  -/** An <code>HTTPActionHandler</code> simply sets the context's TARGET
  +/** An <code>HTTPActionHandler</code> simply sets the context's TARGET_SERVICE
    * property from the HTTPAction property.  We expect there to be a
    * Router on the chain after us, to dispatch to the service named in
    * the SOAPAction.
    * 
    * In the real world, this might do some more complex mapping of
  - * SOAPAction to a TARGET.
  + * SOAPAction to a TARGET_SERVICE.
    * 
    * @author Glen Daniels (gdaniels@allaire.com)
    * @author Doug Davis (dug@us.ibm.com)
  @@ -74,11 +75,11 @@
       public void invoke(MessageContext msgContext) throws AxisFault
       {
           Debug.Print( 1, "Enter: HTTPActionHandler::invoke" );
  -        String action = (String)msgContext.getProperty(Constants.MC_HTTP_SOAPACTION);
  +        String action = (String)msgContext.getProperty(HTTPConstants.MC_HTTP_SOAPACTION);
           if (action == null)
               throw new AxisFault(new NullPointerException("HTTPActionHandler: No HTTPAction property in context!"));
   
  -        msgContext.setProperty(Constants.MC_TARGET, action);
  +        msgContext.setProperty(MessageContext.TARGET_SERVICE, action);
           Debug.Print( 1, "Exit : HTTPActionHandler::invoke" );
       }
   
  
  
  
  1.4       +1 -1      xml-axis/java/src/org/apache/axis/handlers/MsgDispatchHandler.java
  
  Index: MsgDispatchHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/MsgDispatchHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MsgDispatchHandler.java	2001/02/11 22:07:17	1.3
  +++ MsgDispatchHandler.java	2001/02/12 01:11:14	1.4
  @@ -80,7 +80,7 @@
       /* Find the service we're invoking so we can grab it's options */
       /***************************************************************/
       Handler service ;
  -    service = (Handler) msgContext.getProperty( Constants.MC_SVC_HANDLER );
  +    service = (Handler) msgContext.getProperty( MessageContext.SVC_HANDLER );
   
       /* Now get the service (RPC) specific info  */
       /********************************************/
  
  
  
  1.10      +1 -1      xml-axis/java/src/org/apache/axis/handlers/RPCDispatchHandler.java
  
  Index: RPCDispatchHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/RPCDispatchHandler.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- RPCDispatchHandler.java	2001/02/10 04:39:55	1.9
  +++ RPCDispatchHandler.java	2001/02/12 01:11:15	1.10
  @@ -73,7 +73,7 @@
       /* Find the service we're invoking so we can grab it's options */
       /***************************************************************/
       Handler service ;
  -    service = (Handler) msgContext.getProperty( Constants.MC_SVC_HANDLER );
  +    service = (Handler) msgContext.getProperty( MessageContext.SVC_HANDLER );
   
       /* Now get the service (RPC) specific info  */
       /********************************************/
  
  
  
  1.3       +7 -7      xml-axis/java/src/org/apache/axis/handlers/Router.java
  
  Index: Router.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/Router.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Router.java	2001/02/11 22:07:18	1.2
  +++ Router.java	2001/02/12 01:11:15	1.3
  @@ -59,7 +59,7 @@
   import org.apache.axis.utils.Debug;
   
   /** A <code>Router</code> is a Handler which has only one purpose in life:
  - * to look up the TARGET property in the passed MessageContext, then look
  + * to look up the TARGET_SERVICE property in the passed MessageContext, then look
    * up a Handler under that name in the ServiceRegistry.  Then it passes
    * the MessageContext off to that Handler.
    * 
  @@ -75,7 +75,7 @@
           if (registry == null)
               throw new AxisFault(new NullPointerException("Router: No registry property in context!"));
           
  -        String target = (String)msgContext.getProperty(Constants.MC_TARGET);
  +        String target = (String)msgContext.getProperty(MessageContext.TARGET_SERVICE);
           if (target == null)
               throw new AxisFault(new NullPointerException("Router: No target property in context!"));
           
  @@ -85,11 +85,11 @@
               throw new AxisFault(new Exception("Router: Couldn't find service '" + target + "' in the registry!"));
           
           // Make sure next dispatch, if any, is clean so we don't loop back.
  -        msgContext.clearProperty(Constants.MC_TARGET);
  +        msgContext.clearProperty(MessageContext.TARGET_SERVICE);
           
           h.invoke(msgContext);
   
  -        msgContext.setProperty(Constants.MC_TARGET, target);
  +        msgContext.setProperty(MessageContext.TARGET_SERVICE, target);
           Debug.Print( 1, "Exit : Router::invoke" );
       }
   
  @@ -98,16 +98,16 @@
           Debug.Print( 1, "Enter: Router::undo" );
           SimpleServiceRegistry registry = (SimpleServiceRegistry)msgContext.getProperty(Constants.SERVICE_REGISTRY);
           
  -        String target = (String)msgContext.getProperty(Constants.MC_TARGET);
  +        String target = (String)msgContext.getProperty(MessageContext.TARGET_SERVICE);
           
           Handler h = registry.find( target );
   
           // Make sure next dispatch, if any, is clean so we don't loop back.
  -        msgContext.clearProperty(Constants.MC_TARGET);
  +        msgContext.clearProperty(MessageContext.TARGET_SERVICE);
           
           h.undo(msgContext);
   
  -        msgContext.setProperty(Constants.MC_TARGET, target);
  +        msgContext.setProperty(MessageContext.TARGET_SERVICE, target);
           Debug.Print( 1, "Exit: Router::undo" );
       }
   }
  
  
  
  1.6       +1 -1      xml-axis/java/src/org/apache/axis/handlers/ServiceHandler.java
  
  Index: ServiceHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/ServiceHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ServiceHandler.java	2001/02/10 04:39:55	1.5
  +++ ServiceHandler.java	2001/02/12 01:11:15	1.6
  @@ -84,7 +84,7 @@
   
     public void invoke(MessageContext msgContext) throws AxisFault {
       // Let our "real" handler know where we are, so it can get options.
  -    msgContext.setProperty( Constants.MC_SVC_HANDLER, this );
  +    msgContext.setProperty( MessageContext.SVC_HANDLER, this );
           
       handler.invoke(msgContext);
     }
  
  
  
  1.5       +2 -2      xml-axis/java/src/org/apache/axis/handlers/SimpleAuthenticationHandler.java
  
  Index: SimpleAuthenticationHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/SimpleAuthenticationHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SimpleAuthenticationHandler.java	2001/02/11 22:07:18	1.4
  +++ SimpleAuthenticationHandler.java	2001/02/12 01:11:15	1.5
  @@ -75,8 +75,8 @@
     public void invoke(MessageContext msgContext) throws AxisFault {
       Debug.Print( 1, "Enter: SimpleAuthenticationHandler::invoke" );
       try {
  -      String  userID = (String) msgContext.getProperty( Constants.MC_USERID );
  -      String  passwd = (String) msgContext.getProperty( Constants.MC_PASSWORD );
  +      String  userID = (String) msgContext.getProperty( MessageContext.USERID );
  +      String  passwd = (String) msgContext.getProperty( MessageContext.PASSWORD );
         Debug.Print( 1, "User: " + userID );
         Debug.Print( 2, "Pass: " + passwd );
   
  
  
  
  1.6       +3 -2      xml-axis/java/src/org/apache/axis/handlers/SimpleAuthorizationHandler.java
  
  Index: SimpleAuthorizationHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/SimpleAuthorizationHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SimpleAuthorizationHandler.java	2001/02/11 22:07:18	1.5
  +++ SimpleAuthorizationHandler.java	2001/02/12 01:11:15	1.6
  @@ -60,6 +60,7 @@
   import org.apache.axis.* ;
   import org.apache.axis.utils.* ;
   import org.apache.axis.message.* ;
  +import org.apache.axis.transport.http.HTTPConstants;
   
   /**
    * Just a simple Authorization Handler to see if the user
  @@ -76,8 +77,8 @@
     public void invoke(MessageContext msgContext) throws AxisFault {
       Debug.Print( 1, "Enter: SimpleAuthenticationHandler::invoke" );
       try {
  -      String  userID = (String) msgContext.getProperty( Constants.MC_USERID );
  -      String  action = (String) msgContext.getProperty( Constants.MC_HTTP_SOAPACTION );
  +      String  userID = (String) msgContext.getProperty( MessageContext.USERID );
  +      String  action = (String) msgContext.getProperty( HTTPConstants.MC_HTTP_SOAPACTION );
   
         Debug.Print( 1, "User: " + userID );
         Debug.Print( 1, "Action: " + action );
  
  
  
  1.17      +3 -3      xml-axis/java/src/org/apache/axis/server/SimpleAxisEngine.java
  
  Index: SimpleAxisEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/SimpleAxisEngine.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SimpleAxisEngine.java	2001/02/11 22:07:20	1.16
  +++ SimpleAxisEngine.java	2001/02/12 01:11:16	1.17
  @@ -115,11 +115,11 @@
           */
           msgContext.setProperty(Constants.SERVICE_REGISTRY, sr);
   
  -        /** We must have a TARGET to continue.  This tells us which Handler to
  +        /** We must have a TARGET_SERVICE to continue.  This tells us which Handler to
           * pull from the registry and call.  The Transport Listener is responsible
           * for making sure this gets set, and if it isn't, we FAIL.
           */
  -        String target = (String) msgContext.getProperty( Constants.MC_TARGET );
  +        String target = (String) msgContext.getProperty( MessageContext.TARGET_SERVICE );
           if ( target == null )
               throw new AxisFault("Server.NoTargetConfigured",
                   "AxisEngine: Couldn't find a target property in the MessageContext!",
  @@ -135,7 +135,7 @@
           }
   
           // Clear this for the next round of dispatch, if any.
  -        msgContext.clearProperty( Constants.MC_TARGET );
  +        msgContext.clearProperty( MessageContext.TARGET_SERVICE );
   
           h.init();   // ???
           try {
  
  
  
  1.4       +6 -4      xml-axis/java/src/org/apache/axis/transport/http/AxisServlet.java
  
  Index: AxisServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/AxisServlet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AxisServlet.java	2001/02/10 04:39:59	1.3
  +++ AxisServlet.java	2001/02/12 01:11:17	1.4
  @@ -108,13 +108,15 @@
       MessageContext    msgContext = new MessageContext();
       Message           msg        = new Message( req, "ServletRequest" );
   
  +    msgContext.setProperty(MessageContext.TRANS_ID, HTTPConstants.TRANSPORT_ID);
  +    
       msgContext.setIncomingMessage( msg );
       
       /** Set the target which tells the engine where to dispatch.  In the
        * real world, this would probably be gotten from the servlet
        * configuration.
        */
  -    msgContext.setProperty(Constants.MC_TARGET, Constants.SERVLET_TARGET);
  +    msgContext.setProperty(MessageContext.TARGET_SERVICE, Constants.SERVLET_TARGET);
       
   
       /* Save the SOAPAction header in the MessageContext bag - this will */
  @@ -131,7 +133,7 @@
       tmp = (String) req.getHeader( HTTPConstants.HEADER_SOAP_ACTION );
       if ( tmp != null && "".equals(tmp) )
         tmp = req.getContextPath(); // Is this right?
  -    if ( tmp != null ) msgContext.setProperty( Constants.MC_HTTP_SOAPACTION, tmp );
  +    if ( tmp != null ) msgContext.setProperty( HTTPConstants.MC_HTTP_SOAPACTION, tmp );
   
       tmp = (String) req.getHeader( HTTPConstants.HEADER_AUTHORIZATION );
       if ( tmp != null ) tmp = tmp.trim();
  @@ -143,12 +145,12 @@
         i = tmp.indexOf( ':' );
         if ( i == -1 ) user = tmp ;
         else           user = tmp.substring( 0, i);
  -      msgContext.setProperty( Constants.MC_USERID, user );
  +      msgContext.setProperty( MessageContext.USERID, user );
         if ( i != -1 )  {
           String pwd = tmp.substring(i+1);
           if ( pwd != null && pwd.equals("") ) pwd = null ;
           if ( pwd != null )
  -          msgContext.setProperty( Constants.MC_PASSWORD, pwd );
  +          msgContext.setProperty( MessageContext.PASSWORD, pwd );
         }
       }
   
  
  
  
  1.3       +35 -11    xml-axis/java/src/org/apache/axis/transport/http/HTTPConstants.java
  
  Index: HTTPConstants.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/HTTPConstants.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HTTPConstants.java	2001/02/10 04:39:59	1.2
  +++ HTTPConstants.java	2001/02/12 01:11:17	1.3
  @@ -55,16 +55,40 @@
   
   package org.apache.axis.transport.http;
   
  +/**
  + * HTTP protocol and message context constants.
  + *  
  + * @author Doug Davis (dug@us.ibm.com)
  + * @author Jacek Kopecky (jacek@idoox.com)
  + */
   public class HTTPConstants {
  -  // HTTP Stuff
  -  //////////////////////////////////////////////////////////////////////////
  -  public static final String HEADER_POST = "POST";
  -  public static final String HEADER_HOST = "Host";
  -  public static final String HEADER_CONTENT_TYPE = "Content-Type";
  -  public static final String HEADER_CONTENT_TYPE_JMS = "ContentType";
  -  public static final String HEADER_CONTENT_LENGTH = "Content-Length";
  -  public static final String HEADER_CONTENT_LOCATION = "Content-Location";
  -  public static final String HEADER_CONTENT_ID = "Content-ID";
  -  public static final String HEADER_SOAP_ACTION = "SOAPAction";
  -  public static final String HEADER_AUTHORIZATION = "Authorization";
  +    /** The MessageContext transport ID of HTTP.
  +     *  (Maybe this should be more specific, like "http_servlet",
  +     *   whaddya think? - todo by Jacek)
  +     */
  +    public static String TRANSPORT_ID = "http";
  +
  +    public static final String HEADER_POST = "POST";
  +    public static final String HEADER_HOST = "Host";
  +    public static final String HEADER_CONTENT_TYPE = "Content-Type";
  +    public static final String HEADER_CONTENT_TYPE_JMS = "ContentType";
  +    public static final String HEADER_CONTENT_LENGTH = "Content-Length";
  +    public static final String HEADER_CONTENT_LOCATION = "Content-Location";
  +    public static final String HEADER_CONTENT_ID = "Content-ID";
  +    public static final String HEADER_SOAP_ACTION = "SOAPAction";
  +    public static final String HEADER_AUTHORIZATION = "Authorization";
  +    
  +    /** Integer
  +     */
  +    public static String MC_HTTP_STATUS_CODE    = "transport.http.statusCode";
  +
  +    /** String
  +     */
  +    public static String MC_HTTP_STATUS_MESSAGE = "transport.http.statusMessage";
  +
  +    /** String
  +     *  This can be moved to MessageContext.TRANS_SOAPACTION if more transports
  +     *  have it.
  +     */
  +    public static String MC_HTTP_SOAPACTION     = "transport.http.soapAction";
   }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/transport/http/HTTPDispatchHandler.java
  
  Index: HTTPDispatchHandler.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Axis" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.axis.transport.http;
  
  import java.io.* ;
  import java.net.* ;
  import java.util.* ;
  import org.w3c.dom.* ;
  import org.xml.sax.InputSource ;
  import org.apache.xerces.parsers.DOMParser ;
  import org.apache.axis.* ;
  import org.apache.axis.utils.* ;
  import org.apache.axis.message.* ;
  import org.apache.axis.handlers.BasicHandler;
  import org.apache.axis.encoding.Base64 ;
  
  /**
   * This is meant to be used on a SOAP Client to call a SOAP server.
   *
   * @author Doug Davis (dug@us.ibm.com)
   */
  public class HTTPDispatchHandler extends BasicHandler {
    public void invoke(MessageContext msgContext) throws AxisFault {
      Debug.Print( 1, "Enter: HTTPDispatchHandler::invoke" );
      /* Find the service we're invoking so we can grab it's options */
      /***************************************************************/
      String   targetURL = null ;
      Message  outMsg    = null ;
      String   reqEnv    = null ;
  
      targetURL = (String) msgContext.getProperty( MessageContext.TRANS_URL);
      try {
        String   host ;
        int      port = 80 ;
        String   action = (String) msgContext.getProperty( HTTPConstants.MC_HTTP_SOAPACTION );
        URL      tmpURL        = new URL( targetURL );
        byte[]   buf           = new byte[4097];
        int      rc            = 0 ;
  
        host = tmpURL.getHost();
        if ( (port = tmpURL.getPort()) == -1 ) port = 80;
  
        Socket             sock = null ;
  
        sock    = new Socket( host, port );
        reqEnv  = (String) msgContext.getIncomingMessage().getAs("String");
  
        OutputStream  out  = sock.getOutputStream();
        InputStream   inp  = sock.getInputStream();
        String        otherHeaders = null ;
        String        userID = null ;
        String        passwd = null ;
        
        userID = (String) msgContext.getProperty( MessageContext.USERID );
        passwd = (String) msgContext.getProperty( MessageContext.PASSWORD );
  
        if ( userID != null )
          otherHeaders = HTTPConstants.HEADER_AUTHORIZATION + ": Basic " + 
                         Base64.encode( (userID + ":" + 
                         ((passwd == null) ? "" : passwd) ).getBytes() ) + 
                         "\n" ;
  
        String  header = HTTPConstants.HEADER_POST + " " + 
                           tmpURL.getFile() + " HTTP/1.0\n" +
                         HTTPConstants.HEADER_CONTENT_LENGTH + ": " + 
                                            + reqEnv.length() + "\n" +
                         HTTPConstants.HEADER_CONTENT_TYPE + ": text.xml\n" +
                         (otherHeaders == null ? "" : otherHeaders) + 
                         HTTPConstants.HEADER_SOAP_ACTION + ":" + action + "\n\n" ;
  
        out.write( header.getBytes() );
        out.write( reqEnv.getBytes() );
  
        Debug.Print( 1, "XML sent:" );
        Debug.Print( 1, header );
        Debug.Print( 1, reqEnv );
  
        byte       lastB=0, b ;
        int        len = 0 ;
        int        colonIndex = -1 ;
        Hashtable  headers = new Hashtable();
        String     name, value ;
  
        // Need to add logic for getting the version # and the return code
        // but that's for tomorrow!
  
        for ( ;; ) {
          if ( (b = (byte) inp.read()) == -1 ) break ;
          if ( b != '\r' && b != '\n' ) {
            if ( b == ':' ) colonIndex = len ;
            lastB = (buf[len++] = b);
          }
          else if ( b == '\r' )
            continue ;
          else {
            if ( len == 0 ) break ;
            if ( colonIndex != -1 ) {
              name = new String( buf, 0, colonIndex );
              value = new String( buf, colonIndex+1, len-1-colonIndex );
            }
            else {
              name = new String( buf, 0, len );
              value = "" ;
            }
            Debug.Print( 2, name + value );
            if ( msgContext.getProperty(HTTPConstants.MC_HTTP_STATUS_CODE) == null ) {
              // Reader status code
              int start = name.indexOf( ' ' ) + 1 ;
              int end   = name.indexOf( ' ', start ) ;
              rc = Integer.parseInt( name.substring(start, end) );
              msgContext.setProperty( HTTPConstants.MC_HTTP_STATUS_CODE, 
                                      new Integer(rc) );
              msgContext.setProperty( HTTPConstants.MC_HTTP_STATUS_MESSAGE, 
                                      name.substring(end+1));
            }
            else 
              headers.put( name, value );
            len = 0 ;
          }
        }
        if ( b != -1 ) {
          DOMParser  parser = new DOMParser();
          parser.parse( new InputSource( inp ) );
    
          outMsg = new Message( parser.getDocument(), "Document" );
          msgContext.setOutgoingMessage( outMsg );
          if ( Debug.DebugOn(2) ) {
            Debug.Print( 2, "XML received:" );
            Message m = new Message( parser.getDocument(), "Document" );
            Debug.Print( 2, (String) m.getAs( "String" ) );
          }
        }
  
        inp.close();
        out.close();
        sock.close();
      }
      catch( Exception e ) {
        Debug.Print( 1, e );
        if ( !(e instanceof AxisFault) ) e = new AxisFault(e);
        throw (AxisFault) e ;
      } 
      Debug.Print( 1, "Exit: HTTPDispatchHandler::invoke" );
    }
  
    public void undo(MessageContext msgContext) {
      Debug.Print( 1, "Enter: HTTPDispatchHandler::undo" );
      Debug.Print( 1, "Exit: HTTPDispatchHandler::undo" );
    }
  };