Skip to content

Commit e9d71c5

Browse files
authored
Polish ChangeDefaultKeyStore to only apply to Java 11 (#670)
1 parent 23ddb3b commit e9d71c5

File tree

2 files changed

+45
-47
lines changed

2 files changed

+45
-47
lines changed

src/main/java/org/openrewrite/java/migrate/ChangeDefaultKeyStore.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.openrewrite.java.migrate;
1717

18-
1918
import org.openrewrite.ExecutionContext;
2019
import org.openrewrite.Preconditions;
2120
import org.openrewrite.Recipe;
@@ -31,7 +30,6 @@
3130

3231
import static org.openrewrite.Tree.randomId;
3332

34-
3533
public class ChangeDefaultKeyStore extends Recipe {
3634
private static final MethodMatcher KEYSTORE_METHOD_REF = new MethodMatcher("java.security.KeyStore getDefaultType()", true);
3735

@@ -42,15 +40,19 @@ public String getDisplayName() {
4240

4341
@Override
4442
public String getDescription() {
45-
return "In Java 11 the default keystore was updated from JKS to PKCS12." + "As a result, applications relying on KeyStore.getDefaultType() may encounter issues after migrating, unless their JKS keystore has been converted to PKCS12." + "This recipe returns default key store of `jks` when `KeyStore.getDefaultType()` method is called to use the pre Java 11 default keystore.";
43+
return "In Java 11 the default keystore was updated from JKS to PKCS12. " +
44+
"As a result, applications relying on KeyStore.getDefaultType() may encounter issues after migrating," +
45+
" unless their JKS keystore has been converted to PKCS12. " +
46+
"This recipe returns default key store of `jks` when `KeyStore.getDefaultType()` method is called to" +
47+
" use the pre Java 11 default keystore.";
4648
}
4749

4850
@Override
4951
public TreeVisitor<?, ExecutionContext> getVisitor() {
5052
return Preconditions.check(
5153
Preconditions.and(
52-
new UsesJavaVersion<>(11),
53-
new UsesMethod<>("java.security.KeyStore getDefaultType()")),
54+
new UsesJavaVersion<>(11, 11),
55+
new UsesMethod<>(KEYSTORE_METHOD_REF)),
5456
new JavaVisitor<ExecutionContext>() {
5557
@Override
5658
public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) {

src/test/java/org/openrewrite/java/migrate/ChangeDefaultKeyStoreTest.java

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.openrewrite.java.migrate;
1717

18+
import org.intellij.lang.annotations.Language;
1819
import org.junit.jupiter.api.Test;
1920
import org.openrewrite.DocumentExample;
2021
import org.openrewrite.test.RecipeSpec;
@@ -24,6 +25,29 @@
2425
import static org.openrewrite.java.Assertions.javaVersion;
2526

2627
class ChangeDefaultKeyStoreTest implements RewriteTest {
28+
29+
@Language("java")
30+
private static final String BEFORE = """
31+
import java.io.FileInputStream;
32+
import java.io.IOException;
33+
import java.security.Key;
34+
import java.security.KeyStore;
35+
36+
class Foo {
37+
void bar() {
38+
try{
39+
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
40+
char[] password = "your_keystore_password".toCharArray();
41+
FileInputStream keystoreFile = new FileInputStream("path_to_your_keystore_file.jks");
42+
keystore.load(keystoreFile, password);
43+
}
44+
catch (Exception e) {
45+
e.printStackTrace();
46+
}
47+
}
48+
}
49+
""";
50+
2751
@Override
2852
public void defaults(RecipeSpec spec) {
2953
spec.recipe(new ChangeDefaultKeyStore())
@@ -32,30 +56,11 @@ public void defaults(RecipeSpec spec) {
3256

3357
@DocumentExample
3458
@Test
35-
void keyStore() {
59+
void keyStoreDefaultTypeChangedToExplicitType() {
3660
rewriteRun(
3761
//language=java
3862
java(
39-
"""
40-
import java.io.FileInputStream;
41-
import java.io.IOException;
42-
import java.security.Key;
43-
import java.security.KeyStore;
44-
45-
class Foo {
46-
void bar() {
47-
try{
48-
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
49-
char[] password = "your_keystore_password".toCharArray();
50-
FileInputStream keystoreFile = new FileInputStream("path_to_your_keystore_file.jks");
51-
keystore.load(keystoreFile, password);
52-
}
53-
catch (Exception e) {
54-
e.printStackTrace();
55-
}
56-
}
57-
}
58-
""",
63+
BEFORE,
5964
"""
6065
import java.io.FileInputStream;
6166
import java.io.IOException;
@@ -81,7 +86,7 @@ void bar() {
8186
}
8287

8388
@Test
84-
void keepString() {
89+
void keepExplicitType() {
8590
rewriteRun(
8691
//language=java
8792
java(
@@ -113,27 +118,18 @@ void keepStringForJava8() {
113118
rewriteRun(
114119
//language=java
115120
java(
116-
"""
117-
import java.io.FileInputStream;
118-
import java.io.IOException;
119-
import java.security.Key;
120-
import java.security.KeyStore;
121-
122-
class Foo {
123-
void bar() {
124-
try{
125-
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
126-
char[] password = "your_keystore_password".toCharArray();
127-
FileInputStream keystoreFile = new FileInputStream("path_to_your_keystore_file.jks");
128-
keystore.load(keystoreFile, password);
129-
}
130-
catch (Exception e) {
131-
e.printStackTrace();
132-
}
133-
}
134-
}
135-
""",
121+
BEFORE,
136122
spec -> spec.markers(javaVersion(8)))
137123
);
138124
}
125+
126+
@Test
127+
void keepStringForJava17() {
128+
rewriteRun(
129+
//language=java
130+
java(
131+
BEFORE,
132+
spec -> spec.markers(javaVersion(17)))
133+
);
134+
}
139135
}

0 commit comments

Comments
 (0)