@@ -88,17 +88,34 @@ public static FormatterStep create(String groupArtifact, String version, String
88
88
89
89
/** Creates a step which formats everything - groupArtifact, code, import order, and unused imports - and optionally reflows long strings. */
90
90
public static FormatterStep create (String groupArtifact , String version , String style , Provisioner provisioner , boolean reflowLongStrings , boolean reorderImports , boolean formatJavadoc ) {
91
+ return createInternally (groupArtifact , version , style , provisioner , reflowLongStrings , reorderImports , formatJavadoc , false );
92
+ }
93
+
94
+ static FormatterStep createRemoveUnusedImportsOnly (Provisioner provisioner ) {
95
+ return createInternally (MAVEN_COORDINATE , defaultVersion (), defaultStyle (), provisioner , defaultReflowLongStrings (), defaultReorderImports (), defaultFormatJavadoc (), true );
96
+ }
97
+
98
+ private static FormatterStep createInternally (String groupArtifact , String version , String style , Provisioner provisioner , boolean reflowLongStrings , boolean reorderImports , boolean formatJavadoc , boolean removeImports ) {
91
99
Objects .requireNonNull (groupArtifact , "groupArtifact" );
92
100
if (groupArtifact .chars ().filter (ch -> ch == ':' ).count () != 1 ) {
93
101
throw new IllegalArgumentException ("groupArtifact must be in the form 'groupId:artifactId'" );
94
102
}
95
103
Objects .requireNonNull (version , "version" );
96
104
Objects .requireNonNull (style , "style" );
97
105
Objects .requireNonNull (provisioner , "provisioner" );
98
- return FormatterStep .create (NAME ,
99
- new GoogleJavaFormatStep (JarState .promise (() -> JarState .from (groupArtifact + ":" + version , provisioner )), version , style , reflowLongStrings , reorderImports , formatJavadoc ),
100
- GoogleJavaFormatStep ::equalityState ,
101
- State ::createFormat );
106
+
107
+ GoogleJavaFormatStep step = new GoogleJavaFormatStep (JarState .promise (() -> JarState .from (groupArtifact + ":" + version , provisioner )), version , style , reflowLongStrings , reorderImports , formatJavadoc );
108
+ if (removeImports ) {
109
+ return FormatterStep .create (NAME ,
110
+ step ,
111
+ GoogleJavaFormatStep ::equalityState ,
112
+ State ::createRemoveUnusedImportsOnly );
113
+ } else {
114
+ return FormatterStep .create (NAME ,
115
+ step ,
116
+ GoogleJavaFormatStep ::equalityState ,
117
+ State ::createFormat );
118
+ }
102
119
}
103
120
104
121
private static final Jvm .Support <String > JVM_SUPPORT = Jvm .<String > support (NAME )
@@ -136,7 +153,7 @@ private State equalityState() {
136
153
return new State (version , style , jarState .get (), reflowLongStrings , reorderImports , formatJavadoc );
137
154
}
138
155
139
- static final class State implements Serializable {
156
+ private static final class State implements Serializable {
140
157
private static final long serialVersionUID = 1L ;
141
158
142
159
private final JarState jarState ;
@@ -146,10 +163,6 @@ static final class State implements Serializable {
146
163
private final boolean reorderImports ;
147
164
private final boolean formatJavadoc ;
148
165
149
- State (String version , JarState jarState ) {
150
- this (version , DEFAULT_STYLE , jarState , DEFAULT_REFLOW_LONG_STRINGS , DEFAULT_REORDER_IMPORTS , DEFAULT_FORMAT_JAVADOC );
151
- }
152
-
153
166
State (String version ,
154
167
String style ,
155
168
JarState jarState ,
0 commit comments