Skip to content

Commit a35ebf1

Browse files
refactor: OpenRewrite Recipe best practices (#711)
* refactor: OpenRewrite Recipe best practices Use this link to re-run the recipe: https://app.moderne.io/recipes/org.openrewrite.recipes.rewrite.OpenRewriteRecipeBestPractices?organizationId=ODQ2MGExMTUtNDg0My00N2EwLTgzMGMtNGE1NGExMTBmZDkw Co-authored-by: Moderne <[email protected]> * Add additional example source --------- Co-authored-by: Moderne <[email protected]>
1 parent 5d589aa commit a35ebf1

16 files changed

+358
-320
lines changed

src/main/resources/META-INF/rewrite/examples.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,27 @@ examples:
992992
type: specs.openrewrite.org/v1beta/example
993993
recipeName: org.openrewrite.java.migrate.UpgradePluginsForJava11
994994
examples:
995+
- description: ''
996+
sources:
997+
- before: |
998+
<project>
999+
<groupId>com.mycompany.app</groupId>
1000+
<artifactId>my-app</artifactId>
1001+
<version>1</version>
1002+
<build>
1003+
<plugins>
1004+
<plugin>
1005+
<groupId>org.codehaus.mojo</groupId>
1006+
<artifactId>jaxb2-maven-plugin</artifactId>
1007+
<version>2.3.1</version>
1008+
</plugin>
1009+
</plugins>
1010+
</build>
1011+
</project>
1012+
path: pom.xml
1013+
language: xml
1014+
- before: project
1015+
language: mavenProject
9951016
- description: ''
9961017
sources:
9971018
- before: |
@@ -6358,6 +6379,23 @@ examples:
63586379
language: java
63596380
---
63606381
type: specs.openrewrite.org/v1beta/example
6382+
recipeName: org.openrewrite.java.migrate.lombok.AdoptLombokGetterMethodNames
6383+
examples:
6384+
- description: ''
6385+
sources:
6386+
- before: |
6387+
class A {
6388+
int foo = 9;
6389+
int giveFoo() { return foo; }
6390+
}
6391+
after: |
6392+
class A {
6393+
int foo = 9;
6394+
int getFoo() { return foo; }
6395+
}
6396+
language: java
6397+
---
6398+
type: specs.openrewrite.org/v1beta/example
63616399
recipeName: org.openrewrite.java.migrate.lombok.LombokBestPractices
63626400
examples:
63636401
- description: ''

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,49 +34,49 @@ public void defaults(RecipeSpec spec) {
3434
.allSources(src -> src.markers(javaVersion(21)));
3535
}
3636

37+
@DocumentExample
3738
@Test
38-
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/459")
39-
void skipInterfaces() {
39+
void happyPath() {
4040
//language=java
4141
rewriteRun(
4242
java(
4343
"""
4444
interface I1 {}
45-
interface I2 extends I1 {}
45+
class C2 implements I1 {}
46+
""",
47+
"""
48+
interface I1 {}
49+
class C2 implements I1 {
50+
public void m1() {
51+
System.out.println("m1");
52+
}}
4653
"""
4754
)
4855
);
4956
}
5057

5158
@Test
52-
void skipAbstractClasses() {
59+
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/459")
60+
void skipInterfaces() {
5361
//language=java
5462
rewriteRun(
5563
java(
5664
"""
5765
interface I1 {}
58-
abstract class AC2 implements I1 {}
66+
interface I2 extends I1 {}
5967
"""
6068
)
6169
);
6270
}
6371

64-
@DocumentExample
6572
@Test
66-
void happyPath() {
73+
void skipAbstractClasses() {
6774
//language=java
6875
rewriteRun(
6976
java(
7077
"""
7178
interface I1 {}
72-
class C2 implements I1 {}
73-
""",
74-
"""
75-
interface I1 {}
76-
class C2 implements I1 {
77-
public void m1() {
78-
System.out.println("m1");
79-
}}
79+
abstract class AC2 implements I1 {}
8080
"""
8181
)
8282
);

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

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -80,40 +80,6 @@ public static void setComponentMixingCutoutShape(Component c, Shape sh){
8080
);
8181
}
8282

83-
@Test
84-
void replaceComSunAWTUtilitiesClassesIsTranslucencySupported() {
85-
rewriteRun(
86-
//language=java
87-
java(
88-
"""
89-
import com.test.AWTUtilitiesTest;
90-
91-
class Test {
92-
void foo() {
93-
boolean f = AWTUtilitiesTest.isTranslucencySupported1(AWTUtilitiesTest.Translucency.TRANSLUCENT);
94-
boolean j = AWTUtilitiesTest.isTranslucencySupported1(AWTUtilitiesTest.Translucency.PERPIXEL_TRANSPARENT);
95-
boolean k = AWTUtilitiesTest.isTranslucencySupported1(AWTUtilitiesTest.Translucency.PERPIXEL_TRANSLUCENT);
96-
}
97-
}
98-
""",
99-
"""
100-
import java.awt.GraphicsDevice;
101-
import java.awt.GraphicsDevice.WindowTranslucency;
102-
import java.awt.GraphicsEnvironment;
103-
import java.awt.Window;
104-
105-
class Test {
106-
void foo() {
107-
boolean f = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isWindowTranslucencySupported(WindowTranslucency.TRANSLUCENT);
108-
boolean j = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSPARENT);
109-
boolean k = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSLUCENT);
110-
}
111-
}
112-
"""
113-
)
114-
);
115-
}
116-
11783
@Test
11884
@DocumentExample
11985
void replaceComSunAWTUtilitiesClassesRemaining() {
@@ -168,4 +134,38 @@ void foo() {
168134
)
169135
);
170136
}
137+
138+
@Test
139+
void replaceComSunAWTUtilitiesClassesIsTranslucencySupported() {
140+
rewriteRun(
141+
//language=java
142+
java(
143+
"""
144+
import com.test.AWTUtilitiesTest;
145+
146+
class Test {
147+
void foo() {
148+
boolean f = AWTUtilitiesTest.isTranslucencySupported1(AWTUtilitiesTest.Translucency.TRANSLUCENT);
149+
boolean j = AWTUtilitiesTest.isTranslucencySupported1(AWTUtilitiesTest.Translucency.PERPIXEL_TRANSPARENT);
150+
boolean k = AWTUtilitiesTest.isTranslucencySupported1(AWTUtilitiesTest.Translucency.PERPIXEL_TRANSLUCENT);
151+
}
152+
}
153+
""",
154+
"""
155+
import java.awt.GraphicsDevice;
156+
import java.awt.GraphicsDevice.WindowTranslucency;
157+
import java.awt.GraphicsEnvironment;
158+
import java.awt.Window;
159+
160+
class Test {
161+
void foo() {
162+
boolean f = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isWindowTranslucencySupported(WindowTranslucency.TRANSLUCENT);
163+
boolean j = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSPARENT);
164+
boolean k = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSLUCENT);
165+
}
166+
}
167+
"""
168+
)
169+
);
170+
}
171171
}

src/test/java/org/openrewrite/java/migrate/guava/NoGuavaImmutableSetOfTest.java

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,34 @@ public void defaults(RecipeSpec spec) {
3232
.parser(JavaParser.fromJavaVersion().classpath("guava"));
3333
}
3434

35+
@Test
36+
@DocumentExample
37+
void replaceArguments() {
38+
//language=java
39+
rewriteRun(
40+
version(
41+
java(
42+
"""
43+
import java.util.Set;
44+
import com.google.common.collect.ImmutableSet;
45+
46+
class Test {
47+
Set<String> m = ImmutableSet.of("A", "B", "C", "D");
48+
}
49+
""",
50+
"""
51+
import java.util.Set;
52+
53+
class Test {
54+
Set<String> m = Set.of("A", "B", "C", "D");
55+
}
56+
"""
57+
),
58+
9
59+
)
60+
);
61+
}
62+
3563
@Test
3664
void doNotChangeReturnsImmutableSet() {
3765
//language=java
@@ -157,34 +185,6 @@ void method() {
157185
);
158186
}
159187

160-
@Test
161-
@DocumentExample
162-
void replaceArguments() {
163-
//language=java
164-
rewriteRun(
165-
version(
166-
java(
167-
"""
168-
import java.util.Set;
169-
import com.google.common.collect.ImmutableSet;
170-
171-
class Test {
172-
Set<String> m = ImmutableSet.of("A", "B", "C", "D");
173-
}
174-
""",
175-
"""
176-
import java.util.Set;
177-
178-
class Test {
179-
Set<String> m = Set.of("A", "B", "C", "D");
180-
}
181-
"""
182-
),
183-
9
184-
)
185-
);
186-
}
187-
188188
@Test
189189
void fieldAssignmentToSet() {
190190
//language=java

src/test/java/org/openrewrite/java/migrate/jakarta/JavaxToJakartaTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,6 @@ public void defaults(RecipeSpec spec) {
6969
);
7070
}
7171

72-
@Test
73-
void doNotAddImportWhenNoChangesWereMade() {
74-
rewriteRun(
75-
java("public class B {}")
76-
);
77-
}
78-
7972
@DocumentExample
8073
@Test
8174
void changeImport() {
@@ -97,6 +90,13 @@ public class B {
9790
);
9891
}
9992

93+
@Test
94+
void doNotAddImportWhenNoChangesWereMade() {
95+
rewriteRun(
96+
java("public class B {}")
97+
);
98+
}
99+
100100
@Test
101101
void fullyQualifiedName() {
102102
rewriteRun(

src/test/java/org/openrewrite/java/migrate/jakarta/JavaxTransactionMigrationToJakartaTransactionTest.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,6 @@ public void defaults(RecipeSpec spec) {
6060
);
6161
}
6262

63-
@Test
64-
void doNotChangeImportWhenPackageFromJavaSE() {
65-
rewriteRun(
66-
spec -> spec.parser(JavaParser.fromJavaVersion().dependsOn(javax_transaction_xa)),
67-
//language=java
68-
java(
69-
"""
70-
import javax.transaction.xa.*;
71-
public class A {
72-
XAResource xa;
73-
}
74-
"""
75-
)
76-
);
77-
}
78-
7963
@DocumentExample
8064
@Test
8165
void changeImportWhenPackageFromJakartaTransaction() {
@@ -100,4 +84,20 @@ public void foo() {}
10084
)
10185
);
10286
}
87+
88+
@Test
89+
void doNotChangeImportWhenPackageFromJavaSE() {
90+
rewriteRun(
91+
spec -> spec.parser(JavaParser.fromJavaVersion().dependsOn(javax_transaction_xa)),
92+
//language=java
93+
java(
94+
"""
95+
import javax.transaction.xa.*;
96+
public class A {
97+
XAResource xa;
98+
}
99+
"""
100+
)
101+
);
102+
}
103103
}

0 commit comments

Comments
 (0)