Skip to content

Commit a36e0e9

Browse files
authored
Merge branch 'main' into hotfix-NoGuavaJava21
2 parents 0890b40 + dd7ec21 commit a36e0e9

File tree

7 files changed

+106
-37
lines changed

7 files changed

+106
-37
lines changed

gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
3+
distributionSha256Sum=57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
55
networkTimeout=10000
66
validateDistributionUrl=true
77
zipStoreBase=GRADLE_USER_HOME

src/main/java/org/openrewrite/java/migrate/jakarta/UpdateBeanManagerMethods.java

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@
2222
import org.openrewrite.java.JavaParser;
2323
import org.openrewrite.java.JavaTemplate;
2424
import org.openrewrite.java.MethodMatcher;
25+
import org.openrewrite.java.tree.Expression;
2526
import org.openrewrite.java.tree.J;
2627

28+
import java.util.Collections;
29+
import java.util.List;
30+
2731
public class UpdateBeanManagerMethods extends Recipe {
2832
@Override
2933
public String getDisplayName() {
@@ -44,25 +48,39 @@ public TreeVisitor<?, ExecutionContext> getVisitor() {
4448
@Override
4549
public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) {
4650
J.MethodInvocation mi = super.visitMethodInvocation(method, ctx);
47-
if (fireEventMatcher.matches(method)) {
48-
return JavaTemplate.builder("#{any(jakarta.enterprise.inject.spi.BeanManager)}.getEvent().fire(#{any(jakarta.enterprise.inject.spi.BeforeBeanDiscovery)})")
51+
List<Expression> arguments = mi.getArguments();
52+
if (fireEventMatcher.matches(method) && mi.getSelect() != null) {
53+
if (arguments.size() <= 1) {
54+
return JavaTemplate.builder("#{any(jakarta.enterprise.inject.spi.BeanManager)}.getEvent()" +
55+
".fire(#{any(jakarta.enterprise.inject.spi.BeforeBeanDiscovery)})")
56+
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "jakarta.enterprise.cdi-api-3.0.0-M4"))
57+
.build()
58+
.apply(updateCursor(mi), mi.getCoordinates().replace(), mi.getSelect(), arguments.get(0));
59+
}
60+
61+
Object[] args = new Expression[arguments.size() + 1];
62+
args[0] = mi.getSelect();
63+
for (int i = 1; i < arguments.size(); i++) {
64+
args[i] = arguments.get(i);
65+
}
66+
args[arguments.size()] = arguments.get(0);
67+
68+
String template = "#{any(jakarta.enterprise.inject.spi.BeanManager)}.getEvent()" +
69+
".select(" + String.join(", ", Collections.nCopies(arguments.size() - 1, "#{any(java.lang.annotation.Annotation)}")) + ')' +
70+
".fire(#{any(jakarta.enterprise.inject.spi.BeforeBeanDiscovery)})";
71+
return JavaTemplate.builder(template)
4972
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "jakarta.enterprise.cdi-api-3.0.0-M4"))
5073
.build()
51-
.apply(updateCursor(mi),
52-
mi.getCoordinates().replace(),
53-
mi.getSelect(),
54-
mi.getArguments().get(0));
55-
} else if (createInjectionTargetMatcher.matches(method)) {
74+
.apply(updateCursor(mi), mi.getCoordinates().replace(), args);
75+
} else if (createInjectionTargetMatcher.matches(method) && mi.getSelect() != null) {
5676
return JavaTemplate.builder("#{any(jakarta.enterprise.inject.spi.BeanManager)}.getInjectionTargetFactory(#{any(jakarta.enterprise.inject.spi.AnnotatedType)}).createInjectionTarget(null)")
5777
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "jakarta.enterprise.cdi-api-3.0.0-M4"))
5878
.build()
59-
.apply(updateCursor(mi),
60-
mi.getCoordinates().replace(),
61-
mi.getSelect(),
62-
mi.getArguments().get(0));
79+
.apply(updateCursor(mi), mi.getCoordinates().replace(), mi.getSelect(), arguments.get(0));
6380
}
6481
return mi;
6582
}
83+
6684
};
6785
}
6886
}

