Skip to content

Commit 3d12cb0

Browse files
committed
Workaround to preserve instanceof BuildServiceProvider (blech, see #1260 for my complaint).
1 parent 9ab5fe7 commit 3d12cb0

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import javax.inject.Inject;
2525

2626
import org.gradle.api.DefaultTask;
27-
import org.gradle.api.provider.Property;
27+
import org.gradle.api.provider.Provider;
2828
import org.gradle.api.services.BuildServiceRegistry;
2929
import org.gradle.api.tasks.Input;
3030
import org.gradle.api.tasks.Internal;
@@ -63,9 +63,9 @@ void setup() {
6363
Preconditions.checkArgument(getProject().getRootProject() == getProject(), "Can only be used on the root project");
6464
String compositeBuildSuffix = getName().substring(TASK_NAME.length()); // see https://github.com/diffplug/spotless/pull/1001
6565
BuildServiceRegistry buildServices = getProject().getGradle().getSharedServices();
66-
getTaskService().set(buildServices.registerIfAbsent("SpotlessTaskService" + compositeBuildSuffix, SpotlessTaskService.class, spec -> {}));
67-
usesService(getTaskService());
68-
getBuildEventsListenerRegistry().onTaskCompletion(getTaskService());
66+
taskService = buildServices.registerIfAbsent("SpotlessTaskService" + compositeBuildSuffix, SpotlessTaskService.class, spec -> {});
67+
usesService(taskService);
68+
getBuildEventsListenerRegistry().onTaskCompletion(taskService);
6969
unitOutput = new File(getProject().getBuildDir(), "tmp/spotless-register-dependencies");
7070
}
7171

@@ -89,8 +89,13 @@ public void trivialFunction() throws IOException {
8989
Files.write(Integer.toString(1), unitOutput, StandardCharsets.UTF_8);
9090
}
9191

92+
// this field is stupid, but we need it, see https://github.com/diffplug/spotless/issues/1260
93+
private Provider<SpotlessTaskService> taskService;
94+
9295
@Internal
93-
abstract Property<SpotlessTaskService> getTaskService();
96+
public Provider<SpotlessTaskService> getTaskService() {
97+
return taskService;
98+
}
9499

95100
@Inject
96101
protected abstract BuildEventsListenerRegistry getBuildEventsListenerRegistry();

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,20 @@ public abstract class SpotlessTaskImpl extends SpotlessTask {
4646
abstract DirectoryProperty getProjectDir();
4747

4848
void init(Provider<SpotlessTaskService> service) {
49+
taskServiceProvider = service;
4950
usesService(service);
5051
getTaskService().set(service);
5152
getProjectDir().set(getProject().getProjectDir());
5253
}
5354

55+
// this field is stupid, but we need it, see https://github.com/diffplug/spotless/issues/1260
56+
private transient Provider<SpotlessTaskService> taskServiceProvider;
57+
58+
@Internal
59+
Provider<SpotlessTaskService> getTaskServiceProvider() {
60+
return taskServiceProvider;
61+
}
62+
5463
@Inject
5564
protected abstract FileSystemOperations getFs();
5665

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ static abstract class ClientTask extends DefaultTask {
105105
protected abstract ObjectFactory getConfigCacheWorkaround();
106106

107107
void init(SpotlessTaskImpl impl) {
108-
usesService(impl.getTaskService());
108+
usesService(impl.getTaskServiceProvider());
109109
getSpotlessOutDirectory().set(impl.getOutputDirectory());
110110
getTaskService().set(impl.getTaskService());
111111
getProjectDir().set(impl.getProjectDir());

0 commit comments

Comments
 (0)