djencks     2005/02/16 17:03:19

  Modified:    modules/core/src/java/org/openejb/slsb
                        StatelessInstanceContext.java
                        StatelessInstanceInterceptor.java
                        StatelessSessionContext.java
  Log:

  Construct invocation in WSContainer.  Add MessageContext to Invocation and 
StatelessInstanceContext so getMessageContext can work
  
  Revision  Changes    Path
  1.12      +12 -1     
openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceContext.java
  
  Index: StatelessInstanceContext.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceContext.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- StatelessInstanceContext.java     14 Feb 2005 18:32:31 -0000      1.11
  +++ StatelessInstanceContext.java     16 Feb 2005 22:03:19 -0000      1.12
  @@ -50,6 +50,7 @@
   import java.util.Set;
   
   import javax.ejb.SessionBean;
  +import javax.xml.rpc.handler.MessageContext;
   
   import org.apache.geronimo.core.service.Interceptor;
   import org.apache.geronimo.transaction.UserTransactionImpl;
  @@ -72,6 +73,8 @@
       private final EJBInvocation ejbCreateInvocation;
       private final EJBInvocation ejbRemoveInvocation;
   
  +    private MessageContext messageContext;
  +
       public StatelessInstanceContext(Object containerId, SessionBean 
instance, EJBProxyFactory proxyFactory, TransactionContextManager 
transactionContextManager, UserTransactionImpl userTransaction, 
SystemMethodIndices systemMethodIndices, Interceptor systemChain, Set 
unshareableResources, Set applicationManagedSecurityResources, 
BasicTimerService timerService) {
           super(systemChain, unshareableResources, 
applicationManagedSecurityResources, instance, proxyFactory, timerService);
           this.containerId = containerId;
  @@ -92,6 +95,14 @@
   
       public void setId(Object id) {
           throw new AssertionError("Cannot set identity for a Stateless 
Context");
  +    }
  +
  +    public MessageContext getMessageContext() {
  +        return messageContext;
  +    }
  +
  +    public void setMessageContext(MessageContext messageContext) {
  +        this.messageContext = messageContext;
       }
   
       public void flush() {
  
  
  
  1.4       +8 -1      
openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceInterceptor.java
  
  Index: StatelessInstanceInterceptor.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceInterceptor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StatelessInstanceInterceptor.java 26 Jan 2005 23:28:01 -0000      1.3
  +++ StatelessInstanceInterceptor.java 16 Feb 2005 22:03:19 -0000      1.4
  @@ -47,11 +47,15 @@
    */
   package org.openejb.slsb;
   
  +import javax.xml.rpc.handler.MessageContext;
  +
   import org.openejb.EJBInvocation;
   import org.openejb.cache.InstancePool;
   import org.apache.geronimo.core.service.Interceptor;
   import org.apache.geronimo.core.service.Invocation;
   import org.apache.geronimo.core.service.InvocationResult;
  +import org.apache.geronimo.core.service.SimpleInvocation;
  +import org.apache.geronimo.webservices.MessageContextInvocationKey;
   
   
   /**
  @@ -79,6 +83,8 @@
           // initialize the context and set it into the invocation
           ejbInvocation.setEJBInstanceContext(ctx);
   
  +        
ctx.setMessageContext((MessageContext)invocation.get(MessageContextInvocationKey.INSTANCE));
  +
           try {
               InvocationResult result = next.invoke(invocation);
   
  @@ -93,6 +99,7 @@
           } finally {
               // remove the reference to the context from the invocation
               ejbInvocation.setEJBInstanceContext(null);
  +            ctx.setMessageContext(null);
           }
       }
   }
  
  
  
  1.8       +9 -9      
openejb/modules/core/src/java/org/openejb/slsb/StatelessSessionContext.java
  
  Index: StatelessSessionContext.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessSessionContext.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StatelessSessionContext.java      14 Feb 2005 18:32:31 -0000      1.7
  +++ StatelessSessionContext.java      16 Feb 2005 22:03:19 -0000      1.8
  @@ -99,12 +99,12 @@
       }
   
       public MessageContext getMessageContext() throws IllegalStateException {
  -        return ((StatelessSessionContextState) state).getMessageContext();
  +        return ((StatelessSessionContextState) 
state).getMessageContext((StatelessInstanceContext)context);
       }
   
       public abstract static class StatelessSessionContextState extends 
EJBContextImpl.EJBContextState {
  -        protected MessageContext getMessageContext() {
  -            throw new UnsupportedOperationException();
  +        protected MessageContext getMessageContext(StatelessInstanceContext 
context) {
  +            return context.getMessageContext();
           }
       }
   
  @@ -145,7 +145,7 @@
               throw new IllegalStateException("getRollbackOnly() cannot be 
called when inactive");
           }
   
  -        public MessageContext getMessageContext() {
  +        public MessageContext getMessageContext(StatelessInstanceContext 
context) {
               throw new IllegalStateException("getMessageContext() cannot be 
called when inactive");
           }
   
  @@ -183,7 +183,7 @@
               throw new IllegalStateException("getRollbackOnly() cannot be 
called from setSessionContext(SessionContext)");
           }
   
  -        public MessageContext getMessageContext() {
  +        public MessageContext getMessageContext(StatelessInstanceContext 
context) {
               throw new IllegalStateException("getMessageContext() cannot be 
called from setSessionContext(SessionContext)");
           }
   
  @@ -209,13 +209,13 @@
               throw new IllegalStateException("getRollbackOnly() cannot be 
called from ejbCreate/ejbRemove");
           }
   
  -        public MessageContext getMessageContext() {
  +        public MessageContext getMessageContext(StatelessInstanceContext 
context) {
               throw new IllegalStateException("getMessageContext() cannot be 
called from ejbCreate/ejbRemove");
           }
       };
   
       public static final StatelessSessionContextState BIZ_INTERFACE = new 
StatelessSessionContextState() {
  -        public MessageContext getMessageContext() {
  +        public MessageContext getMessageContext(StatelessInstanceContext 
context) {
               throw new IllegalStateException("getMessageContext() cannot be 
called in a business method invocation from component interface)");
           }
       };
  @@ -225,7 +225,7 @@
       };
   
       public static final StatelessSessionContextState EJBTIMEOUT = new 
StatelessSessionContextState() {
  -         public MessageContext getMessageContext() {
  +         public MessageContext getMessageContext(StatelessInstanceContext 
context) {
               throw new IllegalStateException("getMessageContext() cannot be 
called from ejbTimeout");
           }
       };
  
  
  

Reply via email to