Reland "Update gradle custom tasks to use worker api"
This reverts commit 4fa23f0a7a389c73ae8cf49f957ec09996216fb5.
Bug: b/270105162
Change-Id: I4941884c3279fb417a587ec2ae7e21113845141c
diff --git a/buildSrc/src/main/java/smali/SmaliTask.java b/buildSrc/src/main/java/smali/SmaliTask.java
index 845592e..dd4e10c 100644
--- a/buildSrc/src/main/java/smali/SmaliTask.java
+++ b/buildSrc/src/main/java/smali/SmaliTask.java
@@ -9,14 +9,16 @@
import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.List;
-import java.util.Set;
import javax.inject.Inject;
import org.gradle.api.DefaultTask;
import org.gradle.api.file.FileTree;
+import org.gradle.api.file.RegularFileProperty;
+import org.gradle.api.provider.SetProperty;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
-import org.gradle.workers.IsolationMode;
+import org.gradle.workers.WorkAction;
+import org.gradle.workers.WorkParameters;
import org.gradle.workers.WorkerExecutor;
import org.jf.smali.Smali;
import org.jf.smali.SmaliOptions;
@@ -53,28 +55,33 @@
@TaskAction
void exec() {
- workerExecutor.submit(RunSmali.class, config -> {
- config.setIsolationMode(IsolationMode.NONE);
- config.params(source.getFiles(), destination);
- });
+ workerExecutor
+ .noIsolation()
+ .submit(
+ RunSmali.class,
+ parameters -> {
+ parameters.getSources().set(source.getFiles());
+ parameters.getDestination().set(destination);
+ });
}
- public static class RunSmali implements Runnable {
- private final Set<File> sources;
- private final File destination;
+ public interface RunSmaliParameters extends WorkParameters {
- @Inject
- public RunSmali(Set<File> sources, File destination) {
- this.sources = sources;
- this.destination = destination;
- }
+ SetProperty<File> getSources();
+
+ RegularFileProperty getDestination();
+ }
+
+ public abstract static class RunSmali implements WorkAction<RunSmaliParameters> {
@Override
- public void run() {
+ public void execute() {
try {
- List<String> fileNames = sources.stream().map(File::toString).collect(toList());
+ RunSmaliParameters parameters = getParameters();
+ List<String> fileNames =
+ parameters.getSources().get().stream().map(File::toString).collect(toList());
SmaliOptions options = new SmaliOptions();
- options.outputDexFile = destination.getCanonicalPath();
+ options.outputDexFile = parameters.getDestination().getAsFile().get().getCanonicalPath();
Smali.assemble(options, fileNames);
} catch (IOException e) {
throw new UncheckedIOException(e);