diff --git a/build.gradle b/build.gradle index facdca6..6e1e202 100644 --- a/build.gradle +++ b/build.gradle @@ -26,10 +26,19 @@ def getDevelopmentVersion() { def releaseVersion = System.env.RELEASE_VERSION + version = releaseVersion ? releaseVersion : getDevelopmentVersion() println "Building version = " + version group = 'com.graphql-java' +// check if build for Jakarta EE 9 +def isJakarta = hasProperty("jakarta") ? true : false +println "Build for Jakarta EE 9? $isJakarta" + +if (isJakarta) { + apply from: "jakarta.gradle" +} + sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -38,12 +47,14 @@ repositories { mavenLocal() } +def versionHibernateValidator = isJakarta ? "7.0.1.Final" : "6.2.0.Final" +def versionJakartaEL = isJakarta ? "4.0.1" : "3.0.4" dependencies { compile "com.graphql-java:graphql-java:17.0" compile "com.graphql-java:graphql-java-extended-scalars:17.0" - compile "org.hibernate.validator:hibernate-validator:7.0.1.Final" - compile "org.glassfish:jakarta.el:4.0.0" + compile "org.hibernate.validator:hibernate-validator:$versionHibernateValidator" + compile "org.glassfish:jakarta.el:$versionJakartaEL" testCompile 'org.slf4j:slf4j-simple:1.7.31' testCompile 'org.spockframework:spock-core:1.3-groovy-2.5' @@ -60,6 +71,11 @@ task javadocJar(type: Jar, dependsOn: javadoc) { from javadoc.destinationDir } +jar { + // add jakarta classier for Jakarta EE 9 + archiveClassifier = isJakarta ? "jakarta" : "" +} + artifacts { archives sourcesJar archives javadocJar @@ -76,7 +92,8 @@ publishing { maven(MavenPublication) { from components.java groupId group - artifactId 'graphql-java-extended-validation' + // use the project name + artifactId "graphql-java-extended-validation" version version artifact sourcesJar @@ -85,7 +102,7 @@ publishing { pom.withXml { asNode().children().last() + { resolveStrategy = Closure.DELEGATE_FIRST - name 'graphql-java-extended-validation' + name "graphql-java-extended-validation" description 'A library fo extended validation for graphql-java' url 'https://github.com/graphql-java/graphql-java-extended-validation' inceptionYear '2019' diff --git a/jakarta.gradle b/jakarta.gradle new file mode 100644 index 0000000..fa8c764 --- /dev/null +++ b/jakarta.gradle @@ -0,0 +1,39 @@ +def generatedSrc = "$buildDir/generated-src"; +def generatedTestSrc = "$buildDir/generated-testSrc"; +def generatedGroovyTestSrc = "$buildDir/generated-testGroovySrc"; + +task generateSources() { + println "[jakarta build] replacing `javax.` with new `jakarta.`" + dependsOn("copyJavaSources", "copyTestJavaSources", "copyTestGroovySources") +} + +task copyTestGroovySources(type: Copy) { + into generatedGroovyTestSrc + from 'src/test/groovy' + filter { line -> line.replaceAll("javax\\.", "jakarta\\.") } +} + +task copyTestJavaSources(type: Copy) { + into generatedTestSrc + from 'src/test/java' + filter { line -> line.replaceAll("javax\\.", "jakarta\\.") } +} + +task copyJavaSources(type: Copy) { + into generatedSrc + from 'src/main/java' + filter { line -> line.replaceAll("javax\\.", "jakarta\\.") } +} + +println "[jakarta build] set generated source codes as sourceSets" +sourceSets { + main { + java.srcDirs = [generatedSrc] + resources.srcDirs = ["src/main/resources"] + } + test { + java.srcDirs = [generatedTestSrc] + groovy.srcDirs = [generatedGroovyTestSrc] + } +} +compileJava.dependsOn("generateSources") diff --git a/src/main/java/graphql/validation/el/BetterMapELResolver.java b/src/main/java/graphql/validation/el/BetterMapELResolver.java index 59d6b88..e51f533 100644 --- a/src/main/java/graphql/validation/el/BetterMapELResolver.java +++ b/src/main/java/graphql/validation/el/BetterMapELResolver.java @@ -1,8 +1,8 @@ package graphql.validation.el; import graphql.Internal; -import jakarta.el.ELContext; -import jakarta.el.MapELResolver; +import javax.el.ELContext; +import javax.el.MapELResolver; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/graphql/validation/el/ELSupport.java b/src/main/java/graphql/validation/el/ELSupport.java index 1571bae..ea97d35 100644 --- a/src/main/java/graphql/validation/el/ELSupport.java +++ b/src/main/java/graphql/validation/el/ELSupport.java @@ -1,11 +1,11 @@ package graphql.validation.el; import graphql.Internal; -import jakarta.el.ELContext; -import jakarta.el.ELManager; -import jakarta.el.ExpressionFactory; -import jakarta.el.StandardELContext; -import jakarta.el.ValueExpression; +import javax.el.ELContext; +import javax.el.ELManager; +import javax.el.ExpressionFactory; +import javax.el.StandardELContext; +import javax.el.ValueExpression; import java.lang.reflect.Method; import java.util.Locale; import java.util.Map; diff --git a/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java b/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java index 0896a8b..d97930f 100644 --- a/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java +++ b/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java @@ -15,9 +15,9 @@ import java.util.MissingResourceException; import java.util.Optional; import java.util.ResourceBundle; -import jakarta.validation.Constraint; -import jakarta.validation.Path; -import jakarta.validation.Payload; +import javax.validation.Constraint; +import javax.validation.Path; +import javax.validation.Payload; import org.hibernate.validator.internal.engine.MessageInterpolatorContext; import org.hibernate.validator.internal.metadata.core.ConstraintHelper; import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl; diff --git a/src/test/groovy/ELDiscover.java b/src/test/groovy/ELDiscover.java index e09e511..b5bedf0 100644 --- a/src/test/groovy/ELDiscover.java +++ b/src/test/groovy/ELDiscover.java @@ -1,11 +1,11 @@ -import jakarta.el.ELContext; -import jakarta.el.ELManager; -import jakarta.el.ExpressionFactory; -import jakarta.el.StandardELContext; -import jakarta.el.ValueExpression; -import jakarta.validation.MessageInterpolator; -import jakarta.validation.constraints.Email; -import jakarta.validation.constraints.NotNull; +import javax.el.ELContext; +import javax.el.ELManager; +import javax.el.ExpressionFactory; +import javax.el.StandardELContext; +import javax.el.ValueExpression; +import javax.validation.MessageInterpolator; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Range; import org.hibernate.validator.internal.engine.MessageInterpolatorContext; import org.hibernate.validator.internal.engine.path.PathImpl;