Merge pull request #3560 from ebean-orm/feature/3533-aop-transactional

#3533 Support @Transactional on module path
This commit is contained in:
Rob Bygrave
2025-02-12 18:53:57 +13:00
committed by GitHub
8 changed files with 73 additions and 27 deletions
@@ -0,0 +1,43 @@
package io.ebean.plugin;
import io.ebean.DB;
import io.ebean.TxScope;
/**
* Helper object to make AOP generated code simpler.
*/
public final class AOPTransactionScope {
private static boolean enabled = true;
/**
* Entering an enhanced transactional method.
*/
public static void enter(TxScope txScope) {
if (enabled) {
server().scopedTransactionEnter(txScope);
}
}
/**
* Exiting an enhanced transactional method.
*/
public static void exit(Object returnOrThrowable, int opCode) {
if (enabled) {
server().scopedTransactionExit(returnOrThrowable, opCode);
}
}
private static SpiServer server() {
return (SpiServer) DB.getDefault();
}
/**
* Defines if the @Transactional does what is supposed to do or is disabled
* (useful only unit testing)
*
* @param enabled if set to false, @Transactional will not create a transaction
*/
public static void setEnabled(boolean enabled) {
AOPTransactionScope.enabled = enabled;
}
}
@@ -1,6 +1,7 @@
package io.ebean.plugin;
import io.ebean.Database;
import io.ebean.TxScope;
import io.ebean.bean.BeanLoader;
import io.ebean.bean.EntityBeanIntercept;
import io.ebean.DatabaseBuilder;
@@ -63,4 +64,15 @@ public interface SpiServer extends Database {
* Typically due to serialisation or multiple stateless updates.
*/
void loadBean(EntityBeanIntercept ebi);
/**
* Start an enhanced transactional method.
*/
void scopedTransactionEnter(TxScope txScope);
/**
* Handle the end of an enhanced Transactional method.
*/
void scopedTransactionExit(Object returnOrThrowable, int opCode);
}
@@ -1 +1 @@
ebean-version: 148
ebean-version: 149
@@ -1,34 +1,25 @@
package io.ebeaninternal.api;
import io.ebean.DB;
import io.ebean.TxScope;
import io.ebean.plugin.AOPTransactionScope;
/**
* Helper object to make AOP generated code simpler.
*/
public final class HelpScopeTrans {
private static boolean enabled = true;
/**
* Entering an enhanced transactional method.
*/
public static void enter(TxScope txScope) {
if (enabled) {
server().scopedTransactionEnter(txScope);
}
AOPTransactionScope.enter(txScope);
}
/**
* Exiting an enhanced transactional method.
*/
public static void exit(Object returnOrThrowable, int opCode) {
if (enabled) {
server().scopedTransactionExit(returnOrThrowable, opCode);
}
}
private static SpiEbeanServer server() {
return (SpiEbeanServer) DB.getDefault();
AOPTransactionScope.exit(returnOrThrowable, opCode);
}
/**
@@ -38,6 +29,6 @@ public final class HelpScopeTrans {
* @param enabled if set to false, @Transactional will not create a transaction
*/
public static void setEnabled(boolean enabled) {
HelpScopeTrans.enabled = enabled;
AOPTransactionScope.setEnabled(enabled);
}
}
@@ -216,16 +216,6 @@ public interface SpiEbeanServer extends SpiServer, ExtendedServer, BeanCollectio
*/
void slowQueryCheck(long executionTimeMicros, int rowCount, SpiQuery<?> query);
/**
* Start an enhanced transactional method.
*/
void scopedTransactionEnter(TxScope txScope);
/**
* Handle the end of an enhanced Transactional method.
*/
void scopedTransactionExit(Object returnOrThrowable, int opCode);
/**
* SqlQuery find single attribute.
*/
+1 -1
View File
@@ -309,7 +309,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:14.8.0</tile>
<tile>io.ebean.tile:enhancement:14.9.0-RC1</tile>
</tiles>
</configuration>
</plugin>
@@ -187,6 +187,16 @@ public class TDSpiServer implements SpiServer {
}
@Override
public void scopedTransactionEnter(TxScope txScope) {
}
@Override
public void scopedTransactionExit(Object returnOrThrowable, int opCode) {
}
@Override
public Transaction createTransaction() {
return null;
+2 -2
View File
@@ -53,8 +53,8 @@
<ebean-migration.version>14.2.0</ebean-migration.version>
<ebean-test-containers.version>7.5</ebean-test-containers.version>
<ebean-datasource.version>9.0</ebean-datasource.version>
<ebean-agent.version>14.8.1</ebean-agent.version>
<ebean-maven-plugin.version>14.8.1</ebean-maven-plugin.version>
<ebean-agent.version>14.9.0-RC1</ebean-agent.version>
<ebean-maven-plugin.version>14.9.0-RC1</ebean-maven-plugin.version>
<surefire.useModulePath>false</surefire.useModulePath>
<maven-javadoc-plugin.version>3.10.1</maven-javadoc-plugin.version>
</properties>