Merge remote-tracking branch 'upstream/master' into wip/6.0

- up to the point of upgrading Gradle version for wrapper to 5.6.3
This commit is contained in:
Steve Ebersole 2020-04-01 11:32:00 -05:00
commit 40d0c8580e
18 changed files with 275 additions and 157 deletions

View File

@ -11,21 +11,22 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'org.hibernate.build.gradle:gradle-maven-publish-auth:2.0.1'
classpath 'org.hibernate.build.gradle:hibernate-matrix-testing:2.0.0.Final'
classpath 'org.hibernate.build.gradle:hibernate-matrix-testing:3.0.0.Final'
classpath 'org.hibernate.build.gradle:version-injection-plugin:1.0.0'
classpath 'org.hibernate.build.gradle:gradle-xjc-plugin:1.0.2.Final'
classpath 'gradle.plugin.com.github.lburgazzoli:gradle-karaf-plugin:0.1.1'
classpath 'gradle.plugin.com.github.lburgazzoli:gradle-karaf-plugin:0.5.1'
classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.7'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'de.thetaphi:forbiddenapis:2.5'
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.1'
classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:4.2.0'
}
}
plugins {
id 'com.gradle.build-scan' version '1.16'
id 'com.gradle.build-scan' version '2.4.2'
id 'me.champeau.buildscan-recipes' version '0.2.3'
id 'org.hibernate.build.xjc' version '2.0.1' apply false
id 'org.hibernate.build.maven-repo-auth' version '3.0.2' apply false
id 'org.jetbrains.gradle.plugin.idea-ext' version '0.5'
}
@ -94,14 +95,15 @@ task ciBuild {
wrapper {
gradleVersion = '4.10.3'
// To upgrade the version of gradle used in the wrapper, run:
// ./gradlew wrapper --gradle-version NEW_VERSION
distributionType = Wrapper.DistributionType.ALL
}
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
buildScanRecipes {

View File

@ -18,5 +18,5 @@ dependencies {
compile localGroovy()
compile 'org.hibernate.build.gradle:gradle-animalSniffer-plugin:1.0.1.Final'
compile 'org.hibernate.build.gradle:hibernate-matrix-testing:2.0.0.Final'
compile 'org.hibernate.build.gradle:hibernate-matrix-testing:3.0.0.Final'
}

1
gradle.properties Normal file
View File

@ -0,0 +1 @@
org.gradle.jvmargs=-Xmx1g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError

View File

@ -28,7 +28,7 @@ apply from: rootProject.file( 'gradle/libraries.gradle' )
apply from: rootProject.file( 'gradle/databases.gradle' )
apply plugin: 'java'
apply plugin: 'osgi'
apply plugin: 'biz.aQute.bnd.builder'
apply plugin: 'checkstyle'
apply plugin: 'build-dashboard'

View File

@ -30,64 +30,87 @@ dependencies {
// Jar
jar {
manifest = osgiManifest {
// GRADLE-1411: Even if we override Imports and Exports
// auto-generation with instructions, classesDir and classpath
// need to be here (temporarily).
if ( project.pluginManager.hasPlugin( 'groovy' ) ) {
classesDir = sourceSets.main.groovy.outputDir
}
else {
classesDir = sourceSets.main.output.classesDir
}
classpath = configurations.runtime
manifest {
attributes(
// Basic JAR manifest attributes
'Specification-Title': project.name,
'Specification-Version': project.version,
'Specification-Vendor': 'Hibernate.org',
'Implementation-Title': project.name,
'Implementation-Version': project.version,
'Implementation-Vendor': 'Hibernate.org',
'Implementation-Vendor-Id': 'org.hibernate',
'Implementation-Url': 'http://hibernate.org/orm',
// Java 9 module name
instruction 'Automatic-Module-Name', project.java9ModuleName
'Automatic-Module-Name': project.java9ModuleName,
// the OSGi metadata
symbolicName project.java9ModuleName
vendor 'Hibernate.org'
description project.description
docURL "http://www.hibernate.org/orm/${project.ormVersion.family}"
// Hibernate-specific JAR manifest attributes
'Hibernate-VersionFamily': project.ormVersion.family,
'Hibernate-JpaVersion': project.jpaVersion.name,
instruction 'Import-Package',
// BND Plugin instructions (for OSGi):
'Bundle-Name': project.name,
'Bundle-SymbolicName': project.java9ModuleName,
'Bundle-Vendor': 'Hibernate.org',
'Bundle-DocURL': "http://www.hibernate.org/orm/${project.ormVersion.family}",
// This is overridden in some sub-projects
'Import-Package': [
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
// use it. Without this, the plugin generates [1.2,2).
'javax.transaction;version="[1.1,2)"',
// Tell Gradle OSGi to still dynamically import the other packages.
// IMPORTANT: Do not include the * in the modules' .gradle files.
// If it exists more than once, the manifest will physically contain a *.
// Also import every package referenced in the code
// (note that '*' is resolved at build time to a list of packages)
'*'
// Basic JAR manifest metadata
instruction 'Specification-Title', project.name
instruction 'Specification-Version', project.version
instruction 'Specification-Vendor', 'Hibernate.org'
instruction 'Implementation-Title', project.name
instruction 'Implementation-Version', project.version
instruction 'Implementation-Vendor', 'Hibernate.org'
instruction 'Implementation-Vendor-Id', 'org.hibernate'
instruction 'Implementation-Url', 'http://hibernate.org/orm'
instruction 'Hibernate-VersionFamily', project.ormVersion.family
instruction 'Hibernate-JpaVersion', project.jpaVersion.name
].join( ',' ),
'-exportcontents': "*;version=${project.version}"
)
}
}
task sourcesJar(type: Jar) {
from project.sourceSets.main.allSource
manifest = project.tasks.jar.manifest
classifier = 'sources'
manifest {
attributes(
// Basic JAR manifest attributes
'Specification-Title': project.name,
'Specification-Version': project.version,
'Specification-Vendor': 'Hibernate.org',
'Implementation-Title': project.name,
'Implementation-Version': project.version,
'Implementation-Vendor': 'Hibernate.org',
'Implementation-Vendor-Id': 'org.hibernate',
'Implementation-Url': 'http://hibernate.org/orm',
// Hibernate-specific JAR manifest attributes
'Hibernate-VersionFamily': project.ormVersion.family,
'Hibernate-JpaVersion': project.jpaVersion.name
)
}
archiveClassifier.set( 'sources' )
}
task javadocJar(type: Jar) {
from project.tasks.javadoc.outputs
manifest = project.tasks.jar.manifest
classifier = 'javadoc'
manifest {
attributes(
// Basic JAR manifest attributes
'Specification-Title': project.name,
'Specification-Version': project.version,
'Specification-Vendor': 'Hibernate.org',
'Implementation-Title': project.name,
'Implementation-Version': project.version,
'Implementation-Vendor': 'Hibernate.org',
'Implementation-Vendor-Id': 'org.hibernate',
'Implementation-Url': 'http://hibernate.org/orm',
// Hibernate-specific JAR manifest attributes
'Hibernate-VersionFamily': project.ormVersion.family,
'Hibernate-JpaVersion': project.jpaVersion.name
)
}
archiveClassifier.set( 'javadoc' )
}
@ -150,7 +173,7 @@ javadoc {
doFirst {
// ordering problems if we try to do this during config phase :(
classpath += project.sourceSets.main.output + project.sourceSets.main.compileClasspath + project.configurations.provided
classpath += project.sourceSets.main.output.classesDirs + project.sourceSets.main.compileClasspath + project.configurations.provided
}
}

View File

@ -9,7 +9,7 @@ apply from: rootProject.file( 'gradle/base-information.gradle' )
apply plugin: 'maven-publish'
apply plugin: 'maven-publish-auth'
apply plugin: 'org.hibernate.build.maven-repo-auth'
apply plugin: 'com.jfrog.bintray'

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -1,5 +1,5 @@
plugins {
id 'org.hibernate.build.xjc' version '2.0.0-SNAPSHOT'
id 'org.hibernate.build.xjc'
}
/*
@ -144,17 +144,24 @@ dependencies {
jar {
manifest {
mainAttributes( 'Main-Class': 'org.hibernate.Version' )
attributes(
'Main-Class': 'org.hibernate.Version',
instructionFirst 'Import-Package',
// BND Plugin instructions (for OSGi):
'Import-Package': [
'javax.security.auth;resolution:=optional',
'javax.security.jacc;resolution:=optional',
'javax.validation;resolution:=optional',
'javax.validation.constraints;resolution:=optional',
'javax.validation.groups;resolution:=optional',
'javax.validation.metadata;resolution:=optional',
// TODO: Shouldn't have to explicitly list this, but the plugin
// generates it with a [1.0,2) version.
// Make javax.security.jacc optional and do not reference a version range (because that's what we used to do)
'javax.security.jacc;resolution:=optional;version=!',
// Make javax.validation optional and do not reference a version range (because that's what we used to do)
'javax.validation;resolution:=optional;version=!',
'javax.validation.constraints;resolution:=optional;version=!',
'javax.validation.groups;resolution:=optional;version=!',
'javax.validation.metadata;resolution:=optional;version=!',
// Make javax.enterprise optional and do not reference a version range (because that's what we used to do)
'!javax.enterprise*',
'javax.enterprise.context.spi;resolution:=optional;version=!',
'javax.enterprise.inject.spi;resolution:=optional;version=!',
// For JPA, we don't want to target the automatically generated range, but a specific version
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
// optionals
'javax.management;resolution:=optional',
@ -163,20 +170,28 @@ jar {
'org.apache.tools.ant;resolution:=optional',
'org.apache.tools.ant.taskdefs;resolution:=optional',
'org.apache.tools.ant.types;resolution:=optional',
'!javax.enterprise*',
'javax.enterprise.context.spi;resolution:=optional',
'javax.enterprise.inject.spi;resolution:=optional',
'javax.inject;resolution:=optional',
'net.bytebuddy.*;resolution:=optional',
'org.objectweb.jonas_tm;resolution:=optional',
'com.ibm.websphere.jtaextensions;resolution:=optional',
// We must specify the version explicitly to allow Karaf
// to use an older version of JAXB (the only one we can use in Karaf)
"javax.xml.bind.*;version=\"${project.jaxbApiVersionOsgiRange}\""
// // TODO: Uncomment once EntityManagerFactoryBuilderImpl no longer
// // uses ClassLoaderServiceImpl.
// instruction 'Export-Package',
"javax.xml.bind.*;version=\"${project.jaxbApiVersionOsgiRange}\"",
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
// use it. Without this, the plugin generates [1.2,2).
'javax.transaction;version="[1.1,2)"',
// Also import every package referenced in the code
'*'
].join( ',' ),
'-exportcontents': [
// Legacy resource packages containing XSDs that were traditionally not exported
"!org.hibernate.xsd.cfg",
"!org.hibernate.xsd.mapping",
// TODO: Uncomment once EntityManagerFactoryBuilderImpl no longer uses ClassLoaderServiceImpl.
//'org.hibernate.boot.registry.classloading.internal',
// '*'
"*;version=${project.version}"
].join( ',' ),
)
}
}
@ -241,7 +256,7 @@ task copyBundleResources (type: Copy) {
processTestResources.dependsOn copyBundleResources
task testJar(type: Jar, dependsOn: testClasses) {
classifier = 'test'
archiveClassifier.set( 'test' )
from sourceSets.test.output
}

View File

@ -0,0 +1,58 @@
package org.hibernate.query.criteria;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.Id;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Root;
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
import org.hibernate.testing.TestForIssue;
import org.junit.Test;
/**
* @author Michiel Haisma
* @author Nathan Xu
*/
@TestForIssue( jiraKey = "HHH-13889" )
public class CriteriaStringInlineLiteralTest extends BaseEntityManagerFunctionalTestCase {
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class<?>[] { Animal.class };
}
@Test
public void testCriteriaInlineStringLiteralRendering() {
EntityManager entityManager = getOrCreateEntityManager();
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Animal> criteriaQuery = cb.createQuery( Animal.class );
Root<Animal> animalRoot = criteriaQuery.from( Animal.class );
CriteriaBuilder.Case<String> sCase = cb.selectCase();
Expression<String> caseSelect =
sCase.when( cb.equal( animalRoot.get( "name" ), cb.literal( "kitty" ) ), cb.literal( "Cat" ) )
.otherwise("escapez'moi" );
criteriaQuery.multiselect( caseSelect );
criteriaQuery.where( cb.equal( animalRoot.get( "name" ), "myFavoriteAnimal" ) );
entityManager.createQuery( criteriaQuery); // would throw exception for unescaped otherwise literal in HHH-13889
}
@Entity(name = "Animal")
public static class Animal {
@Id
private Long id;
private String name;
public Animal() {
}
public Animal(String name) {
this.name = name;
}
}
}

View File

@ -12,19 +12,21 @@ dependencies {
compile( libraries.jta )
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// The OSGi JAR manifest support does not like a non-existent classes dir,
// so make sure we dont use the OSGi one :)
// Traditionally we used to not include any manifest attributes in this JAR
// except "Manifest-Version"
// Since it's a legacy JAR, let's continue that way until it's retired.
jar {
manifest = null
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
// Prevent BND from adding manifest attributes automatically
bnd( '-nobundles': 'true' )
}
sourcesJar {
manifest = null
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
}
javadocJar {
manifest = null
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
}

View File

@ -40,7 +40,9 @@ sourceSets {
jar {
manifest {
instructionFirst 'Import-Package',
attributes(
// BND Plugin instructions (for OSGi):
'Import-Package': [
// TODO: Shouldn't have to explicitly list the JPA packages, but
// the plugin generates them with [1.0,2) versions.
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
@ -49,7 +51,14 @@ jar {
"javax.persistence.spi;version=\"${project.jpaVersion.osgiName}\"",
// optionals
'javax.naming;resolution:=optional',
'org.apache.tools.ant;resolution:=optional'
'org.apache.tools.ant;resolution:=optional',
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
// use it. Without this, the plugin generates [1.2,2).
'javax.transaction;version="[1.1,2)"',
// Also import every package referenced in the code
'*'
].join( ',' )
)
}
}

View File

@ -9,7 +9,7 @@ apply from: rootProject.file( 'gradle/base-information.gradle' )
apply from: rootProject.file( 'gradle/publishing-repos.gradle' )
apply from: rootProject.file( 'gradle/publishing-pom.gradle' )
apply plugin: 'maven-publish'
apply plugin: 'maven-publish-auth'
apply plugin: 'org.hibernate.build.maven-repo-auth'
description = '(deprecated - use org.infinispan:infinispan-hibernate-cache-v53 instead)'

View File

@ -6,18 +6,22 @@ description = '(deprecated - use hibernate-core instead) Support for Java8-speci
dependencies {
compile( project( ':hibernate-core' ) )
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// The OSGi JAR manifest support does not like a non-existent classes dir,
// so make sure we dont use the OSGi one :)
// Traditionally we used to not include any manifest attributes in this JAR
// except "Manifest-Version"
// Since it's a legacy JAR, let's continue that way until it's retired.
jar {
manifest = null
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
// Prevent BND from adding manifest attributes automatically
bnd( '-nobundles': 'true' )
}
sourcesJar {
manifest = null
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
}
javadocJar {
manifest = null
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
}

View File

@ -15,7 +15,7 @@ apply plugin: 'java'
apply from: rootProject.file( 'gradle/libraries.gradle' )
apply plugin: 'maven-publish'
apply plugin: 'maven-publish-auth'
apply plugin: 'org.hibernate.build.maven-repo-auth'
apply from: rootProject.file( 'gradle/publishing-repos.gradle' )
apply from: rootProject.file( 'gradle/publishing-pom.gradle' )

View File

@ -44,8 +44,8 @@ sourceSets {
test {
// send javac output and resource copying to the same output directory for test
// so Pax Exam can more easily find it without explicit TinyBundle hooks
output.classesDir = "${buildDir}/classes/test"
output.resourcesDir = output.classesDir
java.outputDir = file( "${buildDir}/classes/test" )
output.resourcesDir = java.outputDir
}
}
@ -98,13 +98,22 @@ dependencies {
jar {
manifest {
instruction 'Bundle-Activator', 'org.hibernate.osgi.HibernateBundleActivator'
instruction 'Provide-Capability', 'osgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider'
instructionFirst 'Import-Package',
attributes(
// BND Plugin instructions (for OSGi):
'Bundle-Activator': 'org.hibernate.osgi.HibernateBundleActivator',
'Provide-Capability': 'osgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider',
'Import-Package': [
// TODO: Shouldn't have to explicitly list this, but the plugin
// generates it with a [1.0,2) version.
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
"javax.persistence.spi;version=\"${project.jpaVersion.osgiName}\""
"javax.persistence.spi;version=\"${project.jpaVersion.osgiName}\"",
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
// use it. Without this, the plugin generates [1.2,2).
'javax.transaction;version="[1.1,2)"',
// Also import every package referenced in the code
'*'
].join( ',' )
)
}
}
@ -218,7 +227,7 @@ task generatePaxExamEnvironmentFile {
properties.setProperty( 'org.ops4j.pax.exam.container.karaf.distroUrl', karafDistroFile.toURI().toURL().toExternalForm() )
properties.setProperty( 'org.ops4j.pax.exam.container.karaf.unpackDir', karafUnpackDirectory.absolutePath )
properties.setProperty( 'org.ops4j.pax.exam.container.karaf.version', karafVersion as String )
properties.setProperty( 'org.ops4j.pax.exam.container.karaf.probe.classesDir', sourceSets.test.output.classesDir.absolutePath )
properties.setProperty( 'org.ops4j.pax.exam.container.karaf.probe.classesDir', sourceSets.test.java.outputDir.absolutePath )
properties.setProperty( 'org.ops4j.pax.exam.container.karaf.probe.resourcesDir', sourceSets.test.output.resourcesDir.absolutePath )
properties.setProperty( 'org.hibernate.osgi.test.karafFeatureFile', karaf.features.outputFile.absolutePath )

View File

@ -10,9 +10,6 @@
<module name="TreeWalker">
<module name="FileContentsHolder"/>
<module name="AvoidStarImport">
<property name="severity" value="warning" />
</module>
@ -150,25 +147,6 @@
<property name="severity" value="warning" />
</module>
</module>
<module name="JavadocPackage">
<property name="allowLegacy" value="true" />
<property name="severity" value="warning" />
</module>
<!--
Used to collect "todo" comments into a single location
-->
<module name="TreeWalker">
<module name="TodoComment">
<property name="format" value="[Tt][Oo][Dd][Oo]"/>
<property name="severity" value="info" />
</module>
</module>
<!--
Source code comment-based suppressions
-->
@ -188,3 +166,21 @@
<property name="influenceFormat" value="1"/>
</module>
</module>
<module name="JavadocPackage">
<property name="allowLegacy" value="true" />
<property name="severity" value="warning" />
</module>
<!--
Used to collect "todo" comments into a single location
-->
<module name="TreeWalker">
<module name="TodoComment">
<property name="format" value="[Tt][Oo][Dd][Oo]"/>
<property name="severity" value="info" />
</module>
</module>
</module>

View File

@ -22,8 +22,6 @@
<module name="TreeWalker">
<module name="FileContentsHolder"/>
<!--
High-priority warnings : fail the build...
-->
@ -63,23 +61,6 @@
<property name="illegalPkgs" value="java.awt, sun, org.slf4j"/>
</module>
</module>
<!-- We are not using NewLineAtEndOfFile because the new line chars change
on different operating systems and that rule allows only one type. This rule
is not actually checking for new lines, but it will work if we check that
there are not white spaces at the end of a line with another rule. -->
<module name="RegexpMultiline">
<property name="format" value="\S\z" />
<property name="message" value="Missing new line at the end of file" />
</module>
<module name="RegexpMultiline">
<property name="format" value="\S(r?\n){5,}\z" />
<property name="message" value="Files should end with no more than 5 (empty) new lines" />
</module>
<!--
Source code comment-based suppressions
-->
@ -99,3 +80,19 @@
<property name="influenceFormat" value="1"/>
</module>
</module>
<!-- We are not using NewLineAtEndOfFile because the new line chars change
on different operating systems and that rule allows only one type. This rule
is not actually checking for new lines, but it will work if we check that
there are not white spaces at the end of a line with another rule. -->
<module name="RegexpMultiline">
<property name="format" value="\S\z" />
<property name="message" value="Missing new line at the end of file" />
</module>
<module name="RegexpMultiline">
<property name="format" value="\S(r?\n){5,}\z" />
<property name="message" value="Files should end with no more than 5 (empty) new lines" />
</module>
</module>

View File

@ -82,6 +82,8 @@ class HibernatePluginTest {
)
}
compileTestTask.execute()
// TODO find how to do this in Gradle 5
// the class-level javadoc says it's not possible, and it was there in Gradle 4.x...
//compileTestTask.execute()
}
}