Skip to content

Commit 00646fe

Browse files
committed
And we guard every transient getter of SpotlessTask with hydrateIfNull.
1 parent b92b256 commit 00646fe

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

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

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ public abstract class SpotlessTask extends DefaultTask {
4848
@Internal
4949
abstract Property<SpotlessTaskService> getTaskService();
5050

51+
private void hydrateIfNull(Object o) {
52+
if (o == null) {
53+
getTaskService().get().hydrate(this);
54+
}
55+
}
56+
5157
// set by SpotlessExtension, but possibly overridden by FormatExtension
5258
protected String encoding = "UTF-8";
5359

@@ -64,6 +70,7 @@ public void setEncoding(String encoding) {
6470

6571
@Input
6672
public LineEnding.Policy getLineEndingsPolicy() {
73+
hydrateIfNull(lineEndingsPolicy);
6774
return lineEndingsPolicy;
6875
}
6976

@@ -82,12 +89,19 @@ public void setLineEndingsPolicy(LineEnding.Policy lineEndingsPolicy) {
8289
* compared to using the project root.
8390
*/
8491
private transient ObjectId subtreeSha = ObjectId.zeroId();
92+
/** Stored so that the configuration cache can recreate the GitRatchetGradle state. */
93+
protected transient String ratchetFrom;
8594

8695
public void setupRatchet(String ratchetFrom) {
87-
ratchet = getTaskService().get().getRatchet();
88-
File projectDir = getProjectDir().get().getAsFile();
89-
rootTreeSha = ratchet.rootTreeShaOf(projectDir, ratchetFrom);
90-
subtreeSha = ratchet.subtreeShaOf(projectDir, rootTreeSha);
96+
this.ratchetFrom = ratchetFrom;
97+
if (!ratchetFrom.isEmpty()) {
98+
ratchet = getTaskService().get().getRatchet();
99+
File projectDir = getProjectDir().get().getAsFile();
100+
rootTreeSha = ratchet.rootTreeShaOf(projectDir, ratchetFrom);
101+
subtreeSha = ratchet.subtreeShaOf(projectDir, rootTreeSha);
102+
} else {
103+
subtreeSha = ObjectId.zeroId();
104+
}
91105
}
92106

93107
@Internal
@@ -105,6 +119,7 @@ ObjectId getRootTreeSha() {
105119

106120
@Input
107121
public ObjectId getRatchetSha() {
122+
hydrateIfNull(subtreeSha);
108123
return subtreeSha;
109124
}
110125

@@ -147,6 +162,7 @@ public File getOutputDirectory() {
147162

148163
@Input
149164
public List<FormatterStep> getSteps() {
165+
hydrateIfNull(steps);
150166
return Collections.unmodifiableList(steps);
151167
}
152168

0 commit comments

Comments
 (0)