Skip to content

Commit

Permalink
move VersionMappings stuff to a separate module and make it public (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
bjlaub authored Jan 5, 2023
1 parent 8bffa21 commit d700ed9
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 63 deletions.
5 changes: 5 additions & 0 deletions changelog/@unreleased/pr-13.v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
type: improvement
improvement:
description: move VersionMappings stuff to a separate module and make it public
links:
- https://github.com/palantir/jakarta-package-alignment/pull/13
8 changes: 8 additions & 0 deletions jakarta-package-alignment-mappings/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apply plugin: "java-library"
apply plugin: "com.palantir.external-publish-jar"

dependencies {
implementation 'org.apache.maven:maven-artifact'
implementation 'com.google.guava:guava'
}

Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.palantir.gradle.jakartapackagealignment;

final class MavenCoordinate {
public final class MavenCoordinate {
private final String groupId;
private final String artifactId;
private final String version;
Expand All @@ -27,15 +27,15 @@ final class MavenCoordinate {
this.version = version;
}

String getGroupId() {
public String getGroupId() {
return groupId;
}

String getArtifactId() {
public String getArtifactId() {
return artifactId;
}

String getVersion() {
public String getVersion() {
return version;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* (c) Copyright 2022 Palantir Technologies Inc. All rights reserved.
*
* 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 com.palantir.gradle.jakartapackagealignment;

public final class VersionMapping {
private final MavenCoordinate jakartaCoord;
private final MavenCoordinate mappedJavaeeCoord;

VersionMapping(MavenCoordinate jakartaCoord, MavenCoordinate javaeeCoord) {
this.jakartaCoord = jakartaCoord;
this.mappedJavaeeCoord = javaeeCoord;
}

public MavenCoordinate getJakartaCoord() {
return jakartaCoord;
}

public MavenCoordinate getMappedJavaeeCoord() {
return mappedJavaeeCoord;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
package com.palantir.gradle.jakartapackagealignment;

import com.google.common.collect.ImmutableMap;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import org.apache.maven.artifact.versioning.ComparableVersion;
import org.gradle.api.artifacts.component.ModuleComponentSelector;

final class VersionMappings {
public final class VersionMappings {

private static final Map<String, VersionMapping> mappings = ImmutableMap.<String, VersionMapping>builder()
.put(
Expand Down Expand Up @@ -176,17 +176,23 @@ final class VersionMappings {

private VersionMappings() {}

static Optional<String> getReplacement(ModuleComponentSelector selector) {
String key = selector.getGroup() + ":" + selector.getModule();
public static Optional<MavenCoordinate> getReplacement(String group, String name, String version) {
String key = group + ":" + name;
VersionMapping mapping = mappings.get(key);

if (mapping != null) {
ComparableVersion requestedVersion = new ComparableVersion(selector.getVersion());
if (requestedVersion.compareTo(mapping.getMaxJakartaVersionWithJavaxNamespace()) <= 0) {
ComparableVersion requestedVersion = new ComparableVersion(version);
ComparableVersion maxJakartaVersionWithJavaxNamespace =
new ComparableVersion(mapping.getJakartaCoord().getVersion());
if (requestedVersion.compareTo(maxJakartaVersionWithJavaxNamespace) <= 0) {
return Optional.of(mapping.getMappedJavaeeCoord());
}
}

return Optional.empty();
}

public static Collection<VersionMapping> getMappings() {
return mappings.values();
}
}
5 changes: 2 additions & 3 deletions jakarta-package-alignment/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@ apply plugin: 'com.palantir.external-publish-jar'
apply plugin: 'com.palantir.external-publish-gradle-plugin'

dependencies {
implementation project(":jakarta-package-alignment-mappings")

testImplementation gradleTestKit()
testImplementation 'com.netflix.nebula:nebula-test'

implementation 'org.apache.maven:maven-artifact'
implementation 'com.google.guava:guava'
}

pluginBundle {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ public final void apply(Project project) {
configuration.getResolutionStrategy().getDependencySubstitution().all(dep -> {
if (dep.getRequested() instanceof ModuleComponentSelector) {
ModuleComponentSelector selector = (ModuleComponentSelector) dep.getRequested();
VersionMappings.getReplacement(selector)
VersionMappings.getReplacement(selector.getGroup(), selector.getModule(), selector.getVersion())
.ifPresent(replacement -> dep.useTarget(
replacement,
replacement.toString(),
"forced to Java EE 8 dependency because the requested Jakarta "
+ "dependency is < Jakarta EE 9"));
}
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
rootProject.name = 'jakarta-package-alignment-root'

include 'jakarta-package-alignment'
include 'jakarta-package-alignment-mappings'

0 comments on commit d700ed9

Please sign in to comment.