diff --git a/jpa/subsystem/src/main/java/org/jboss/as/jpa/persistenceprovider/PersistenceProviderLoader.java b/jpa/subsystem/src/main/java/org/jboss/as/jpa/persistenceprovider/PersistenceProviderLoader.java index 3582a9c73e43..a28958fc101e 100644 --- a/jpa/subsystem/src/main/java/org/jboss/as/jpa/persistenceprovider/PersistenceProviderLoader.java +++ b/jpa/subsystem/src/main/java/org/jboss/as/jpa/persistenceprovider/PersistenceProviderLoader.java @@ -77,5 +77,8 @@ public static List loadProviderModuleByName(String moduleNa return result; } + public static PersistenceProvider loadProviderFromDeployment(ClassLoader classLoader, String persistenceProviderClassName) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + return (PersistenceProvider) classLoader.loadClass(persistenceProviderClassName).newInstance(); + } } diff --git a/jpa/subsystem/src/main/java/org/jboss/as/jpa/processor/PersistenceUnitServiceHandler.java b/jpa/subsystem/src/main/java/org/jboss/as/jpa/processor/PersistenceUnitServiceHandler.java index 7ff4fea54da3..1ea1390a85ea 100644 --- a/jpa/subsystem/src/main/java/org/jboss/as/jpa/processor/PersistenceUnitServiceHandler.java +++ b/jpa/subsystem/src/main/java/org/jboss/as/jpa/processor/PersistenceUnitServiceHandler.java @@ -943,15 +943,35 @@ private static PersistenceProvider lookupProvider( * locate persistence provider in specified static module */ if (configuredPersistenceProviderModule != null) { - try { - List providers = PersistenceProviderLoader.loadProviderModuleByName(configuredPersistenceProviderModule); - PersistenceProviderDeploymentHolder.savePersistenceProviderInDeploymentUnit(deploymentUnit, providers, null); - PersistenceProvider provider = getProviderByName(pu, providers); - if (provider != null) { + List providers; + if (Configuration.PROVIDER_MODULE_APPLICATION_SUPPLIED.equals(configuredPersistenceProviderModule)) { + try { + // load the persistence provider from the application deployment + final ModuleClassLoader classLoader = deploymentUnit.getAttachment(Attachments.MODULE).getClassLoader(); + PersistenceProvider provider = PersistenceProviderLoader.loadProviderFromDeployment(classLoader, persistenceProviderClassName); + providers = new ArrayList<>(); + providers.add(provider); + PersistenceProviderDeploymentHolder.savePersistenceProviderInDeploymentUnit(deploymentUnit, providers, null); return provider; + + } catch (ClassNotFoundException e) { + throw JpaLogger.ROOT_LOGGER.cannotDeployApp(e, persistenceProviderClassName); + } catch (InstantiationException e) { + throw JpaLogger.ROOT_LOGGER.cannotDeployApp(e, persistenceProviderClassName); + } catch (IllegalAccessException e) { + throw JpaLogger.ROOT_LOGGER.cannotDeployApp(e, persistenceProviderClassName); + } + } else { + try { + providers = PersistenceProviderLoader.loadProviderModuleByName(configuredPersistenceProviderModule); + PersistenceProviderDeploymentHolder.savePersistenceProviderInDeploymentUnit(deploymentUnit, providers, null); + PersistenceProvider provider = getProviderByName(pu, providers); + if (provider != null) { + return provider; + } + } catch (ModuleLoadException e) { + throw JpaLogger.ROOT_LOGGER.cannotLoadPersistenceProviderModule(e, configuredPersistenceProviderModule, persistenceProviderClassName); } - } catch (ModuleLoadException e) { - throw JpaLogger.ROOT_LOGGER.cannotLoadPersistenceProviderModule(e, configuredPersistenceProviderModule, persistenceProviderClassName); } } diff --git a/testsuite/compat/pom.xml b/testsuite/compat/pom.xml index 551847a7ce5a..673e81025869 100644 --- a/testsuite/compat/pom.xml +++ b/testsuite/compat/pom.xml @@ -51,8 +51,6 @@ ${basedir}/../integration/src/test/xslt - 4.1.9.Final - 2.3.2 2.3.3-M3 @@ -62,24 +60,9 @@ - - org.hibernate - hibernate-core - test - - - org.hibernate - hibernate-entitymanager - test - - - org.hibernate - hibernate-commons-annotations - test - org.slf4j slf4j-simple @@ -117,64 +100,6 @@ - - org.hibernate - hibernate-core - ${version.org.hibernate} - test - - - javax.transaction - jta - - - org.jboss.spec.javax.transaction - jboss-transaction-api_1.1_spec - - - - - org.wildfly - jipijapa-hibernate4-1 - ${project.version} - - - org.hibernate - hibernate-core - - - org.hibernate - hibernate-entitymanager - - - org.hibernate - hibernate-infinispan - - - - - org.hibernate - hibernate-entitymanager - ${version.org.hibernate} - test - - - javassist - javassist - - - org.jboss.spec.javax.transaction - jboss-transaction-api_1.1_spec - - - - - org.hibernate - hibernate-commons-annotations - 3.2.0.Final - test - - org.wildfly jipijapa-eclipselink diff --git a/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/Hibernate42xTestCase.java b/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/HibernateJarsInDeploymentTestCase.java similarity index 90% rename from testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/Hibernate42xTestCase.java rename to testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/HibernateJarsInDeploymentTestCase.java index 52a1ec1f3ecc..55a1abb55358 100644 --- a/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/Hibernate42xTestCase.java +++ b/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/HibernateJarsInDeploymentTestCase.java @@ -46,9 +46,9 @@ */ @RunWith(Arquillian.class) -public class Hibernate42xTestCase { +public class HibernateJarsInDeploymentTestCase { - private static final String ARCHIVE_NAME = "hibernate_42x"; + private static final String ARCHIVE_NAME = "HibernateJarsInDeploymentTestCase"; private static void addHibernate42xJars(EnterpriseArchive ear) { final String basedir = System.getProperty("basedir"); @@ -57,7 +57,7 @@ private static void addHibernate42xJars(EnterpriseArchive ear) { File hibernatecore = new File(testdir, "hibernate-core.jar"); File hibernateannotations = new File(testdir, "hibernate-commons-annotations.jar"); File hibernateentitymanager = new File(testdir, "hibernate-entitymanager.jar"); - File jipi = new File(testdir,"jipijapa-hibernate4-1.jar"); + File jipi = new File(testdir,"jipijapa-hibernate5.jar"); File dom4j = new File(testdir, "dom4j.jar"); File antlr = new File(testdir, "antlr.jar"); ear.addAsLibraries( @@ -76,8 +76,8 @@ public static Archive deploy() throws Exception { addHibernate42xJars(ear); JavaArchive lib = ShrinkWrap.create(JavaArchive.class, "beans.jar"); - lib.addClasses(SFSB1.class, Hibernate42xTestCase.class); - lib.addAsManifestResource(Hibernate42xTestCase.class.getPackage(), "persistence.xml", "persistence.xml"); + lib.addClasses(SFSB1.class, HibernateJarsInDeploymentTestCase.class); + lib.addAsManifestResource(HibernateJarsInDeploymentTestCase.class.getPackage(), "persistence.xml", "persistence.xml"); ear.addAsManifestResource(new StringAsset("Dependencies: org.jboss.jandex\n"), "MANIFEST.MF"); ear.addAsModule(lib); diff --git a/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/persistence.xml b/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/persistence.xml index 849eaf58937a..e51e7e790cc1 100644 --- a/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/persistence.xml +++ b/testsuite/compat/src/test/java/org/jboss/as/test/compat/jpa/hibernate/persistence.xml @@ -23,7 +23,6 @@ - org.hibernate.ejb.HibernatePersistence java:jboss/datasources/ExampleDS diff --git a/testsuite/compat/src/test/scripts/build-jars.xml b/testsuite/compat/src/test/scripts/build-jars.xml index 5bce994e25be..c49113c7616a 100644 --- a/testsuite/compat/src/test/scripts/build-jars.xml +++ b/testsuite/compat/src/test/scripts/build-jars.xml @@ -25,10 +25,10 @@ - + - +