23
23
24
24
/** Wraps up <a href="https://github.com/palantir/palantir-java-format">palantir-java-format</a> fork of
25
25
* <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 ;
30
28
private static final boolean DEFAULT_FORMAT_JAVADOC = false ;
31
29
private static final String DEFAULT_STYLE = "PALANTIR" ;
32
30
private static final String NAME = "palantir-java-format" ;
33
31
public static final String MAVEN_COORDINATE = "com.palantir.javaformat:palantir-java-format:" ;
34
32
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" );
35
33
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
+
36
52
/** Creates a step which formats everything - code, import order, and unused imports. */
37
53
public static FormatterStep create (Provisioner provisioner ) {
38
54
return create (defaultVersion (), provisioner );
@@ -60,8 +76,9 @@ public static FormatterStep create(String version, String style, boolean formatJ
60
76
Objects .requireNonNull (style , "style" );
61
77
Objects .requireNonNull (provisioner , "provisioner" );
62
78
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 ,
65
82
State ::createFormat );
66
83
}
67
84
@@ -80,15 +97,16 @@ public static boolean defaultFormatJavadoc() {
80
97
return DEFAULT_FORMAT_JAVADOC ;
81
98
}
82
99
100
+ private State equalityState () {
101
+ return new State (jarState .get (), formatterVersion , style , formatJavadoc );
102
+ }
103
+
83
104
private static final class State implements Serializable {
84
105
private static final long serialVersionUID = 1L ;
85
106
86
- /** The jar that contains the formatter. */
87
107
private final JarState jarState ;
88
- /** Version of the formatter jar. */
89
108
private final String formatterVersion ;
90
109
private final String style ;
91
- /** Whether to format Java docs. */
92
110
private final boolean formatJavadoc ;
93
111
94
112
State (JarState jarState , String formatterVersion , String style , boolean formatJavadoc ) {
0 commit comments