Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions samples/sample-all-deactivated/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ dependencies {
implementation("org.apache.tomcat:tomcat-servlet-api:11.0.6")
implementation("org.apache.tomcat:tomcat-websocket-api:11.0.6")
implementation("org.apache.tomcat:tomcat-websocket-client-api:11.0.6")
implementation("org.apache.tomcat:tomcat-websocket:11.0.6")
implementation("org.apache.velocity:velocity-engine-core:2.4.1")
implementation("org.apache.velocity:velocity:1.7")
implementation("org.bouncycastle:bc-fips-debug:2.1.0")
Expand Down Expand Up @@ -201,7 +200,6 @@ dependencies {
implementation("org.codehaus.woodstox:wstx-asl:4.0.6")
implementation("org.codehaus.woodstox:wstx-lgpl:3.2.9")
implementation("org.dom4j:dom4j:2.1.4")
implementation("org.eclipse.angus:angus-activation:2.0.2")
implementation("org.eclipse.angus:jakarta.mail:2.0.3")
implementation("org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:5.0.2")
implementation("org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api:2.0.0")
Expand Down
10 changes: 5 additions & 5 deletions samples/sample-all-deactivated/build.out
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ compileClasspath - Compile classpath for source set 'main'.
+--- javax.el:javax.el-api:3.0.0 FAILED
+--- javax.inject:javax.inject:1 FAILED
+--- javax.json:javax.json-api:1.1.4 FAILED
+--- javax.jws:javax.jws-api:1.1 FAILED
+--- javax.jws:javax.jws-api:1.1
+--- javax.mail:javax.mail-api:1.6.2 FAILED
+--- javax.mail:mail:1.4.7 FAILED
+--- javax.persistence:javax.persistence-api:2.2 FAILED
Expand All @@ -98,7 +98,10 @@ compileClasspath - Compile classpath for source set 'main'.
| \--- javax.activation:javax.activation-api:1.2.0 FAILED
+--- javax.xml.soap:javax.xml.soap-api:1.4.0
+--- javax.xml.stream:stax-api:1.0-2 FAILED
+--- javax.xml.ws:jaxws-api:2.3.1 FAILED
+--- javax.xml.ws:jaxws-api:2.3.1
| +--- javax.xml.bind:jaxb-api:2.3.1 (*)
| +--- javax.xml.soap:javax.xml.soap-api:1.4.0
| \--- javax.annotation:javax.annotation-api:1.3.2 FAILED
+--- jboss:javassist:3.8.0.GA FAILED
+--- junit:junit-dep:4.11 FAILED
+--- junit:junit:4.13.2 FAILED
Expand Down Expand Up @@ -135,7 +138,6 @@ compileClasspath - Compile classpath for source set 'main'.
+--- org.apache.tomcat:tomcat-servlet-api:11.0.6 FAILED
+--- org.apache.tomcat:tomcat-websocket-api:11.0.6 FAILED
+--- org.apache.tomcat:tomcat-websocket-client-api:11.0.6 FAILED
+--- org.apache.tomcat:tomcat-websocket:11.0.6 FAILED
+--- org.apache.velocity:velocity-engine-core:2.4.1 FAILED
+--- org.apache.velocity:velocity:1.7 FAILED
+--- org.bouncycastle:bc-fips-debug:2.1.0 FAILED
Expand Down Expand Up @@ -206,8 +208,6 @@ compileClasspath - Compile classpath for source set 'main'.
+--- org.codehaus.woodstox:wstx-asl:4.0.6 FAILED
+--- org.codehaus.woodstox:wstx-lgpl:3.2.9 FAILED
+--- org.dom4j:dom4j:2.1.4 FAILED
+--- org.eclipse.angus:angus-activation:2.0.2
| \--- jakarta.activation:jakarta.activation-api:2.1.3 FAILED
+--- org.eclipse.angus:jakarta.mail:2.0.3 FAILED
+--- org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:5.0.2 FAILED
+--- org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api:2.0.0 FAILED
Expand Down
2 changes: 0 additions & 2 deletions samples/sample-all/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ dependencies {
implementation("org.apache.tomcat:tomcat-servlet-api:11.0.6")
implementation("org.apache.tomcat:tomcat-websocket-api:11.0.6")
implementation("org.apache.tomcat:tomcat-websocket-client-api:11.0.6")
implementation("org.apache.tomcat:tomcat-websocket:11.0.6")
implementation("org.apache.velocity:velocity-engine-core:2.4.1")
implementation("org.apache.velocity:velocity:1.7")
implementation("org.bouncycastle:bc-fips-debug:2.1.0")
Expand Down Expand Up @@ -204,7 +203,6 @@ dependencies {
implementation("org.codehaus.woodstox:wstx-asl:4.0.6")
implementation("org.codehaus.woodstox:wstx-lgpl:3.2.9")
implementation("org.dom4j:dom4j:2.1.4")
implementation("org.eclipse.angus:angus-activation:2.0.2")
implementation("org.eclipse.angus:jakarta.mail:2.0.3")
implementation("org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:5.0.2")
implementation("org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api:2.0.0")
Expand Down
17 changes: 7 additions & 10 deletions samples/sample-all/build.out
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,7 @@ compileClasspath - Compile classpath for source set 'main'.
+--- javax.el:javax.el-api:3.0.0
+--- javax.inject:javax.inject:1 -> com.jwebmp:javax.inject:1.1
+--- javax.json:javax.json-api:1.1.4
+--- javax.jws:javax.jws-api:1.1 -> javax.xml.ws:jaxws-api:2.3.1
| +--- javax.xml.bind:jaxb-api:2.3.1
| | \--- javax.activation:javax.activation-api:1.2.0
| +--- javax.xml.soap:javax.xml.soap-api:1.4.0
| \--- javax.annotation:javax.annotation-api:1.3.2
+--- javax.jws:javax.jws-api:1.1
+--- javax.mail:javax.mail-api:1.6.2 -> com.sun.mail:javax.mail:1.6.2 (*)
+--- javax.mail:mail:1.4.7 -> com.sun.mail:javax.mail:1.6.2 (*)
+--- javax.persistence:javax.persistence-api:2.2
Expand All @@ -134,10 +130,14 @@ compileClasspath - Compile classpath for source set 'main'.
+--- javax.websocket:javax.websocket-client-api:1.1 -> org.eclipse.jetty.toolchain:jetty-javax-websocket-api:1.1.2
+--- javax.ws.rs:javax.ws.rs-api:2.1.1 -> org.jboss.resteasy:jaxrs-api:3.0.12.Final
+--- javax.ws.rs:jsr311-api:1.1.1 -> org.jboss.resteasy:jaxrs-api:3.0.12.Final
+--- javax.xml.bind:jaxb-api:2.3.1 (*)
+--- javax.xml.bind:jaxb-api:2.3.1
| \--- javax.activation:javax.activation-api:1.2.0
+--- javax.xml.soap:javax.xml.soap-api:1.4.0
+--- javax.xml.stream:stax-api:1.0-2 -> stax:stax-api:1.0.1
+--- javax.xml.ws:jaxws-api:2.3.1 (*)
+--- javax.xml.ws:jaxws-api:2.3.1
| +--- javax.xml.bind:jaxb-api:2.3.1 (*)
| +--- javax.xml.soap:javax.xml.soap-api:1.4.0
| \--- javax.annotation:javax.annotation-api:1.3.2
+--- jboss:javassist:3.8.0.GA -> org.javassist:javassist:3.30.2-GA
+--- junit:junit-dep:4.11 -> junit:junit:4.13.2
| \--- org.hamcrest:hamcrest-core:1.3 -> org.hamcrest:hamcrest:3.0
Expand Down Expand Up @@ -195,7 +195,6 @@ compileClasspath - Compile classpath for source set 'main'.
+--- org.apache.tomcat:tomcat-servlet-api:11.0.6 -> jakarta.servlet:jakarta.servlet-api:6.1.0
+--- org.apache.tomcat:tomcat-websocket-api:11.0.6 -> jakarta.websocket:jakarta.websocket-api:2.2.0
+--- org.apache.tomcat:tomcat-websocket-client-api:11.0.6 -> jakarta.websocket:jakarta.websocket-client-api:2.2.0
+--- org.apache.tomcat:tomcat-websocket:11.0.6 -> jakarta.websocket:jakarta.websocket-api:2.2.0
+--- org.apache.velocity:velocity-engine-core:2.4.1
| +--- org.apache.commons:commons-lang3:3.17.0
| \--- org.slf4j:slf4j-api:1.7.36 -> 2.0.17 (*)
Expand Down Expand Up @@ -277,8 +276,6 @@ compileClasspath - Compile classpath for source set 'main'.
+--- org.codehaus.woodstox:wstx-asl:4.0.6 -> org.codehaus.woodstox:woodstox-core-asl:4.4.1 (*)
+--- org.codehaus.woodstox:wstx-lgpl:3.2.9 -> org.codehaus.woodstox:woodstox-core-asl:4.4.1 (*)
+--- org.dom4j:dom4j:2.1.4
+--- org.eclipse.angus:angus-activation:2.0.2
| \--- jakarta.activation:jakarta.activation-api:2.1.3
+--- org.eclipse.angus:jakarta.mail:2.0.3 -> jakarta.mail:jakarta.mail-api:2.1.3 (*)
+--- org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:5.0.2 -> jakarta.servlet:jakarta.servlet-api:6.1.0
+--- org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api:2.0.0 -> jakarta.websocket:jakarta.websocket-api:2.2.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@
import org.gradlex.jvm.dependency.conflict.detection.rules.aopalliance.AopallianceRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.guava.GuavaListenableFutureRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaActivationApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaActivationImplementationRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaAnnotationApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaJwsApisRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaJwsApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaMailApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaServletApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JakartaWebsocketApiRule;
Expand All @@ -44,6 +43,8 @@
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JavaxValidationApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JavaxWebsocketApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JavaxWsRsApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JavaxXmlBindApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.jakarta.JavaxXmlWsApiRule;
import org.gradlex.jvm.dependency.conflict.detection.rules.logging.LoggingModuleIdentifiers;
import org.gradlex.jvm.dependency.conflict.resolution.DefaultResolutionStrategy;

Expand Down Expand Up @@ -280,10 +281,6 @@ public enum CapabilityDefinition {
"jakarta.activation:jakarta.activation-api",
"com.sun.activation:jakarta.activation"
),
JAKARTA_ACTIVATION_IMPL(HIGHEST_VERSION, JakartaActivationImplementationRule.class,
"com.sun.activation:jakarta.activation",
"org.eclipse.angus:angus-activation"
),
JAKARTA_ANNOTATION_API(HIGHEST_VERSION, JakartaAnnotationApiRule.class,
"jakarta.annotation:jakarta.annotation-api",
"org.apache.tomcat:tomcat-annotations-api"
Expand All @@ -307,14 +304,12 @@ public enum CapabilityDefinition {
JAKARTA_WEBSOCKET_API(HIGHEST_VERSION, JakartaWebsocketApiRule.class,
"jakarta.websocket:jakarta.websocket-api",
"org.apache.tomcat:tomcat-websocket-api",
"org.apache.tomcat:tomcat-websocket",
"org.apache.tomcat.embed:tomcat-embed-websocket",
"org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api"
),
JAKARTA_WEBSOCKET_CLIENT_API(HIGHEST_VERSION, JakartaWebsocketClientApiRule.class,
"jakarta.websocket:jakarta.websocket-client-api",
"org.apache.tomcat:tomcat-websocket-client-api",
"org.apache.tomcat:tomcat-websocket",
"org.apache.tomcat.embed:tomcat-embed-websocket",
"org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api"
),
Expand Down Expand Up @@ -361,9 +356,7 @@ public enum CapabilityDefinition {
),
JAVAX_JWS_API(HIGHEST_VERSION, JavaxJwsApisRule.class,
"javax.jws:javax.jws-api",
"javax.xml.ws:jaxws-api",
"jakarta.jws:jakarta.jws-api",
"jakarta.xml.ws:jakarta.xml.ws-api"
"jakarta.jws:jakarta.jws-api"
),
JAVAX_MAIL_API(HIGHEST_VERSION, JavaxMailApiRule.class,
"com.sun.mail:mailapi", // API only
Expand Down Expand Up @@ -446,7 +439,15 @@ public enum CapabilityDefinition {
"jakarta.ws.rs:jakarta.ws.rs-api",
"javax.ws.rs:javax.ws.rs-api"
),
JAKARTA_JWS_API(HIGHEST_VERSION, JakartaJwsApisRule.class,
JAVAX_XML_BIND_API(HIGHEST_VERSION, JavaxXmlBindApiRule.class,
"javax.xml.bind:jaxb-api",
"jakarta.xml.bind:jakarta.xml.bind-api"
),
JAVAX_XML_WS_API(HIGHEST_VERSION, JavaxXmlWsApiRule.class,
"javax.xml.ws:jaxws-api",
"jakarta.xml.ws:jakarta.xml.ws-api"
),
JAKARTA_JWS_API(HIGHEST_VERSION, JakartaJwsApiRule.class,
"jakarta.jws:jakarta.jws-api",
"jakarta.xml.ws:jakarta.xml.ws-api"
),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Copyright the GradleX team.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.gradlex.jvm.dependency.conflict.detection.rules.jakarta;

import org.gradle.api.artifacts.CacheableRule;
import org.gradle.api.artifacts.ModuleVersionIdentifier;
import org.gradlex.jvm.dependency.conflict.detection.rules.CapabilityDefinition;
import org.gradlex.jvm.dependency.conflict.detection.rules.CapabilityDefinitionRule;
import org.gradlex.jvm.dependency.conflict.detection.util.VersionNumber;

import javax.inject.Inject;

@CacheableRule
public abstract class JakartaJwsApiRule extends CapabilityDefinitionRule {

private static final String JWS_MERGER_VERSION = "4.0.0";

@Inject
public JakartaJwsApiRule(CapabilityDefinition rule) {
super(rule);
}

@Override
protected boolean shouldApply(ModuleVersionIdentifier id) {
if (id.getName().equals("jakarta.xml.ws:jakarta.xml.ws-api")) {
return VersionNumber.parse(getVersion(id)).compareTo(VersionNumber.parse(JWS_MERGER_VERSION)) >= 0;
}
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,17 @@
import javax.inject.Inject;

@CacheableRule
public abstract class JakartaJwsApisRule extends CapabilityDefinitionRule {
public abstract class JavaxXmlBindApiRule extends CapabilityDefinitionRule {

static final String FIRST_JAKARTA_VERSION = "3.0.0";

@Inject
public JakartaJwsApisRule(CapabilityDefinition rule) {
public JavaxXmlBindApiRule(CapabilityDefinition rule) {
super(rule);
}

@Override
protected boolean shouldApply(ModuleVersionIdentifier id) {
return VersionNumber.parse(getVersion(id)).compareTo(VersionNumber.parse(JavaxJwsApisRule.FIRST_JAKARTA_VERSION)) >= 0;
return VersionNumber.parse(id.getVersion()).compareTo(VersionNumber.parse(FIRST_JAKARTA_VERSION)) < 0;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@ class JarOverlapTest extends Specification {

// Some Jars do not have overlapping classes, but contain conflicting implementations of the same service.
static def expectedToOverlap = values() - [
HAMCREST_CORE, // contains 'IsDeprecated.class' and forwards to HAMCREST
HAMCREST_LIBRARY, // contains 'IsDeprecated.class' and forwards to HAMCREST
LOG4J2_IMPL,
SLF4J_IMPL, // register conflicting service implementations
SLF4J_VS_JCL, // bridge vs. replacement
SLF4J_VS_JUL,
SLF4J_VS_LOG4J2_FOR_JCL, // SLF4J replaces JCL, while LOG4J depends on JCL
SLF4J_IMPL, // register conflicting service implementations
SLF4J_VS_LOG4J2_FOR_JUL, // register conflicting handler implementations
HAMCREST_CORE, // contains 'IsDeprecated.class' and forwards to HAMCREST
HAMCREST_LIBRARY // contains 'IsDeprecated.class' and forwards to HAMCREST
SLF4J_VS_LOG4J2_FOR_JUL // register conflicting handler implementations
]

def latestVersions = []
Expand Down Expand Up @@ -65,7 +67,7 @@ class JarOverlapTest extends Specification {
List<Tuple2<String, Set<String>>> jarClassFiles = conf.files.collect { jar ->
def jarName = jar.name
new Tuple2(jarName, new ZipFile(jar).withCloseable {
it.entries().collect { entry -> entry.name }.findAll { it.endsWith(".class") } as Set
it.entries().collect { entry -> entry.name }.findAll { it.endsWith(".class") && !it.endsWith("module-info.class") } as Set
})
}

Expand All @@ -92,7 +94,9 @@ class JarOverlapTest extends Specification {
case JAVAX_INJECT_API:
return ["jakarta.inject:jakarta.inject-api:1.0.5"]
case JAVAX_JSON_API:
return ["jakarta.json:jakarta.json-api:1.1.6"]
return ["jakarta.json:jakarta.json-api:1.1.6", "org.glassfish:jakarta.json:1.1.6"]
case JAVAX_JWS_API:
return ["jakarta.jws:jakarta.jws-api:1.1.1"]
case JAVAX_MAIL_API:
return ["com.sun.mail:mailapi:1.6.7", "jakarta.mail:jakarta.mail-api:1.6.7", "com.sun.mail:jakarta.mail:1.6.7"]
case JAVAX_PERSISTENCE_API:
Expand All @@ -104,6 +108,8 @@ class JarOverlapTest extends Specification {
return ["jakarta.servlet.jsp:jakarta.servlet.jsp-api:2.3.6"]
case JAVAX_SERVLET_JSTL:
return ["jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:1.2.7"]
case JAVAX_SOAP_API:
return ["jakarta.xml.soap:jakarta.xml.soap-api:1.4.2"]
case JAVAX_TRANSACTION_API:
return ["jakarta.transaction:jakarta.transaction-api:1.3.3"]
case JAVAX_VALIDATION_API:
Expand All @@ -114,6 +120,10 @@ class JarOverlapTest extends Specification {
"org.apache.tomcat.embed:tomcat-embed-websocket:9.0.104"]
case JAVAX_WS_RS_API:
return ["jakarta.ws.rs:jakarta.ws.rs-api:2.1.6"]
case JAVAX_XML_BIND_API:
return ["jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"]
case JAVAX_XML_WS_API:
return ["jakarta.xml.ws:jakarta.xml.ws-api:2.3.3"]
default:
return []
}
Expand Down
Loading