Skip to content

Commit 4c17bc3

Browse files
authored
Limit JodaTimeRecipe import changes (#666)
* Limit JodaTimeRecipe import changes - Fixes #665 * Remove unused import * Remove unused import
1 parent ffa69ef commit 4c17bc3

File tree

3 files changed

+38
-32
lines changed

3 files changed

+38
-32
lines changed

src/main/java/org/openrewrite/java/migrate/joda/JodaTimeRecipe.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
import lombok.Getter;
1919
import org.jspecify.annotations.Nullable;
2020
import org.openrewrite.ExecutionContext;
21+
import org.openrewrite.Preconditions;
2122
import org.openrewrite.ScanningRecipe;
23+
import org.openrewrite.TreeVisitor;
24+
import org.openrewrite.java.search.UsesType;
2225
import org.openrewrite.java.tree.J;
2326
import org.openrewrite.java.tree.J.VariableDeclarations.NamedVariable;
2427
import org.openrewrite.java.tree.JavaType;
@@ -42,13 +45,14 @@ public Accumulator getInitialValue(ExecutionContext ctx) {
4245
}
4346

4447
@Override
45-
public JodaTimeScanner getScanner(Accumulator acc) {
48+
public TreeVisitor<?, ExecutionContext> getScanner(Accumulator acc) {
4649
return new JodaTimeScanner(acc);
4750
}
4851

4952
@Override
50-
public JodaTimeVisitor getVisitor(Accumulator acc) {
51-
return new JodaTimeVisitor(acc, true, new LinkedList<>());
53+
public TreeVisitor<?, ExecutionContext> getVisitor(Accumulator acc) {
54+
JodaTimeVisitor jodaTimeVisitor = new JodaTimeVisitor(acc, true, new LinkedList<>());
55+
return Preconditions.check(new UsesType<>("org.joda.time.*", true), jodaTimeVisitor);
5256
}
5357

5458
@Getter

src/main/java/org/openrewrite/java/migrate/joda/JodaTimeVisitor.java

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,29 +59,32 @@ public Javadoc visitReference(Javadoc.Reference reference, ExecutionContext ctx)
5959

6060
@Override
6161
public @NonNull J visitCompilationUnit(@NonNull J.CompilationUnit cu, @NonNull ExecutionContext ctx) {
62-
maybeRemoveImport(JODA_DATE_TIME);
63-
maybeRemoveImport(JODA_DATE_TIME_ZONE);
64-
maybeRemoveImport(JODA_TIME_FORMAT);
65-
maybeRemoveImport(JODA_DURATION);
66-
maybeRemoveImport(JODA_ABSTRACT_INSTANT);
67-
maybeRemoveImport(JODA_INSTANT);
68-
maybeRemoveImport(JODA_INTERVAL);
69-
maybeRemoveImport("java.util.Locale");
62+
J j = super.visitCompilationUnit(cu, ctx);
63+
if (j != cu) {
64+
maybeRemoveImport(JODA_DATE_TIME);
65+
maybeRemoveImport(JODA_DATE_TIME_ZONE);
66+
maybeRemoveImport(JODA_TIME_FORMAT);
67+
maybeRemoveImport(JODA_DURATION);
68+
maybeRemoveImport(JODA_ABSTRACT_INSTANT);
69+
maybeRemoveImport(JODA_INSTANT);
70+
maybeRemoveImport(JODA_INTERVAL);
71+
maybeRemoveImport("java.util.Locale");
7072

71-
maybeAddImport(JAVA_DATE_TIME);
72-
maybeAddImport(JAVA_ZONE_OFFSET);
73-
maybeAddImport(JAVA_ZONE_ID);
74-
maybeAddImport(JAVA_INSTANT);
75-
maybeAddImport(JAVA_TIME_FORMATTER);
76-
maybeAddImport(JAVA_TIME_FORMAT_STYLE);
77-
maybeAddImport(JAVA_DURATION);
78-
maybeAddImport(JAVA_LOCAL_DATE);
79-
maybeAddImport(JAVA_LOCAL_TIME);
80-
maybeAddImport(JAVA_TEMPORAL_ISO_FIELDS);
81-
maybeAddImport(JAVA_CHRONO_FIELD);
82-
maybeAddImport(JAVA_UTIL_DATE);
83-
maybeAddImport(THREE_TEN_EXTRA_INTERVAL);
84-
return super.visitCompilationUnit(cu, ctx);
73+
maybeAddImport(JAVA_DATE_TIME);
74+
maybeAddImport(JAVA_ZONE_OFFSET);
75+
maybeAddImport(JAVA_ZONE_ID);
76+
maybeAddImport(JAVA_INSTANT);
77+
maybeAddImport(JAVA_TIME_FORMATTER);
78+
maybeAddImport(JAVA_TIME_FORMAT_STYLE);
79+
maybeAddImport(JAVA_DURATION);
80+
maybeAddImport(JAVA_LOCAL_DATE);
81+
maybeAddImport(JAVA_LOCAL_TIME);
82+
maybeAddImport(JAVA_TEMPORAL_ISO_FIELDS);
83+
maybeAddImport(JAVA_CHRONO_FIELD);
84+
maybeAddImport(JAVA_UTIL_DATE);
85+
maybeAddImport(THREE_TEN_EXTRA_INTERVAL);
86+
}
87+
return j;
8588
}
8689

8790
@Override

src/test/java/org/openrewrite/java/migrate/joda/JodaTimeVisitorTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.openrewrite.java.migrate.joda;
1717

18-
import org.junit.jupiter.api.Disabled;
1918
import org.junit.jupiter.api.Test;
2019
import org.openrewrite.DocumentExample;
2120
import org.openrewrite.java.JavaParser;
@@ -425,7 +424,8 @@ void migrateAbstractInstant() {
425424
java(
426425
"""
427426
import org.joda.time.DateTime;
428-
import org.joda.time.Duration;import org.joda.time.Instant;
427+
import org.joda.time.Duration;
428+
import org.joda.time.Instant;
429429
import org.joda.time.format.DateTimeFormat;
430430
431431
class A {
@@ -484,7 +484,6 @@ public void foo() {
484484
);
485485
}
486486

487-
@Disabled
488487
@Test
489488
void migrateAbstractDateTime() {
490489
// language=java
@@ -804,7 +803,7 @@ void migrateInterval() {
804803
import org.joda.time.Duration;
805804
import org.joda.time.Interval;
806805
import org.joda.time.DateTimeZone;
807-
806+
808807
class A {
809808
public void foo() {
810809
System.out.println(new Interval(50, 100));
@@ -820,7 +819,7 @@ public void foo() {
820819
import java.time.Duration;
821820
import java.time.Instant;
822821
import java.time.ZonedDateTime;
823-
822+
824823
class A {
825824
public void foo() {
826825
System.out.println(Interval.of(Instant.ofEpochMilli(50), Instant.ofEpochMilli(100)));
@@ -880,7 +879,7 @@ void migrateBaseDuration() {
880879
java(
881880
"""
882881
import org.joda.time.Duration;
883-
882+
884883
class A {
885884
public void foo() {
886885
Duration d = new Duration(100);
@@ -909,7 +908,7 @@ void migrateBaseInterval() {
909908
java(
910909
"""
911910
import org.joda.time.Interval;
912-
911+
913912
class A {
914913
public void foo() {
915914
Interval i = new Interval(50, 100);

0 commit comments

Comments
 (0)