HHH-13946 Create Jakarta artifacts for hibernate-core, hibernate-envers, hibernate-jpamodelgen and hibernate-testing

This commit is contained in:
Christian Beikov 2021-04-22 18:15:45 +02:00
parent eb8b8620d7
commit ff9e9eebc9
43 changed files with 1224 additions and 9 deletions

View File

@ -43,6 +43,7 @@ ext {
ormVersion = new HibernateVersion( project.releaseVersion, project ) ormVersion = new HibernateVersion( project.releaseVersion, project )
} }
jpaVersion = new JpaVersion('2.2') 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 // The Gradle Nexus Publish Plugin must be applied to the root project and requires group and version

View File

@ -18,9 +18,11 @@ ext {
hibernateValidatorVersion = '6.1.6.Final' hibernateValidatorVersion = '6.1.6.Final'
validationApiVersion = '2.0.1.Final' validationApiVersion = '2.0.1.Final'
elVersion = '3.0.1-b09' elVersion = '3.0.1-b09'
hibernateValidatorJakartaVersion = '7.0.1.Final'
cdiVersion = '2.0' cdiVersion = '2.0'
weldVersion = '3.1.5.Final' weldVersion = '3.1.5.Final'
jakartaWeldVersion = '4.0.1.SP1'
javassistVersion = '3.27.0-GA' javassistVersion = '3.27.0-GA'
byteBuddyVersion = '1.10.21' 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 // We can't upgrade JAXB in Karaf (yet), but fortunately everything works fine with the version built in Karaf
jaxbApiVersionOsgiRange = "[2.2,3)" jaxbApiVersionOsgiRange = "[2.2,3)"
jaxbRuntimeVersion = '2.3.1' jaxbRuntimeVersion = '2.3.1'
jakartaJaxbRuntimeVersion = '3.0.0'
//GraalVM //GraalVM
graalvmVersion = '19.3.1' graalvmVersion = '19.3.1'
@ -76,6 +79,18 @@ ext {
// required by JAXB from JDK 9 as it is not available anymore in JDK 9 // required by JAXB from JDK 9 as it is not available anymore in JDK 9
activation: 'javax.activation:javax.activation-api:1.2.0', 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
logging: 'org.jboss.logging:jboss-logging:3.4.1.Final', logging: 'org.jboss.logging:jboss-logging:3.4.1.Final',
logging_annotations: 'org.jboss.logging:jboss-logging-annotations:2.1.0.Final', logging_annotations: 'org.jboss.logging:jboss-logging-annotations:2.1.0.Final',
@ -126,7 +141,11 @@ ext {
jodaTime: "joda-time:joda-time:${jodaTimeVersion}", jodaTime: "joda-time:joda-time:${jodaTimeVersion}",
informix: 'com.ibm.informix:jdbc:4.10.12', 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", xapool: "com.experlog:xapool:1.5.0",
mockito: 'org.mockito:mockito-core:2.19.1', mockito: 'org.mockito:mockito-core:2.19.1',
mockito_inline: 'org.mockito:mockito-inline: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 // EL required by Hibernate Validator at test runtime
expression_language: "org.glassfish:javax.el:${elVersion}", 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", c3p0: "com.mchange:c3p0:0.9.5.5",
ehcache: "net.sf.ehcache:ehcache:2.10.6", ehcache: "net.sf.ehcache:ehcache:2.10.6",
ehcache3: "org.ehcache:ehcache:3.6.1", ehcache3: "org.ehcache:ehcache:3.6.1",
@ -151,6 +174,7 @@ ext {
cdi: "javax.enterprise:cdi-api:${cdiVersion}", cdi: "javax.enterprise:cdi-api:${cdiVersion}",
weld: "org.jboss.weld.se:weld-se-shaded:${weldVersion}", 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}", assertj: "org.assertj:assertj-core:${assertjVersion}",
@ -163,6 +187,8 @@ ext {
jboss_vfs: "org.jboss:jboss-vfs:3.2.11.Final", jboss_vfs: "org.jboss:jboss-vfs:3.2.11.Final",
wildfly_transaction_client : 'org.wildfly.transaction:wildfly-transaction-client:1.1.7.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_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', jboss_annotation_spec_jar : 'org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.0.Final',

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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'] )
}
}

View File

@ -25,7 +25,7 @@ sourceSets {
// resources inherently exclude sources // resources inherently exclude sources
test { test {
resources { 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 // For JPA, we don't want to target the automatically generated range, but a specific version
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"", "javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
// optionals // optionals
'jakarta.persistence.spi;resolution:=optional',
'javax.management;resolution:=optional', 'javax.management;resolution:=optional',
'javax.naming.event;resolution:=optional', 'javax.naming.event;resolution:=optional',
'javax.naming.spi;resolution:=optional', 'javax.naming.spi;resolution:=optional',
@ -218,7 +219,7 @@ task copyBundleResources (type: Copy) {
ext.bundleTokens['buildDirName'] = buildDir.absolutePath ext.bundleTokens['buildDirName'] = buildDir.absolutePath
} }
from file('src/test/bundles') from file('src/test/bundles/templates')
into ext.bundlesTargetDir into ext.bundlesTargetDir
filter( ReplaceTokens, tokens: ext.bundleTokens) filter( ReplaceTokens, tokens: ext.bundleTokens)
@ -229,6 +230,7 @@ task copyBundleResources (type: Copy) {
processTestResources.dependsOn copyBundleResources processTestResources.dependsOn copyBundleResources
task testJar(type: Jar, dependsOn: testClasses) { task testJar(type: Jar, dependsOn: testClasses) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveClassifier.set( 'test' ) archiveClassifier.set( 'test' )
from sourceSets.test.output from sourceSets.test.output
} }

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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'] )
}
}

View File

@ -41,6 +41,12 @@ sourceSets {
} }
} }
configurations {
tests {
description = 'Configuration for the produced test jar'
}
}
jar { jar {
manifest { manifest {
attributes( 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" { tasks."matrix_mariadb" {
beforeTest { descriptor -> beforeTest { descriptor ->
println "Starting test: " + descriptor println "Starting test: " + descriptor

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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
}
}
}

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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
}
}
}
}

