Index: core/src/main/java/org/jboss/ejb3/session/SessionContainerInvocation.java =================================================================== --- core/src/main/java/org/jboss/ejb3/session/SessionContainerInvocation.java (revision 106230) +++ core/src/main/java/org/jboss/ejb3/session/SessionContainerInvocation.java (working copy) @@ -24,15 +24,15 @@ import org.jboss.aop.MethodInfo; import org.jboss.ejb3.BeanContext; import org.jboss.ejb3.EJBContainerInvocation; -import org.jboss.ejb3.context.spi.SessionInvocationContext; import org.jboss.ejb3.core.context.SessionInvocationContextAdapter; +import org.jboss.ejb3.tx2.spi.TransactionalInvocationContext; /** * @author Carlo de Wolf */ public class SessionContainerInvocation> extends EJBContainerInvocation { - private SessionInvocationContext invocationContext; + private SessionInvocationContextAdapter invocationContext; public SessionContainerInvocation(Class invokedBusinessInterface, MethodInfo info) { @@ -40,7 +40,7 @@ this.invocationContext = new SessionInvocationContextAdapter(invokedBusinessInterface, this); } - public SessionInvocationContext getInvocationContext() + public TransactionalInvocationContext getInvocationContext() { return invocationContext; } Index: core/src/main/java/org/jboss/ejb3/stateful/StatefulContainerInvocation.java =================================================================== --- core/src/main/java/org/jboss/ejb3/stateful/StatefulContainerInvocation.java (revision 106230) +++ core/src/main/java/org/jboss/ejb3/stateful/StatefulContainerInvocation.java (working copy) @@ -26,12 +26,10 @@ import org.jboss.aop.advice.Interceptor; import org.jboss.aop.joinpoint.Invocation; import org.jboss.ejb3.EJBContainerInvocation; -import org.jboss.ejb3.context.base.BaseSessionInvocationContext; -import org.jboss.ejb3.context.spi.InvocationContext; -import org.jboss.ejb3.context.spi.SessionInvocationContext; import org.jboss.ejb3.core.context.EJBInvocation; import org.jboss.ejb3.core.context.SessionInvocationContextAdapter; import org.jboss.ejb3.interceptors.container.BeanContext; +import org.jboss.ejb3.tx2.spi.TransactionalInvocationContext; import java.lang.reflect.Method; @@ -47,7 +45,7 @@ private static final long serialVersionUID = -7636489066612082373L; private Object id; - private SessionInvocationContext invocationContext; + private SessionInvocationContextAdapter invocationContext; public StatefulContainerInvocation(Interceptor[] interceptors, long methodHash, Method advisedMethod, Method unadvisedMethod, Advisor advisor, Object id, Class invokedBusinessInterface) { @@ -83,7 +81,7 @@ return wrapper; } - public InvocationContext getInvocationContext() + public TransactionalInvocationContext getInvocationContext() { return invocationContext; } Index: core/src/main/java/org/jboss/ejb3/EJBContainerInvocation.java =================================================================== --- core/src/main/java/org/jboss/ejb3/EJBContainerInvocation.java (revision 106230) +++ core/src/main/java/org/jboss/ejb3/EJBContainerInvocation.java (working copy) @@ -35,7 +35,7 @@ * @version $Revision$ */ public abstract class EJBContainerInvocation> extends ContainerMethodInvocation - implements org.jboss.ejb3.core.context.EJBInvocation + implements org.jboss.ejb3.core.context.EJBInvocation, org.jboss.ejb3.tx2.aop.EJBInvocation { private static final long serialVersionUID = 4941832732679380382L; Index: core/src/main/java/org/jboss/ejb3/core/context/InvocationContextAdapter.java =================================================================== --- core/src/main/java/org/jboss/ejb3/core/context/InvocationContextAdapter.java (revision 106230) +++ core/src/main/java/org/jboss/ejb3/core/context/InvocationContextAdapter.java (working copy) @@ -23,11 +23,16 @@ import org.jboss.aop.joinpoint.MethodInvocation; import org.jboss.ejb3.context.base.BaseInvocationContext; +import org.jboss.ejb3.tx2.spi.TransactionalInvocationContext; +import javax.ejb.ApplicationException; +import javax.ejb.TransactionAttributeType; + /** * @author Carlo de Wolf */ public class InvocationContextAdapter extends BaseInvocationContext + implements TransactionalInvocationContext { private MethodInvocation delegate; @@ -38,6 +43,24 @@ } @Override + public ApplicationException getApplicationException(Class e) + { + return TxUtil.getApplicationException(e, delegate); + } + + @Override + public TransactionAttributeType getTransactionAttribute() + { + return TxUtil.getTxType(delegate); + } + + @Override + public int getTransactionTimeout() + { + return TxUtil.getTransactionTimeout(delegate); + } + + @Override public Object proceed() throws Exception { try Index: core/src/main/java/org/jboss/ejb3/core/context/SessionInvocationContextAdapter.java =================================================================== --- core/src/main/java/org/jboss/ejb3/core/context/SessionInvocationContextAdapter.java (revision 106230) +++ core/src/main/java/org/jboss/ejb3/core/context/SessionInvocationContextAdapter.java (working copy) @@ -23,11 +23,16 @@ import org.jboss.aop.joinpoint.MethodInvocation; import org.jboss.ejb3.context.base.BaseSessionInvocationContext; +import org.jboss.ejb3.tx2.spi.TransactionalInvocationContext; +import javax.ejb.ApplicationException; +import javax.ejb.TransactionAttributeType; + /** * @author Carlo de Wolf */ public class SessionInvocationContextAdapter extends BaseSessionInvocationContext + implements TransactionalInvocationContext { private MethodInvocation delegate; @@ -38,6 +43,24 @@ } @Override + public ApplicationException getApplicationException(Class e) + { + return TxUtil.getApplicationException(e, delegate); + } + + @Override + public TransactionAttributeType getTransactionAttribute() + { + return TxUtil.getTxType(delegate); + } + + @Override + public int getTransactionTimeout() + { + return TxUtil.getTransactionTimeout(delegate); + } + + @Override public Object proceed() throws Exception { try Index: core/src/main/java/org/jboss/ejb3/core/context/TxUtil.java =================================================================== --- core/src/main/java/org/jboss/ejb3/core/context/TxUtil.java (revision 0) +++ core/src/main/java/org/jboss/ejb3/core/context/TxUtil.java (revision 0) @@ -0,0 +1,65 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright (c) 2010, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.ejb3.core.context; + +import org.jboss.aop.Advisor; +import org.jboss.aop.joinpoint.MethodInvocation; +import org.jboss.ejb3.annotation.TransactionTimeout; + +import javax.ejb.TransactionAttributeType; +import java.lang.reflect.Method; + +/** + * @author Carlo de Wolf + */ +public class TxUtil extends org.jboss.ejb3.tx.TxUtil +{ + protected static int getTransactionTimeout(MethodInvocation invocation) + { + return getTransactionTimeout(invocation.getAdvisor(), invocation.getActualMethod()); + } + + protected static int getTransactionTimeout(Advisor advisor, Method method) + { + TransactionTimeout annotation = (TransactionTimeout)advisor.resolveAnnotation(method, TransactionTimeout.class); + + if (annotation == null) + annotation = (TransactionTimeout)advisor.resolveAnnotation(TransactionTimeout.class); + + if (annotation != null) + { + return annotation.value(); + } + + return -1; + } + + protected static TransactionAttributeType getTxType(MethodInvocation invocation) + { + return getTxType(invocation.getAdvisor(), invocation.getActualMethod()); + } + + protected static TransactionAttributeType getTxType(Advisor advisor, Method method) + { + return org.jboss.ejb3.tx.TxUtil.getTxType(advisor, method); + } +} Index: core/src/main/java/org/jboss/ejb3/mdb/MessageContainerInvocation.java =================================================================== --- core/src/main/java/org/jboss/ejb3/mdb/MessageContainerInvocation.java (revision 106230) +++ core/src/main/java/org/jboss/ejb3/mdb/MessageContainerInvocation.java (working copy) @@ -24,8 +24,8 @@ import org.jboss.aop.MethodInfo; import org.jboss.ejb3.BeanContext; import org.jboss.ejb3.EJBContainerInvocation; -import org.jboss.ejb3.context.spi.InvocationContext; import org.jboss.ejb3.core.context.InvocationContextAdapter; +import org.jboss.ejb3.tx2.spi.TransactionalInvocationContext; /** * @author Carlo de Wolf @@ -40,7 +40,7 @@ this.invocationContext = new InvocationContextAdapter(this); } - public InvocationContext getInvocationContext() + public TransactionalInvocationContext getInvocationContext() { return invocationContext; } Index: core/src/main/resources/ejb3-interceptors-aop.xml =================================================================== --- core/src/main/resources/ejb3-interceptors-aop.xml (revision 106230) +++ core/src/main/resources/ejb3-interceptors-aop.xml (working copy) @@ -61,7 +61,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -195,7 +195,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -302,7 +302,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -382,7 +382,7 @@ - + @@ -407,7 +407,7 @@ @@ -426,7 +426,7 @@ - + @@ -452,7 +452,7 @@ - + Index: core/pom.xml =================================================================== --- core/pom.xml (revision 106230) +++ core/pom.xml (working copy) @@ -17,7 +17,7 @@ jboss-ejb3-core jar - 1.4.3-SNAPSHOT + 1.5.0-SNAPSHOT JBoss EJB 3.0 Core http://labs.jboss.com/jbossejb3 JBoss EJB 3.0 Core @@ -45,6 +45,7 @@ 5.1.0.GA 2.0.3.SP1 1.0.0-alpha-2 + 0.0.1-SNAPSHOT 2.1.1 @@ -493,6 +494,12 @@ + org.jboss.ejb3.tx2 + jboss-ejb3-tx2-aop + ${version.org.jboss.ejb3.tx2} + + + org.jboss.ejb3.vfs jboss-ejb3-vfs-spi 1.0.0-alpha-1