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