From ff9e9eebc9992c7bc9128e9bf33d4b51b2bee7a4 Mon Sep 17 00:00:00 2001 From: Christian Beikov Date: Thu, 22 Apr 2021 18:15:45 +0200 Subject: [PATCH] HHH-13946 Create Jakarta artifacts for hibernate-core, hibernate-envers, hibernate-jpamodelgen and hibernate-testing --- build.gradle | 1 + gradle/libraries.gradle | 28 +- .../hibernate-core-jakarta.gradle | 182 ++++++++++++ hibernate-core/hibernate-core.gradle | 6 +- .../cfgxmlpar/META-INF/persistence.xml | 0 .../jpa/test/pack/cfgxmlpar/hibernate.cfg.xml | 0 .../defaultpar/META-INF/orm.xml | 0 .../defaultpar/META-INF/persistence.xml | 0 .../jpa/test/pack/defaultpar/Mouse.hbm.xml | 0 .../defaultpar_1_0/META-INF/orm.xml | 0 .../defaultpar_1_0/META-INF/persistence.xml | 0 .../test/pack/defaultpar_1_0/Mouse1.hbm.xml | 0 .../excludehbmpar/META-INF/orm2.xml | 0 .../excludehbmpar/META-INF/persistence.xml | 0 .../jpa/test/pack/excludehbmpar/Mouse.hbm.xml | 0 .../explicitpar/META-INF/orm.xml | 0 .../explicitpar/META-INF/persistence.xml | 0 .../explicitpar2/META-INF/orm.xml | 0 .../explicitpar2/META-INF/persistence.xml | 0 .../explodedpar/META-INF/persistence.xml | 0 .../test/pack/explodedpar/Elephant.hbm.xml | 0 .../externaljar/META-INF/orm.xml | 0 .../overridenpar/META-INF/persistence.xml | 0 .../overridenpar/overridenpar.properties | 0 .../space par/META-INF/persistence.xml | 0 .../war/WEB-INF/classes/META-INF/orm.xml | 0 .../WEB-INF/classes/META-INF/persistence.xml | 0 .../hibernate/jpa/test/pack/war/Mouse.hbm.xml | 0 .../hibernate-envers-jakarta.gradle | 103 +++++++ hibernate-envers/hibernate-envers.gradle | 16 ++ .../hibernate-jboss-jta.gradle | 64 +++++ .../hibernate-testing-jakarta.gradle | 83 ++++++ hibernate-testing/hibernate-testing.gradle | 3 + .../hibernate-transaction-client.gradle | 62 +++++ .../hibernate-transaction-spi.gradle | 62 +++++ rules/jakarta-direct-modelgen.properties | 34 +++ rules/jakarta-direct.properties | 12 + rules/jakarta-renames.properties | 260 ++++++++++++++++++ rules/jakarta-versions.properties | 223 +++++++++++++++ settings.gradle | 12 + .../hibernate-jpamodelgen-jakarta.gradle | 68 +++++ .../hibernate/jpamodelgen/ClassWriter.java | 2 +- .../org/hibernate/jpamodelgen/Context.java | 12 +- 43 files changed, 1224 insertions(+), 9 deletions(-) create mode 100644 hibernate-core-jakarta/hibernate-core-jakarta.gradle rename hibernate-core/src/test/bundles/{ => templates}/cfgxmlpar/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/cfgxmlpar/org/hibernate/jpa/test/pack/cfgxmlpar/hibernate.cfg.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/defaultpar/META-INF/orm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/defaultpar/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/defaultpar/org/hibernate/jpa/test/pack/defaultpar/Mouse.hbm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/defaultpar_1_0/META-INF/orm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/defaultpar_1_0/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/defaultpar_1_0/org/hibernate/jpa/test/pack/defaultpar_1_0/Mouse1.hbm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/excludehbmpar/META-INF/orm2.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/excludehbmpar/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/excludehbmpar/org/hibernate/jpa/test/pack/excludehbmpar/Mouse.hbm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/explicitpar/META-INF/orm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/explicitpar/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/explicitpar2/META-INF/orm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/explicitpar2/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/explodedpar/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/explodedpar/org/hibernate/jpa/test/pack/explodedpar/Elephant.hbm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/externaljar/META-INF/orm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/overridenpar/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/overridenpar/overridenpar.properties (100%) rename hibernate-core/src/test/bundles/{ => templates}/space par/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/war/WEB-INF/classes/META-INF/orm.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/war/WEB-INF/classes/META-INF/persistence.xml (100%) rename hibernate-core/src/test/bundles/{ => templates}/war/WEB-INF/classes/org/hibernate/jpa/test/pack/war/Mouse.hbm.xml (100%) create mode 100644 hibernate-envers-jakarta/hibernate-envers-jakarta.gradle create mode 100644 hibernate-jboss-jta/hibernate-jboss-jta.gradle create mode 100644 hibernate-testing-jakarta/hibernate-testing-jakarta.gradle create mode 100644 hibernate-transaction-client/hibernate-transaction-client.gradle create mode 100644 hibernate-transaction-spi/hibernate-transaction-spi.gradle create mode 100644 rules/jakarta-direct-modelgen.properties create mode 100644 rules/jakarta-direct.properties create mode 100644 rules/jakarta-renames.properties create mode 100644 rules/jakarta-versions.properties create mode 100644 tooling/metamodel-generator-jakarta/hibernate-jpamodelgen-jakarta.gradle diff --git a/build.gradle b/build.gradle index 3690ac49ff..15ab92bf1c 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,7 @@ ext { ormVersion = new HibernateVersion( project.releaseVersion, project ) } jpaVersion = new JpaVersion('2.2') + jakartaJpaVersion = new JpaVersion('3.0.0') } // The Gradle Nexus Publish Plugin must be applied to the root project and requires group and version diff --git a/gradle/libraries.gradle b/gradle/libraries.gradle index c97a65f5b4..9b82ada14c 100644 --- a/gradle/libraries.gradle +++ b/gradle/libraries.gradle @@ -18,9 +18,11 @@ ext { hibernateValidatorVersion = '6.1.6.Final' validationApiVersion = '2.0.1.Final' elVersion = '3.0.1-b09' + hibernateValidatorJakartaVersion = '7.0.1.Final' cdiVersion = '2.0' weldVersion = '3.1.5.Final' + jakartaWeldVersion = '4.0.1.SP1' javassistVersion = '3.27.0-GA' byteBuddyVersion = '1.10.21' @@ -40,6 +42,7 @@ ext { // We can't upgrade JAXB in Karaf (yet), but fortunately everything works fine with the version built in Karaf jaxbApiVersionOsgiRange = "[2.2,3)" jaxbRuntimeVersion = '2.3.1' + jakartaJaxbRuntimeVersion = '3.0.0' //GraalVM graalvmVersion = '19.3.1' @@ -76,6 +79,18 @@ ext { // required by JAXB from JDK 9 as it is not available anymore in JDK 9 activation: 'javax.activation:javax.activation-api:1.2.0', + // jakarta + jakarta_jpa: "jakarta.persistence:jakarta.persistence-api:${project.jakartaJpaVersion}", + jakarta_jta: 'jakarta.transaction:jakarta.transaction-api:2.0.0', + jakarta_validation: 'jakarta.validation:jakarta.validation-api:3.0.0', + jakarta_jacc: 'jakarta.authorization:jakarta.authorization-api:2.0.0', + jakarta_interceptor: 'jakarta.interceptor:jakarta.interceptor-api:2.0.0', + jakarta_activation: 'jakarta.activation:jakarta.activation-api:2.0.1', + jakarta_resource: 'jakarta.resource:jakarta.resource-api:2.0.0', + jakarta_jaxb_api: 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0', + jakarta_jaxb_runtime: "org.glassfish.jaxb:jaxb-runtime:${jakartaJaxbRuntimeVersion}", + jakarta_cdi: 'jakarta.enterprise:jakarta.enterprise.cdi-api:3.0.0', + // logging logging: 'org.jboss.logging:jboss-logging:3.4.1.Final', logging_annotations: 'org.jboss.logging:jboss-logging-annotations:2.1.0.Final', @@ -126,7 +141,11 @@ ext { jodaTime: "joda-time:joda-time:${jodaTimeVersion}", informix: 'com.ibm.informix:jdbc:4.10.12', - jboss_jta: "org.jboss.jbossts:jbossjta:4.16.4.Final", + jboss_jta: "org.jboss.narayana.jta:narayana-jta:5.11.1.Final", + jboss_tx_spi: "org.jboss:jboss-transaction-spi:7.6.0.Final", + // todo (jakarta): update the version when it is released + jboss_jta_jakarta: "org.jboss.narayana.jta:narayana-jta-jakarta:5.11.2.Final", + jboss_tx_spi_jakarta: "org.jboss:jboss-transaction-spi-jakarta:7.6.1.Final", xapool: "com.experlog:xapool:1.5.0", mockito: 'org.mockito:mockito-core:2.19.1', mockito_inline: 'org.mockito:mockito-inline:2.19.1', @@ -135,6 +154,10 @@ ext { // EL required by Hibernate Validator at test runtime expression_language: "org.glassfish:javax.el:${elVersion}", + jakarta_validator:"org.hibernate.validator:hibernate-validator:${hibernateValidatorJakartaVersion}", + // EL required by Hibernate Validator at test runtime + jakarta_el: 'org.glassfish:jakarta.el:4.0.1', + c3p0: "com.mchange:c3p0:0.9.5.5", ehcache: "net.sf.ehcache:ehcache:2.10.6", ehcache3: "org.ehcache:ehcache:3.6.1", @@ -151,6 +174,7 @@ ext { cdi: "javax.enterprise:cdi-api:${cdiVersion}", weld: "org.jboss.weld.se:weld-se-shaded:${weldVersion}", + jakarta_weld: "org.jboss.weld.se:weld-se-shaded:${jakartaWeldVersion}", assertj: "org.assertj:assertj-core:${assertjVersion}", @@ -163,6 +187,8 @@ ext { jboss_vfs: "org.jboss:jboss-vfs:3.2.11.Final", wildfly_transaction_client : 'org.wildfly.transaction:wildfly-transaction-client:1.1.7.Final', + // todo (jakarta): update the version when it is released + wildfly_transaction_client_jakarta : 'org.wildfly.transaction:wildfly-transaction-client-jakarta:1.2.0.Final-SNAPSHOT', jboss_ejb_spec_jar : 'org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final', jboss_annotation_spec_jar : 'org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.0.Final', diff --git a/hibernate-core-jakarta/hibernate-core-jakarta.gradle b/hibernate-core-jakarta/hibernate-core-jakarta.gradle new file mode 100644 index 0000000000..156d80a269 --- /dev/null +++ b/hibernate-core-jakarta/hibernate-core-jakarta.gradle @@ -0,0 +1,182 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +import org.apache.tools.ant.filters.ReplaceTokens + +description = 'Hibernate O/RM implementation of the Jakarta Persistence specification' + +apply from: rootProject.file( 'gradle/published-java-module.gradle' ) + +configurations { + tests { + description = 'Configuration for the produced test jar' + } + jakartaeeTransformJars +} + +dependencies { + compile( libraries.jakarta_jpa ) + // This can now be made provided + compile( libraries.javassist ) + // Could be made optional? + compile( libraries.byteBuddy ) + compile( libraries.antlr ) + compile( libraries.jakarta_jta ) + compile( libraries.jandex ) + compile( libraries.classmate ) + compile( libraries.jakarta_activation ) + + provided( libraries.jakarta_jacc ) + provided( libraries.jakarta_validation ) + provided( libraries.ant ) + provided( libraries.jakarta_cdi ) + + compile( libraries.dom4j ) + compile( libraries.commons_annotations ) + + compile( libraries.jakarta_jaxb_api ) + compile( libraries.jakarta_jaxb_runtime ) + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + testCompile( project(':hibernate-testing-jakarta') ) + testCompile fileTree(dir: 'libs', include: '*.jar') + + testCompile( libraries.shrinkwrap_api ) + testCompile( libraries.shrinkwrap ) + testCompile( libraries.jakarta_jacc ) + testCompile( libraries.jakarta_validation ) + testCompile( libraries.jandex ) + testCompile( libraries.classmate ) + testCompile( libraries.mockito ) + testCompile( libraries.mockito_inline ) + testCompile( libraries.jodaTime ) + testCompile( libraries.assertj ) + + testCompile( libraries.jakarta_cdi ) + + testCompile( libraries.jakarta_validator ) { + // for test runtime + transitive = true + } + + // for testing stored procedure support + testCompile( libraries.derby ) + + testRuntime( "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final" ) + testRuntime( libraries.jakarta_el ) + testRuntime( 'jaxen:jaxen:1.1' ) + testRuntime( libraries.javassist ) + testRuntime( libraries.byteBuddy ) + testRuntime( libraries.jakarta_weld ) + testRuntime( libraries.atomikos ) + testRuntime( libraries.atomikos_jta ) +// todo (jakarta): replace this when the jakarta artifact is released + testRuntime( project(':hibernate-transaction-client') ) +// testRuntime( libraries.wildfly_transaction_client_jakarta ) + + testCompile libraries.shrinkwrap_descriptors_api_javaee + testCompile libraries.shrinkwrap_descriptors_impl_javaee + + testCompile libraries.jboss_ejb_spec_jar + testCompile libraries.jboss_annotation_spec_jar +} + +jar { + mustRunAfter project(':hibernate-core').tasks.jar + mustRunAfter project(':hibernate-core').tasks.testJar + dependsOn project(':hibernate-core').tasks.jar + dependsOn project(':hibernate-core').tasks.testJar + def baseDir = project(':hibernate-core').buildDir + def baseJars = fileTree(baseDir).matching {include 'libs/*.jar' } + inputs.files(baseJars).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + baseJars.each { bundleJar -> + def sourceJarPath = baseDir.path + '/libs/' + bundleJar.name + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/' + bundleJar.name.replaceAll( 'hibernate-core', 'hibernate-core-jakarta' ) + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile(), 'rules/jakarta-direct.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } + } +} + +task unpackTestJar(type: Copy) { + dependsOn jar + fileTree(project.buildDir).matching { include 'libs/*-test.jar' }.each { + def outputDir = file("${buildDir}/unpacked/" + it.name) + from zipTree(it) + into outputDir + } +} + +task copyBundleResources (type: Copy) { + dependsOn unpackTestJar + File unpackedDir = new File(project.buildDir, "libs/hibernate-core-jakarta-${project.version}-test.jar") + ext { + bundlesTargetDir = file( "${buildDir}/bundles" ) + bundleTokens = dbBundle[db] + ext.bundleTokens['buildDirName'] = buildDir.absolutePath + } + + from file("${buildDir}/unpacked/${unpackedDir.name}/templates") + into ext.bundlesTargetDir + filter( ReplaceTokens, tokens: ext.bundleTokens) + doFirst { + ext.bundlesTargetDir.mkdirs() + } +} + +processTestResources.dependsOn copyBundleResources + +artifacts { + tests new File(project.buildDir, "libs/hibernate-core-jakarta-${project.version}-test.jar") +} + +test { + fileTree(project.buildDir).matching { include 'libs/*-test.jar' }.each { + def outputDir = file("${buildDir}/unpacked/" + it.name) + testClassesDirs += files(outputDir) + classpath += files(outputDir) + } + systemProperty 'file.encoding', 'utf-8' + + if ( gradle.ext.javaVersions.test.launcher.asInt() >= 9 ) { + // See org.hibernate.boot.model.naming.NamingHelperTest.DefaultCharset.set + jvmArgs( ['--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED'] ) + // Weld needs this to generate proxies + jvmArgs( ['--add-opens', 'java.base/java.security=ALL-UNNAMED'] ) + jvmArgs( ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] ) + } +} \ No newline at end of file diff --git a/hibernate-core/hibernate-core.gradle b/hibernate-core/hibernate-core.gradle index c47a0466ea..069335b2b7 100644 --- a/hibernate-core/hibernate-core.gradle +++ b/hibernate-core/hibernate-core.gradle @@ -25,7 +25,7 @@ sourceSets { // resources inherently exclude sources test { resources { - setSrcDirs( ['src/test/java','src/test/resources'] ) + setSrcDirs( ['src/test/java','src/test/resources','src/test/bundles'] ) } } @@ -145,6 +145,7 @@ jar { // For JPA, we don't want to target the automatically generated range, but a specific version "javax.persistence;version=\"${project.jpaVersion.osgiName}\"", // optionals + 'jakarta.persistence.spi;resolution:=optional', 'javax.management;resolution:=optional', 'javax.naming.event;resolution:=optional', 'javax.naming.spi;resolution:=optional', @@ -218,7 +219,7 @@ task copyBundleResources (type: Copy) { ext.bundleTokens['buildDirName'] = buildDir.absolutePath } - from file('src/test/bundles') + from file('src/test/bundles/templates') into ext.bundlesTargetDir filter( ReplaceTokens, tokens: ext.bundleTokens) @@ -229,6 +230,7 @@ task copyBundleResources (type: Copy) { processTestResources.dependsOn copyBundleResources task testJar(type: Jar, dependsOn: testClasses) { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE archiveClassifier.set( 'test' ) from sourceSets.test.output } diff --git a/hibernate-core/src/test/bundles/cfgxmlpar/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/cfgxmlpar/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/cfgxmlpar/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/cfgxmlpar/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/cfgxmlpar/org/hibernate/jpa/test/pack/cfgxmlpar/hibernate.cfg.xml b/hibernate-core/src/test/bundles/templates/cfgxmlpar/org/hibernate/jpa/test/pack/cfgxmlpar/hibernate.cfg.xml similarity index 100% rename from hibernate-core/src/test/bundles/cfgxmlpar/org/hibernate/jpa/test/pack/cfgxmlpar/hibernate.cfg.xml rename to hibernate-core/src/test/bundles/templates/cfgxmlpar/org/hibernate/jpa/test/pack/cfgxmlpar/hibernate.cfg.xml diff --git a/hibernate-core/src/test/bundles/defaultpar/META-INF/orm.xml b/hibernate-core/src/test/bundles/templates/defaultpar/META-INF/orm.xml similarity index 100% rename from hibernate-core/src/test/bundles/defaultpar/META-INF/orm.xml rename to hibernate-core/src/test/bundles/templates/defaultpar/META-INF/orm.xml diff --git a/hibernate-core/src/test/bundles/defaultpar/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/defaultpar/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/defaultpar/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/defaultpar/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/defaultpar/org/hibernate/jpa/test/pack/defaultpar/Mouse.hbm.xml b/hibernate-core/src/test/bundles/templates/defaultpar/org/hibernate/jpa/test/pack/defaultpar/Mouse.hbm.xml similarity index 100% rename from hibernate-core/src/test/bundles/defaultpar/org/hibernate/jpa/test/pack/defaultpar/Mouse.hbm.xml rename to hibernate-core/src/test/bundles/templates/defaultpar/org/hibernate/jpa/test/pack/defaultpar/Mouse.hbm.xml diff --git a/hibernate-core/src/test/bundles/defaultpar_1_0/META-INF/orm.xml b/hibernate-core/src/test/bundles/templates/defaultpar_1_0/META-INF/orm.xml similarity index 100% rename from hibernate-core/src/test/bundles/defaultpar_1_0/META-INF/orm.xml rename to hibernate-core/src/test/bundles/templates/defaultpar_1_0/META-INF/orm.xml diff --git a/hibernate-core/src/test/bundles/defaultpar_1_0/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/defaultpar_1_0/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/defaultpar_1_0/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/defaultpar_1_0/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/defaultpar_1_0/org/hibernate/jpa/test/pack/defaultpar_1_0/Mouse1.hbm.xml b/hibernate-core/src/test/bundles/templates/defaultpar_1_0/org/hibernate/jpa/test/pack/defaultpar_1_0/Mouse1.hbm.xml similarity index 100% rename from hibernate-core/src/test/bundles/defaultpar_1_0/org/hibernate/jpa/test/pack/defaultpar_1_0/Mouse1.hbm.xml rename to hibernate-core/src/test/bundles/templates/defaultpar_1_0/org/hibernate/jpa/test/pack/defaultpar_1_0/Mouse1.hbm.xml diff --git a/hibernate-core/src/test/bundles/excludehbmpar/META-INF/orm2.xml b/hibernate-core/src/test/bundles/templates/excludehbmpar/META-INF/orm2.xml similarity index 100% rename from hibernate-core/src/test/bundles/excludehbmpar/META-INF/orm2.xml rename to hibernate-core/src/test/bundles/templates/excludehbmpar/META-INF/orm2.xml diff --git a/hibernate-core/src/test/bundles/excludehbmpar/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/excludehbmpar/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/excludehbmpar/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/excludehbmpar/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/excludehbmpar/org/hibernate/jpa/test/pack/excludehbmpar/Mouse.hbm.xml b/hibernate-core/src/test/bundles/templates/excludehbmpar/org/hibernate/jpa/test/pack/excludehbmpar/Mouse.hbm.xml similarity index 100% rename from hibernate-core/src/test/bundles/excludehbmpar/org/hibernate/jpa/test/pack/excludehbmpar/Mouse.hbm.xml rename to hibernate-core/src/test/bundles/templates/excludehbmpar/org/hibernate/jpa/test/pack/excludehbmpar/Mouse.hbm.xml diff --git a/hibernate-core/src/test/bundles/explicitpar/META-INF/orm.xml b/hibernate-core/src/test/bundles/templates/explicitpar/META-INF/orm.xml similarity index 100% rename from hibernate-core/src/test/bundles/explicitpar/META-INF/orm.xml rename to hibernate-core/src/test/bundles/templates/explicitpar/META-INF/orm.xml diff --git a/hibernate-core/src/test/bundles/explicitpar/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/explicitpar/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/explicitpar/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/explicitpar/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/explicitpar2/META-INF/orm.xml b/hibernate-core/src/test/bundles/templates/explicitpar2/META-INF/orm.xml similarity index 100% rename from hibernate-core/src/test/bundles/explicitpar2/META-INF/orm.xml rename to hibernate-core/src/test/bundles/templates/explicitpar2/META-INF/orm.xml diff --git a/hibernate-core/src/test/bundles/explicitpar2/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/explicitpar2/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/explicitpar2/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/explicitpar2/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/explodedpar/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/explodedpar/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/explodedpar/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/explodedpar/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/explodedpar/org/hibernate/jpa/test/pack/explodedpar/Elephant.hbm.xml b/hibernate-core/src/test/bundles/templates/explodedpar/org/hibernate/jpa/test/pack/explodedpar/Elephant.hbm.xml similarity index 100% rename from hibernate-core/src/test/bundles/explodedpar/org/hibernate/jpa/test/pack/explodedpar/Elephant.hbm.xml rename to hibernate-core/src/test/bundles/templates/explodedpar/org/hibernate/jpa/test/pack/explodedpar/Elephant.hbm.xml diff --git a/hibernate-core/src/test/bundles/externaljar/META-INF/orm.xml b/hibernate-core/src/test/bundles/templates/externaljar/META-INF/orm.xml similarity index 100% rename from hibernate-core/src/test/bundles/externaljar/META-INF/orm.xml rename to hibernate-core/src/test/bundles/templates/externaljar/META-INF/orm.xml diff --git a/hibernate-core/src/test/bundles/overridenpar/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/overridenpar/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/overridenpar/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/overridenpar/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/overridenpar/overridenpar.properties b/hibernate-core/src/test/bundles/templates/overridenpar/overridenpar.properties similarity index 100% rename from hibernate-core/src/test/bundles/overridenpar/overridenpar.properties rename to hibernate-core/src/test/bundles/templates/overridenpar/overridenpar.properties diff --git a/hibernate-core/src/test/bundles/space par/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/space par/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/space par/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/space par/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/war/WEB-INF/classes/META-INF/orm.xml b/hibernate-core/src/test/bundles/templates/war/WEB-INF/classes/META-INF/orm.xml similarity index 100% rename from hibernate-core/src/test/bundles/war/WEB-INF/classes/META-INF/orm.xml rename to hibernate-core/src/test/bundles/templates/war/WEB-INF/classes/META-INF/orm.xml diff --git a/hibernate-core/src/test/bundles/war/WEB-INF/classes/META-INF/persistence.xml b/hibernate-core/src/test/bundles/templates/war/WEB-INF/classes/META-INF/persistence.xml similarity index 100% rename from hibernate-core/src/test/bundles/war/WEB-INF/classes/META-INF/persistence.xml rename to hibernate-core/src/test/bundles/templates/war/WEB-INF/classes/META-INF/persistence.xml diff --git a/hibernate-core/src/test/bundles/war/WEB-INF/classes/org/hibernate/jpa/test/pack/war/Mouse.hbm.xml b/hibernate-core/src/test/bundles/templates/war/WEB-INF/classes/org/hibernate/jpa/test/pack/war/Mouse.hbm.xml similarity index 100% rename from hibernate-core/src/test/bundles/war/WEB-INF/classes/org/hibernate/jpa/test/pack/war/Mouse.hbm.xml rename to hibernate-core/src/test/bundles/templates/war/WEB-INF/classes/org/hibernate/jpa/test/pack/war/Mouse.hbm.xml diff --git a/hibernate-envers-jakarta/hibernate-envers-jakarta.gradle b/hibernate-envers-jakarta/hibernate-envers-jakarta.gradle new file mode 100644 index 0000000000..66f4b74493 --- /dev/null +++ b/hibernate-envers-jakarta/hibernate-envers-jakarta.gradle @@ -0,0 +1,103 @@ +import org.apache.tools.ant.filters.ReplaceTokens + +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +description = 'Hibernate\'s entity version (audit/history) support Jakarta edition' + +apply from: rootProject.file( 'gradle/published-java-module.gradle' ) + +configurations { + jakartaeeTransformJars +} + +dependencies { + compile( project( ':hibernate-core-jakarta' ) ) { + // Exclude access to this to avoid future use. + exclude group: "org.javassist", module: "javassist" + } + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + + testCompile( project( ':hibernate-testing-jakarta' ) ) + testCompile( project( ':hibernate-envers-jakarta' ) ) + testCompile( project( path: ':hibernate-core-jakarta', configuration: 'tests' ) ) +} + +jar { + mustRunAfter project(':hibernate-envers').tasks.jar + mustRunAfter project(':hibernate-envers').tasks.testJar + dependsOn project(':hibernate-envers').tasks.jar + dependsOn project(':hibernate-envers').tasks.testJar + def baseDir = project(':hibernate-envers').buildDir + def baseJars = fileTree(baseDir).matching {include 'libs/*.jar' } + inputs.files(baseJars).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + baseJars.each { bundleJar -> + def sourceJarPath = baseDir.path + '/libs/' + bundleJar.name + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/' + bundleJar.name.replaceAll( 'hibernate-envers', 'hibernate-envers-jakarta' ) + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile(), 'rules/jakarta-direct.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } + } +} + +task unpackTestJar(type: Copy) { + dependsOn jar + fileTree(project.buildDir).matching { include 'libs/*-test.jar' }.each { + def outputDir = file("${buildDir}/unpacked/" + it.name) + from zipTree(it) + into outputDir + } +} + +test { + dependsOn unpackTestJar + fileTree(project.buildDir).matching { include 'libs/*-test.jar' }.each { + def outputDir = file("${buildDir}/unpacked/" + it.name) + testClassesDirs += files(outputDir) + classpath += files(outputDir) + } + systemProperty 'file.encoding', 'utf-8' + + if ( gradle.ext.javaVersions.test.launcher.asInt() >= 9 ) { + // See org.hibernate.boot.model.naming.NamingHelperTest.DefaultCharset.set + jvmArgs( ['--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED'] ) + // Weld needs this to generate proxies + jvmArgs( ['--add-opens', 'java.base/java.security=ALL-UNNAMED'] ) + jvmArgs( ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] ) + } +} \ No newline at end of file diff --git a/hibernate-envers/hibernate-envers.gradle b/hibernate-envers/hibernate-envers.gradle index a16dcbc335..5bcc7d4e9f 100644 --- a/hibernate-envers/hibernate-envers.gradle +++ b/hibernate-envers/hibernate-envers.gradle @@ -41,6 +41,12 @@ sourceSets { } } +configurations { + tests { + description = 'Configuration for the produced test jar' + } +} + jar { manifest { attributes( @@ -65,6 +71,16 @@ jar { } } +task testJar(type: Jar, dependsOn: testClasses) { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + archiveClassifier.set( 'test' ) + from sourceSets.test.output +} + +artifacts { + tests testJar +} + tasks."matrix_mariadb" { beforeTest { descriptor -> println "Starting test: " + descriptor diff --git a/hibernate-jboss-jta/hibernate-jboss-jta.gradle b/hibernate-jboss-jta/hibernate-jboss-jta.gradle new file mode 100644 index 0000000000..e0331957af --- /dev/null +++ b/hibernate-jboss-jta/hibernate-jboss-jta.gradle @@ -0,0 +1,64 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +description = 'JBoss JTA transformed to be JTA 2.0 compatible' + +apply from: rootProject.file( 'gradle/java-module.gradle' ) + +configurations { + jakartaeeTransformJars +} + +dependencies { + compile( libraries.jakarta_jta ) + compile( libraries.jakarta_resource ) + compile( project(':hibernate-transaction-spi') ) + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + testCompile ( libraries.jboss_jta ) { + transitive=false; + } +} + +jar { + def sourceJarPath = project.configurations.testCompile.find { it.name.startsWith("narayana-jta-") } + inputs.files(sourceJarPath).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/hibernate-jboss-jta-' + project.version + ".jar" + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile(), 'rules/jakarta-direct.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } +} \ No newline at end of file diff --git a/hibernate-testing-jakarta/hibernate-testing-jakarta.gradle b/hibernate-testing-jakarta/hibernate-testing-jakarta.gradle new file mode 100644 index 0000000000..34aa2bed41 --- /dev/null +++ b/hibernate-testing-jakarta/hibernate-testing-jakarta.gradle @@ -0,0 +1,83 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +description = 'Support for testing Hibernate ORM Jakarta functionality' + +// todo (jakarta): replace this when the jakarta artifact is released +apply from: rootProject.file( 'gradle/java-module.gradle' ) +//apply from: rootProject.file( 'gradle/published-java-module.gradle' ) + +configurations { + jakartaeeTransformJars +} + +dependencies { + compile project( ':hibernate-core-jakarta' ) + compile( libraries.jakarta_jta ) + compile( libraries.junit ) + compile( libraries.byteman ) + compile( libraries.byteman_install ) + compile( libraries.byteman_bmunit ) + compile( libraries.xapool ) + compile( libraries.log4j ) +// todo (jakarta): replace this when the jakarta artifacts are released + compile project( ':hibernate-jboss-jta' ) +// compile( libraries.jboss_tx_spi_jakarta ) { +// transitive=false; +// } +// compile ( libraries.jboss_jta_jakarta ) { +// transitive=false; +// } + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + testCompile fileTree(dir: 'libs', include: '*.jar') +} + +jar { + mustRunAfter project(':hibernate-testing').tasks.jar + dependsOn project(':hibernate-testing').tasks.jar + def baseDir = project(':hibernate-testing').buildDir + def baseJars = fileTree(baseDir).matching {include 'libs/*.jar' } + inputs.files(baseJars).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + baseJars.each { bundleJar -> + def sourceJarPath = baseDir.path + '/libs/' + bundleJar.name + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/' + bundleJar.name.replaceAll( 'hibernate-testing', 'hibernate-testing-jakarta' ) + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile(), 'rules/jakarta-direct.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } + } +} \ No newline at end of file diff --git a/hibernate-testing/hibernate-testing.gradle b/hibernate-testing/hibernate-testing.gradle index c0f9fb4e30..abd8e3a5de 100644 --- a/hibernate-testing/hibernate-testing.gradle +++ b/hibernate-testing/hibernate-testing.gradle @@ -19,6 +19,9 @@ dependencies { compile( libraries.byteman_bmunit ) compile( libraries.xapool ) compile( libraries.log4j ) + compile( libraries.jboss_tx_spi ) { + transitive=false; + } compile ( libraries.jboss_jta ) { transitive=false; } diff --git a/hibernate-transaction-client/hibernate-transaction-client.gradle b/hibernate-transaction-client/hibernate-transaction-client.gradle new file mode 100644 index 0000000000..bd3cb0430b --- /dev/null +++ b/hibernate-transaction-client/hibernate-transaction-client.gradle @@ -0,0 +1,62 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +description = 'Wildfly Transaction Client transformed to be JTA 2.0 compatible' + +apply from: rootProject.file( 'gradle/java-module.gradle' ) + +configurations { + jakartaeeTransformJars +} + +dependencies { + compile( libraries.jakarta_jta ) + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + testCompile ( libraries.wildfly_transaction_client ) { + transitive=false; + } +} + +jar { + def sourceJarPath = project.configurations.testCompile.find { it.name.startsWith("wildfly-transaction-client-") } + inputs.files(sourceJarPath).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/hibernate-transaction-client-' + project.version + ".jar" + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile(), 'rules/jakarta-direct.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } +} \ No newline at end of file diff --git a/hibernate-transaction-spi/hibernate-transaction-spi.gradle b/hibernate-transaction-spi/hibernate-transaction-spi.gradle new file mode 100644 index 0000000000..57aced585f --- /dev/null +++ b/hibernate-transaction-spi/hibernate-transaction-spi.gradle @@ -0,0 +1,62 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +description = 'Wildfly Transaction SPI transformed to be JTA 2.0 compatible' + +apply from: rootProject.file( 'gradle/java-module.gradle' ) + +configurations { + jakartaeeTransformJars +} + +dependencies { + compile( libraries.jakarta_jta ) + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + testCompile ( libraries.jboss_tx_spi ) { + transitive=false; + } +} + +jar { + def sourceJarPath = project.configurations.testCompile.find { it.name.startsWith("jboss-transaction-spi-") } + inputs.files(sourceJarPath).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/hibernate-transaction-spi-' + project.version + ".jar" + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile(), 'rules/jakarta-direct.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } +} \ No newline at end of file diff --git a/rules/jakarta-direct-modelgen.properties b/rules/jakarta-direct-modelgen.properties new file mode 100644 index 0000000000..40142417e8 --- /dev/null +++ b/rules/jakarta-direct-modelgen.properties @@ -0,0 +1,34 @@ +# Taken from https://github.com/OpenLiberty/open-liberty/tree/30ca58383f9018227afd4b511bdedf33363b747e/dev/wlp-jakartaee-transform/rules + +# Direct String Replacement + +http\://java.sun.com/xml/ns/jaxb=https://jakarta.ee/xml/ns/jaxb + +# xmlBinding-3.0 properties +javax.xml.bind.JAXBElement=jakarta.xml.bind.JAXBElement + +com.sun.xml.bind.v2.ContextFactory=org.glassfish.jaxb.runtime.v2.JAXBContextFactory + +javax.annotation.security.RolesAllowed=jakarta.annotation.security.RolesAllowed + +javax.persistence.Entity=jakarta.persistence.Entity +javax.persistence.MappedSuperclass=jakarta.persistence.MappedSuperclass +javax.persistence.Embeddable=jakarta.persistence.Embeddable +javax.persistence.Id=jakarta.persistence.Id +javax.persistence.EmbeddedId=jakarta.persistence.EmbeddedId +javax.persistence.Transient=jakarta.persistence.Transient +javax.persistence.Basic=jakarta.persistence.Basic +javax.persistence.OneToOne=jakarta.persistence.OneToOne +javax.persistence.OneToMany=jakarta.persistence.OneToMany +javax.persistence.ManyToOne=jakarta.persistence.ManyToOne +javax.persistence.ManyToMany=jakarta.persistence.ManyToMany +javax.persistence.MapKeyClass=jakarta.persistence.MapKeyClass +javax.persistence.ElementCollection=jakarta.persistence.ElementCollection +javax.persistence.Access=jakarta.persistence.Access +javax.persistence.Convert=jakarta.persistence.Convert +javax.persistence.metamodel.StaticMetamodel=jakarta.persistence.metamodel.StaticMetamodel +javax.persistence.metamodel.SingularAttribute=jakarta.persistence.metamodel.SingularAttribute +javax.persistence.metamodel.CollectionAttribute=jakarta.persistence.metamodel.CollectionAttribute +javax.persistence.metamodel.SetAttribute=jakarta.persistence.metamodel.SetAttribute +javax.persistence.metamodel.ListAttribute=jakarta.persistence.metamodel.ListAttribute +javax.persistence.metamodel.MapAttribute=jakarta.persistence.metamodel.MapAttribute \ No newline at end of file diff --git a/rules/jakarta-direct.properties b/rules/jakarta-direct.properties new file mode 100644 index 0000000000..cd8e6b52ac --- /dev/null +++ b/rules/jakarta-direct.properties @@ -0,0 +1,12 @@ +# Taken from https://github.com/OpenLiberty/open-liberty/tree/30ca58383f9018227afd4b511bdedf33363b747e/dev/wlp-jakartaee-transform/rules + +# Direct String Replacement + +http\://java.sun.com/xml/ns/jaxb=https://jakarta.ee/xml/ns/jaxb + +# xmlBinding-3.0 properties +javax.xml.bind.JAXBElement=jakarta.xml.bind.JAXBElement + +com.sun.xml.bind.v2.ContextFactory=org.glassfish.jaxb.runtime.v2.JAXBContextFactory + +javax.annotation.security.RolesAllowed=jakarta.annotation.security.RolesAllowed diff --git a/rules/jakarta-renames.properties b/rules/jakarta-renames.properties new file mode 100644 index 0000000000..86e5ac487f --- /dev/null +++ b/rules/jakarta-renames.properties @@ -0,0 +1,260 @@ +# Taken from https://github.com/OpenLiberty/open-liberty/tree/30ca58383f9018227afd4b511bdedf33363b747e/dev/wlp-jakartaee-transform/rules + +com.sun.xml.bind=org.glassfish.jaxb.runtime +com.sun.xml.bind.api=org.glassfish.jaxb.runtime.api +com.sun.xml.bind.api.impl=org.glassfish.jaxb.core.api.impl +com.sun.xml.bind.marshaller=org.glassfish.jaxb.core.marshaller +com.sun.xml.bind.unmarshaller=org.glassfish.jaxb.core.unmarshaller +com.sun.xml.bind.util=org.glassfish.jaxb.runtime.util +com.sun.xml.bind.v2=org.glassfish.jaxb.runtime.v2 +com.sun.xml.bind.v2.model.annotation=org.glassfish.jaxb.runtime.v2.model.annotation +com.sun.xml.bind.v2.model.nav=org.glassfish.jaxb.core.v2.model.nav +com.sun.xml.bind.v2.model.runtime=org.glassfish.jaxb.runtime.v2.model.runtime +com.sun.xml.bind.v2.runtime=org.glassfish.jaxb.runtime.v2.runtime +com.sun.xml.bind.v2.runtime.unmarshaller=org.glassfish.jaxb.runtime.v2.runtime.unmarshaller +com.sun.xml.bind.v2.schemagen=org.glassfish.jaxb.runtime.v2.schemagen +com.sun.xml.bind.v2.schemagen.xmlschema=org.glassfish.jaxb.runtime.v2.schemagen.xmlschema +com.sun.xml.bind.v2.util=org.glassfish.jaxb.runtime.v2.util +com.sun.xml.internal.bind=org.glassfish.jaxb + +javax.activation=jakarta.activation +javax.annotation.security=jakarta.annotation.security +javax.annotation.sql=jakarta.annotation.sql +javax.annotation=jakarta.annotation +javax.batch.api=jakarta.batch.api +javax.batch.api.chunk=jakarta.batch.api.chunk +javax.batch.api.chunk.listener=jakarta.batch.api.chunk.listener +javax.batch.api.listener=jakarta.batch.api.listener +javax.batch.api.partition=jakarta.batch.api.partition +javax.batch.operations=jakarta.batch.operations +javax.batch.runtime=jakarta.batch.runtime +javax.batch.runtime.context=jakarta.batch.runtime.context +javax.decorator=jakarta.decorator +javax.ejb=jakarta.ejb +javax.ejb.embeddable=jakarta.ejb.embeddable +javax.ejb.spi=jakarta.ejb.spi +javax.el=jakarta.el +javax.enterprise.concurrent=jakarta.enterprise.concurrent +javax.enterprise.context.control=jakarta.enterprise.context.control +javax.enterprise.context.spi=jakarta.enterprise.context.spi +javax.enterprise.context=jakarta.enterprise.context +javax.enterprise.event=jakarta.enterprise.event +javax.enterprise.inject.literal=jakarta.enterprise.inject.literal +javax.enterprise.inject.se=jakarta.enterprise.inject.se +javax.enterprise.inject.spi.configurator=jakarta.enterprise.inject.spi.configurator +javax.enterprise.inject.spi=jakarta.enterprise.inject.spi +javax.enterprise.inject=jakarta.enterprise.inject +javax.enterprise.util=jakarta.enterprise.util +javax.faces=jakarta.faces +javax.faces.annotation=jakarta.faces.annotation +javax.faces.application=jakarta.faces.application +javax.faces.bean=jakarta.faces.bean +javax.faces.component=jakarta.faces.component +javax.faces.component.behavior=jakarta.faces.component.behavior +javax.faces.component.html=jakarta.faces.component.html +javax.faces.component.search=jakarta.faces.component.search +javax.faces.component.visit=jakarta.faces.component.visit +javax.faces.context=jakarta.faces.context +javax.faces.convert=jakarta.faces.convert +javax.faces.el=jakarta.faces.el +javax.faces.event=jakarta.faces.event +javax.faces.flow=jakarta.faces.flow +javax.faces.flow.builder=jakarta.faces.flow.builder +javax.faces.lifecycle=jakarta.faces.lifecycle +javax.faces.model=jakarta.faces.model +javax.faces.push=jakarta.faces.push +javax.faces.render=jakarta.faces.render +javax.faces.validator=jakarta.faces.validator +javax.faces.view=jakarta.faces.view +javax.faces.view.facelets=jakarta.faces.view.facelets +javax.faces.webapp=jakarta.faces.webapp +javax.inject=jakarta.inject +javax.interceptor=jakarta.interceptor +javax.jms=jakarta.jms +javax.json.bind.adapter=jakarta.json.bind.adapter +javax.json.bind.annotation=jakarta.json.bind.annotation +javax.json.bind.config=jakarta.json.bind.config +javax.json.bind.serializer=jakarta.json.bind.serializer +javax.json.bind.spi=jakarta.json.bind.spi +javax.json.bind=jakarta.json.bind +javax.json.spi=jakarta.json.spi +javax.json.stream=jakarta.json.stream +javax.json=jakarta.json +javax.jws=jakarta.jws +javax.jws.soap=jakarta.jws.soap +javax.mail=jakarta.mail +javax.persistence.criteria=jakarta.persistence.criteria +javax.persistence.metamodel=jakarta.persistence.metamodel +javax.persistence.spi=jakarta.persistence.spi +javax.persistence=jakarta.persistence +javax.persistence.cache.storeMode=jakarta.persistence.cache.storeMode +javax.persistence.cache.retrieveMode=jakarta.persistence.cache.retrieveMode +javax.persistence.bean.manager=jakarta.persistence.bean.manager +javax.persistence.validation.factory=jakarta.persistence.validation.factory +javax.resource.cci=jakarta.resource.cci +javax.resource.spi.endpoint=jakarta.resource.spi.endpoint +javax.resource.spi.security=jakarta.resource.spi.security +javax.resource.spi.work=jakarta.resource.spi.work +javax.resource.spi=jakarta.resource.spi +javax.resource=jakarta.resource +javax.security.auth.message=jakarta.security.auth.message +javax.security.auth.message.callback=jakarta.security.auth.message.callback +javax.security.auth.message.config=jakarta.security.auth.message.config +javax.security.auth.message.module=jakarta.security.auth.message.module +javax.security.enterprise=jakarta.security.enterprise +javax.security.enterprise.authentication.mechanism.http=jakarta.security.enterprise.authentication.mechanism.http +javax.security.enterprise.credential=jakarta.security.enterprise.credential +javax.security.enterprise.identitystore=jakarta.security.enterprise.identitystore +javax.security.jacc=jakarta.security.jacc +javax.servlet.annotation=jakarta.servlet.annotation +javax.servlet.descriptor=jakarta.servlet.descriptor +javax.servlet.http=jakarta.servlet.http +javax.servlet.jsp.el=jakarta.servlet.jsp.el +javax.servlet.jsp.jstl.core=jakarta.servlet.jsp.jstl.core +javax.servlet.jsp.jstl.fmt=jakarta.servlet.jsp.jstl.fmt +javax.servlet.jsp.jstl.sql=jakarta.servlet.jsp.jstl.sql +javax.servlet.jsp.jstl.tlv=jakarta.servlet.jsp.jstl.tlv +javax.servlet.jsp.jstl=jakarta.servlet.jsp.jstl +javax.servlet.jsp.resources=jakarta.servlet.jsp.resources +javax.servlet.jsp.tagext=jakarta.servlet.jsp.tagext +javax.servlet.jsp=jakarta.servlet.jsp +javax.servlet.resources=jakarta.servlet.resources +javax.servlet=jakarta.servlet +javax.transaction=jakarta.transaction +javax.validation=jakarta.validation +javax.validation.bootstrap=jakarta.validation.bootstrap +javax.validation.constraints=jakarta.validation.constraints +javax.validation.constraintvalidation=jakarta.validation.constraintvalidation +javax.validation.executable=jakarta.validation.executable +javax.validation.groups=jakarta.validation.groups +javax.validation.metadata=jakarta.validation.metadata +javax.validation.spi=jakarta.validation.spi +javax.validation.valueextraction=jakarta.validation.valueextraction +javax.websocket=jakarta.websocket +javax.websocket.server=jakarta.websocket.server +javax.ws.rs=jakarta.ws.rs +javax.ws.rs.client=jakarta.ws.rs.client +javax.ws.rs.container=jakarta.ws.rs.container +javax.ws.rs.core=jakarta.ws.rs.core +javax.ws.rs.ext=jakarta.ws.rs.ext +javax.ws.rs.sse=jakarta.ws.rs.sse +javax.xml.bind.annotation.adapters=jakarta.xml.bind.annotation.adapters +javax.xml.bind.annotation=jakarta.xml.bind.annotation +javax.xml.bind.attachment=jakarta.xml.bind.attachment +javax.xml.bind.helpers=jakarta.xml.bind.helpers +javax.xml.bind.util=jakarta.xml.bind.util +javax.xml.bind=jakarta.xml.bind +javax.xml.soap=jakarta.xml.soap +javax.xml.ws=jakarta.xml.ws +javax.xml.ws.handler=jakarta.xml.ws.handler +javax.xml.ws.handler.soap=jakarta.xml.ws.handler.soap +javax.xml.ws.http=jakarta.xml.ws.http +javax.xml.ws.soap=jakarta.xml.ws.soap +javax.xml.ws.spi=jakarta.xml.ws.spi +javax.xml.ws.spi.http=jakarta.xml.ws.spi.http +javax.xml.ws.wsaddressing=jakarta.xml.ws.wsaddressing + + +#Required for common enterprise beans test tools +com.ibm.websphere.ejbcontainer.test.mdb=io.openliberty.ejbcontainer.jakarta.test.mdb +com.ibm.websphere.ejbcontainer.test.mdb.interceptors=io.openliberty.ejbcontainer.jakarta.test.mdb.interceptors +com.ibm.websphere.ejbcontainer.test.osgi.pmi=io.openliberty.ejbcontainer.jakarta.test.osgi.pmi +com.ibm.websphere.ejbcontainer.test.osgi.pmi.internal=io.openliberty.ejbcontainer.jakarta.test.osgi.pmi.internal +com.ibm.websphere.ejbcontainer.test.tools=io.openliberty.ejbcontainer.jakarta.test.tools + +#Required to transform the package versions only +com.ibm.wsspi.el=com.ibm.wsspi.el +org.apache.myfaces.cdi.util=org.apache.myfaces.cdi.util +org.apache.myfaces.config.annotation=org.apache.myfaces.config.annotation +org.apache.myfaces.ee=org.apache.myfaces.ee +org.apache.myfaces.shared.util=org.apache.myfaces.shared.util +org.apache.myfaces.spi=org.apache.myfaces.spi +org.apache.myfaces.util=org.apache.myfaces.util +org.apache.myfaces.webapp=org.apache.myfaces.webapp +org.hibernate.validator=org.hibernate.validator +org.hibernate.validator.cdi.internal=org.hibernate.validator.cdi.internal +org.hibernate.validator.cdi=org.hibernate.validator.cdi +org.hibernate.validator.internal.engine.valueextraction=org.hibernate.validator.internal.engine.valueextraction +org.hibernate.validator.internal.properties=org.hibernate.validator.internal.properties +org.hibernate.validator.internal.util.classhierarchy=org.hibernate.validator.internal.util.classhierarchy +org.hibernate.validator.internal.util.logging=org.hibernate.validator.internal.util.logging +org.hibernate.validator.internal.util.privilegedactions=org.hibernate.validator.internal.util.privilegedactions +org.hibernate.validator.internal.util=org.hibernate.validator.internal.util +org.hibernate.validator.internal=org.hibernate.validator.internal +org.hibernate.validator.spi.properties=org.hibernate.validator.spi.properties +org.jboss.weld.annotated.enhanced=org.jboss.weld.annotated.enhanced +org.jboss.weld.bean.builtin=org.jboss.weld.bean.builtin +org.jboss.weld.bean.proxy=org.jboss.weld.bean.proxy +org.jboss.weld.bean.proxy.util=org.jboss.weld.bean.proxy.util +org.jboss.weld.bean=org.jboss.weld.bean +org.jboss.weld.bootstrap.api.helpers=org.jboss.weld.bootstrap.api.helpers +org.jboss.weld.bootstrap.api=org.jboss.weld.bootstrap.api +org.jboss.weld.bootstrap.spi.helpers=org.jboss.weld.bootstrap.spi.helpers +org.jboss.weld.bootstrap.spi=org.jboss.weld.bootstrap.spi +org.jboss.weld.bootstrap=org.jboss.weld.bootstrap +org.jboss.weld.config=org.jboss.weld.config +org.jboss.weld.construction.api=org.jboss.weld.construction.api +org.jboss.weld.context=org.jboss.weld.context +org.jboss.weld.context.api=org.jboss.weld.context.api +org.jboss.weld.context.bound=org.jboss.weld.context.bound +org.jboss.weld.context.http=org.jboss.weld.context.http +org.jboss.weld.contexts=org.jboss.weld.contexts +org.jboss.weld.ejb.api=org.jboss.weld.ejb.api +org.jboss.weld.ejb.spi=org.jboss.weld.ejb.spi +org.jboss.weld.exceptions=org.jboss.weld.exceptions +org.jboss.weld.executor=org.jboss.weld.executor +org.jboss.weld.injection.spi=org.jboss.weld.injection.spi +org.jboss.weld.injection=org.jboss.weld.injection +org.jboss.weld.interceptor.spi.model=org.jboss.weld.interceptor.spi.model +org.jboss.weld.manager.api=org.jboss.weld.manager.api +org.jboss.weld.manager=org.jboss.weld.manager +org.jboss.weld.metadata=org.jboss.weld.metadata +org.jboss.weld.module.ejb=org.jboss.weld.module.ejb +org.jboss.weld.module.jsf=org.jboss.weld.module.jsf +org.jboss.weld.module.web.el=org.jboss.weld.module.web.el +org.jboss.weld.module.web.servlet=org.jboss.weld.module.web.servlet +org.jboss.weld.probe=org.jboss.weld.probe +org.jboss.weld.resolution=org.jboss.weld.resolution +org.jboss.weld.resources.spi=org.jboss.weld.resources.spi +org.jboss.weld.resources=org.jboss.weld.resources +org.jboss.weld.security.spi=org.jboss.weld.security.spi +org.jboss.weld.serialization.spi=org.jboss.weld.serialization.spi +org.jboss.weld.transaction.spi=org.jboss.weld.transaction.spi +org.jboss.weld.util.collections=org.jboss.weld.util.collections +org.jboss.weld=org.jboss.weld + +org.eclipse.persistence.exceptions=org.eclipse.persistence.exceptions +org.eclipse.persistence.logging=org.eclipse.persistence.logging +org.eclipse.persistence.platform.server=org.eclipse.persistence.platform.server +org.eclipse.persistence.internal.databaseaccess=org.eclipse.persistence.internal.databaseaccess +org.eclipse.persistence.internal.helper=org.eclipse.persistence.internal.helper +org.eclipse.persistence.internal.security=org.eclipse.persistence.internal.security +org.eclipse.persistence.internal.sessions=org.eclipse.persistence.internal.sessions + +org.eclipse.persistence.annotations=org.eclipse.persistence.annotations +org.eclipse.persistence.descriptors=org.eclipse.persistence.descriptors +org.eclipse.persistence.descriptors.changetracking=org.eclipse.persistence.descriptors.changetracking +org.eclipse.persistence.queries=org.eclipse.persistence.queries +org.eclipse.persistence.indirection=org.eclipse.persistence.indirection +org.eclipse.persistence.internal.descriptors=org.eclipse.persistence.internal.descriptors +org.eclipse.persistence.internal.identitymaps=org.eclipse.persistence.internal.identitymaps +org.eclipse.persistence.internal.jpa=org.eclipse.persistence.internal.jpa +org.eclipse.persistence.internal.jpa.rs.metadata.model=org.eclipse.persistence.internal.jpa.rs.metadata.model +org.eclipse.persistence.internal.weaving=org.eclipse.persistence.internal.weaving +org.eclipse.persistence.jpa=org.eclipse.persistence.jpa +org.eclipse.persistence.platform.server.was=org.eclipse.persistence.platform.server.was +org.eclipse.persistence.internal.sessions.cdi=org.eclipse.persistence.internal.sessions.cdi +org.eclipse.persistence.platform.database=org.eclipse.persistence.platform.database +org.eclipse.persistence.sessions=org.eclipse.persistence.sessions +org.eclipse.persistence.tools.schemaframework=org.eclipse.persistence.tools.schemaframework +org.eclipse.persistence.transaction=org.eclipse.persistence.transaction + +com.sun.xml.internal.messaging.saaj.packaging.mime=com.sun.xml.messaging.saaj.packaging.mime +com.sun.xml.internal.messaging.saaj.packaging.mime.internet=com.sun.xml.messaging.saaj.packaging.mime.internet +com.sun.xml.internal.messaging.saaj.packaging.mime.util=com.sun.xml.messaging.saaj.packaging.mime.util +com.sun.xml.internal.messaging.saaj.soap=com.sun.xml.messaging.saaj.soap +com.sun.xml.internal.messaging.saaj.soap.dynamic=com.sun.xml.messaging.saaj.soap.dynamic +com.sun.xml.internal.messaging.saaj.soap.name=com.sun.xml.messaging.saaj.soap.name +com.sun.xml.internal.messaging.saaj.util=com.sun.xml.messaging.saaj.util +com.sun.xml.internal.messaging.saaj.util.stax=com.sun.xml.messaging.saaj.util.stax +com.sun.xml.internal.messaging.saaj.util.transform=com.sun.xml.messaging.saaj.util.transform diff --git a/rules/jakarta-versions.properties b/rules/jakarta-versions.properties new file mode 100644 index 0000000000..e43ebefeb4 --- /dev/null +++ b/rules/jakarta-versions.properties @@ -0,0 +1,223 @@ +# Taken from https://github.com/OpenLiberty/open-liberty/tree/30ca58383f9018227afd4b511bdedf33363b747e/dev/wlp-jakartaee-transform/rules + +com.ibm.wsspi.el=[4.0,5) +jakarta.activation=[2.0,3) +jakarta.annotation.security=[2.0,3) +jakarta.annotation.sql=[2.0,3) +jakarta.annotation=[2.0,3) +jakarta.batch.api=[2.0,3) +jakarta.batch.api.chunk=[2.0,3) +jakarta.batch.api.chunk.listener=[2.0,3) +jakarta.batch.api.listener=[2.0,3) +jakarta.batch.api.partition=[2.0,3) +jakarta.batch.operations=[2.0,3) +jakarta.batch.runtime=[2.0,3) +jakarta.batch.runtime.context=[2.0,3) +jakarta.decorator=[3.0,4.0) +jakarta.ejb=[4.0,5) +jakarta.ejb.embeddable=[4.0,5) +jakarta.ejb.spi=[4.0,5) +jakarta.el=[4.0,5) +jakarta.enterprise.concurrent=[2.0,3) +jakarta.enterprise.context.control=[3.0,4.0) +jakarta.enterprise.context.spi=[3.0,4.0) +jakarta.enterprise.context=[3.0,4.0) +jakarta.enterprise.event=[3.0,4.0) +jakarta.enterprise.inject.literal=[3.0,4.0) +jakarta.enterprise.inject.spi.configurator=[3.0,4.0) +jakarta.enterprise.inject.spi=[3.0,4.0) +jakarta.enterprise.inject=[3.0,4.0) +jakarta.enterprise.util=[3.0,4.0) +jakarta.faces=[3.0,4.0) +jakarta.faces.application=[3.0,4.0) +jakarta.faces.bean=[3.0,4.0) +jakarta.faces.component=[3.0,4.0) +jakarta.faces.component.behavior=[3.0,4.0) +jakarta.faces.context=[3.0,4.0) +jakarta.faces.convert=[3.0,4.0) +jakarta.faces.event=[3.0,4.0) +jakarta.faces.model=[3.0,4.0) +jakarta.faces.render=[3.0,4.0) +jakarta.faces.validator=[3.0,4.0) +jakarta.faces.view.facelets=[3.0,4.0) +jakarta.faces.webapp=[3.0,4.0) +jakarta.inject=[2.0,3.0) +jakarta.interceptor=[2.0,3.0) +jakarta.json.bind.adapter=[2.0,3.0) +jakarta.json.bind.annotation=[2.0,3.0) +jakarta.json.bind.config=[2.0,3.0) +jakarta.json.bind.serializer=[2.0,3.0) +jakarta.json.bind.spi=[2.0,3.0) +jakarta.json.bind=[2.0,3.0) +jakarta.json.spi=[2.0,3.0) +jakarta.json.stream=[2.0,3.0) +jakarta.json=[2.0,3.0) +jakarta.jms=[3.0,4) +jakarta.jws=[3.0,4) +jakarta.jws.soap=[3.0,4) +jakarta.persistence.criteria=[3.0,4) +jakarta.persistence.metamodel=[3.0,4) +jakarta.persistence.spi=[3.0,4) +jakarta.persistence=[3.0,4) +jakarta.resource.cci=[2.0,3) +jakarta.resource.spi.endpoint=[2.0,3) +jakarta.resource.spi.security=[2.0,3) +jakarta.resource.spi.work=[2.0,3) +jakarta.resource.spi=[2.0,3) +jakarta.resource=[2.0,3) +jakarta.security.auth.message=[2.0,3) +jakarta.security.auth.message.callback=[2.0,3) +jakarta.security.auth.message.config=[2.0,3) +jakarta.security.auth.message.module=[2.0,3) +jakarta.security.enterprise=[2.0,3) +jakarta.security.enterprise.authentication.mechanism.http=[2.0,3) +jakarta.security.enterprise.credential=[2.0,3) +jakarta.security.enterprise.identitystore=[2.0,3) +jakarta.security.jacc=[2.0,3) +jakarta.servlet.annotation=[5.0,6) +jakarta.servlet.descriptor=[5.0,6) +jakarta.servlet.http=[5.0,6) +jakarta.servlet.jsp.el=[3.0,4) +jakarta.servlet.jsp.jstl.core=[2.0,3) +jakarta.servlet.jsp.jstl.fmt=[2.0,3) +jakarta.servlet.jsp.jstl.sql=[2.0,3) +jakarta.servlet.jsp.jstl.tlv=[2.0,3) +jakarta.servlet.jsp.jstl=[2.0,3) +jakarta.servlet.jsp.resources=[3.0,4) +jakarta.servlet.jsp.tagext=[3.0,4) +jakarta.servlet.jsp=[3.0,4) +jakarta.servlet.resources=[5.0,6) +jakarta.servlet=[5.0,6) +jakarta.transaction=[2.0,3) +jakarta.validation=[3.0,4) +jakarta.validation.bootstrap=[3.0,4) +jakarta.validation.constraints=[3.0,4) +jakarta.validation.constraintvalidation=[3.0,4) +jakarta.validation.executable=[3.0,4) +jakarta.validation.groups=[3.0,4) +jakarta.validation.metadata=[3.0,4) +jakarta.validation.spi=[3.0,4) +jakarta.validation.valueextraction=[3.0,4) +jakarta.ws.rs=[3.0,4.0) +jakarta.ws.rs.client=[3.0,4.0) +jakarta.ws.rs.container=[3.0,4.0) +jakarta.ws.rs.core=[3.0,4.0) +jakarta.ws.rs.ext=[3.0,4.0) +jakarta.ws.rs.sse=[3.0,4.0) +jakarta.xml.bind.annotation.adapters=[3.0,4) +jakarta.xml.bind.annotation=[3.0,4) +jakarta.xml.bind.attachment=[3.0,4) +jakarta.xml.bind.helpers=[3.0,4) +jakarta.xml.bind.util=[3.0,4) +jakarta.xml.bind=[3.0,4) +jakarta.xml.soap=[3.0,4) +jakarta.xml.ws=[3.0,4) +jakarta.xml.ws.handler=[3.0,4) +jakarta.xml.ws.handler.soap=[3.0,4) +jakarta.xml.ws.http=[3.0,4) +jakarta.xml.ws.soap=[3.0,4) +jakarta.xml.ws.spi=[3.0,4) +jakarta.xml.ws.spi.http=[3.0,4) +jakarta.xml.ws.wsaddressing=[3.0,4) +jakarta.websocket=[2.0,3) +jakarta.websocket.server=[2.0,3) +org.apache.myfaces.cdi.util=[3.0,4) +org.apache.myfaces.config.annotation=[3.0,4) +org.apache.myfaces.ee=[3.0,4) +org.apache.myfaces.shared.util=[3.0,4) +org.apache.myfaces.spi=[3.0,4) +org.apache.myfaces.util=[3.0,4) +org.apache.myfaces.webapp=[3.0,4) +org.glassfish.jaxb.runtime=[3.0,4) +org.glassfish.jaxb.runtime.api=[3.0,4) +org.glassfish.jaxb.core.api.impl=[3.0,4) +org.glassfish.jaxb.core.marshaller=[3.0,4) +org.glassfish.jaxb.core.unmarshaller=[3.0,4) +org.glassfish.jaxb.runtime.util=[3.0,4) +org.glassfish.jaxb.core.v2.model.nav=[3.0,4) +org.glassfish.jaxb.runtime.v2=[3.0,4) +org.glassfish.jaxb.runtime.v2.model.annotation=[3.0,4) +org.glassfish.jaxb.runtime.v2.model.runtime=[3.0,4) +org.glassfish.jaxb.runtime.v2.runtime=[3.0,4) +org.glassfish.jaxb.runtime.v2.runtime.unmarshaller=[3.0,4) +org.glassfish.jaxb.runtime.v2.schemagen=[3.0,4) +org.glassfish.jaxb.runtime.v2.schemagen.xmlschema=[3.0,4) +org.glassfish.jaxb.runtime.v2.util=[3.0,4) +org.glassfish.jaxb=[3.0,4) +org.hibernate.validator=[7.0,8) +org.hibernate.validator.cdi.internal=[7.0,8) +org.hibernate.validator.cdi=[7.0,8) +org.hibernate.validator.internal.engine.valueextraction=[7.0,8) +org.hibernate.validator.internal.properties=[7.0,8) +org.hibernate.validator.internal.util.classhierarchy=[7.0,8) +org.hibernate.validator.internal.util.logging=[7.0,8) +org.hibernate.validator.internal.util.privilegedactions=[7.0,8) +org.hibernate.validator.internal.util=[7.0,8) +org.hibernate.validator.internal=[7.0,8) +org.hibernate.validator.spi.properties=[7.0,8) +org.jboss.weld.annotated.enhanced=[4.0,5) +org.jboss.weld.bean.builtin=[4.0,5) +org.jboss.weld.bean.proxy=[4.0,5) +org.jboss.weld.bean.proxy.util=[4.0,5) +org.jboss.weld.bean=[4.0,5) +org.jboss.weld.bootstrap.api.helpers=[4.0,5) +org.jboss.weld.bootstrap.api=[4.0,5) +org.jboss.weld.bootstrap.spi.helpers=[4.0,5) +org.jboss.weld.bootstrap.spi=[4.0,5) +org.jboss.weld.bootstrap=[4.0,5) +org.jboss.weld.config=[4.0,5) +org.jboss.weld.construction.api=[4.0,5) +org.jboss.weld.context=[4.0,5) +org.jboss.weld.context.api=[4.0,5) +org.jboss.weld.context.bound=[4.0,5) +org.jboss.weld.context.http=[4.0,5) +org.jboss.weld.contexts=[4.0,5) +org.jboss.weld.ejb.api=[4.0,5) +org.jboss.weld.ejb.spi=[4.0,5) +org.jboss.weld.exceptions=[4.0,5) +org.jboss.weld.executor=[4.0,5) +org.jboss.weld.injection.spi=[4.0,5) +org.jboss.weld.injection=[4.0,5) +org.jboss.weld.interceptor.spi.model=[4.0,5) +org.jboss.weld.manager.api=[4.0,5) +org.jboss.weld.manager=[4.0,5) +org.jboss.weld.metadata=[4.0,5) +org.jboss.weld.module.ejb=[4.0,5) +org.jboss.weld.module.jsf=[4.0,5) +org.jboss.weld.module.web.el=[4.0,5) +org.jboss.weld.module.web.servlet=[4.0,5) +org.jboss.weld.probe=[4.0,5) +org.jboss.weld.resolution=[4.0,5) +org.jboss.weld.resources.spi=[4.0,5) +org.jboss.weld.resources=[4.0,5) +org.jboss.weld.security.spi=[4.0,5) +org.jboss.weld.serialization.spi=[4.0,5) +org.jboss.weld.transaction.spi=[4.0,5) +org.jboss.weld.util.collections=[4.0,5) +org.jboss.weld=[4.0,5) + +org.eclipse.persistence.exceptions=[3.0,4) +org.eclipse.persistence.logging=[3.0,4) +org.eclipse.persistence.platform.server=[3.0,4) +org.eclipse.persistence.internal.databaseaccess=[3.0,4) +org.eclipse.persistence.internal.helper=[3.0,4) +org.eclipse.persistence.internal.security=[3.0,4) +org.eclipse.persistence.internal.sessions=[3.0,4) + +org.eclipse.persistence.annotations=[3.0,4) +org.eclipse.persistence.descriptors=[3.0,4) +org.eclipse.persistence.descriptors.changetracking=[3.0,4) +org.eclipse.persistence.queries=[3.0,4) +org.eclipse.persistence.indirection=[3.0,4) +org.eclipse.persistence.internal.descriptors=[3.0,4) +org.eclipse.persistence.internal.identitymaps=[3.0,4) +org.eclipse.persistence.internal.jpa=[3.0,4) +org.eclipse.persistence.internal.jpa.rs.metadata.model=[3.0,4) +org.eclipse.persistence.internal.weaving=[3.0,4) +org.eclipse.persistence.jpa=[3.0,4) +org.eclipse.persistence.platform.server.was=[3.0,4) +org.eclipse.persistence.internal.sessions.cdi=[3.0,4) +org.eclipse.persistence.platform.database=[3.0,4) +org.eclipse.persistence.sessions=[3.0,4) +org.eclipse.persistence.tools.schemaframework=[3.0,4) +org.eclipse.persistence.transaction=[3.0,4) diff --git a/settings.gradle b/settings.gradle index 54000713c5..ca6903e25c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -87,9 +87,17 @@ logger.lifecycle "Java versions for main code: " + gradle.ext.javaVersions.main logger.lifecycle "Java versions for tests: " + gradle.ext.javaVersions.test include 'hibernate-core' +include 'hibernate-core-jakarta' include 'hibernate-entitymanager' include 'hibernate-testing' +include 'hibernate-testing-jakarta' +// todo (jakarta): remove these three when the jakarta artifacts are released +include 'hibernate-jboss-jta' +include 'hibernate-transaction-client' +include 'hibernate-transaction-spi' + include 'hibernate-envers' +include 'hibernate-envers-jakarta' include 'hibernate-spatial' include 'hibernate-java8' @@ -127,6 +135,10 @@ include 'metamodel-generator' project(':metamodel-generator').projectDir = new File(rootProject.projectDir, "tooling/metamodel-generator") project(':metamodel-generator').name = 'hibernate-jpamodelgen' +include 'metamodel-generator-jakarta' +project(':metamodel-generator-jakarta').projectDir = new File(rootProject.projectDir, "tooling/metamodel-generator-jakarta") +project(':metamodel-generator-jakarta').name = 'hibernate-jpamodelgen-jakarta' + include 'hibernate-gradle-plugin' project(':hibernate-gradle-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-gradle-plugin") diff --git a/tooling/metamodel-generator-jakarta/hibernate-jpamodelgen-jakarta.gradle b/tooling/metamodel-generator-jakarta/hibernate-jpamodelgen-jakarta.gradle new file mode 100644 index 0000000000..13d32b6685 --- /dev/null +++ b/tooling/metamodel-generator-jakarta/hibernate-jpamodelgen-jakarta.gradle @@ -0,0 +1,68 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ + +description = 'Annotation Processor to generate JPA 3 static metamodel classes' + +apply from: rootProject.file( 'gradle/published-java-module.gradle' ) + +configurations { + jakartaeeTransformJars +} + +dependencies { + // JAXB + compile( libraries.jakarta_jaxb_api ) + compile( libraries.jakarta_jaxb_runtime ) + + jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1', + 'commons-cli:commons-cli:1.4', + 'org.slf4j:slf4j-simple:1.7.30', + 'org.slf4j:slf4j-api:1.7.26', + 'org.eclipse.transformer:org.eclipse.transformer:0.2.0', + 'org.eclipse.transformer:org.eclipse.transformer.cli:0.2.0' + testCompile fileTree(dir: 'libs', include: '*.jar') +} + +jar { + mustRunAfter project(':hibernate-jpamodelgen').tasks.jar + dependsOn project(':hibernate-jpamodelgen').tasks.jar + def baseDir = project(':hibernate-jpamodelgen').buildDir + def baseJars = fileTree(baseDir).matching {include 'libs/*.jar' } + inputs.files(baseJars).skipWhenEmpty() + outputs.dir project.buildDir + doLast { + new File(project.buildDir, "libs").mkdirs() + fileTree(project.buildDir).matching { include 'libs/*.jar' }.each { delete it } + + baseJars.each { bundleJar -> + def sourceJarPath = baseDir.path + '/libs/' + bundleJar.name + println 'Initial bundle jar name [ ' + sourceJarPath + ' ]' + + def finalBundleJarName = project.buildDir.path + '/libs/' + bundleJar.name.replaceAll( 'hibernate-jpamodelgen', 'hibernate-jpamodelgen-jakarta' ) + println 'Default jakarta final bundle jar name [ ' + finalBundleJarName + ' ]' + + def transformerArgs = [ + sourceJarPath, finalBundleJarName, + '-q', // quiet output + '-tr', new File(getProjectDir().getParentFile().getParentFile(), 'rules/jakarta-renames.properties').path, + '-tv', new File(getProjectDir().getParentFile().getParentFile(), 'rules/jakarta-versions.properties').path, + '-td', new File(getProjectDir().getParentFile().getParentFile(), 'rules/jakarta-direct-modelgen.properties').path, + ] + + println 'Transformer options:' + transformerArgs.each { + println ' [ ' + it + ' ]' + } + + javaexec { + classpath configurations.jakartaeeTransformJars + main = 'org.eclipse.transformer.jakarta.JakartaTransformer' + args = transformerArgs + } + } + } +} \ No newline at end of file diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java b/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java index 245c9e3111..e97bfe3067 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java @@ -199,7 +199,7 @@ public final class ClassWriter { private static String writeGeneratedAnnotation(MetaEntity entity, Context context) { StringBuilder generatedAnnotation = new StringBuilder(); generatedAnnotation.append( "@" ) - .append( entity.importType( context.getGeneratedAnnotation().getQualifiedName().toString() ) ) + .append( entity.importType( context.getGeneratedAnnotationFqcn() ) ) .append( "(value = \"" ) .append( JPAMetaModelEntityProcessor.class.getName() ); if ( context.addGeneratedDate() ) { diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/Context.java b/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/Context.java index da0d9a6f55..c09ec34288 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/Context.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/Context.java @@ -50,7 +50,7 @@ public final class Context { private final boolean lazyXmlParsing; private final String persistenceXmlLocation; private final List ormXmlFiles; - private final TypeElement generatedAnnotation; + private final String generatedAnnotation; /** * Whether all mapping files are xml-mapping-metadata-complete. In this case no annotation processing will take @@ -96,14 +96,16 @@ public final class Context { lazyXmlParsing = Boolean.parseBoolean( pe.getOptions().get( JPAMetaModelEntityProcessor.LAZY_XML_PARSING ) ); logDebug = Boolean.parseBoolean( pe.getOptions().get( JPAMetaModelEntityProcessor.DEBUG_OPTION ) ); + // Workaround that Eclipse transformer tries to replace this constant which we don't want + String j = "j"; TypeElement java8AndBelowGeneratedAnnotation = - pe.getElementUtils().getTypeElement( "javax.annotation.Generated" ); + pe.getElementUtils().getTypeElement( j + "avax.annotation.Generated" ); if ( java8AndBelowGeneratedAnnotation != null ) { - generatedAnnotation = java8AndBelowGeneratedAnnotation; + generatedAnnotation = java8AndBelowGeneratedAnnotation.getQualifiedName().toString(); } else { // Using the new name for this annotation in Java 9 and above - generatedAnnotation = pe.getElementUtils().getTypeElement( "javax.annotation.processing.Generated" ); + generatedAnnotation = "javax.annotation.processing.Generated"; } } @@ -115,7 +117,7 @@ public final class Context { return addGeneratedAnnotation; } - public TypeElement getGeneratedAnnotation() { + public String getGeneratedAnnotationFqcn() { return generatedAnnotation; }