From e9e680c6b9aac0f81b4e9f6584ed916e24ac3923 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:03:20 +0100 Subject: [PATCH 01/17] HHH-18964 remove BitronixJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 4 -- .../internal/BitronixJtaPlatform.java | 38 ------------------- .../internal/StandardJtaPlatformResolver.java | 8 ---- .../JtaPlatformSelectorTest.java | 8 ---- 4 files changed, 58 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BitronixJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 5ff662d7e140..3fae87b4eeb8 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -7,7 +7,6 @@ import java.util.Objects; import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.BitronixJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.BorlandEnterpriseServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; @@ -45,9 +44,6 @@ public Class resolve(final String name) { } private static Class caseB(final String name) { - if ( "Bitronix".equals( name ) ) { - return BitronixJtaPlatform.class; - } if ( "Borland".equals( name ) ) { return BorlandEnterpriseServerJtaPlatform.class; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BitronixJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BitronixJtaPlatform.java deleted file mode 100644 index 3a993a228cec..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BitronixJtaPlatform.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import java.lang.reflect.Method; -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; -import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException; - -/** - * @author Steve Ebersole - */ -public class BitronixJtaPlatform extends AbstractJtaPlatform { - public static final String TM_CLASS_NAME = "bitronix.tm.TransactionManagerServices"; - - @Override - protected TransactionManager locateTransactionManager() { - try { - final Method getTransactionManagerMethod = - serviceRegistry().requireService( ClassLoaderService.class ) - .classForName( TM_CLASS_NAME ) - .getMethod( "getTransactionManager" ); - return (TransactionManager) getTransactionManagerMethod.invoke( null ); - } - catch (Exception e) { - throw new JtaPlatformException( "Could not locate Bitronix TransactionManager", e ); - } - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( "java:comp/UserTransaction" ); - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java index 63c2c7c131b0..96bc9f3e63cd 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java @@ -88,14 +88,6 @@ public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryIm catch (ClassLoadingException ignore) { } - // Bitronix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - try { - classLoaderService.classForName( BitronixJtaPlatform.TM_CLASS_NAME ); - return new BitronixJtaPlatform(); - } - catch (ClassLoadingException ignore) { - } - // JOnAS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ try { classLoaderService.classForName( JOnASJtaPlatform.TM_CLASS_NAME ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 21b5684f1ac0..b3883406673c 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -6,7 +6,6 @@ import org.hibernate.boot.registry.selector.internal.DefaultJtaPlatformSelector; import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.BitronixJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.BorlandEnterpriseServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; @@ -54,13 +53,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.BorlandEnterpriseServerJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - BitronixJtaPlatform.class, - "Bitronix", - "org.hibernate.service.jta.platform.internal.BitronixJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, JBossAppServerJtaPlatform.class, From d9283e9789eb9e177900bc33d7fbabeeed5d369e Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:04:47 +0100 Subject: [PATCH 02/17] HHH-18964 remove SapNetWeaverJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 4 --- .../internal/SapNetWeaverJtaPlatform.java | 28 ------------------- .../JtaPlatformSelectorTest.java | 8 ------ 3 files changed, 40 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SapNetWeaverJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 3fae87b4eeb8..9e08fccad3a8 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -16,7 +16,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.SapNetWeaverJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; @@ -98,9 +97,6 @@ private static Class caseOthers(final String name) { if ( "Resin".equals( name ) ) { return ResinJtaPlatform.class; } - if ( "SapNetWeaver".equals( name ) ) { - return SapNetWeaverJtaPlatform.class; - } if ( "SunOne".equals( name ) ) { return SunOneJtaPlatform.class; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SapNetWeaverJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SapNetWeaverJtaPlatform.java deleted file mode 100644 index 49e27459fd26..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SapNetWeaverJtaPlatform.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -/** - * {@link org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform} implementation for SAP NetWeaver - * - * @author Lukas Pradel - */ -public class SapNetWeaverJtaPlatform extends AbstractJtaPlatform { - public static final String TM_NAME = "TransactionManager"; - public static final String UT_NAME = "UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - return (TransactionManager) jndiService().locate( TM_NAME ); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index b3883406673c..7013cdd9d5dc 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -15,7 +15,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.SapNetWeaverJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; @@ -109,13 +108,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.ResinJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - SapNetWeaverJtaPlatform.class, - "SapNetWeaver", - "org.hibernate.service.jta.platform.internal.SapNetWeaverJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, SunOneJtaPlatform.class, From c24f4b68165a5a77982320ebb755c7b0ae9d3048 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:10:30 +0100 Subject: [PATCH 03/17] HHH-18964 use switch expression --- .../internal/DefaultJtaPlatformSelector.java | 85 +++++++------------ 1 file changed, 31 insertions(+), 54 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 9e08fccad3a8..f6d5ace6e390 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -28,18 +28,17 @@ public class DefaultJtaPlatformSelector implements LazyServiceResolver resolve(final String name) { Objects.requireNonNull( name); - if ( name.isEmpty() ) { + if ( name.isBlank() ) { return null; } //Let's organize all string matches in groups by first letter: - final char n = name.charAt( 0 ); - switch ( n ) { - case 'B': return caseB( name ); - case 'J': return caseJ( name ); - case 'W': return caseW( name ); - case 'o': return caseLegacy( name, this ); - default: return caseOthers( name ); - } + return switch ( name.charAt( 0 ) ) { + case 'B' -> caseB( name ); + case 'J'-> caseJ( name ); + case 'W'-> caseW( name ); + case 'o'-> caseLegacy( name, this ); + default -> caseOthers( name ); + }; } private static Class caseB(final String name) { @@ -50,57 +49,35 @@ private static Class caseB(final String name) { } private static Class caseJ(final String name) { - if ( "JBossAS".equals( name ) ) { - return JBossAppServerJtaPlatform.class; - } - if ( "JBossTS".equals( name ) ) { - return JBossStandAloneJtaPlatform.class; - } - if ( "JOnAS".equals( name ) ) { - return JOnASJtaPlatform.class; - } - if ( "JOTM".equals( name ) ) { - return JOTMJtaPlatform.class; - } - if ( "JRun4".equals( name ) ) { - return JRun4JtaPlatform.class; - } - return null; + return switch ( name ) { + case "JBossAS" -> JBossAppServerJtaPlatform.class; + case "JBossTS" -> JBossStandAloneJtaPlatform.class; + case "JOnAS" -> JOnASJtaPlatform.class; + case "JOTM" -> JOTMJtaPlatform.class; + case "JRun4" -> JRun4JtaPlatform.class; + case null, default -> null; + }; } private static Class caseW(final String name) { - if ( "Weblogic".equals( name ) ) { - return WeblogicJtaPlatform.class; - } - if ( "WebSphereLiberty".equals( name ) ) { - return WebSphereLibertyJtaPlatform.class; - } - if ( "WebSphere".equals( name ) ) { - return WebSphereJtaPlatform.class; - } - if ( "WebSphereExtended".equals( name ) ) { - return WebSphereExtendedJtaPlatform.class; - } - return null; + return switch ( name ) { + case "Weblogic" -> WeblogicJtaPlatform.class; + case "WebSphereLiberty" -> WebSphereLibertyJtaPlatform.class; + case "WebSphere" -> WebSphereJtaPlatform.class; + case "WebSphereExtended" -> WebSphereExtendedJtaPlatform.class; + case null, default -> null; + }; } private static Class caseOthers(final String name) { - if ( "Atomikos".equals( name ) ) { - return AtomikosJtaPlatform.class; - } - if ( "OC4J".equals( name ) ) { - return OC4JJtaPlatform.class; - } - if ( "Orion".equals( name ) ) { - return OrionJtaPlatform.class; - } - if ( "Resin".equals( name ) ) { - return ResinJtaPlatform.class; - } - if ( "SunOne".equals( name ) ) { - return SunOneJtaPlatform.class; - } - return null; + return switch ( name ) { + case "Atomikos" -> AtomikosJtaPlatform.class; + case "OC4J" -> OC4JJtaPlatform.class; + case "Orion" -> OrionJtaPlatform.class; + case "Resin" -> ResinJtaPlatform.class; + case "SunOne" -> SunOneJtaPlatform.class; + case null, default -> null; + }; } /** From 938849856238a8752e08a03c7f4200d4f68a64c9 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:12:14 +0100 Subject: [PATCH 04/17] HHH-18964 remove BorlandEnterpriseServerJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 12 --------- .../BorlandEnterpriseServerJtaPlatform.java | 26 ------------------- .../JtaPlatformSelectorTest.java | 8 ------ 3 files changed, 46 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BorlandEnterpriseServerJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index f6d5ace6e390..d8d1beadc260 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -7,7 +7,6 @@ import java.util.Objects; import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.BorlandEnterpriseServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOTMJtaPlatform; @@ -33,7 +32,6 @@ public Class resolve(final String name) { } //Let's organize all string matches in groups by first letter: return switch ( name.charAt( 0 ) ) { - case 'B' -> caseB( name ); case 'J'-> caseJ( name ); case 'W'-> caseW( name ); case 'o'-> caseLegacy( name, this ); @@ -41,13 +39,6 @@ public Class resolve(final String name) { }; } - private static Class caseB(final String name) { - if ( "Borland".equals( name ) ) { - return BorlandEnterpriseServerJtaPlatform.class; - } - return null; - } - private static Class caseJ(final String name) { return switch ( name ) { case "JBossAS" -> JBossAppServerJtaPlatform.class; @@ -89,9 +80,6 @@ private static Class caseLegacy( final DefaultJtaPlatformSelector defaultJtaPlatformSelector) { //First, let's deal with the special cases which don't follow any recognizable pattern: - if ( name.equals( "org.hibernate.service.jta.platform.internal.BorlandEnterpriseServerJtaPlatform" ) ) { - return BorlandEnterpriseServerJtaPlatform.class; - } if ( name.equals( "org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" ) ) { return JBossAppServerJtaPlatform.class; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BorlandEnterpriseServerJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BorlandEnterpriseServerJtaPlatform.java deleted file mode 100644 index 6fac084a759e..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/BorlandEnterpriseServerJtaPlatform.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -/** - * @author Steve Ebersole - */ -public class BorlandEnterpriseServerJtaPlatform extends AbstractJtaPlatform { - protected static final String TM_NAME = "java:pm/TransactionManager"; - protected static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - return (TransactionManager) jndiService().locate( TM_NAME ); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 7013cdd9d5dc..69480a789fdd 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -6,7 +6,6 @@ import org.hibernate.boot.registry.selector.internal.DefaultJtaPlatformSelector; import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.BorlandEnterpriseServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOTMJtaPlatform; @@ -45,13 +44,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.AtomikosJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - BorlandEnterpriseServerJtaPlatform.class, - "Borland", - "org.hibernate.service.jta.platform.internal.BorlandEnterpriseServerJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, JBossAppServerJtaPlatform.class, From 415ca0d4f2050d09c401f55682efcb502efe3551 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:14:15 +0100 Subject: [PATCH 05/17] HHH-18964 remove JOTMJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 2 - .../platform/internal/JOTMJtaPlatform.java | 38 ------------------- .../internal/StandardJtaPlatformResolver.java | 8 ---- .../JtaPlatformSelectorTest.java | 8 ---- 4 files changed, 56 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOTMJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index d8d1beadc260..96c171b42a6d 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -9,7 +9,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.JOTMJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JRun4JtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; @@ -44,7 +43,6 @@ private static Class caseJ(final String name) { case "JBossAS" -> JBossAppServerJtaPlatform.class; case "JBossTS" -> JBossStandAloneJtaPlatform.class; case "JOnAS" -> JOnASJtaPlatform.class; - case "JOTM" -> JOTMJtaPlatform.class; case "JRun4" -> JRun4JtaPlatform.class; case null, default -> null; }; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOTMJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOTMJtaPlatform.java deleted file mode 100644 index e038df6c6816..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOTMJtaPlatform.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; -import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException; - -/** - * @author Steve Ebersole - */ -public class JOTMJtaPlatform extends AbstractJtaPlatform { - public static final String TM_CLASS_NAME = "org.objectweb.jotm.Current"; - public static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - try { - return (TransactionManager) serviceRegistry() - .requireService( ClassLoaderService.class ) - .classForName( TM_CLASS_NAME ) - .getMethod( "getTransactionManager" ) - .invoke( null, (Object[]) null ); - } - catch (Exception e) { - throw new JtaPlatformException( "Could not obtain JOTM transaction manager instance", e ); - } - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java index 96bc9f3e63cd..f71ec98c452a 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java @@ -96,14 +96,6 @@ public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryIm catch (ClassLoadingException ignore) { } - // JOTM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - try { - classLoaderService.classForName( JOTMJtaPlatform.TM_CLASS_NAME ); - return new JOTMJtaPlatform(); - } - catch (ClassLoadingException ignore) { - } - // WebSphere Liberty ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ try { classLoaderService.classForName(WebSphereLibertyJtaPlatform.TMF_CLASS_NAME); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 69480a789fdd..d1ffad30ab9d 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -8,7 +8,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.JOTMJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JRun4JtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; @@ -65,13 +64,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.JOnASJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - JOTMJtaPlatform.class, - "JOTM", - "org.hibernate.service.jta.platform.internal.JOTMJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, JRun4JtaPlatform.class, From 5722efb0dcdf8ba842df33b8a24c6796e5972942 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:16:45 +0100 Subject: [PATCH 06/17] HHH-18964 remove JRun4JtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 2 -- .../platform/internal/JRun4JtaPlatform.java | 29 ------------------- .../JtaPlatformSelectorTest.java | 8 ----- 3 files changed, 39 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JRun4JtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 96c171b42a6d..b3285c4cf2a8 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -10,7 +10,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.JRun4JtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; @@ -43,7 +42,6 @@ private static Class caseJ(final String name) { case "JBossAS" -> JBossAppServerJtaPlatform.class; case "JBossTS" -> JBossStandAloneJtaPlatform.class; case "JOnAS" -> JOnASJtaPlatform.class; - case "JRun4" -> JRun4JtaPlatform.class; case null, default -> null; }; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JRun4JtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JRun4JtaPlatform.java deleted file mode 100644 index 0eae843016a4..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JRun4JtaPlatform.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -/** - * {@link org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform} implementation for JRun4 AS - * - * @author Joseph Bissen - * @author Steve Ebersole - */ -public class JRun4JtaPlatform extends AbstractJtaPlatform { - public static final String TM_NAME = "java:/TransactionManager"; - public static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - return (TransactionManager) jndiService().locate( TM_NAME ); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index d1ffad30ab9d..ca096d515988 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -9,7 +9,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.JRun4JtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; @@ -64,13 +63,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.JOnASJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - JRun4JtaPlatform.class, - "JRun4", - "org.hibernate.service.jta.platform.internal.JRun4JtaPlatform" - ); - testJtaPlatformResolves( strategySelector, OC4JJtaPlatform.class, From 8c20f8c0ca35b59f3cd642f444e2ef6166ee21e1 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:18:51 +0100 Subject: [PATCH 07/17] HHH-18964 remove OC4JJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 2 -- .../platform/internal/OC4JJtaPlatform.java | 29 ------------------- .../JtaPlatformSelectorTest.java | 8 ----- 3 files changed, 39 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OC4JJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index b3285c4cf2a8..54ef96158a78 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -10,7 +10,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; @@ -59,7 +58,6 @@ private static Class caseW(final String name) { private static Class caseOthers(final String name) { return switch ( name ) { case "Atomikos" -> AtomikosJtaPlatform.class; - case "OC4J" -> OC4JJtaPlatform.class; case "Orion" -> OrionJtaPlatform.class; case "Resin" -> ResinJtaPlatform.class; case "SunOne" -> SunOneJtaPlatform.class; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OC4JJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OC4JJtaPlatform.java deleted file mode 100644 index 9a0117101515..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OC4JJtaPlatform.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -/** - * {@link org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform} implementation for the OC4J (Oracle) AS. - * - * @author Stijn Janssens - * @author Steve Ebersole - */ -public class OC4JJtaPlatform extends AbstractJtaPlatform { - public static final String TM_NAME = "java:comp/pm/TransactionManager"; - public static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - return (TransactionManager) jndiService().locate( TM_NAME ); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index ca096d515988..8b23bca5d0e2 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -9,7 +9,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.OC4JJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; @@ -63,13 +62,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.JOnASJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - OC4JJtaPlatform.class, - "OC4J", - "org.hibernate.service.jta.platform.internal.OC4JJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, OrionJtaPlatform.class, From 4c935690e7cf75e89d188a4b712da50b927fee29 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:20:41 +0100 Subject: [PATCH 08/17] HHH-18964 remove OrionJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 2 -- .../platform/internal/OrionJtaPlatform.java | 29 ------------------- .../JtaPlatformSelectorTest.java | 8 ----- 3 files changed, 39 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OrionJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 54ef96158a78..567b2f96dbc7 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -10,7 +10,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; @@ -58,7 +57,6 @@ private static Class caseW(final String name) { private static Class caseOthers(final String name) { return switch ( name ) { case "Atomikos" -> AtomikosJtaPlatform.class; - case "Orion" -> OrionJtaPlatform.class; case "Resin" -> ResinJtaPlatform.class; case "SunOne" -> SunOneJtaPlatform.class; case null, default -> null; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OrionJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OrionJtaPlatform.java deleted file mode 100644 index 44acc93437d6..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/OrionJtaPlatform.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -/** - * {@link org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform} implementation for Orion - * - * @author Gavin King - * @author Steve Ebersole - */ -public class OrionJtaPlatform extends AbstractJtaPlatform { - public static final String TM_NAME = "java:comp/UserTransaction"; - public static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - return (TransactionManager) jndiService().locate( TM_NAME ); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 8b23bca5d0e2..bab0a5aff732 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -9,7 +9,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.OrionJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; @@ -62,13 +61,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.JOnASJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - OrionJtaPlatform.class, - "Orion", - "org.hibernate.service.jta.platform.internal.OrionJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, ResinJtaPlatform.class, From 67ac211de727c45b62078c5f538bfb827b865631 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:23:06 +0100 Subject: [PATCH 09/17] HHH-18964 remove JOnASJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 2 - .../platform/internal/JOnASJtaPlatform.java | 38 ------------------- .../internal/StandardJtaPlatformResolver.java | 8 ---- .../JtaPlatformSelectorTest.java | 8 ---- 4 files changed, 56 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOnASJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 567b2f96dbc7..85e72e19de92 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -9,7 +9,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; @@ -39,7 +38,6 @@ private static Class caseJ(final String name) { return switch ( name ) { case "JBossAS" -> JBossAppServerJtaPlatform.class; case "JBossTS" -> JBossStandAloneJtaPlatform.class; - case "JOnAS" -> JOnASJtaPlatform.class; case null, default -> null; }; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOnASJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOnASJtaPlatform.java deleted file mode 100644 index 0c824ecc1892..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JOnASJtaPlatform.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import java.lang.reflect.Method; -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException; - -/** - * JTA platform implementation for JOnAS - * - * @author Steve Ebersole - */ -public class JOnASJtaPlatform extends AbstractJtaPlatform { - public static final String UT_NAME = "java:comp/UserTransaction"; - public static final String TM_CLASS_NAME = "org.objectweb.jonas_tm.Current"; - - @Override - protected TransactionManager locateTransactionManager() { - try { - final Class clazz = Class.forName( TM_CLASS_NAME ); - final Method getTransactionManagerMethod = clazz.getMethod( "getTransactionManager" ); - return (TransactionManager) getTransactionManagerMethod.invoke( null ); - } - catch (Exception e) { - throw new JtaPlatformException( "Could not obtain JOnAS transaction manager instance", e ); - } - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java index f71ec98c452a..a02a9bf3999f 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java @@ -88,14 +88,6 @@ public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryIm catch (ClassLoadingException ignore) { } - // JOnAS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - try { - classLoaderService.classForName( JOnASJtaPlatform.TM_CLASS_NAME ); - return new JOnASJtaPlatform(); - } - catch (ClassLoadingException ignore) { - } - // WebSphere Liberty ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ try { classLoaderService.classForName(WebSphereLibertyJtaPlatform.TMF_CLASS_NAME); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index bab0a5aff732..40988abd7eff 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -8,7 +8,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.JOnASJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; @@ -54,13 +53,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - JOnASJtaPlatform.class, - "JOnAS", - "org.hibernate.service.jta.platform.internal.JOnASJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, ResinJtaPlatform.class, From e24f99c02ab1b122a5897168ffae887b981c0805 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:28:09 +0100 Subject: [PATCH 10/17] HHH-18964 remove SunOneJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 2 -- .../platform/internal/SunOneJtaPlatform.java | 31 ------------------- .../JtaPlatformSelectorTest.java | 8 ----- 3 files changed, 41 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 85e72e19de92..fec3948de79d 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -10,7 +10,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; @@ -56,7 +55,6 @@ private static Class caseOthers(final String name) { return switch ( name ) { case "Atomikos" -> AtomikosJtaPlatform.class; case "Resin" -> ResinJtaPlatform.class; - case "SunOne" -> SunOneJtaPlatform.class; case null, default -> null; }; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java deleted file mode 100644 index a5cf93639f6f..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -/** - * {@link org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform} implementation for Sun ONE Application Server 7 and above - * - * @author Robert Davidson - * @author Sanjeev Krishnan - * @author Emmanuel Bernard - * @author Steve Ebersole - */ -public class SunOneJtaPlatform extends AbstractJtaPlatform { - public static final String TM_NAME = "java:appserver/TransactionManager"; - public static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected TransactionManager locateTransactionManager() { - return (TransactionManager) jndiService().locate( TM_NAME ); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 40988abd7eff..146bfb752304 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -9,7 +9,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; @@ -60,13 +59,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.ResinJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - SunOneJtaPlatform.class, - "SunOne", - "org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" - ); - testJtaPlatformResolves( strategySelector, WeblogicJtaPlatform.class, From ba9e0a261a9f618d5c7c4c531b8f3013054e66ce Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:37:20 +0100 Subject: [PATCH 11/17] HHH-18964 simplify DefaultJtaPlatformSelector --- .../internal/DefaultJtaPlatformSelector.java | 70 +++++++------------ .../internal/StandardJtaPlatformResolver.java | 6 +- .../jta/platform/spi/JtaPlatformResolver.java | 2 +- 3 files changed, 31 insertions(+), 47 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index fec3948de79d..ebd8d971f8fd 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -24,60 +24,44 @@ public Class resolve(final String name) { if ( name.isBlank() ) { return null; } - //Let's organize all string matches in groups by first letter: - return switch ( name.charAt( 0 ) ) { - case 'J'-> caseJ( name ); - case 'W'-> caseW( name ); - case 'o'-> caseLegacy( name, this ); - default -> caseOthers( name ); - }; - } - - private static Class caseJ(final String name) { - return switch ( name ) { - case "JBossAS" -> JBossAppServerJtaPlatform.class; - case "JBossTS" -> JBossStandAloneJtaPlatform.class; - case null, default -> null; - }; - } - - private static Class caseW(final String name) { - return switch ( name ) { - case "Weblogic" -> WeblogicJtaPlatform.class; - case "WebSphereLiberty" -> WebSphereLibertyJtaPlatform.class; - case "WebSphere" -> WebSphereJtaPlatform.class; - case "WebSphereExtended" -> WebSphereExtendedJtaPlatform.class; - case null, default -> null; - }; + else if ( name.startsWith( "org." ) ) { + return legacy( name, this ); + } + else { + return switch ( name ) { + case "JBossAS" -> JBossAppServerJtaPlatform.class; + case "JBossTS" -> JBossStandAloneJtaPlatform.class; + case "Weblogic" -> WeblogicJtaPlatform.class; + case "WebSphereLiberty" -> WebSphereLibertyJtaPlatform.class; + case "WebSphere" -> WebSphereJtaPlatform.class; + case "WebSphereExtended" -> WebSphereExtendedJtaPlatform.class; + case "Atomikos" -> AtomikosJtaPlatform.class; + case "Resin" -> ResinJtaPlatform.class; + default -> null; + }; + } } - private static Class caseOthers(final String name) { - return switch ( name ) { - case "Atomikos" -> AtomikosJtaPlatform.class; - case "Resin" -> ResinJtaPlatform.class; - case null, default -> null; - }; - } /** * Special case: we have several old fully qualified classnames which need to * be remapped to their new names for backwards compatibility reasons. */ - private static Class caseLegacy( + private static Class legacy( final String name, final DefaultJtaPlatformSelector defaultJtaPlatformSelector) { //First, let's deal with the special cases which don't follow any recognizable pattern: - if ( name.equals( "org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" ) ) { - return JBossAppServerJtaPlatform.class; - } - if ( name.equals( "org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform" ) ) { - return JBossStandAloneJtaPlatform.class; - } - //This one shouldn't be necessary as it matches the implementation FQN, but let's translate the existing - //code faithfully. - if ( name.equals( "org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform" ) ) { - return WebSphereLibertyJtaPlatform.class; + switch ( name ) { + case "org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" -> { + return JBossAppServerJtaPlatform.class; + } + case "org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform" -> { + return JBossStandAloneJtaPlatform.class; + } + case "org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform" -> { + return WebSphereLibertyJtaPlatform.class; + } } //All other ones follow a pattern, beginning with the same prefix and ending with the same postfix, diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java index a02a9bf3999f..ad9028392458 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java @@ -24,13 +24,13 @@ public class StandardJtaPlatformResolver implements JtaPlatformResolver { private static final Logger log = Logger.getLogger( StandardJtaPlatformResolver.class ); @Override - public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryImplementor registry) { + public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryImplementor registry) { final ClassLoaderService classLoaderService = registry.requireService( ClassLoaderService.class ); // Initially look for a JtaPlatformProvider for ( JtaPlatformProvider provider : classLoaderService.loadJavaServices( JtaPlatformProvider.class ) ) { final JtaPlatform providedPlatform = provider.getProvidedJtaPlatform(); - log.tracef( "Located JtaPlatformProvider [%s] provided JtaPlaform : %s", provider, providedPlatform ); + log.tracef( "Located JtaPlatformProvider [%s] provided JtaPlatform : %s", provider, providedPlatform ); if ( providedPlatform!= null ) { return providedPlatform; } @@ -100,7 +100,7 @@ public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryIm for ( WebSphereJtaPlatform.WebSphereEnvironment webSphereEnvironment : WebSphereJtaPlatform.WebSphereEnvironment.values() ) { try { - Class accessClass = classLoaderService.classForName( webSphereEnvironment.getTmAccessClassName() ); + final Class accessClass = classLoaderService.classForName( webSphereEnvironment.getTmAccessClassName() ); return new WebSphereJtaPlatform( accessClass, webSphereEnvironment ); } catch (ClassLoadingException ignore) { diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/spi/JtaPlatformResolver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/spi/JtaPlatformResolver.java index 2595eb14dce4..806b26d038fb 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/spi/JtaPlatformResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/spi/JtaPlatformResolver.java @@ -22,5 +22,5 @@ * @author Steve Ebersole */ public interface JtaPlatformResolver extends Service { - JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryImplementor registry); + JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegistryImplementor registry); } From e51e41a61c65f6c4c481ffe01f89e2e87110274b Mon Sep 17 00:00:00 2001 From: Gavin King Date: Sat, 11 Jan 2025 07:27:27 +0100 Subject: [PATCH 12/17] Revert "HHH-18964 remove SunOneJtaPlatform" This reverts commit cd1755fced37aabdcb2922089af62e0866d1a967. --- .../internal/DefaultJtaPlatformSelector.java | 2 ++ .../platform/internal/SunOneJtaPlatform.java | 31 +++++++++++++++++++ .../JtaPlatformSelectorTest.java | 8 +++++ 3 files changed, 41 insertions(+) create mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index ebd8d971f8fd..1f53a687eedf 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -10,6 +10,7 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; +import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; @@ -37,6 +38,7 @@ else if ( name.startsWith( "org." ) ) { case "WebSphereExtended" -> WebSphereExtendedJtaPlatform.class; case "Atomikos" -> AtomikosJtaPlatform.class; case "Resin" -> ResinJtaPlatform.class; + case "SunOne" -> SunOneJtaPlatform.class; default -> null; }; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java new file mode 100644 index 000000000000..a5cf93639f6f --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java @@ -0,0 +1,31 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.engine.transaction.jta.platform.internal; + +import jakarta.transaction.TransactionManager; +import jakarta.transaction.UserTransaction; + +/** + * {@link org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform} implementation for Sun ONE Application Server 7 and above + * + * @author Robert Davidson + * @author Sanjeev Krishnan + * @author Emmanuel Bernard + * @author Steve Ebersole + */ +public class SunOneJtaPlatform extends AbstractJtaPlatform { + public static final String TM_NAME = "java:appserver/TransactionManager"; + public static final String UT_NAME = "java:comp/UserTransaction"; + + @Override + protected TransactionManager locateTransactionManager() { + return (TransactionManager) jndiService().locate( TM_NAME ); + } + + @Override + protected UserTransaction locateUserTransaction() { + return (UserTransaction) jndiService().locate( UT_NAME ); + } +} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 146bfb752304..40988abd7eff 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -9,6 +9,7 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; +import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; @@ -59,6 +60,13 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.service.jta.platform.internal.ResinJtaPlatform" ); + testJtaPlatformResolves( + strategySelector, + SunOneJtaPlatform.class, + "SunOne", + "org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" + ); + testJtaPlatformResolves( strategySelector, WeblogicJtaPlatform.class, From 4d6ce3c7f65a10ff6b3d10158b9f6cbe79b90633 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Sat, 11 Jan 2025 07:46:38 +0100 Subject: [PATCH 13/17] HHH-18964 rename SunOneJtaPlatform to GlassFishJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 4 ++-- ...Platform.java => GlassFishJtaPlatform.java} | 2 +- .../JtaPlatformSelectorTest.java | 18 ++++++++++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) rename hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/{SunOneJtaPlatform.java => GlassFishJtaPlatform.java} (93%) diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index 1f53a687eedf..c197579bc752 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -10,7 +10,7 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; +import org.hibernate.engine.transaction.jta.platform.internal.GlassFishJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; @@ -38,7 +38,7 @@ else if ( name.startsWith( "org." ) ) { case "WebSphereExtended" -> WebSphereExtendedJtaPlatform.class; case "Atomikos" -> AtomikosJtaPlatform.class; case "Resin" -> ResinJtaPlatform.class; - case "SunOne" -> SunOneJtaPlatform.class; + case "GlassFish", "Payara", "SunOne" -> GlassFishJtaPlatform.class; default -> null; }; } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/GlassFishJtaPlatform.java similarity index 93% rename from hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java rename to hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/GlassFishJtaPlatform.java index a5cf93639f6f..e0ef2b5f694e 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/SunOneJtaPlatform.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/GlassFishJtaPlatform.java @@ -15,7 +15,7 @@ * @author Emmanuel Bernard * @author Steve Ebersole */ -public class SunOneJtaPlatform extends AbstractJtaPlatform { +public class GlassFishJtaPlatform extends AbstractJtaPlatform { public static final String TM_NAME = "java:appserver/TransactionManager"; public static final String UT_NAME = "java:comp/UserTransaction"; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index 40988abd7eff..db1313f0b437 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -9,7 +9,7 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform; +import org.hibernate.engine.transaction.jta.platform.internal.GlassFishJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; @@ -62,11 +62,25 @@ public void verifyAllJtaPlatformResolve() { testJtaPlatformResolves( strategySelector, - SunOneJtaPlatform.class, + GlassFishJtaPlatform.class, "SunOne", "org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" ); + testJtaPlatformResolves( + strategySelector, + GlassFishJtaPlatform.class, + "GlassFish", + "org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" + ); + + testJtaPlatformResolves( + strategySelector, + GlassFishJtaPlatform.class, + "Payara", + "org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" + ); + testJtaPlatformResolves( strategySelector, WeblogicJtaPlatform.class, From 5e2a0f7759e98ef18ebe0dc758c49c383e98d24d Mon Sep 17 00:00:00 2001 From: Gavin King Date: Sat, 11 Jan 2025 08:02:11 +0100 Subject: [PATCH 14/17] some very minor cleanups in o.h.e.t.jta.platform --- .../internal/AbstractJtaPlatform.java | 26 ++++++++----------- .../internal/JBossAppServerJtaPlatform.java | 5 ---- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/AbstractJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/AbstractJtaPlatform.java index 42ade53e7c23..4b2e4127cfb1 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/AbstractJtaPlatform.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/AbstractJtaPlatform.java @@ -11,17 +11,19 @@ import jakarta.transaction.TransactionManager; import jakarta.transaction.UserTransaction; -import org.hibernate.cfg.AvailableSettings; import org.hibernate.engine.jndi.spi.JndiService; import org.hibernate.engine.transaction.internal.jta.JtaStatusHelper; import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform; import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException; -import org.hibernate.internal.util.config.ConfigurationHelper; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.spi.Configurable; import org.hibernate.service.spi.ServiceRegistryAwareService; import org.hibernate.service.spi.ServiceRegistryImplementor; +import static org.hibernate.cfg.TransactionSettings.JTA_CACHE_TM; +import static org.hibernate.cfg.TransactionSettings.JTA_CACHE_UT; +import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean; + /** * @author Steve Ebersole */ @@ -43,7 +45,7 @@ private final class TransactionManagerBasedSynchronizationStrategy implements Jt @Override public void registerSynchronization(Synchronization synchronization) { try { - AbstractJtaPlatform.this.getTransactionManager().getTransaction().registerSynchronization( synchronization ); + getTransactionManager().getTransaction().registerSynchronization( synchronization ); } catch (Exception e) { throw new JtaPlatformException( "Could not access JTA Transaction to register synchronization", e ); @@ -52,7 +54,7 @@ public void registerSynchronization(Synchronization synchronization) { @Override public boolean canRegisterSynchronization() { - return JtaStatusHelper.isActive( AbstractJtaPlatform.this.getTransactionManager() ); + return JtaStatusHelper.isActive( getTransactionManager() ); } } @@ -68,16 +70,8 @@ protected JndiService jndiService() { protected abstract UserTransaction locateUserTransaction(); public void configure(Map configValues) { - cacheTransactionManager = ConfigurationHelper.getBoolean( - AvailableSettings.JTA_CACHE_TM, - configValues, - canCacheTransactionManagerByDefault() - ); - cacheUserTransaction = ConfigurationHelper.getBoolean( - AvailableSettings.JTA_CACHE_UT, - configValues, - canCacheUserTransactionByDefault() - ); + cacheTransactionManager = getBoolean( JTA_CACHE_TM, configValues, canCacheTransactionManagerByDefault() ); + cacheUserTransaction = getBoolean( JTA_CACHE_UT, configValues, canCacheUserTransactionByDefault() ); } protected boolean canCacheTransactionManagerByDefault() { @@ -126,7 +120,9 @@ public UserTransaction retrieveUserTransaction() { } return userTransaction; } - return locateUserTransaction(); + else { + return locateUserTransaction(); + } } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JBossAppServerJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JBossAppServerJtaPlatform.java index e0784228fe1f..05951bfd2cf3 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JBossAppServerJtaPlatform.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/JBossAppServerJtaPlatform.java @@ -25,11 +25,6 @@ protected boolean canCacheUserTransactionByDefault() { return true; } - @Override - protected boolean canCacheTransactionManagerByDefault() { - return true; - } - @Override protected TransactionManager locateTransactionManager() { try { From b7f4310d87d56083fb905e437324ed58febd1a31 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 10 Jan 2025 21:30:56 +0100 Subject: [PATCH 15/17] HHH-18964 remove JtaPlatforms from the docs --- .../userguide/chapters/transactions/Transactions.adoc | 9 --------- 1 file changed, 9 deletions(-) diff --git a/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc b/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc index 84d649a26f34..23a743125f30 100644 --- a/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc +++ b/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc @@ -77,18 +77,9 @@ If that resolution does not work, or if you wish to provide a custom implementat Hibernate provides many implementations of the `JtaPlatform` contract, all with short names: `Atomikos`:: `JtaPlatform` for Atomikos. -`Borland`:: `JtaPlatform` for the Borland Enterprise Server. -`Bitronix`:: `JtaPlatform` for Bitronix. `JBossAS`:: `JtaPlatform` for Arjuna/JBossTransactions/Narayana when used within the JBoss/WildFly Application Server. `JBossTS`:: `JtaPlatform` for Arjuna/JBossTransactions/Narayana when used standalone. -`JOnAS`:: `JtaPlatform` for JOTM when used within JOnAS. -`JOTM`:: `JtaPlatform` for JOTM when used standalone. -`JRun4`:: `JtaPlatform` for the JRun 4 Application Server. -`OC4J`:: `JtaPlatform` for Oracle's OC4J container. -`Orion`:: `JtaPlatform` for the Orion Application Server. `Resin`:: `JtaPlatform` for the Resin Application Server. -`SapNetWeaver`:: `JtaPlatform` for the SAP NetWeaver Application Server. -`SunOne`:: `JtaPlatform` for the SunOne Application Server. `Weblogic`:: `JtaPlatform` for the Weblogic Application Server. `WebSphere`:: `JtaPlatform` for older versions of the WebSphere Application Server. `WebSphereExtended`:: `JtaPlatform` for newer versions of the WebSphere Application Server. From f526071bc6f8f18d658203e0eebc7e6dbe0c975e Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 24 Jan 2025 16:24:38 +0100 Subject: [PATCH 16/17] HHH-18964 remove WebSphereJtaPlatform and WebSphereExtendedJtaPlatform --- .../internal/DefaultJtaPlatformSelector.java | 6 +- .../internal/StandardJtaPlatformResolver.java | 11 - .../WebSphereExtendedJtaPlatform.java | 238 ------------------ .../internal/WebSphereJtaPlatform.java | 103 -------- .../internal/WebSphereLibertyJtaPlatform.java | 6 - .../JtaPlatformSelectorTest.java | 15 -- 6 files changed, 1 insertion(+), 378 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereExtendedJtaPlatform.java delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereJtaPlatform.java diff --git a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java index c197579bc752..1129f5e0f426 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/DefaultJtaPlatformSelector.java @@ -11,8 +11,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.GlassFishJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WeblogicJtaPlatform; import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform; @@ -33,9 +31,7 @@ else if ( name.startsWith( "org." ) ) { case "JBossAS" -> JBossAppServerJtaPlatform.class; case "JBossTS" -> JBossStandAloneJtaPlatform.class; case "Weblogic" -> WeblogicJtaPlatform.class; - case "WebSphereLiberty" -> WebSphereLibertyJtaPlatform.class; - case "WebSphere" -> WebSphereJtaPlatform.class; - case "WebSphereExtended" -> WebSphereExtendedJtaPlatform.class; + case "WebSphere", "WebSphereLiberty" -> WebSphereLibertyJtaPlatform.class; case "Atomikos" -> AtomikosJtaPlatform.class; case "Resin" -> ResinJtaPlatform.class; case "GlassFish", "Payara", "SunOne" -> GlassFishJtaPlatform.class; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java index ad9028392458..613a10b01bad 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/StandardJtaPlatformResolver.java @@ -96,17 +96,6 @@ public JtaPlatform resolveJtaPlatform(Map configurationValues, ServiceRegis catch (ClassLoadingException ignore) { } - // WebSphere traditional ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - for ( WebSphereJtaPlatform.WebSphereEnvironment webSphereEnvironment - : WebSphereJtaPlatform.WebSphereEnvironment.values() ) { - try { - final Class accessClass = classLoaderService.classForName( webSphereEnvironment.getTmAccessClassName() ); - return new WebSphereJtaPlatform( accessClass, webSphereEnvironment ); - } - catch (ClassLoadingException ignore) { - } - } - // Finally, return the default... log.debugf( "Could not resolve JtaPlatform, using default [%s]", NoJtaPlatform.class.getName() ); return NoJtaPlatform.INSTANCE; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereExtendedJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereExtendedJtaPlatform.java deleted file mode 100644 index 514f1c5fad44..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereExtendedJtaPlatform.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import jakarta.transaction.NotSupportedException; -import jakarta.transaction.RollbackException; -import jakarta.transaction.Status; -import jakarta.transaction.Synchronization; -import jakarta.transaction.SystemException; -import jakarta.transaction.Transaction; -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import javax.transaction.xa.XAResource; - -import org.hibernate.HibernateException; - -/** - * JTA platform implementation intended for use with WebSphere Application Server (WAS). - *

- * WAS, unlike every other app server on the planet, does not allow direct access to the JTS TransactionManager. - * Instead, for common transaction-related tasks users must utilize a proprietary API known as ExtendedJTATransaction. - *

- * Even more unfortunate, the exact TransactionManagerLookup to use inside of WAS is highly dependent upon

    - *
  • WAS version
  • - *
  • the WAS container in which Hibernate will be utilized
  • - *
- *

- * This class is reported to work on WAS version 6 in any of the standard J2EE/Java EE component containers. - * - * @author Gavin King - * @author Jesper Udby - * @author Steve Ebersole - */ -public class WebSphereExtendedJtaPlatform extends AbstractJtaPlatform { - public static final String UT_NAME = "java:comp/UserTransaction"; - - @Override - protected boolean canCacheTransactionManager() { - return true; - } - - @Override - protected TransactionManager locateTransactionManager() { - return new TransactionManagerAdapter(); - } - - @Override - protected UserTransaction locateUserTransaction() { - return (UserTransaction) jndiService().locate( UT_NAME ); - } - - @Override - public Object getTransactionIdentifier(Transaction transaction) { - // WebSphere, however, is not a sane Java EE/JTA container... - return transaction.hashCode(); - } - - public class TransactionManagerAdapter implements TransactionManager { - private final Class synchronizationCallbackClass; - private final Method registerSynchronizationMethod; - private final Method getLocalIdMethod; - private Object extendedJTATransaction; - - private TransactionManagerAdapter() throws HibernateException { - try { - synchronizationCallbackClass = Class.forName( "com.ibm.websphere.jtaextensions.SynchronizationCallback" ); - Class extendedJTATransactionClass = Class.forName( "com.ibm.websphere.jtaextensions.ExtendedJTATransaction" ); - registerSynchronizationMethod = extendedJTATransactionClass.getMethod( - "registerSynchronizationCallbackForCurrentTran", - synchronizationCallbackClass ); - getLocalIdMethod = extendedJTATransactionClass.getMethod( "getLocalId", (Class[]) null ); - } - catch ( ClassNotFoundException cnfe ) { - throw new HibernateException( cnfe ); - } - catch ( NoSuchMethodException nsme ) { - throw new HibernateException( nsme ); - } - } - - @Override - public void begin() throws NotSupportedException, SystemException { - throw new UnsupportedOperationException(); - } - - @Override - public void commit() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public int getStatus() throws SystemException { - return getTransaction() == null ? Status.STATUS_NO_TRANSACTION : getTransaction().getStatus(); - } - - @Override - public Transaction getTransaction() throws SystemException { - return new TransactionAdapter(); - } - - @Override - public void resume(Transaction txn) throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public void rollback() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public void setRollbackOnly() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public void setTransactionTimeout(int i) throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public Transaction suspend() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - public class TransactionAdapter implements Transaction { - - private TransactionAdapter() { - if ( extendedJTATransaction == null ) { - extendedJTATransaction = jndiService().locate( "java:comp/websphere/ExtendedJTATransaction" ); - } - } - - @Override - public void registerSynchronization(final Synchronization synchronization) - throws RollbackException, IllegalStateException, - SystemException { - - final InvocationHandler ih = new InvocationHandler() { - - @Override - public @Nullable Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - if ( "afterCompletion".equals( method.getName() ) ) { - int status = args[2].equals(Boolean.TRUE) ? - Status.STATUS_COMMITTED : - Status.STATUS_UNKNOWN; - synchronization.afterCompletion(status); - } - else if ( "beforeCompletion".equals( method.getName() ) ) { - synchronization.beforeCompletion(); - } - else if ( "toString".equals( method.getName() ) ) { - return synchronization.toString(); - } - return null; - } - - }; - - final Object synchronizationCallback = Proxy.newProxyInstance( - getClass().getClassLoader(), - new Class[] {synchronizationCallbackClass}, - ih - ); - - try { - registerSynchronizationMethod.invoke( extendedJTATransaction, synchronizationCallback ); - } - catch (Exception e) { - throw new HibernateException(e); - } - - } - - @Override - public int hashCode() { - return getLocalId().hashCode(); - } - - @Override - public boolean equals(@Nullable Object other) { - if ( !(other instanceof TransactionAdapter that) ) { - return false; - } - return getLocalId().equals( that.getLocalId() ); - } - - private Object getLocalId() throws HibernateException { - try { - return getLocalIdMethod.invoke( extendedJTATransaction, (Object[]) null ); - } - catch ( Exception e ) { - throw new HibernateException( e ); - } - } - - @Override - public void commit() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public boolean delistResource(XAResource resource, int i) throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public boolean enlistResource(XAResource resource) throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public int getStatus() { - return Integer.valueOf( 0 ).equals( getLocalId() ) ? - Status.STATUS_NO_TRANSACTION : Status.STATUS_ACTIVE; - } - - @Override - public void rollback() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - @Override - public void setRollbackOnly() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - } - } - -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereJtaPlatform.java deleted file mode 100644 index 49f5baf4848c..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereJtaPlatform.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.engine.transaction.jta.platform.internal; - -import java.lang.reflect.Method; -import jakarta.transaction.TransactionManager; -import jakarta.transaction.UserTransaction; - -import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException; -import org.hibernate.internal.util.NullnessUtil; - -import org.jboss.logging.Logger; - -/** - * JTA platform implementation for WebSphere (versions 4, 5.0 and 5.1) - * - * @author Gavin King - * @author Steve Ebersole - */ -public class WebSphereJtaPlatform extends AbstractJtaPlatform { - private static final Logger log = Logger.getLogger( WebSphereJtaPlatform.class ); - - private final Class transactionManagerAccessClass; - private final WebSphereEnvironment webSphereEnvironment; - - public WebSphereJtaPlatform() { - Class tmAccessClass = null; - WebSphereEnvironment webSphereEnvironment = null; - - for ( WebSphereEnvironment check : WebSphereEnvironment.values() ) { - try { - tmAccessClass = Class.forName( check.getTmAccessClassName() ); - webSphereEnvironment = check; - log.debugf( "WebSphere version : %s", webSphereEnvironment.getWebSphereVersion() ); - break; - } - catch ( Exception ignore ) { - // go on to the next iteration - } - } - - if ( webSphereEnvironment == null ) { - throw new JtaPlatformException( "Could not locate WebSphere TransactionManager access class" ); - } - - this.transactionManagerAccessClass = NullnessUtil.castNonNull( tmAccessClass ); - this.webSphereEnvironment = webSphereEnvironment; - } - - public WebSphereJtaPlatform(Class transactionManagerAccessClass, WebSphereEnvironment webSphereEnvironment) { - this.transactionManagerAccessClass = transactionManagerAccessClass; - this.webSphereEnvironment = webSphereEnvironment; - } - - @Override - protected TransactionManager locateTransactionManager() { - try { - final Method method = transactionManagerAccessClass.getMethod( "getTransactionManager" ); - return (TransactionManager) method.invoke( null ); - } - catch (Exception e) { - throw new JtaPlatformException( "Could not obtain WebSphere TransactionManager", e ); - } - - } - - @Override - protected UserTransaction locateUserTransaction() { - final String utName = webSphereEnvironment.getUtName(); - return (UserTransaction) jndiService().locate( utName ); - } - - public enum WebSphereEnvironment { - WS_4_0( "4.x", "com.ibm.ejs.jts.jta.JTSXA", "jta/usertransaction" ), - WS_5_0( "5.0", "com.ibm.ejs.jts.jta.TransactionManagerFactory", "java:comp/UserTransaction" ), - WS_5_1( "5.1", "com.ibm.ws.Transaction.TransactionManagerFactory", "java:comp/UserTransaction" ) - ; - - private final String webSphereVersion; - private final String tmAccessClassName; - private final String utName; - - WebSphereEnvironment(String webSphereVersion, String tmAccessClassName, String utName) { - this.webSphereVersion = webSphereVersion; - this.tmAccessClassName = tmAccessClassName; - this.utName = utName; - } - - public String getWebSphereVersion() { - return webSphereVersion; - } - - public String getTmAccessClassName() { - return tmAccessClassName; - } - - public String getUtName() { - return utName; - } - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereLibertyJtaPlatform.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereLibertyJtaPlatform.java index 13adfb89df16..cb2897ea587c 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereLibertyJtaPlatform.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/jta/platform/internal/WebSphereLibertyJtaPlatform.java @@ -8,7 +8,6 @@ import jakarta.transaction.Status; import jakarta.transaction.Synchronization; import jakarta.transaction.SystemException; -import jakarta.transaction.Transaction; import jakarta.transaction.TransactionManager; import jakarta.transaction.UserTransaction; @@ -61,11 +60,6 @@ public int getCurrentStatus() throws SystemException { return NullnessUtil.castNonNull( retrieveTransactionManager() ).getStatus(); } - @Override - public Object getTransactionIdentifier(Transaction transaction) { - return transaction; - } - @Override public void registerSynchronization(Synchronization synchronization) { try { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java index db1313f0b437..caad2f1443e3 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/strategyselectors/JtaPlatformSelectorTest.java @@ -10,8 +10,6 @@ import org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.ResinJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.GlassFishJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform; -import org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.WeblogicJtaPlatform; import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform; @@ -95,19 +93,6 @@ public void verifyAllJtaPlatformResolve() { "org.hibernate.engine.transaction.jta.platform.internal.WebSphereLibertyJtaPlatform" ); - testJtaPlatformResolves( - strategySelector, - WebSphereJtaPlatform.class, - "WebSphere", - "org.hibernate.service.jta.platform.internal.WebSphereJtaPlatform" - ); - - testJtaPlatformResolves( - strategySelector, - WebSphereExtendedJtaPlatform.class, - "WebSphereExtended", - "org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform" - ); } private static void testJtaPlatformResolves(final DefaultJtaPlatformSelector strategySelector, final Class expectedType, final String shortname, final String longname) { From 3e082bb4695b654728efc3a81120ab54bfb4b887 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Fri, 24 Jan 2025 16:27:41 +0100 Subject: [PATCH 17/17] HHH-18964 update JtaPlatforms in doc --- .../userguide/chapters/transactions/Transactions.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc b/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc index 23a743125f30..ae8c521d1d1c 100644 --- a/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc +++ b/documentation/src/main/asciidoc/userguide/chapters/transactions/Transactions.adoc @@ -76,13 +76,13 @@ Hibernate tries to discover the `JtaPlatform` it should use through the use of a If that resolution does not work, or if you wish to provide a custom implementation you will need to specify the `hibernate.transaction.jta.platform` setting. Hibernate provides many implementations of the `JtaPlatform` contract, all with short names: -`Atomikos`:: `JtaPlatform` for Atomikos. `JBossAS`:: `JtaPlatform` for Arjuna/JBossTransactions/Narayana when used within the JBoss/WildFly Application Server. `JBossTS`:: `JtaPlatform` for Arjuna/JBossTransactions/Narayana when used standalone. +`Atomikos`:: `JtaPlatform` for Atomikos. +`GlassFish`, `Payara`:: `JtaPlatform` for GlassFish or Payara. `Resin`:: `JtaPlatform` for the Resin Application Server. `Weblogic`:: `JtaPlatform` for the Weblogic Application Server. -`WebSphere`:: `JtaPlatform` for older versions of the WebSphere Application Server. -`WebSphereExtended`:: `JtaPlatform` for newer versions of the WebSphere Application Server. +`WebSphere`, `WebSphereLiberty`:: `JtaPlatform` for newer versions of the WebSphere Application Server. [[transactions-api]] === Hibernate Transaction API