src/main/java/org/openrewrite/java/migrate/lang/ThreadStopUnsupported.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx)
5454
J j = super.visitMethodInvocation(method, ctx);
5555
if (THREAD_STOP_MATCHER.matches(method) || THREAD_RESUME_MATCHER.matches(method) || THREAD_SUSPEND_MATCHER.matches(method)) {
5656
if (usesJava21(ctx)) {
57-
JavaTemplate template = JavaTemplate.builder("throw new UnsupportedOperationException()")
58-
.contextSensitive().build();
59-
j = template.apply(getCursor(), method.getCoordinates().replace());
57+
j = JavaTemplate.apply("throw new UnsupportedOperationException()", getCursor(), method.getCoordinates().replace());
6058
}
6159
if (j.getComments().isEmpty()) {
6260
j = getWithComment(j, method.getName().getSimpleName());

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ recipeList:
4747
oldFullyQualifiedTypeName: javax.annotation.Nonnull
4848
newFullyQualifiedTypeName: org.jspecify.annotations.NonNull
4949
ignoreDefinition: true
50+
- org.openrewrite.java.ChangeType:
51+
oldFullyQualifiedTypeName: javax.annotation.ParametersAreNonnullByDefault
52+
newFullyQualifiedTypeName: org.jspecify.annotation.NullMarked
53+
ignoreDefinition: true
5054
- org.openrewrite.staticanalysis.java.MoveFieldAnnotationToType:
5155
annotationType: org.jspecify.annotations.*
5256
---

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

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,23 @@
1616
package org.openrewrite.java.migrate.jakarta;
1717

1818
import org.junit.jupiter.api.Test;
19-
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable;
2019
import org.openrewrite.DocumentExample;
2120
import org.openrewrite.InMemoryExecutionContext;
21+
import org.openrewrite.Issue;
2222
import org.openrewrite.java.JavaParser;
2323
import org.openrewrite.test.RecipeSpec;
2424
import org.openrewrite.test.RewriteTest;
2525

2626
import static org.openrewrite.java.Assertions.java;
2727

28-
@DisabledIfEnvironmentVariable(named = "CI", matches = "true") // Unexplained failure only on GitHub Actions
2928
class UpdateBeanManagerMethodsTest implements RewriteTest {
3029
@Override
3130
public void defaults(RecipeSpec spec) {
3231
spec
3332
.parser(JavaParser.fromJavaVersion()
34-
.classpathFromResources(new InMemoryExecutionContext(), "jakarta.enterprise.cdi-api-3.0.0-M4", "jakarta.enterprise.cdi-api-4.0.1"))
33+
.classpathFromResources(new InMemoryExecutionContext(),
34+
"jakarta.enterprise.cdi-api-3.0.0-M4",
35+
"jakarta.enterprise.cdi-api-4.0.1"))
3536
.recipe(new UpdateBeanManagerMethods());
3637
}
3738

@@ -97,4 +98,44 @@ void bar(BeanManager beanManager) {
9798
)
9899
);
99100
}
101+
102+
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/597")
103+
@Test
104+
void fireEventWithClassifiers() {
105+
rewriteRun(
106+
//language=java
107+
java(
108+
"""
109+
import java.lang.annotation.Annotation;
110+
import jakarta.enterprise.inject.spi.BeanManager;
111+
import jakarta.enterprise.inject.spi.BeforeBeanDiscovery;
112+
import java.util.Set;
113+
114+
class Foo {
115+
void one(BeanManager beanManager, BeforeBeanDiscovery beforeBeanDiscovery, Annotation classifier) {
116+
beanManager.fireEvent(beforeBeanDiscovery, classifier);
117+
}
118+
void two(BeanManager beanManager, BeforeBeanDiscovery beforeBeanDiscovery, Annotation classifier) {
119+
beanManager.fireEvent(beforeBeanDiscovery, classifier, classifier);
120+
}
121+
}
122+
""",
123+
"""
124+
import java.lang.annotation.Annotation;
125+
import jakarta.enterprise.inject.spi.BeanManager;
126+
import jakarta.enterprise.inject.spi.BeforeBeanDiscovery;
127+
import java.util.Set;
128+
129+
class Foo {
130+
void one(BeanManager beanManager, BeforeBeanDiscovery beforeBeanDiscovery, Annotation classifier) {
131+
beanManager.getEvent().select(classifier).fire(beforeBeanDiscovery);
132+
}
133+
void two(BeanManager beanManager, BeforeBeanDiscovery beforeBeanDiscovery, Annotation classifier) {
134+
beanManager.getEvent().select(classifier, classifier).fire(beforeBeanDiscovery);
135+
}
136+
}
137+
"""
138+
)
139+
);
140+
}
100141
}

