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
62 changes: 62 additions & 0 deletions src/main/resources/META-INF/rewrite/bouncycastle-jdk15to18.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#
# Copyright 2025 the original author or authors.
# <p>
# Licensed under the Moderne Source Available License (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# <p>
# https://docs.moderne.io/licensing/moderne-source-available-license
# <p>
# 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.
#

---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.BouncyCastleFromJdk15OnToJdk15to18
displayName: Migrate Bouncy Castle from `jdk15on` to `jdk15to18` for Java < 8
description: >-
This recipe replaces the Bouncy Castle artifacts from `jdk15on` to `jdk15to18`.
`jdk15on` isn't maintained anymore and `jdk18on` is only for Java 8 and above.
The `jdk15to18` artifact is the up-to-date replacement of the unmaintained `jdk15on` for Java < 8.
tags:
- bouncycastle
recipeList:
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcprov-jdk15on
newArtifactId: bcprov-jdk15to18
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcutil-jdk15on
newArtifactId: bcutil-jdk15to18
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcpkix-jdk15on
newArtifactId: bcpkix-jdk15to18
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcmail-jdk15on
newArtifactId: bcmail-jdk15to18
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcjmail-jdk15on
newArtifactId: bcjmail-jdk15to18
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcpg-jdk15on
newArtifactId: bcpg-jdk15to18
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bctls-jdk15on
newArtifactId: bctls-jdk15to18
newVersion: latest.release
42 changes: 40 additions & 2 deletions src/main/resources/META-INF/rewrite/bouncycastle-jdk18on.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,13 @@
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.BounceCastleFromJdk15OntoJdk18On
displayName: Migrate BouncyCastle to jdk18on
displayName: Migrate Bouncy Castle to `jdk18on`
description: >-
This recipe will upgrade BouncyCastle dependencies from -jdk15on to -jdk18on.
This recipe will upgrade Bouncy Castle dependencies from `-jdk15on` or `-jdk15to18` to `-jdk18on`.
tags:
- bouncycastle
recipeList:
# -jdk15on migration
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcprov-jdk15on
Expand Down Expand Up @@ -58,3 +59,40 @@ recipeList:
oldArtifactId: bctls-jdk15on
newArtifactId: bctls-jdk18on
newVersion: latest.release

# -jdk15to18 migration
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcprov-jdk15to18
newArtifactId: bcprov-jdk18on
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcutil-jdk15to18
newArtifactId: bcutil-jdk18on
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcpkix-jdk15to18
newArtifactId: bcpkix-jdk18on
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcmail-jdk15to18
newArtifactId: bcmail-jdk18on
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcjmail-jdk15to18
newArtifactId: bcjmail-jdk18on
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bcpg-jdk15to18
newArtifactId: bcpg-jdk18on
newVersion: latest.release
- org.openrewrite.java.dependencies.ChangeDependency:
oldGroupId: org.bouncycastle
oldArtifactId: bctls-jdk15to18
newArtifactId: bctls-jdk18on
newVersion: latest.release
3 changes: 2 additions & 1 deletion src/main/resources/META-INF/rewrite/java-version-7.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ recipeList:
- org.openrewrite.java.migrate.JREJdbcInterfaceNewMethods
- org.openrewrite.java.migrate.JREThrowableFinalMethods
- org.openrewrite.java.migrate.util.ReplaceMathRandomWithThreadLocalRandomRecipe
- org.openrewrite.java.migrate.BouncyCastleFromJdk15OnToJdk15to18
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.JREJdbcInterfaceNewMethods
Expand Down Expand Up @@ -69,4 +70,4 @@ recipeList:
- org.openrewrite.java.migrate.AddMissingMethodImplementation:
fullyQualifiedClassName: javax.sql.CommonDataSource
methodPattern: "*..* getParentLogger()"
methodTemplateString: "public java.util.logging.Logger getParentLogger() { \n\t// TODO Auto-generated method stub\n return null; }"
methodTemplateString: "public java.util.logging.Logger getParentLogger() { \n\t// TODO Auto-generated method stub\n return null; }"
71 changes: 54 additions & 17 deletions src/test/java/org/openrewrite/java/migrate/BouncyCastleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,42 +17,42 @@

