Skip to content

Commit 7b2b21c

Browse files
committed
refactor: adapt creation pipeline to allow createLazy to work with function pointers
1 parent 1027aca commit 7b2b21c

File tree

4 files changed

+38
-16
lines changed

4 files changed

+38
-16
lines changed

lib/src/main/java/com/diffplug/spotless/generic/IdeaStep.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,34 @@
4848

4949
public final class IdeaStep {
5050

51+
private static final Logger LOGGER = LoggerFactory.getLogger(IdeaStep.class);
52+
5153
public static final String NAME = "IDEA";
5254

5355
public static final String IDEA_EXECUTABLE_DEFAULT = "idea";
5456

55-
private static final Logger LOGGER = LoggerFactory.getLogger(IdeaStep.class);
5657
public static final String IDEA_CONFIG_PATH_PROPERTY = "idea.config.path";
5758
public static final String IDEA_SYSTEM_PATH_PROPERTY = "idea.system.path";
59+
@Nonnull
60+
private final IdeaStepBuilder builder;
5861

59-
private IdeaStep() {}
62+
private IdeaStep(@Nonnull IdeaStepBuilder builder) {
63+
this.builder = builder;
64+
}
6065

61-
public static IdeaStepBuilder create(@Nonnull File buildDir) {
66+
public static IdeaStepBuilder newBuilder(@Nonnull File buildDir) {
6267
return new IdeaStepBuilder(Objects.requireNonNull(buildDir));
6368
}
6469

65-
private static FormatterStep create(@Nonnull IdeaStepBuilder builder) {
66-
Objects.requireNonNull(builder);
67-
return FormatterStep.createLazy(NAME,
68-
() -> createState(builder), State::toFunc);
70+
private static FormatterStep create(IdeaStepBuilder builder) {
71+
return new IdeaStep(builder).createFormatterStep();
6972
}
7073

71-
private static State createState(@Nonnull IdeaStepBuilder builder) {
74+
private FormatterStep createFormatterStep() {
75+
return FormatterStep.createLazy(NAME, this::createState, State::toFunc);
76+
}
77+
78+
private State createState() {
7279
return new State(Objects.requireNonNull(builder));
7380
}
7481

@@ -114,6 +121,17 @@ public IdeaStepBuilder setIdeaProperties(@Nonnull Map<String, String> ideaProper
114121
public FormatterStep build() {
115122
return create(this);
116123
}
124+
125+
@Override
126+
public String toString() {
127+
return String.format(
128+
"IdeaStepBuilder[useDefaults=%s, binaryPath=%s, codeStyleSettingsPath=%s, ideaProperties=%s, buildDir=%s]",
129+
this.useDefaults,
130+
this.binaryPath,
131+
this.codeStyleSettingsPath,
132+
this.ideaProperties,
133+
this.buildDir);
134+
}
117135
}
118136

119137
private static class State implements Serializable {
@@ -128,6 +146,7 @@ private static class State implements Serializable {
128146
private final TreeMap<String, String> ideaProperties;
129147

130148
private State(@Nonnull IdeaStepBuilder builder) {
149+
LOGGER.debug("Creating {} state with configuration {}", NAME, builder);
131150
this.uniqueBuildFolder = new File(builder.buildDir, UUID.randomUUID().toString());
132151
this.withDefaults = builder.useDefaults;
133152
this.codeStyleSettingsPath = builder.codeStyleSettingsPath;
@@ -203,7 +222,9 @@ private String format(IdeaStepFormatterCleanupResources ideaStepFormatterCleanup
203222
List<String> params = getParams(tempFile);
204223

205224
Map<String, String> env = createEnv();
225+
LOGGER.info("Launching IDEA formatter for orig file {} with params: {} and env: {}", file, params, env);
206226
var result = ideaStepFormatterCleanupResources.runner.exec(null, env, null, params);
227+
LOGGER.debug("command finished with exit code: {}", result.exitCode());
207228
LOGGER.debug("command finished with stdout: {}",
208229
result.assertExitZero(StandardCharsets.UTF_8));
209230
return Files.readString(tempFile.toPath(), StandardCharsets.UTF_8);
@@ -236,6 +257,7 @@ private File createIdeaPropertiesFile() {
236257
properties.put(IDEA_CONFIG_PATH_PROPERTY, ThrowingEx.get(configPath.toFile()::getCanonicalPath));
237258
properties.put(IDEA_SYSTEM_PATH_PROPERTY, ThrowingEx.get(systemPath.toFile()::getCanonicalPath));
238259

260+
LOGGER.debug("Creating IDEA properties file at {} with content: {}", ideaProps, properties);
239261
try (FileOutputStream out = new FileOutputStream(ideaProps.toFile())) {
240262
properties.store(out, "Generated by spotless");
241263
} catch (IOException e) {

plugin-gradle/src/main/java/com/diffplug/gradle/spotless/FormatExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -969,7 +969,7 @@ public class IdeaConfig {
969969
private final IdeaStep.IdeaStepBuilder builder;
970970

971971
IdeaConfig() {
972-
this.builder = IdeaStep.create(getProject().getLayout().getBuildDirectory().getAsFile().get());
972+
this.builder = IdeaStep.newBuilder(getProject().getLayout().getBuildDirectory().getAsFile().get());
973973
addStep(createStep());
974974
}
975975

plugin-maven/src/main/java/com/diffplug/spotless/maven/generic/Idea.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class Idea implements FormatterStepFactory {
3535

3636
@Override
3737
public FormatterStep newFormatterStep(FormatterStepConfig config) {
38-
return IdeaStep.create(config.getFileLocator().getBuildDir())
38+
return IdeaStep.newBuilder(config.getFileLocator().getBuildDir())
3939
.setUseDefaults(withDefaults)
4040
.setCodeStyleSettingsPath(configPath)
4141
.setBinaryPath(binaryPath)

testlib/src/test/java/com/diffplug/spotless/generic/IdeaStepTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class IdeaStepTest extends ResourceHarness {
3232

3333
@Test
3434
void name() throws Exception {
35-
FormatterStep step = IdeaStep.create(buildDir()).setUseDefaults(true).build();
35+
FormatterStep step = IdeaStep.newBuilder(buildDir()).setUseDefaults(true).build();
3636

3737
String name = step.getName();
3838

@@ -44,7 +44,7 @@ void notFormattings() throws Exception {
4444
File cleanFile = newFile("clean.java");
4545
String cleanJava = ResourceHarness.getTestResource("java/idea/full.clean.java");
4646
Files.write(cleanJava, cleanFile, StandardCharsets.UTF_8);
47-
FormatterStep step = IdeaStep.create(buildDir()).setUseDefaults(true).build();
47+
FormatterStep step = IdeaStep.newBuilder(buildDir()).setUseDefaults(true).build();
4848

4949
var result = step.format(cleanJava, cleanFile);
5050

@@ -57,7 +57,7 @@ void formattings() throws Exception {
5757
File dirtyFile = newFile("dirty.java");
5858
String dirtyJava = ResourceHarness.getTestResource("java/idea/full.dirty.java");
5959
Files.write(dirtyJava, dirtyFile, StandardCharsets.UTF_8);
60-
FormatterStep step = IdeaStep.create(buildDir()).setUseDefaults(true).build();
60+
FormatterStep step = IdeaStep.newBuilder(buildDir()).setUseDefaults(true).build();
6161

6262
var result = step.format(dirtyJava, dirtyFile);
6363

@@ -70,7 +70,7 @@ void formattingsWorkWithDefaultParameters() throws Exception {
7070
File dirtyFile = newFile("dirty.java");
7171
String dirtyJava = ResourceHarness.getTestResource("java/idea/full.dirty.java");
7272
Files.write(dirtyJava, dirtyFile, StandardCharsets.UTF_8);
73-
FormatterStep step = IdeaStep.create(buildDir()).build();
73+
FormatterStep step = IdeaStep.newBuilder(buildDir()).build();
7474

7575
var result = step.format(dirtyJava, dirtyFile);
7676

@@ -83,7 +83,7 @@ void formattingsWithOutDefaultDoesNothing() throws Exception {
8383
File dirtyFile = newFile("dirty.java");
8484
String dirtyJava = ResourceHarness.getTestResource("java/idea/full.dirty.java");
8585
Files.write(dirtyJava, dirtyFile, StandardCharsets.UTF_8);
86-
FormatterStep step = IdeaStep.create(buildDir()).setUseDefaults(false).build();
86+
FormatterStep step = IdeaStep.newBuilder(buildDir()).setUseDefaults(false).build();
8787

8888
var result = step.format(dirtyJava, dirtyFile);
8989

@@ -96,7 +96,7 @@ void configureFile() throws Exception {
9696
File cleanFile = newFile("clean.java");
9797
String cleanJava = ResourceHarness.getTestResource("java/idea/full.clean.java");
9898
Files.write(cleanJava, cleanFile, StandardCharsets.UTF_8);
99-
FormatterStep step = IdeaStep.create(buildDir()).setUseDefaults(true).build();
99+
FormatterStep step = IdeaStep.newBuilder(buildDir()).setUseDefaults(true).build();
100100

101101
var result = step.format(cleanJava, cleanFile);
102102

0 commit comments

Comments
 (0)