Skip to content

Commit a8f820b

Browse files
author
Greg Adams
committed
FindTypes finds .class references
wrapping fix for classes with annotations and no modifiers that already have a newline
1 parent 0cc0283 commit a8f820b

File tree

4 files changed

+62
-10
lines changed

4 files changed

+62
-10
lines changed

rewrite-java/src/main/java/org/openrewrite/java/format/WrappingAndBracesVisitor.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,15 @@ public Statement visitStatement(Statement statement, P p) {
9494
} else {
9595
J.ClassDeclaration.Padding padding = j.getPadding();
9696
JLeftPadded<J.ClassDeclaration.Kind> kind = padding.getKind();
97-
j = padding.withKind(
98-
kind.withBefore(
99-
kind.getBefore().withWhitespace(
100-
"\n" + kind.getBefore().getWhitespace()
101-
)
102-
)
103-
);
97+
if (!kind.getBefore().getWhitespace().contains("\n")) {
98+
j = padding.withKind(
99+
kind.withBefore(
100+
kind.getBefore().withWhitespace(
101+
"\n" + kind.getBefore().getWhitespace()
102+
)
103+
)
104+
);
105+
}
104106
}
105107

106108
}

rewrite-java/src/main/java/org/openrewrite/java/search/FindTypes.java

+22
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,17 @@ public <N extends NameTree> N visitTypeName(N name, ExecutionContext ctx) {
5656
}
5757
return n;
5858
}
59+
60+
@Override
61+
public J visitFieldAccess(J.FieldAccess fieldAccess, ExecutionContext executionContext) {
62+
J.FieldAccess fa = (J.FieldAccess) super.visitFieldAccess(fieldAccess, executionContext);
63+
JavaType.Class targetClass = TypeUtils.asClass(fa.getTarget().getType());
64+
if (targetClass != null && targetClass.getFullyQualifiedName().equals(fullyQualifiedTypeName) &&
65+
fa.getName().getSimpleName().equals("class")) {
66+
return fa.withMarker(new RecipeSearchResult(FindTypes.this));
67+
}
68+
return fa;
69+
}
5970
};
6071
}
6172

@@ -75,6 +86,17 @@ public <N extends NameTree> N visitTypeName(N name, Set<NameTree> ns) {
7586
}
7687
return n;
7788
}
89+
90+
@Override
91+
public J.FieldAccess visitFieldAccess(J.FieldAccess fieldAccess, Set<NameTree> ns) {
92+
J.FieldAccess fa = super.visitFieldAccess(fieldAccess, ns);
93+
JavaType.Class targetClass = TypeUtils.asClass(fa.getTarget().getType());
94+
if (targetClass != null && targetClass.getFullyQualifiedName().equals(fullyQualifiedClassName) &&
95+
fa.getName().getSimpleName().equals("class")) {
96+
ns.add(fieldAccess);
97+
}
98+
return fa;
99+
}
78100
};
79101

80102
Set<NameTree> ts = new HashSet<>();

rewrite-test/src/main/kotlin/org/openrewrite/java/format/WrappingAndBracesTest.kt

+13-3
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ interface WrappingAndBracesTest : RecipeTest {
4848

4949
@Test
5050
fun blockEndOnOwnLine(jp: JavaParser) = assertChanged(
51-
jp,
52-
before = """
51+
jp,
52+
before = """
5353
class Test {
5454
int n = 0;}
5555
""",
56-
after = """
56+
after = """
5757
class Test {
5858
int n = 0;
5959
}
@@ -194,6 +194,16 @@ interface WrappingAndBracesTest : RecipeTest {
194194
"""
195195
)
196196

197+
@Test
198+
fun annotatedClassDeclAlreadyCorrect(jp: JavaParser) = assertUnchanged(
199+
jp,
200+
before = """
201+
@SuppressWarnings({"ALL"})
202+
class Test {
203+
}
204+
"""
205+
)
206+
197207
@Test
198208
fun annotatedClassDeclWithModifiers(jp: JavaParser) = assertChanged(
199209
jp,

rewrite-test/src/main/kotlin/org/openrewrite/java/search/FindTypesTest.kt

+18
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,24 @@ interface FindTypesTest : RecipeTest {
246246
dependsOn = arrayOf(a1)
247247
)
248248

249+
@Test
250+
fun classReference(jp: JavaParser) = assertChanged(
251+
jp,
252+
before = """
253+
import a.A1;
254+
class B {
255+
Class<?> clazz = A1.class;
256+
}
257+
""",
258+
after = """
259+
import a.A1;
260+
class B {
261+
Class<?> clazz = ~~>A1.class;
262+
}
263+
""",
264+
dependsOn = arrayOf(a1)
265+
)
266+
249267
@Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
250268
@Test
251269
fun checkValidation() {

0 commit comments

Comments
 (0)