import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.junit.jupiter.params.provider.MethodSource;
import org.openrewrite.DocumentExample;
import org.openrewrite.maven.tree.MavenResolutionResult;
import org.openrewrite.maven.tree.Scope;
import org.openrewrite.test.RecipeSpec;
import org.openrewrite.test.RewriteTest;

import java.util.Arrays;
import java.util.List;

import static java.util.function.UnaryOperator.identity;
import static org.assertj.core.api.Assertions.assertThat;
import static org.openrewrite.java.Assertions.mavenProject;
import static org.openrewrite.maven.Assertions.pomXml;

class BouncyCastleTest implements RewriteTest {

@Override
public void defaults(RecipeSpec spec) {
spec.recipeFromResource(
"/META-INF/rewrite/bouncycastle-jdk18on.yml",
"org.openrewrite.java.migrate.BounceCastleFromJdk15OntoJdk18On");
static List<String> artifactBaseNames() {
return Arrays.asList("bcprov", "bcutil", "bcpkix", "bcmail", "bcjmail", "bcpg", "bctls");
}

@DocumentExample
@Test
void document() {
rewriteRun(
spec -> spec.recipeFromResource(
"/META-INF/rewrite/bouncycastle-jdk18on.yml",
"org.openrewrite.java.migrate.BounceCastleFromJdk15OntoJdk18On"),
mavenProject("project",
//language=xml
pomXml(
"""
<project>
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>

<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
Expand Down Expand Up @@ -86,31 +86,68 @@ void document() {
);
}

@ParameterizedTest
@MethodSource("artifactBaseNames")
void jdk15onToJdk18on(String artifactBaseName) {
runBouncyCastleArtifactUpgradeRecipe(
"/META-INF/rewrite/bouncycastle-jdk18on.yml",
"org.openrewrite.java.migrate.BounceCastleFromJdk15OntoJdk18On",
artifactBaseName,
"jdk15on",
"jdk18on"
);
}

@ParameterizedTest
@ValueSource(strings = {"bcprov", "bcutil", "bcpkix", "bcmail", "bcjmail", "bcpg", "bctls"})
void updateBouncyCastle(String value) {
@MethodSource("artifactBaseNames")
void jdk15to18ToJdk18on(String artifactBaseName) {
runBouncyCastleArtifactUpgradeRecipe(
"/META-INF/rewrite/bouncycastle-jdk18on.yml",
"org.openrewrite.java.migrate.BounceCastleFromJdk15OntoJdk18On",
artifactBaseName,
"jdk15to18",
"jdk18on"
);
}

@ParameterizedTest
@MethodSource("artifactBaseNames")
void jdk15onToJdk15To18(String artifactBaseName) {
runBouncyCastleArtifactUpgradeRecipe(
"/META-INF/rewrite/bouncycastle-jdk15to18.yml",
"org.openrewrite.java.migrate.BouncyCastleFromJdk15OnToJdk15to18",
artifactBaseName,
"jdk15on",
"jdk15to18"
);
}

void runBouncyCastleArtifactUpgradeRecipe(
String yamlFile,
String recipe,
String baseArtifactId,
String originalArtifactSuffix,
String expectedArtifactSuffix) {
rewriteRun(
recipeSpec -> recipeSpec.recipeFromResource(yamlFile, recipe),
mavenProject("project",
//language=xml
pomXml(
"""
"""
<project>
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>

<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>%s-jdk15on</artifactId>
<artifactId>%s-%s</artifactId>
<version>1.70</version>
</dependency>
</dependencies>
</project>
""".formatted(value),
""".formatted(baseArtifactId, originalArtifactSuffix),
spec -> spec
.after(identity())
.afterRecipe(doc -> assertThat(doc.getMarkers().findFirst(MavenResolutionResult.class)
Expand All @@ -119,7 +156,7 @@ void updateBouncyCastle(String value) {
.singleElement()
.satisfies(rd -> {
assertThat(rd.getGroupId()).isEqualTo("org.bouncycastle");
assertThat(rd.getArtifactId()).isEqualTo(value + "-jdk18on");
assertThat(rd.getArtifactId()).isEqualTo(String.format("%s-%s", baseArtifactId, expectedArtifactSuffix));
}))
)
)
Expand Down