Skip to content

Commit f86c268

Browse files
committed
Make PalantirJavaFormatStep round-trippable
1 parent 3742870 commit f86c268

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

lib/src/main/java/com/diffplug/spotless/java/PalantirJavaFormatStep.java

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,32 @@
2323

2424
/** Wraps up <a href="https://github.com/palantir/palantir-java-format">palantir-java-format</a> fork of
2525
* <a href="https://github.com/google/google-java-format">google-java-format</a> as a FormatterStep. */
26-
public class PalantirJavaFormatStep {
27-
// prevent direct instantiation
28-
private PalantirJavaFormatStep() {}
29-
26+
public class PalantirJavaFormatStep implements RoundedStep {
27+
private static final long serialVersionUID = 1L;
3028
private static final boolean DEFAULT_FORMAT_JAVADOC = false;
3129
private static final String DEFAULT_STYLE = "PALANTIR";
3230
private static final String NAME = "palantir-java-format";
3331
public static final String MAVEN_COORDINATE = "com.palantir.javaformat:palantir-java-format:";
3432
private static final Jvm.Support<String> JVM_SUPPORT = Jvm.<String> support(NAME).add(8, "1.1.0").add(11, "2.28.0").add(21, "2.39.0");
3533

34+
/** The jar that contains the formatter. */
35+
private final JarState.Promised jarState;
36+
/** Version of the formatter jar. */
37+
private final String formatterVersion;
38+
private final String style;
39+
/** Whether to format Java docs. */
40+
private final boolean formatJavadoc;
41+
42+
private PalantirJavaFormatStep(JarState.Promised jarState,
43+
String formatterVersion,
44+
String style,
45+
boolean formatJavadoc) {
46+
this.jarState = jarState;
47+
this.formatterVersion = formatterVersion;
48+
this.style = style;
49+
this.formatJavadoc = formatJavadoc;
50+
}
51+
3652
/** Creates a step which formats everything - code, import order, and unused imports. */
3753
public static FormatterStep create(Provisioner provisioner) {
3854
return create(defaultVersion(), provisioner);
@@ -60,8 +76,9 @@ public static FormatterStep create(String version, String style, boolean formatJ
6076
Objects.requireNonNull(style, "style");
6177
Objects.requireNonNull(provisioner, "provisioner");
6278

63-
return FormatterStep.createLazy(NAME,
64-
() -> new State(JarState.from(MAVEN_COORDINATE + version, provisioner), version, style, formatJavadoc),
79+
return FormatterStep.create(NAME,
80+
new PalantirJavaFormatStep(JarState.promise(() -> JarState.from(MAVEN_COORDINATE + version, provisioner)), version, style, formatJavadoc),
81+
PalantirJavaFormatStep::equalityState,
6582
State::createFormat);
6683
}
6784

@@ -80,15 +97,16 @@ public static boolean defaultFormatJavadoc() {
8097
return DEFAULT_FORMAT_JAVADOC;
8198
}
8299

100+
private State equalityState() {
101+
return new State(jarState.get(), formatterVersion, style, formatJavadoc);
102+
}
103+
83104
private static final class State implements Serializable {
84105
private static final long serialVersionUID = 1L;
85106

86-
/** The jar that contains the formatter. */
87107
private final JarState jarState;
88-
/** Version of the formatter jar. */
89108
private final String formatterVersion;
90109
private final String style;
91-
/** Whether to format Java docs. */
92110
private final boolean formatJavadoc;
93111

94112
State(JarState jarState, String formatterVersion, String style, boolean formatJavadoc) {

0 commit comments

Comments
 (0)