View File

@ -19,6 +19,9 @@ dependencies {
compile( libraries.byteman_bmunit ) compile( libraries.byteman_bmunit )
compile( libraries.xapool ) compile( libraries.xapool )
compile( libraries.log4j ) compile( libraries.log4j )
compile( libraries.jboss_tx_spi ) {
transitive=false;
}
compile ( libraries.jboss_jta ) { compile ( libraries.jboss_jta ) {
transitive=false; transitive=false;
} }

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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
}
}
}

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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
}
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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 logger.lifecycle "Java versions for tests: " + gradle.ext.javaVersions.test
include 'hibernate-core' include 'hibernate-core'
include 'hibernate-core-jakarta'
include 'hibernate-entitymanager' include 'hibernate-entitymanager'
include 'hibernate-testing' 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'
include 'hibernate-envers-jakarta'
include 'hibernate-spatial' include 'hibernate-spatial'
include 'hibernate-java8' include 'hibernate-java8'
@ -127,6 +135,10 @@ include 'metamodel-generator'
project(':metamodel-generator').projectDir = new File(rootProject.projectDir, "tooling/metamodel-generator") project(':metamodel-generator').projectDir = new File(rootProject.projectDir, "tooling/metamodel-generator")
project(':metamodel-generator').name = 'hibernate-jpamodelgen' 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' include 'hibernate-gradle-plugin'
project(':hibernate-gradle-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-gradle-plugin") project(':hibernate-gradle-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-gradle-plugin")

View File

@ -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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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
}
}
}
}

View File

@ -199,7 +199,7 @@ public final class ClassWriter {
private static String writeGeneratedAnnotation(MetaEntity entity, Context context) { private static String writeGeneratedAnnotation(MetaEntity entity, Context context) {
StringBuilder generatedAnnotation = new StringBuilder(); StringBuilder generatedAnnotation = new StringBuilder();
generatedAnnotation.append( "@" ) generatedAnnotation.append( "@" )
.append( entity.importType( context.getGeneratedAnnotation().getQualifiedName().toString() ) ) .append( entity.importType( context.getGeneratedAnnotationFqcn() ) )
.append( "(value = \"" ) .append( "(value = \"" )
.append( JPAMetaModelEntityProcessor.class.getName() ); .append( JPAMetaModelEntityProcessor.class.getName() );
if ( context.addGeneratedDate() ) { if ( context.addGeneratedDate() ) {

View File

@ -50,7 +50,7 @@ public final class Context {
private final boolean lazyXmlParsing; private final boolean lazyXmlParsing;
private final String persistenceXmlLocation; private final String persistenceXmlLocation;
private final List<String> ormXmlFiles; private final List<String> 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 * 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 ) ); lazyXmlParsing = Boolean.parseBoolean( pe.getOptions().get( JPAMetaModelEntityProcessor.LAZY_XML_PARSING ) );
logDebug = Boolean.parseBoolean( pe.getOptions().get( JPAMetaModelEntityProcessor.DEBUG_OPTION ) ); 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 = TypeElement java8AndBelowGeneratedAnnotation =
pe.getElementUtils().getTypeElement( "javax.annotation.Generated" ); pe.getElementUtils().getTypeElement( j + "avax.annotation.Generated" );
if ( java8AndBelowGeneratedAnnotation != null ) { if ( java8AndBelowGeneratedAnnotation != null ) {
generatedAnnotation = java8AndBelowGeneratedAnnotation; generatedAnnotation = java8AndBelowGeneratedAnnotation.getQualifiedName().toString();
} }
else { else {
// Using the new name for this annotation in Java 9 and above // 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; return addGeneratedAnnotation;
} }
public TypeElement getGeneratedAnnotation() { public String getGeneratedAnnotationFqcn() {
return generatedAnnotation; return generatedAnnotation;
} }