Skip to content

Commit 9be7e5f

Browse files
committed
Kotlin dsl for yaml formatter in can't use the syntax jackson().yamlFeature(String, boolean)
Motivation In gradle, kotlin DSL is compiled. Since YamlExtension#jackson return a AJacksonGradleConfig class, we can't use the method #yamlFeature(String, boolean) without casting the object
1 parent b124927 commit 9be7e5f

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import com.diffplug.spotless.json.JacksonConfig;
2222
import com.diffplug.spotless.json.JacksonJsonStep;
2323

24-
public abstract class AJacksonGradleConfig {
24+
public abstract class AJacksonGradleConfig<T extends AJacksonGradleConfig> {
2525
protected final FormatExtension formatExtension;
2626

2727
protected JacksonConfig jacksonConfig;
@@ -35,17 +35,19 @@ public AJacksonGradleConfig(JacksonConfig jacksonConfig, FormatExtension formatE
3535
this.jacksonConfig = jacksonConfig;
3636
}
3737

38-
public AJacksonGradleConfig feature(String feature, boolean toggle) {
38+
public T feature(String feature, boolean toggle) {
3939
this.jacksonConfig.appendFeatureToToggle(Collections.singletonMap(feature, toggle));
4040
formatExtension.replaceStep(createStep());
41-
return this;
41+
return self();
4242
}
4343

44-
public AJacksonGradleConfig version(String version) {
44+
public T version(String version) {
4545
this.version = version;
4646
formatExtension.replaceStep(createStep());
47-
return this;
47+
return self();
4848
}
4949

50+
public abstract T self();
51+
5052
protected abstract FormatterStep createStep();
5153
}

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private FormatterStep createStep() {
132132
}
133133
}
134134

135-
public static class JacksonJsonGradleConfig extends AJacksonGradleConfig {
135+
public static class JacksonJsonGradleConfig extends AJacksonGradleConfig<JacksonJsonGradleConfig> {
136136
protected JacksonJsonConfig jacksonConfig;
137137

138138
public JacksonJsonGradleConfig(JacksonJsonConfig jacksonConfig, FormatExtension formatExtension) {
@@ -149,12 +149,17 @@ public JacksonJsonGradleConfig(FormatExtension formatExtension) {
149149
/**
150150
* Refers to com.fasterxml.jackson.core.JsonGenerator.Feature
151151
*/
152-
public AJacksonGradleConfig jsonFeature(String feature, boolean toggle) {
152+
public JacksonJsonGradleConfig jsonFeature(String feature, boolean toggle) {
153153
this.jacksonConfig.appendJsonFeatureToToggle(Collections.singletonMap(feature, toggle));
154154
formatExtension.replaceStep(createStep());
155155
return this;
156156
}
157157

158+
@Override
159+
public JacksonJsonGradleConfig self() {
160+
return this;
161+
}
162+
158163
// 'final' as it is called in the constructor
159164
@Override
160165
protected final FormatterStep createStep() {

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ protected void setupTask(SpotlessTask task) {
3939
super.setupTask(task);
4040
}
4141

42-
public AJacksonGradleConfig jackson() {
42+
public JacksonYamlGradleConfig jackson() {
4343
return new JacksonYamlGradleConfig(this);
4444
}
4545

46-
public class JacksonYamlGradleConfig extends AJacksonGradleConfig {
46+
public class JacksonYamlGradleConfig extends AJacksonGradleConfig<JacksonYamlGradleConfig> {
4747
protected JacksonYamlConfig jacksonConfig;
4848

4949
public JacksonYamlGradleConfig(JacksonYamlConfig jacksonConfig, FormatExtension formatExtension) {
@@ -61,12 +61,17 @@ public JacksonYamlGradleConfig(FormatExtension formatExtension) {
6161
/**
6262
* Refers to com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.Feature
6363
*/
64-
public AJacksonGradleConfig yamlFeature(String feature, boolean toggle) {
64+
public JacksonYamlGradleConfig yamlFeature(String feature, boolean toggle) {
6565
this.jacksonConfig.appendYamlFeatureToToggle(Collections.singletonMap(feature, toggle));
6666
formatExtension.replaceStep(createStep());
6767
return this;
6868
}
6969

70+
@Override
71+
public JacksonYamlGradleConfig self() {
72+
return this;
73+
}
74+
7075
// 'final' as it is called in the constructor
7176
@Override
7277
protected final FormatterStep createStep() {

0 commit comments

Comments
 (0)