diff --git a/ebean-agent/pom.xml b/ebean-agent/pom.xml
index f5cb7d9..a4d7b4a 100644
--- a/ebean-agent/pom.xml
+++ b/ebean-agent/pom.xml
@@ -9,7 +9,7 @@
io.ebean
ebean-agent
- 14.8.2
+ 14.9.0-RC1
jar
ebean-agent
diff --git a/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceConstants.java b/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceConstants.java
index 336cd80..3770aed 100644
--- a/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceConstants.java
+++ b/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceConstants.java
@@ -65,7 +65,9 @@ interface Jakarta {
String L_STRING = "Ljava/lang/String;";
String L_OBJECT = "Ljava/lang/Object;";
String L_INTERCEPT = "Lio/ebean/bean/EntityBeanIntercept;";
- String L_HELPSCOPETRANS = "Lio/ebeaninternal/api/HelpScopeTrans;";
+ String HELPSCOPETRANS = "io/ebeaninternal/api/HelpScopeTrans";
+ String AOPTRANSACTIONSCOPE = "io/ebean/plugin/AOPTransactionScope";
+
String L_DRAFT = "Lio/ebean/annotation/Draft;";
String C_TXSCOPE = "io/ebean/TxScope";
String C_TXTYPE = "io/ebean/annotation/TxType";
diff --git a/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceContext.java b/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceContext.java
index 27bb6f3..7c4aa02 100644
--- a/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceContext.java
+++ b/ebean-agent/src/main/java/io/ebean/enhance/common/EnhanceContext.java
@@ -498,6 +498,10 @@ public boolean fluidQueryBuilders() {
return enhancementVersion >= 148;
}
+ public boolean useAopTransactionScope() {
+ return enhancementVersion >= 149;
+ }
+
public ProfileLineNumberMode profileLineMode() {
return profileLineNumberMode;
}
diff --git a/ebean-agent/src/main/java/io/ebean/enhance/transactional/ClassAdapterTransactional.java b/ebean-agent/src/main/java/io/ebean/enhance/transactional/ClassAdapterTransactional.java
index 3ff2552..bc28971 100644
--- a/ebean-agent/src/main/java/io/ebean/enhance/transactional/ClassAdapterTransactional.java
+++ b/ebean-agent/src/main/java/io/ebean/enhance/transactional/ClassAdapterTransactional.java
@@ -341,6 +341,10 @@ boolean isEnableProfileLocation() {
return enhanceContext.isEnableProfileLocation();
}
+ boolean useAopTransactionScope() {
+ return enhanceContext.useAopTransactionScope();
+ }
+
int nextQueryProfileLocation() {
return queryProfileCount++;
}
diff --git a/ebean-agent/src/main/java/io/ebean/enhance/transactional/MethodAdapter.java b/ebean-agent/src/main/java/io/ebean/enhance/transactional/MethodAdapter.java
index f2ca731..d949b8a 100644
--- a/ebean-agent/src/main/java/io/ebean/enhance/transactional/MethodAdapter.java
+++ b/ebean-agent/src/main/java/io/ebean/enhance/transactional/MethodAdapter.java
@@ -25,17 +25,18 @@ class MethodAdapter extends FinallyAdapter implements EnhanceConstants, Opcodes
private static final String TX_FIELD_PREFIX = ClassAdapterTransactional.TX_FIELD_PREFIX;
private static final Type txScopeType = Type.getType("L" + C_TXSCOPE + ";");
- private static final Type helpScopeTrans = Type.getType(L_HELPSCOPETRANS);
private final AnnotationInfo annotationInfo;
private final ClassAdapterTransactional classAdapter;
private final ProfileMethodInstruction profileMethod;
+ private final String aopTransactionScope;
private boolean transactional;
private int posTxScope;
MethodAdapter(ClassAdapterTransactional classAdapter, final MethodVisitor mv, final int access, final String name, final String desc) {
super(mv, access, name, desc);
this.classAdapter = classAdapter;
+ this.aopTransactionScope = classAdapter.useAopTransactionScope() ? AOPTRANSACTIONSCOPE : HELPSCOPETRANS;
this.profileMethod = new ProfileMethodInstruction(classAdapter, mv, name);
// inherit from class level Transactional annotation
AnnotationInfo parentInfo = classAdapter.getClassAnnotationInfo();
@@ -314,11 +315,10 @@ protected void onMethodEnter() {
}
mv.visitVarInsn(ALOAD, posTxScope);
- mv.visitMethodInsn(INVOKESTATIC, helpScopeTrans.getInternalName(), "enter", "("
+ mv.visitMethodInsn(INVOKESTATIC, aopTransactionScope, "enter", "("
+ txScopeType.getDescriptor() + ")V", false);
}
-
@Override
protected void onFinally(int opcode) {
if (!transactional) {
@@ -337,7 +337,7 @@ protected void onFinally(int opcode) {
box(getReturnType());
}
visitIntInsn(SIPUSH, opcode);
- visitMethodInsn(INVOKESTATIC, helpScopeTrans.getInternalName(), "exit", "(Ljava/lang/Object;I)V", false);
+ visitMethodInsn(INVOKESTATIC, aopTransactionScope, "exit", "(Ljava/lang/Object;I)V", false);
}
}