23
23
import org .openrewrite .java .tree .J ;
24
24
import org .openrewrite .java .tree .JavaSourceFile ;
25
25
26
+ import java .util .Base64 ;
27
+
26
28
public class UseJavaUtilBase64 extends Recipe {
27
29
private final String sunPackage ;
28
30
@@ -64,9 +66,6 @@ protected JavaVisitor<ExecutionContext> getVisitor() {
64
66
MethodMatcher newBase64Decoder = new MethodMatcher (sunPackage + ".BASE64Decoder <constructor>()" );
65
67
66
68
return new JavaVisitor <ExecutionContext >() {
67
- final JavaTemplate getEncoderTemplate = JavaTemplate .builder (this ::getCursor , "Base64.getEncoder()" )
68
- .imports ("java.util.Base64" )
69
- .build ();
70
69
final JavaTemplate getDecoderTemplate = JavaTemplate .builder (this ::getCursor , "Base64.getDecoder()" )
71
70
.imports ("java.util.Base64" )
72
71
.build ();
@@ -81,7 +80,6 @@ protected JavaVisitor<ExecutionContext> getVisitor() {
81
80
82
81
@ Override
83
82
public J visitMethodInvocation (J .MethodInvocation method , ExecutionContext executionContext ) {
84
-
85
83
J .MethodInvocation m = (J .MethodInvocation ) super .visitMethodInvocation (method , executionContext );
86
84
if (base64EncodeMethod .matches (m ) &&
87
85
("encode" .equals (method .getSimpleName ()) || "encodeBuffer" .equals (method .getSimpleName ()))) {
@@ -118,7 +116,11 @@ public J visitJavaSourceFile(JavaSourceFile cu, ExecutionContext ctx) {
118
116
public J visitNewClass (J .NewClass newClass , ExecutionContext ctx ) {
119
117
J .NewClass c = (J .NewClass ) super .visitNewClass (newClass , ctx );
120
118
if (newBase64Encoder .matches (c )) {
121
- return c .withTemplate (getEncoderTemplate , c .getCoordinates ().replace ());
119
+ return c .withTemplate (
120
+ JavaTemplate .compile (this , "getEncoder" ,
121
+ () -> Base64 .getEncoder ()).build (),
122
+ c .getCoordinates ().replace ()
123
+ );
122
124
}
123
125
if (newBase64Decoder .matches (newClass )) {
124
126
return c .withTemplate (getDecoderTemplate , c .getCoordinates ().replace ());
0 commit comments