Skip to content

Commit 0041760

Browse files
committed
remove method declarations
more internal test clean ups remove Datastore.ensure*() calls
1 parent 35374b4 commit 0041760

File tree

4 files changed

+115
-4
lines changed

4 files changed

+115
-4
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package dev.morphia.rewrite.recipes.internal;
2+
3+
import org.openrewrite.ExecutionContext;
4+
import org.openrewrite.Option;
5+
import org.openrewrite.Recipe;
6+
import org.openrewrite.TreeVisitor;
7+
import org.openrewrite.java.JavaVisitor;
8+
import org.openrewrite.java.MethodMatcher;
9+
import org.openrewrite.java.tree.J;
10+
import org.openrewrite.java.tree.J.MethodDeclaration;
11+
12+
public class RemoveMethodDeclaration extends Recipe {
13+
@Option(displayName = "Method pattern", description = "A pattern to match method declarations for removal.", example = "java.lang.StringBuilder append(java.lang.String)")
14+
private String methodPattern;
15+
16+
@Override
17+
public String getDisplayName() {
18+
return "Remove method declarations";
19+
}
20+
21+
@Override
22+
public String getDescription() {
23+
return "Remove method declarations.";
24+
}
25+
26+
public String getMethodPattern() {
27+
return methodPattern;
28+
}
29+
30+
public void setMethodPattern(String methodPattern) {
31+
this.methodPattern = methodPattern;
32+
}
33+
34+
@Override
35+
public TreeVisitor<?, ExecutionContext> getVisitor() {
36+
return new RemoveMethodDeclarationVisitor(methodPattern);
37+
}
38+
39+
private class RemoveMethodDeclarationVisitor extends JavaVisitor<ExecutionContext> {
40+
private final MethodMatcher matcher;
41+
42+
public RemoveMethodDeclarationVisitor(MethodMatcher matcher) {
43+
this.matcher = matcher;
44+
}
45+
46+
public RemoveMethodDeclarationVisitor(String pattern) {
47+
this(new MethodMatcher(pattern));
48+
}
49+
50+
@Override
51+
public J visitMethodDeclaration(MethodDeclaration method, ExecutionContext executionContext) {
52+
return matcher.matches(method.getMethodType()) ? null : super.visitMethodDeclaration(method, executionContext);
53+
}
54+
}
55+
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ recipeList:
2525
- org.openrewrite.java.ChangeType:
2626
oldFullyQualifiedTypeName: dev.morphia.mapping.MapperOptions.PropertyDiscovery
2727
newFullyQualifiedTypeName: dev.morphia.mapping.PropertyDiscovery
28+
- org.openrewrite.java.RemoveMethodInvocations:
29+
methodPattern: dev.morphia.MorphiaDatastore enableDocumentValidation(..)
30+
- org.openrewrite.java.RemoveMethodInvocations:
31+
methodPattern: dev.morphia.MorphiaDatastore enableCaps(..)
32+
- org.openrewrite.java.RemoveMethodInvocations:
33+
methodPattern: dev.morphia.MorphiaDatastore ensureIndexes(..)
2834
- org.openrewrite.maven.UpgradeDependencyVersion:
2935
groupId: dev.morphia.morphia
3036
artifactId: morphia-core
@@ -44,3 +50,16 @@ recipeList:
4450
filePattern: src/test/java/dev/morphia/test/models/Keys.java
4551
- org.openrewrite.DeleteSourceFiles:
4652
filePattern: src/test/java/dev/morphia/test/MorphiaVersionTest.java
53+
- dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration:
54+
methodPattern: dev.morphia.test.query.TestQuery testCriteriaContainers()
55+
- dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration:
56+
methodPattern: dev.morphia.test.query.TestQuery check()
57+
- dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration:
58+
methodPattern: dev.morphia.test.query.TestQuery testKeys()
59+
- dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration:
60+
methodPattern: dev.morphia.test.query.TestQuery testKeyList()
61+
- dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration:
62+
methodPattern: dev.morphia.test.query.TestQuery testFetchKeys()
63+
- dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration:
64+
methodPattern: dev.morphia.test.query.TestQuery check(dev.morphia.query.Query)
65+
- org.openrewrite.java.RemoveUnusedImports

rewrite/src/test/java/dev/morphia/rewrite/recipes/test/MorphiaRewriteTest.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ public abstract class MorphiaRewriteTest implements RewriteTest {
2020

2121
@Override
2222
public void defaults(RecipeSpec spec) {
23-
// spec.recipe(getRecipe())
24-
// .parser(JavaParser.fromJavaVersion()
25-
// .classpath(classpath()));
26-
2723
Builder<? extends JavaParser, ?> builder = JavaParser.fromJavaVersion()
2824
.addClasspathEntry(Path.of(findMorphiaCore()));
2925
findMongoDependencies().stream()
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package dev.morphia.rewrite.recipes.test.internal;
2+
3+
import dev.morphia.rewrite.recipes.internal.RemoveMethodDeclaration;
4+
import dev.morphia.rewrite.recipes.test.MorphiaRewriteTest;
5+
6+
import org.jetbrains.annotations.NotNull;
7+
import org.junit.jupiter.api.Test;
8+
import org.openrewrite.Recipe;
9+
10+
import static org.openrewrite.java.Assertions.java;
11+
12+
class RemoveMethodDeclarationTest extends MorphiaRewriteTest {
13+
14+
@Override
15+
protected @NotNull Recipe getRecipe() {
16+
RemoveMethodDeclaration declaration = new RemoveMethodDeclaration();
17+
declaration.setMethodPattern("Test deleteMe(String)");
18+
return declaration;
19+
}
20+
21+
@Test
22+
public void testRemoveMethod() {
23+
rewriteRun(java("""
24+
public class Test {
25+
public String deleteMe() {
26+
return "Not today!";
27+
}
28+
29+
public void deleteMe(String param) {
30+
}
31+
}
32+
""",
33+
"""
34+
public class Test {
35+
public String deleteMe() {
36+
return "Not today!";
37+
}
38+
}
39+
"""));
40+
}
41+
}

0 commit comments

Comments
 (0)