User: sparre
Date: 01/06/19 02:55:00
Modified: src/main/org/jboss/ejb EnterpriseContext.java
MessageDrivenEnterpriseContext.java
StatefulSessionEnterpriseContext.java
StatelessSessionEnterpriseContext.java
Log:
Only BMT bean may get a UserTransaction from the context.
All others who try should get an IllegalStateException instead.
Revision Changes Path
1.33 +8 -4 jboss/src/main/org/jboss/ejb/EnterpriseContext.java
Index: EnterpriseContext.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/EnterpriseContext.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- EnterpriseContext.java 2001/06/18 20:01:21 1.32
+++ EnterpriseContext.java 2001/06/19 09:55:00 1.33
@@ -42,7 +42,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>
- * @version $Revision: 1.32 $
+ * @version $Revision: 1.33 $
*/
public abstract class EnterpriseContext
{
@@ -331,9 +331,13 @@
// TODO - how to handle this best?
public UserTransaction getUserTransaction()
- {
- return new UserTransactionImpl();
- }
+ {
+ // If not BMT, throw exception.
+ // We default to the exception here, and override this method for
+ // contexts of bean types that may be able to handle their own
+ // transaction demarcation.
+ throw new IllegalStateException("Not a BMT bean.");
+ }
}
// Inner classes -------------------------------------------------
1.5 +3 -5 jboss/src/main/org/jboss/ejb/MessageDrivenEnterpriseContext.java
Index: MessageDrivenEnterpriseContext.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/MessageDrivenEnterpriseContext.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- MessageDrivenEnterpriseContext.java 2001/06/18 20:01:21 1.4
+++ MessageDrivenEnterpriseContext.java 2001/06/19 09:55:00 1.5
@@ -38,7 +38,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Antman</a>.
* @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
* @author <a href="[EMAIL PROTECTED]">Sebastien Alborini</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class MessageDrivenEnterpriseContext
extends EnterpriseContext
@@ -173,10 +173,8 @@
// NO transaction
Logger.log("MessageDriven bean is not allowed to get a UserTransactio:
transaction is containeremanaged");
throw new IllegalStateException("MessageDriven bean is not allowed to
get a UserTransactio: transaction is containeremanaged");
- }else {
- return super.getUserTransaction();
-
- }
+ } else
+ return new UserTransactionImpl();
}
}
}
1.12 +37 -27
jboss/src/main/org/jboss/ejb/StatefulSessionEnterpriseContext.java
Index: StatefulSessionEnterpriseContext.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/StatefulSessionEnterpriseContext.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- StatefulSessionEnterpriseContext.java 2001/06/18 20:01:21 1.11
+++ StatefulSessionEnterpriseContext.java 2001/06/19 09:55:00 1.12
@@ -17,13 +17,18 @@
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
+import javax.transaction.UserTransaction;
+
+import org.jboss.metadata.SessionMetaData;
+
+
/**
* <description>
*
* @see <related>
* @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel OConnor</a>
- * @version $Revision: 1.11 $
+ * @version $Revision: 1.12 $
*/
public class StatefulSessionEnterpriseContext
extends EnterpriseContext
@@ -101,32 +106,30 @@
}
// Inner classes -------------------------------------------------
+
protected class StatefulSessionContextImpl
extends EJBContextImpl
implements SessionContext
{
- public EJBObject getEJBObject()
- {
- if
(((StatefulSessionContainer)con).getContainerInvoker()==null)
- throw new IllegalStateException( "No remote interface
defined." );
-
- if (ejbObject == null) {
-
- try {
-
- ejbObject =
((StatefulSessionContainer)con).getContainerInvoker().getStatefulSessionEJBObject(id);
- }
- catch (RemoteException re) {
- // ...
- throw new IllegalStateException();
- }
- }
-
- return ejbObject;
- }
+ public EJBObject getEJBObject()
+ {
+ if (((StatefulSessionContainer)con).getContainerInvoker()==null)
+ throw new IllegalStateException( "No remote interface defined." );
+
+ if (ejbObject == null) {
+ try {
+ ejbObject =
((StatefulSessionContainer)con).getContainerInvoker().getStatefulSessionEJBObject(id);
+ } catch (RemoteException re) {
+ // ...
+ throw new IllegalStateException();
+ }
+ }
+
+ return ejbObject;
+ }
- public EJBLocalObject getEJBLocalObject()
- {
+ public EJBLocalObject getEJBLocalObject()
+ {
if (con.getLocalHomeClass()==null)
throw new IllegalStateException( "No local interface for bean." );
if (ejbLocalObject == null)
@@ -134,12 +137,19 @@
ejbLocalObject =
((StatefulSessionContainer)con).getLocalContainerInvoker().getStatefulSessionEJBLocalObject(id);
}
return ejbLocalObject;
- }
+ }
- public Object getPrimaryKey()
- {
+ public Object getPrimaryKey()
+ {
return id;
- }
- }
+ }
+
+ public UserTransaction getUserTransaction()
+ {
+ if (((SessionMetaData)con.getBeanMetaData()).isContainerManagedTx())
+ throw new IllegalStateException("Not a BMT bean.");
+ return new UserTransactionImpl();
+ }
+ }
}
1.10 +28 -20
jboss/src/main/org/jboss/ejb/StatelessSessionEnterpriseContext.java
Index: StatelessSessionEnterpriseContext.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/StatelessSessionEnterpriseContext.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- StatelessSessionEnterpriseContext.java 2001/06/18 20:01:21 1.9
+++ StatelessSessionEnterpriseContext.java 2001/06/19 09:55:00 1.10
@@ -19,13 +19,18 @@
import javax.ejb.SessionBean;
import javax.ejb.EJBException;
+import javax.transaction.UserTransaction;
+
+import org.jboss.metadata.SessionMetaData;
+
+
/**
* <description>
*
* @see <related>
* @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
* @author <a href="[EMAIL PROTECTED]">Sebastien Alborini</a>
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
*/
public class StatelessSessionEnterpriseContext
extends EnterpriseContext
@@ -99,34 +104,37 @@
{
public EJBObject getEJBObject()
{
- if (((StatelessSessionContainer)con).getContainerInvoker()==null)
- throw new IllegalStateException( "No remote interface defined." );
+ if (((StatelessSessionContainer)con).getContainerInvoker()==null)
+ throw new IllegalStateException( "No remote interface defined." );
- if (ejbObject == null) {
-
- try {
-
- ejbObject =
((StatelessSessionContainer)con).getContainerInvoker().getStatelessSessionEJBObject();
- }
- catch (RemoteException re) {
- // ...
- throw new IllegalStateException();
- }
- }
+ if (ejbObject == null) {
+ try {
+ ejbObject =
((StatelessSessionContainer)con).getContainerInvoker().getStatelessSessionEJBObject();
+ } catch (RemoteException re) {
+ // ...
+ throw new IllegalStateException();
+ }
+ }
- return ejbObject;
+ return ejbObject;
}
- public EJBLocalObject getEJBLocalObject()
- {
+ public EJBLocalObject getEJBLocalObject()
+ {
if (con.getLocalHomeClass()==null)
throw new IllegalStateException( "No local interface for bean." );
- if (ejbLocalObject == null)
- {
+ if (ejbLocalObject == null) {
ejbLocalObject =
((StatelessSessionContainer)con).getLocalContainerInvoker().getStatelessSessionEJBLocalObject();
}
return ejbLocalObject;
- }
+ }
+
+ public UserTransaction getUserTransaction()
+ {
+ if (((SessionMetaData)con.getBeanMetaData()).isContainerManagedTx())
+ throw new IllegalStateException("Not a BMT bean.");
+ return new UserTransactionImpl();
+ }
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development