src/test/java/org/openrewrite/java/migrate/jspecify/MigrateToJspecifyTest.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,21 @@ class Bar {
8282
}
8383
}
8484
"""
85+
),
86+
// package-info.java
87+
java(
88+
"""
89+
@ParametersAreNonnullByDefault
90+
package org.openrewrite.example;
91+
92+
import javax.annotation.ParametersAreNonnullByDefault;
93+
""",
94+
"""
95+
@NullMarked
96+
package org.openrewrite.example;
97+
98+
import org.jspecify.annotation.NullMarked;
99+
"""
85100
)
86101
),
87102
//language=xml
@@ -136,7 +151,7 @@ void migrateFromJakartaAnnotationApiToJspecify() {
136151
"""
137152
import jakarta.annotation.Nonnull;
138153
import jakarta.annotation.Nullable;
139-
154+
140155
public class Test {
141156
@Nonnull
142157
public String field1;
@@ -145,7 +160,7 @@ public class Test {
145160
@Nullable
146161
public Foo.Bar foobar;
147162
}
148-
163+
149164
interface Foo {
150165
class Bar {
151166
@Nonnull
@@ -156,16 +171,16 @@ class Bar {
156171
"""
157172
import org.jspecify.annotations.NonNull;
158173
import org.jspecify.annotations.Nullable;
159-
174+
160175
public class Test {
161176
@NonNull
162177
public String field1;
163178
@Nullable
164179
public String field2;
165-
180+
166181
public Foo.@Nullable Bar foobar;
167182
}
168-
183+
169184
interface Foo {
170185
class Bar {
171186
@NonNull
@@ -228,7 +243,7 @@ void migrateFromJetbrainsAnnotationsToJspecify() {
228243
"""
229244
import org.jetbrains.annotations.NotNull;
230245
import org.jetbrains.annotations.Nullable;
231-
246+
232247
public class Test {
233248
@NotNull
234249
public String field1;
@@ -237,7 +252,7 @@ public class Test {
237252
@Nullable
238253
public Foo.Bar foobar;
239254
}
240-
255+
241256
interface Foo {
242257
class Bar {
243258
@NotNull
@@ -248,16 +263,16 @@ class Bar {
248263
"""
249264
import org.jspecify.annotations.NonNull;
250265
import org.jspecify.annotations.Nullable;
251-
266+
252267
public class Test {
253268
@NonNull
254269
public String field1;
255270
@Nullable
256271
public String field2;
257-
272+
258273
public Foo.@Nullable Bar foobar;
259274
}
260-
275+
261276
interface Foo {
262277
class Bar {
263278
@NonNull

src/test/java/org/openrewrite/java/migrate/lang/ThreadStopUnsupportedTest.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import static org.openrewrite.java.Assertions.javaVersion;
2626

2727
class ThreadStopUnsupportedTest implements RewriteTest {
28+
2829
@Override
2930
public void defaults(RecipeSpec spec) {
3031
spec.recipe(new ThreadStopUnsupported());
@@ -62,8 +63,6 @@ void bar() {
6263
}
6364

6465
@Test
65-
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/194")
66-
@DocumentExample
6766
void retainCommentIfPresent() {
6867
rewriteRun(
6968
//language=java
@@ -82,8 +81,6 @@ void bar() {
8281
}
8382

8483
@Test
85-
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/194")
86-
@DocumentExample
8784
void replaceStopWithThrowsOnJava21() {
8885
rewriteRun(
8986
//language=java
@@ -113,8 +110,6 @@ void bar() {
113110
}
114111

115112
@Test
116-
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/194")
117-
@DocumentExample
118113
void replaceResumeWithThrowsOnJava21() {
119114
rewriteRun(
120115
//language=java
@@ -144,8 +139,6 @@ void bar() {
144139
}
145140

146141
@Test
147-
@Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/194")
148-
@DocumentExample
149142
void replaceSuspendWithThrowsOnJava21() {
150143
rewriteRun(
151144
//language=java

0 commit comments

Comments
 (0)