You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ad...@apache.org on 2007/02/20 02:33:00 UTC
svn commit: r509405 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core:
./ cmp/ entity/ ivm/naming/ mdb/ stateful/ stateless/
Author: adc
Date: Mon Feb 19 17:32:57 2007
New Revision: 509405
URL: http://svn.apache.org/viewvc?view=rev&rev=509405
Log:
New context integrated
Removed:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/OldEntityContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/OldMdbContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/OldStatefulContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/OldStatelessContext.java
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEncReference.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityInstanceManager.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/EncReference.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncReference.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncUserTransaction.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncReference.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncUserTransaction.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncReference.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncUserTransaction.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java Mon Feb 19 17:32:57 2007
@@ -44,8 +44,6 @@
private final UserTransaction userTransaction;
private final SecurityService securityService;
private final TransactionManager transactionManager;
- private State state;
- protected final static State[] states = new State[Operation.values().length];
public BaseContext(TransactionManager transactionManager, SecurityService securityService) {
this.transactionManager = transactionManager;
@@ -59,100 +57,86 @@
this.userTransaction = userTransaction;
}
- public void setOperation(Operation operation) {
- State state = states[operation.ordinal()];
-
- if (state == null) throw new IllegalArgumentException("Invalid operation for this context");
-
- setState(state);
- }
-
- protected State getState() {
- return state;
- }
-
- protected void setState(State state) {
- this.state = state;
- }
+ protected abstract State getState();
public EJBHome getEJBHome() {
- return state.getEJBHome();
+ return getState().getEJBHome();
}
public EJBLocalHome getEJBLocalHome() {
- return state.getEJBLocalHome();
+ return getState().getEJBLocalHome();
}
public Properties getEnvironment() {
- return state.getEnvironment();
+ return getState().getEnvironment();
}
public Identity getCallerIdentity() {
- return state.getCallerIdentity();
+ return getState().getCallerIdentity();
}
public Principal getCallerPrincipal() {
- return state.getCallerPrincipal(securityService);
+ return getState().getCallerPrincipal(securityService);
}
public boolean isCallerInRole(Identity identity) {
- return state.isCallerInRole(identity);
+ return getState().isCallerInRole(identity);
}
public boolean isCallerInRole(String roleName) {
- return state.isCallerInRole(securityService, roleName);
+ return getState().isCallerInRole(securityService, roleName);
}
public UserTransaction getUserTransaction() throws IllegalStateException {
- return state.getUserTransaction(userTransaction);
+ return getState().getUserTransaction(userTransaction);
}
public void setRollbackOnly() throws IllegalStateException {
- state.setRollbackOnly(transactionManager);
+ getState().setRollbackOnly(transactionManager);
}
public boolean getRollbackOnly() throws IllegalStateException {
- return state.getRollbackOnly(transactionManager);
+ return getState().getRollbackOnly(transactionManager);
}
public TimerService getTimerService() throws IllegalStateException {
- return state.getTimerService();
+ return getState().getTimerService();
}
public Object lookup(String name) {
- return state.lookup(name);
+ return getState().lookup(name);
}
public boolean isUserTransactionAccessAllowed() {
- return state.isUserTransactionAccessAllowed();
+ return getState().isUserTransactionAccessAllowed();
}
public boolean isMessageContextAccessAllowed() {
- return state.isMessageContextAccessAllowed();
+ return getState().isMessageContextAccessAllowed();
}
public boolean isJNDIAccessAllowed() {
- return state.isJNDIAccessAllowed();
+ return getState().isJNDIAccessAllowed();
}
public boolean isResourceManagerAccessAllowed() {
- return state.isResourceManagerAccessAllowed();
+ return getState().isResourceManagerAccessAllowed();
}
public boolean isEnterpriseBeanAccessAllowed() {
- return state.isEnterpriseBeanAccessAllowed();
+ return getState().isEnterpriseBeanAccessAllowed();
}
public boolean isEntityManagerFactoryAccessAllowed() {
- return state.isEntityManagerFactoryAccessAllowed();
+ return getState().isEntityManagerFactoryAccessAllowed();
}
public boolean isEntityManagerAccessAllowed() {
- return state.isEntityManagerAccessAllowed();
+ return getState().isEntityManagerAccessAllowed();
}
public boolean isTimerAccessAllowed() {
- return state.isTimerAccessAllowed();
+ return getState().isTimerAccessAllowed();
}
protected static class State {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java Mon Feb 19 17:32:57 2007
@@ -26,6 +26,7 @@
private static final Logger log = Logger.getInstance("OpenEJB", "org.apache.openejb.util.resources");
private static final ThreadLocal<ThreadContext> threadStorage = new ThreadLocal<ThreadContext>();
private static final List<ThreadContextListener> listeners = new CopyOnWriteArrayList<ThreadContextListener>();
+ private static final ThreadLocal<Operation> currentOperation = new ThreadLocal<Operation>();
public static ThreadContext getThreadContext() {
ThreadContext threadContext = threadStorage.get();
@@ -92,9 +93,9 @@
private final CoreDeploymentInfo deploymentInfo;
private final Object primaryKey;
private final Object securityIdentity;
- private Operation currentOperation;
private final HashMap<Class, Object> data = new HashMap<Class, Object>();
private ClassLoader oldClassLoader;
+ private BaseContext beanContext;
public ThreadContext(CoreDeploymentInfo deploymentInfo, Object primaryKey, Object securityIdentity) {
if (deploymentInfo == null) {
@@ -105,6 +106,15 @@
this.securityIdentity = securityIdentity;
}
+ public ThreadContext(ThreadContext that) {
+ this.deploymentInfo = that.deploymentInfo;
+ this.primaryKey = that.primaryKey;
+ this.securityIdentity = that.securityIdentity;
+ this.data.putAll(that.data);
+ this.oldClassLoader = that.oldClassLoader;
+ this.beanContext = that.beanContext;
+ }
+
public CoreDeploymentInfo getDeploymentInfo() {
return deploymentInfo;
}
@@ -117,12 +127,20 @@
return securityIdentity;
}
- public Operation getCurrentOperation() {
- return currentOperation;
+ public BaseContext getBeanContext() {
+ return beanContext;
+ }
+
+ public void setBeanContext(BaseContext beanContext) {
+ this.beanContext = beanContext;
+ }
+
+ public static Operation getCurrentOperation() {
+ return currentOperation.get();
}
- public void setCurrentOperation(Operation op) {
- currentOperation = op;
+ public static void setCurrentOperation(Operation operation) {
+ currentOperation.set(operation);
}
@SuppressWarnings({"unchecked"})
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java Mon Feb 19 17:32:57 2007
@@ -48,7 +48,7 @@
import org.apache.openejb.core.CoreDeploymentInfo;
import org.apache.openejb.core.Operation;
import org.apache.openejb.core.ThreadContext;
-import org.apache.openejb.core.entity.OldEntityContext;
+import org.apache.openejb.core.entity.EntityContext;
import org.apache.openejb.core.transaction.TransactionContainer;
import org.apache.openejb.core.transaction.TransactionContext;
import org.apache.openejb.core.transaction.TransactionPolicy;
@@ -304,7 +304,7 @@
ThreadContext oldCallContext = ThreadContext.enter(callContext);
try {
- entityBean.setEntityContext(new OldEntityContext(transactionManager, securityService));
+ entityBean.setEntityContext(new EntityContext(transactionManager, securityService));
} catch (RemoteException e) {
throw new EJBException(e);
} finally {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java Mon Feb 19 17:32:57 2007
@@ -41,6 +41,8 @@
*/
public class EntityContext extends BaseContext implements javax.ejb.EntityContext {
+ protected final static State[] states = new State[Operation.values().length];
+
public EntityContext(TransactionManager transactionManager, SecurityService securityService) {
super(transactionManager, securityService);
}
@@ -49,16 +51,25 @@
super(transactionManager, securityService, userTransaction);
}
+ protected State getState() {
+ Operation operation = ThreadContext.getCurrentOperation();
+ State state = states[operation.ordinal()];
+
+ if (state == null) throw new IllegalArgumentException("Invalid operation " + operation + " for this context");
+
+ return state;
+ }
+
public EJBLocalObject getEJBLocalObject() throws IllegalStateException {
- return ((javax.ejb.EntityContext) getState()).getEJBLocalObject();
+ return ((EntityState) getState()).getEJBLocalObject();
}
public EJBObject getEJBObject() throws IllegalStateException {
- return ((javax.ejb.EntityContext) getState()).getEJBObject();
+ return ((EntityState) getState()).getEJBObject();
}
public Object getPrimaryKey() throws IllegalStateException {
- return ((javax.ejb.EntityContext) getState()).getPrimaryKey();
+ return ((EntityState) getState()).getPrimaryKey();
}
private static class EntityState extends State {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEncReference.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEncReference.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEncReference.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEncReference.java Mon Feb 19 17:32:57 2007
@@ -18,9 +18,11 @@
import javax.naming.NameNotFoundException;
+import org.apache.openejb.core.BaseContext;
+import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.Reference;
-import org.apache.openejb.core.Operation;
/**
@@ -41,15 +43,9 @@
* method ensures that the entity bean is in the correct state before the super
* class can return the requested reference object.
*/
- public void checkOperation(Operation operation) throws NameNotFoundException {
-
- /* if( operation == Operations.SET_CONTEXT ||
- operation == Operations.UNSET_CONTEXT ||
- operation == Operations.PASSIVATE ||
- operation == Operations.ACTIVATE ){
- throw new NameNotFoundException("Operation Not Allowed");
- }
-*/
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isEnterpriseBeanAccessAllowed())
+ throw new NameNotFoundException("Operation Not Allowed");
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityInstanceManager.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityInstanceManager.java Mon Feb 19 17:32:57 2007
@@ -294,8 +294,8 @@
return bean;
}
- private org.apache.openejb.core.entity.OldEntityContext createEntityContext() {
- return new OldEntityContext(transactionManager, securityService);
+ private EntityContext createEntityContext() {
+ return new EntityContext(transactionManager, securityService);
}
public void poolInstance(ThreadContext callContext, EntityBean bean)
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/EncReference.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/EncReference.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/EncReference.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/EncReference.java Mon Feb 19 17:32:57 2007
@@ -18,8 +18,8 @@
import javax.naming.NameNotFoundException;
+import org.apache.openejb.core.BaseContext;
import org.apache.openejb.core.ThreadContext;
-import org.apache.openejb.core.Operation;
/**
@@ -45,16 +45,20 @@
checking = value;
}
- /*
- * Obtains the referenced object.
- */
+ /**
+ * Obtains the referenced object.
+ * TODO: I think that once the bean context is properly hooked up
+ * throughout the server, then we can remove the check for a null
+ * bean context.
+ */
public Object getObject() throws javax.naming.NamingException {
ThreadContext callContext = ThreadContext.getThreadContext();
if (callContext != null) {
- checkOperation(callContext.getCurrentOperation());
+ BaseContext beanContext = callContext.getBeanContext();
+ if (beanContext != null) checkOperation(beanContext);
}
return ref.getObject();
}
- public abstract void checkOperation(Operation opertionType) throws NameNotFoundException;
+ public abstract void checkOperation(BaseContext beanContext) throws NameNotFoundException;
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContext.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContext.java Mon Feb 19 17:32:57 2007
@@ -26,6 +26,7 @@
import org.apache.openejb.core.BaseContext;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
import org.apache.openejb.spi.SecurityService;
@@ -34,12 +35,23 @@
*/
public class MdbContext extends BaseContext implements MessageDrivenContext {
+ protected final static State[] states = new State[Operation.values().length];
+
public MdbContext(TransactionManager transactionManager, SecurityService securityService) {
super(transactionManager, securityService);
}
protected MdbContext(TransactionManager transactionManager, SecurityService securityService, UserTransaction userTransaction) {
super(transactionManager, securityService, userTransaction);
+ }
+
+ protected State getState() {
+ Operation operation = ThreadContext.getCurrentOperation();
+ State state = states[operation.ordinal()];
+
+ if (state == null) throw new IllegalArgumentException("Invalid operation " + operation + " for this context");
+
+ return state;
}
/**
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncReference.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncReference.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncReference.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncReference.java Mon Feb 19 17:32:57 2007
@@ -21,6 +21,7 @@
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.Reference;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.BaseContext;
public class MdbEncReference extends EncReference {
@@ -29,12 +30,8 @@
super(ref);
}
- public void checkOperation(Operation operation) throws NameNotFoundException {
-
-/*
- if( operation != Operations.BUSINESS ){
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isEnterpriseBeanAccessAllowed())
throw new NameNotFoundException("Operation Not Allowed");
- }
-*/
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncUserTransaction.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncUserTransaction.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncUserTransaction.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbEncUserTransaction.java Mon Feb 19 17:32:57 2007
@@ -20,6 +20,7 @@
import org.apache.openejb.core.CoreUserTransaction;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.BaseContext;
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.ObjectReference;
@@ -44,10 +45,9 @@
* method ensures that the message driven bean is in the correct state before the super
* class can return the requested reference object.
*/
- public void checkOperation(Operation operation) throws NameNotFoundException {
- if (operation == Operation.SET_CONTEXT) {
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isUserTransactionAccessAllowed())
throw new NameNotFoundException("Operation Not Allowed");
- }
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java Mon Feb 19 17:32:57 2007
@@ -166,11 +166,11 @@
try {
Context ctx = deploymentInfo.getJndiEnc();
// construct the bean instance
- OldMdbContext mdbContext = null;
+ MdbContext mdbContext = null;
try {
- mdbContext = (OldMdbContext) ctx.lookup("java:comp/EJBContext");
+ mdbContext = (MdbContext) ctx.lookup("java:comp/EJBContext");
} catch (NamingException e) {
- mdbContext = new OldMdbContext(transactionManager, securityService);
+ mdbContext = new MdbContext(transactionManager, securityService);
ctx.bind("java:comp/EJBContext",mdbContext);
}
// only in this case should the callback be used
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Mon Feb 19 17:32:57 2007
@@ -247,7 +247,7 @@
ThreadContext createContext = new ThreadContext(deploymentInfo, primaryKey, securityIdentity);
- createContext.setCurrentOperation(Operation.CREATE);
+ createContext.setCurrentOperation(Operation.LIFECYCLE);
ThreadContext oldCallContext = ThreadContext.enter(createContext);
try {
checkAuthorization(deploymentInfo, callMethod, securityIdentity);
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java Mon Feb 19 17:32:57 2007
@@ -18,9 +18,11 @@
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
+import javax.xml.rpc.handler.MessageContext;
import org.apache.openejb.core.BaseSessionContext;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
import org.apache.openejb.spi.SecurityService;
@@ -29,6 +31,8 @@
*/
public class StatefulContext extends BaseSessionContext {
+ protected final static State[] states = new State[Operation.values().length];
+
public StatefulContext(TransactionManager transactionManager, SecurityService securityService) {
super(transactionManager, securityService);
}
@@ -37,10 +41,39 @@
super(transactionManager, securityService, userTransaction);
}
+ protected State getState() {
+ Operation operation = ThreadContext.getCurrentOperation();
+ State state = states[operation.ordinal()];
+
+ if (state == null) throw new IllegalArgumentException("Invalid operation " + operation + " for this context");
+
+ return state;
+ }
+
static {
states[Operation.INJECTION.ordinal()] = new InjectionStatelessState();
states[Operation.LIFECYCLE.ordinal()] = new LifecycleStatelessState();
states[Operation.BUSINESS.ordinal()] = new BusinessStatelessState();
+ states[Operation.AFTER_BEGIN.ordinal()] = new BeforeCommitState();
states[Operation.TIMEOUT.ordinal()] = new TimeoutStatelessState();
+ }
+
+ /**
+ * afterBegin
+ * beforeCompletion State
+ */
+ public static class BeforeCommitState extends StatelessState {
+
+ public Class getInvokedBusinessInterface() {
+ throw new IllegalStateException();
+ }
+
+ public MessageContext getMessageContext() throws IllegalStateException {
+ throw new IllegalStateException();
+ }
+
+ public boolean isMessageContextAccessAllowed() {
+ return false;
+ }
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncReference.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncReference.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncReference.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncReference.java Mon Feb 19 17:32:57 2007
@@ -19,6 +19,7 @@
import javax.naming.NameNotFoundException;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.BaseContext;
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.Reference;
@@ -29,10 +30,8 @@
super(ref);
}
- public void checkOperation(Operation operation) throws NameNotFoundException {
-
- if (operation == Operation.AFTER_COMPLETION) {
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isEnterpriseBeanAccessAllowed())
throw new NameNotFoundException("Operation Not Allowed");
- }
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncUserTransaction.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncUserTransaction.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncUserTransaction.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEncUserTransaction.java Mon Feb 19 17:32:57 2007
@@ -20,6 +20,7 @@
import javax.transaction.UserTransaction;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.BaseContext;
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.ObjectReference;
import org.apache.openejb.persistence.JtaEntityManagerRegistry;
@@ -47,9 +48,8 @@
* method ensures that the stateful bean is in the correct state before the super
* class can return the requested reference object.
*/
- public void checkOperation(Operation operation) throws NameNotFoundException {
- if (operation == Operation.SET_CONTEXT || operation == Operation.AFTER_COMPLETION || operation == Operation.BEFORE_COMPLETION) {
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isUserTransactionAccessAllowed())
throw new NameNotFoundException("Operation Not Allowed");
- }
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java Mon Feb 19 17:32:57 2007
@@ -131,7 +131,7 @@
ctx.bind("java:comp/EJBContext", sessionContext);
}
if(javax.ejb.SessionBean.class.isAssignableFrom(beanClass) || hasSetSessionContext(beanClass)) {
- callContext.setCurrentOperation(Operation.SET_CONTEXT);
+ callContext.setCurrentOperation(Operation.INJECTION);
objectRecipe.setProperty("sessionContext", new StaticRecipe(sessionContext));
}
for (Injection injection : deploymentInfo.getInjections()) {
@@ -189,7 +189,7 @@
private SessionContext createSessionContext() {
StatefulUserTransaction userTransaction = new StatefulUserTransaction(new CoreUserTransaction(transactionManager), jtaEntityManagerRegistry);
- return new OldStatefulContext(transactionManager, securityService, userTransaction);
+ return new StatefulContext(transactionManager, securityService, userTransaction);
}
public Object obtainInstance(Object primaryKey, ThreadContext callContext) throws OpenEJBException {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java Mon Feb 19 17:32:57 2007
@@ -21,6 +21,7 @@
import org.apache.openejb.core.BaseSessionContext;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
import org.apache.openejb.spi.SecurityService;
@@ -29,12 +30,23 @@
*/
public class StatelessContext extends BaseSessionContext {
+ protected final static State[] states = new State[Operation.values().length];
+
public StatelessContext(TransactionManager transactionManager, SecurityService securityService) {
super(transactionManager, securityService);
}
public StatelessContext(TransactionManager transactionManager, SecurityService securityService, UserTransaction userTransaction) {
super(transactionManager, securityService, userTransaction);
+ }
+
+ protected State getState() {
+ Operation operation = ThreadContext.getCurrentOperation();
+ State state = states[operation.ordinal()];
+
+ if (state == null) throw new IllegalArgumentException("Invalid operation " + operation + " for this context");
+
+ return state;
}
/**
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncReference.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncReference.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncReference.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncReference.java Mon Feb 19 17:32:57 2007
@@ -21,6 +21,7 @@
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.Reference;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.BaseContext;
public class StatelessEncReference extends EncReference {
@@ -29,12 +30,9 @@
super(ref);
}
- public void checkOperation(Operation operation) throws NameNotFoundException {
-/*
- if( operation != Operations.BUSINESS ){
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isEnterpriseBeanAccessAllowed())
throw new NameNotFoundException("Operation Not Allowed");
- }
-*/
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncUserTransaction.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncUserTransaction.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncUserTransaction.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEncUserTransaction.java Mon Feb 19 17:32:57 2007
@@ -20,6 +20,7 @@
import org.apache.openejb.core.CoreUserTransaction;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.BaseContext;
import org.apache.openejb.core.ivm.naming.EncReference;
import org.apache.openejb.core.ivm.naming.ObjectReference;
@@ -45,10 +46,9 @@
* method ensures that the stateless bean is in the correct state before the super
* class can return the requested reference object.
*/
- public void checkOperation(Operation operation) throws NameNotFoundException {
- if (operation == Operation.SET_CONTEXT) {
+ public void checkOperation(BaseContext context) throws NameNotFoundException {
+ if (!context.isUserTransactionAccessAllowed())
throw new NameNotFoundException("Operation Not Allowed");
- }
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?view=diff&rev=509405&r1=509404&r2=509405
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java Mon Feb 19 17:32:57 2007
@@ -108,7 +108,7 @@
ctx.bind("java:comp/EJBContext", sessionContext);
}
if(javax.ejb.SessionBean.class.isAssignableFrom(beanClass) || hasSetSessionContext(beanClass)) {
- callContext.setCurrentOperation(Operation.SET_CONTEXT);
+ callContext.setCurrentOperation(Operation.INJECTION);
objectRecipe.setProperty("sessionContext", new StaticRecipe(sessionContext));
}
for (Injection injection : deploymentInfo.getInjections()) {
@@ -127,6 +127,7 @@
logger.warn("Injection data not found in enc: jndiName='"+injection.getJndiName()+"', target="+injection.getTarget()+"/"+injection.getName());
}
}
+
bean = objectRecipe.create(beanClass.getClassLoader());
Map unsetProperties = objectRecipe.getUnsetProperties();
if (unsetProperties.size() > 0){
@@ -134,7 +135,7 @@
logger.warn("Injection: No such property '"+property+"' in class "+beanClass.getName());
}
}
- callContext.setCurrentOperation(Operation.CREATE);
+ callContext.setCurrentOperation(Operation.LIFECYCLE);
Method postConstruct = deploymentInfo.getPostConstruct();
if (postConstruct != null){
@@ -164,7 +165,7 @@
}
private SessionContext createSessionContext() {
- return (SessionContext) new OldStatelessContext(transactionManager, securityService);
+ return new StatelessContext(transactionManager, securityService);
}
public void poolInstance(ThreadContext callContext, Object bean) throws OpenEJBException {