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 du...@apache.org on 2001/02/05 23:30:11 UTC

cvs commit: xml-axis/java/src/org/apache/axis/utils Constants.java

dug         01/02/05 14:30:11

  Modified:    java/samples/stock GetQuote.java
               java/src/org/apache/axis/client HTTPCall.java
                        HTTPMessage.java
               java/src/org/apache/axis/handlers HTTPDispatchHandler.java
               java/src/org/apache/axis/server/transports AxisServlet.java
               java/src/org/apache/axis/utils Constants.java
  Log:
  Added Basic Auth support - and the GetQuote sample
  
  Revision  Changes    Path
  1.7       +16 -6     xml-axis/java/samples/stock/GetQuote.java
  
  Index: GetQuote.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/stock/GetQuote.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- GetQuote.java	2001/02/02 02:53:25	1.6
  +++ GetQuote.java	2001/02/05 22:30:10	1.7
  @@ -79,6 +79,8 @@
         /***************************/
         String  host    = "localhost" ;
         String  servlet = "/axis/servlet/AxisServlet" ;
  +      String  user    = null ;
  +      String  pwd     = null ;
         int     port    = 8080 ;
   
         for ( int i = 0 ; i < args.length ; i++ ) {
  @@ -89,6 +91,13 @@
               case 'h': if ( args[i].length() > 2 )
                           host = args[i].substring(2);
                         break ;
  +            case 'l': if ( args[i].length() > 2 ) {
  +                        URL tmpurl = new URL(args[i].substring(2));
  +                        host = tmpurl.getHost();
  +                        port = tmpurl.getPort();
  +                        servlet = tmpurl.getPath() ;
  +                      }
  +                      break ;
               case 'p': if ( args[i].length() > 2 )
                           port = Integer.parseInt(args[i].substring(2));
                         break ;
  @@ -97,12 +106,11 @@
                         if ( servlet != null && servlet.charAt(0) != '/' )
                           servlet = "/" + servlet ;
                         break ;
  -            case 'u': if ( args[i].length() > 2 ) {
  -                        URL tmpurl = new URL(args[i].substring(2));
  -                        host = tmpurl.getHost();
  -                        port = tmpurl.getPort();
  -                        servlet = tmpurl.getPath() ;
  -                      }
  +            case 'u': if ( args[i].length() > 2 )
  +                        user = args[i].substring(2);
  +                      break ;
  +            case 'w': if ( args[i].length() > 2 )
  +                        pwd = args[i].substring(2);
                         break ;
               default: System.err.println( "Unknown option '" + 
                                            args[i].charAt(1) + "'" );
  @@ -119,6 +127,8 @@
   
         String url = "http://" + host + ":" + port + servlet ;
         HTTPCall call = new HTTPCall( url, "urn:xmltoday-delayed-quotes" );
  +      if ( user != null ) call.setUserID( user );
  +      if ( pwd  != null ) call.setPassword( pwd );
         String res = (String) call.invoke( "getQuote", new Object[] {symbol} );
   
         System.out.println( symbol + ": " + res );
  
  
  
  1.6       +27 -4     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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HTTPCall.java	2001/02/04 13:45:35	1.5
  +++ HTTPCall.java	2001/02/05 22:30:10	1.6
  @@ -77,6 +77,8 @@
   public class HTTPCall {
     private String  url ;
     private String  action ;
  +  private String  userID ;
  +  private String  passwd ;
   
     public HTTPCall() {
     }
  @@ -98,6 +100,22 @@
       this.action = action ;
     }
   
  +  public void setUserID( String user ) {
  +    userID = user ;
  +  }
  +
  +  public String getUserID() {
  +    return( userID );
  +  }
  +
  +  public void setPassword( String pwd ) {
  +    passwd = pwd ;
  +  }
  +
  +  public String getPassword() {
  +    return( passwd );
  +  }
  +
     public static Object invoke(String url, String act, String m, Object[] args) 
         throws AxisFault
     {
  @@ -130,8 +148,8 @@
         SOAPHeader  header = new SOAPHeader();
         header.setPrefix("d");
         header.setName("Debug");
  -      header.setNamespaceURI( "http://xml.apache.org/axis/debug" );
  -      header.setActor( "http://schemas.xmlsoap.org/soap/actor/next" );
  +      header.setNamespaceURI( Constants.URI_DEBUG );
  +      header.setActor( Constants.URI_NEXT_ACTOR );
         Document doc = new DocumentImpl();
         Node node = doc.createTextNode( "" + Debug.getDebugLevel() );
         header.addDataNode( node );
  @@ -139,8 +157,13 @@
         reqEnv.addHeader( header );
       }
   
  -    msgContext.setProperty( "HTTP_URL", url );   // horrible name!
  -    msgContext.setProperty( "HTTP_ACTION", action );   // horrible name!
  +    msgContext.setProperty( Constants.MC_HTTP_URL, url );   // horrible name!
  +    msgContext.setProperty( Constants.MC_TARGET, action );   // horrible name!
  +    if ( userID != null ) {
  +      msgContext.setProperty( Constants.MC_USERID, userID );
  +      if ( passwd != null )
  +        msgContext.setProperty( Constants.MC_PASSWORD, passwd );
  +    }
       try {
         client.init();
         client.invoke( msgContext );
  
  
  
  1.3       +2 -2      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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HTTPMessage.java	2001/02/02 02:53:25	1.2
  +++ HTTPMessage.java	2001/02/05 22:30:10	1.3
  @@ -126,8 +126,8 @@
         // Debug.Print( 1, (String) reqMsg.getAs("String") );
       // }
   
  -    msgContext.setProperty( "HTTP_URL", url );   // horrible name!
  -    msgContext.setProperty( "HTTP_ACTION", action );   // horrible name!
  +    msgContext.setProperty( Constants.MC_HTTP_URL, url );   // horrible name!
  +    msgContext.setProperty( Constants.MC_TARGET, action );   // horrible name!
       try {
         client.init();
         client.invoke( msgContext );
  
  
  
  1.5       +21 -5     xml-axis/java/src/org/apache/axis/handlers/HTTPDispatchHandler.java
  
  Index: HTTPDispatchHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/HTTPDispatchHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- HTTPDispatchHandler.java	2001/02/02 02:53:25	1.4
  +++ HTTPDispatchHandler.java	2001/02/05 22:30:10	1.5
  @@ -66,6 +66,7 @@
   import org.apache.axis.* ;
   import org.apache.axis.utils.* ;
   import org.apache.axis.message.* ;
  +import org.apache.axis.encoding.Base64 ;
   
   /**
    * This is meant to be used on a SOAP Client to call a SOAP server.
  @@ -92,7 +93,7 @@
       try {
         String   host ;
         int      port = 80 ;
  -      String   action = (String) msgContext.getProperty( "HTTP_ACTION" );
  +      String   action = (String) msgContext.getProperty( Constants.MC_TARGET );
         URL      tmpURL        = new URL( targetURL );
         byte[]   buf           = new byte[4097];
         int      rc            = 0 ;
  @@ -107,10 +108,25 @@
   
         OutputStream  out  = sock.getOutputStream();
         InputStream   inp  = sock.getInputStream();
  -      String        header = "POST " + tmpURL.getPath() + " HTTP/1.0\n" +
  -                             "Content-Length: " + reqEnv.length() + "\n" +
  -                             "Content-Type: text/xml\n" +
  -                             "SOAPAction: " + action + "\n\n" ;
  +      String        otherHeaders = null ;
  +      String        userID = null ;
  +      String        passwd = null ;
  +      
  +      userID = (String) msgContext.getProperty( Constants.MC_USERID );
  +      passwd = (String) msgContext.getProperty( Constants.MC_PASSWORD );
  +
  +      if ( userID != null )
  +        otherHeaders = Constants.HEADER_AUTHORIZATION + ": Basic " + 
  +                       Base64.encode( (userID + ":" + passwd).getBytes() ) + 
  +                       "\n" ;
  +
  +      String  header = Constants.HEADER_POST + " " + 
  +                         tmpURL.getPath() + " HTTP/1.0\n" +
  +                       Constants.HEADER_CONTENT_LENGTH + ": " + 
  +                                          + reqEnv.length() + "\n" +
  +                       Constants.HEADER_CONTENT_TYPE + ": text.xml\n" +
  +                       (otherHeaders == null ? "" : otherHeaders) + 
  +                       Constants.HEADER_SOAP_ACTION + ":" + action + "\n\n" ;
   
         out.write( header.getBytes() );
         out.write( reqEnv.getBytes() );
  
  
  
  1.12      +26 -2     xml-axis/java/src/org/apache/axis/server/transports/AxisServlet.java
  
  Index: AxisServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/transports/AxisServlet.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AxisServlet.java	2001/02/04 13:45:36	1.11
  +++ AxisServlet.java	2001/02/05 22:30:10	1.12
  @@ -63,6 +63,7 @@
   import org.apache.axis.* ;
   import org.apache.axis.server.* ;
   import org.apache.axis.utils.* ;
  +import org.apache.axis.encoding.Base64 ;
   
   /**
    *
  @@ -122,17 +123,40 @@
       /*   for it.                                                        */
       /********************************************************************/
       String  tmp ;
  -    tmp = (String) req.getHeader( "SOAPAction" );
  +    tmp = (String) req.getHeader( Constants.HEADER_SOAP_ACTION );
       if ( tmp != null && "".equals(tmp) )
         tmp = req.getContextPath(); // Is this right?
       if ( tmp != null ) msgContext.setProperty( Constants.MC_TARGET, tmp );
   
  +    tmp = (String) req.getHeader( Constants.HEADER_AUTHORIZATION );
  +    if ( tmp != null ) tmp = tmp.trim();
  +    if ( tmp != null && tmp.startsWith("Basic ") ) {
  +      String user=null ;
  +      int  i ;
  +
  +      tmp = new String( Base64.decode( tmp.substring(6) ) );
  +      i = tmp.indexOf( ':' );
  +      if ( i == -1 ) user = tmp ;
  +      else           user = tmp.substring( 0, i);
  +      msgContext.setProperty( Constants.MC_USERID, user );
  +      if ( i != -1 ) 
  +        msgContext.setProperty( Constants.MC_PASSWORD, tmp.substring(i+1) );
  +    }
  +
       // Invoke the Axis engine...
       try {
         engine.invoke( msgContext );
       }
       catch( Exception e ) {
  -      res.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
  +      if ( e instanceof AxisFault ) {
  +        AxisFault  af = (AxisFault) e ;
  +        if ( "Server.Unauthorized".equals( af.getFaultCode() ) )
  +          res.setStatus( HttpServletResponse.SC_UNAUTHORIZED );
  +        else
  +          res.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
  +      }
  +      else 
  +        res.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
         // msgContext.setOutgoingMessage( new Message(e.toString(), "String" ) );
         if ( !(e instanceof AxisFault) )
           e = new AxisFault( e );
  
  
  
  1.8       +19 -0     xml-axis/java/src/org/apache/axis/utils/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/Constants.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Constants.java	2001/02/01 22:21:34	1.7
  +++ Constants.java	2001/02/05 22:30:10	1.8
  @@ -72,7 +72,22 @@
     public static String MC_SVC_HANDLER      = "ServiceHandler" ;    // Handler
     public static String MC_HTTP_STATUS_CODE = "HTTP_Status_Code" ;  // Integer
     public static String MC_HTTP_STATUS_LINE = "HTTP_Status_Line" ;  // String
  +  public static String MC_HTTP_URL         = "HTTP_URL" ;
  +  public static String MC_USERID           = "UserID" ;
  +  public static String MC_PASSWORD         = "Password" ;
   
  +  // 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";
  +
     // Envelope Stuff
     //////////////////////////////////////////////////////////////////////////
     public static String NSPREFIX_SOAP_ENV   = "SOAP-ENV" ;
  @@ -107,4 +122,8 @@
     public static String ATTR_ROOT            = "root" ;
     public static String ATTR_ID              = "id" ;
     public static String ATTR_HREF            = "href" ;
  +
  +  // Misc Strings
  +  //////////////////////////////////////////////////////////////////////////
  +  public static String URI_DEBUG = "http:///xml.apache.org/axis/debug" ;
   }