axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ru...@apache.org
Subject cvs commit: xml-axis/java/test/RPCDispatch Service.java TestRPC.java
Date Wed, 05 Dec 2001 00:27:18 GMT
rubys       01/12/04 16:27:18

  Modified:    java/src/org/apache/axis AxisEngine.java MessageContext.java
               java/src/org/apache/axis/client AxisClient.java
               java/src/org/apache/axis/server AxisServer.java
               java/test/RPCDispatch Service.java TestRPC.java
  Log:
  Implement an alternate means by which the current active message context
  can be retrieved by a web service.  Previously this was accomplished with
  an optional first parameter - which is still supported for the moment
  (I'd deprecate it if I could see a way to do it).
  
  The active message context is defined as the one passed to last
  AxisEngine.invoke on the call stack.
  
  The active message context can be retrieved using either of the following
  static methods:
    AxisEngine.getCurrentMessageContext();
    MessageContext.getCurrentContext();
  
  Revision  Changes    Path
  1.59      +24 -0     xml-axis/java/src/org/apache/axis/AxisEngine.java
  
  Index: AxisEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisEngine.java,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- AxisEngine.java	2001/12/03 22:49:22	1.58
  +++ AxisEngine.java	2001/12/05 00:27:18	1.59
  @@ -119,6 +119,30 @@
       protected WSDDGlobalConfiguration myGlobalConfig = null;
   
       /**
  +     * Thread local storage used for locating the active message context.
  +     * This information is only valid for the lifetime of this request.
  +     */
  +    private static ThreadLocal currentMessageContext = new ThreadLocal();
  +
  +    /**
  +     * Set the active message context. 
  +     *
  +     * @param mc - the new active message context.
  +     */
  +    protected static void setCurrentMessageContext(MessageContext mc) {
  +        currentMessageContext.set(mc);
  +    }
  +
  +    /**
  +     * Get the active message context. 
  +     *
  +     * @return the current active message context
  +     */
  +    public static MessageContext getCurrentMessageContext() {
  +        return (MessageContext) currentMessageContext.get();
  +    }
  +
  +    /**
        * No-arg constructor.
        *
        */
  
  
  
  1.67      +8 -1      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.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- MessageContext.java	2001/11/27 04:08:59	1.66
  +++ MessageContext.java	2001/12/05 00:27:18	1.67
  @@ -156,10 +156,17 @@
        */
       private Hashtable bag ;
   
  +    /**
  +     * Get the active message context. 
  +     * @return the current active message context
  +     */
  +    public static MessageContext getCurrentContext() {
  +       return AxisEngine.getCurrentMessageContext();
  +    }
  +
       public MessageContext(AxisEngine engine) {
           this.axisEngine = engine;
       }
  -
       
       /**
        * Mappings of QNames to serializers/deserializers (and therfore
  
  
  
  1.34      +12 -2     xml-axis/java/src/org/apache/axis/client/AxisClient.java
  
  Index: AxisClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/AxisClient.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- AxisClient.java	2001/12/03 22:49:23	1.33
  +++ AxisClient.java	2001/12/05 00:27:18	1.34
  @@ -110,7 +110,13 @@
           String  hName = null ;
           Handler h     = null ;
   
  +        // save previous context
  +        MessageContext previousContext = getCurrentMessageContext();
  +
           try {
  +            // set active context
  +            setCurrentMessageContext(msgContext);
  +
               hName = msgContext.getStrProp( MessageContext.ENGINE_HANDLER );
               if (category.isDebugEnabled()) {
                   category.debug( "EngineHandler: " + hName );
  @@ -187,11 +193,15 @@
                   // Do SOAP Semantics checks here - this needs to be a call to
                   // a pluggable object/handler/something
               }
  -        }
  -        catch( Exception e ) {
  +
  +        } catch( Exception e ) {
               // Should we even bother catching it ?
               category.error( e );
               throw AxisFault.makeFault(e);
  +
  +        } finally {
  +            // restore previous state
  +            setCurrentMessageContext(previousContext);
           }
   
           if (category.isDebugEnabled()) {
  
  
  
  1.50      +10 -0     xml-axis/java/src/org/apache/axis/server/AxisServer.java
  
  Index: AxisServer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/AxisServer.java,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- AxisServer.java	2001/12/03 22:49:24	1.49
  +++ AxisServer.java	2001/12/05 00:27:18	1.50
  @@ -148,7 +148,13 @@
           String  hName = null ;
           Handler h     = null ;
   
  +        // save previous context
  +        MessageContext previousContext = getCurrentMessageContext();
  +
           try {
  +            // set active context
  +            setCurrentMessageContext(msgContext);
  +
               hName = msgContext.getStrProp( MessageContext.ENGINE_HANDLER );
               if ( hName != null ) {
                   if ( (h = getHandler(hName)) == null ) {
  @@ -271,6 +277,10 @@
           } catch (Exception e) {
               // Should we even bother catching it ?
               throw AxisFault.makeFault(e);
  +
  +        } finally {
  +            // restore previous state
  +            setCurrentMessageContext(previousContext);
           }
           
           if (category.isDebugEnabled()) {
  
  
  
  1.9       +8 -1      xml-axis/java/test/RPCDispatch/Service.java
  
  Index: Service.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/Service.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Service.java	2001/11/28 12:04:12	1.8
  +++ Service.java	2001/12/05 00:27:18	1.9
  @@ -35,8 +35,15 @@
       /**
        * Return the target service (should be this!)
        */
  -    public String targetService(MessageContext mc) throws Exception {
  +    public String targetServiceExplicit(MessageContext mc) throws Exception {
          return mc.getTargetService();
  +    }
  +
  +    /**
  +     * Return the target service (should be this!)
  +     */
  +    public String targetServiceImplicit() throws Exception {
  +       return MessageContext.getCurrentContext().getTargetService();
       }
   
       /**
  
  
  
  1.30      +19 -3     xml-axis/java/test/RPCDispatch/TestRPC.java
  
  Index: TestRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestRPC.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- TestRPC.java	2001/12/03 22:49:24	1.29
  +++ TestRPC.java	2001/12/05 00:27:18	1.30
  @@ -137,15 +137,31 @@
       /**
        * Test a simple method that returns a field from the message context
        */
  -    public void testMessageContext() throws Exception {
  +    public void testMessageContextImplicit() throws Exception {
           // Register the targetService service
           SOAPService tgtSvc = new SOAPService(RPCDispatcher);
           tgtSvc.setOption("className", "test.RPCDispatch.Service");
  -        tgtSvc.setOption("methodName", "targetService");
  +        tgtSvc.setOption("methodName", "targetServiceImplicit");
           engine.deployService(SOAPAction, tgtSvc);
   
           // invoke the service and verify the result
  -        assertEquals("SOAP Action did not equal the targetService.", SOAPAction, rpc("targetService",
new Object[] {}));
  +        assertEquals("SOAP Action did not equal the targetService.", 
  +            SOAPAction, rpc("targetServiceImplicit", new Object[] {}));
  +    }
  +
  +    /**
  +     * Test a simple method that returns a field from the message context
  +     */
  +    public void testMessageContextExplicit() throws Exception {
  +        // Register the targetService service
  +        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
  +        tgtSvc.setOption("className", "test.RPCDispatch.Service");
  +        tgtSvc.setOption("methodName", "targetServiceExplicit");
  +        engine.deployService(SOAPAction, tgtSvc);
  +
  +        // invoke the service and verify the result
  +        assertEquals("SOAP Action did not equal the targetService.", 
  +            SOAPAction, rpc("targetServiceExplicit", new Object[] {}));
       }
   
       /**
  
  
  

Mime
View raw message