From 6a3c8448296056d4d3201771d01541754488014e Mon Sep 17 00:00:00 2001 From: Vincent Galloy Date: Thu, 4 Jan 2024 10:53:40 +0100 Subject: [PATCH] Use lazy task configuration Motivation: Do not eagerly create all tasks Modification Migrate from TaskContainer#create to TaskContainer#register --- src/main/java/com/bisnode/opa/OpaPlugin.java | 26 +++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/bisnode/opa/OpaPlugin.java b/src/main/java/com/bisnode/opa/OpaPlugin.java index 8e375c6..87899e2 100644 --- a/src/main/java/com/bisnode/opa/OpaPlugin.java +++ b/src/main/java/com/bisnode/opa/OpaPlugin.java @@ -21,23 +21,19 @@ public class OpaPlugin implements Plugin { @Override public void apply(Project project) { - project.getExtensions().create(OpaExtension.class, "opa", DefaultOpaExtension.class); + OpaExtension opaExtension = project.getExtensions().create(OpaExtension.class, "opa", DefaultOpaExtension.class); TaskContainer tasks = project.getTasks(); - List addedTasks = new ArrayList<>(); - addedTasks.add(tasks.create("startOpa", StartOpaTask.class)); - addedTasks.add(tasks.create("stopOpa", StopOpaTask.class)); - addedTasks.add(tasks.create("testRego", TestRegoTask.class)); - addedTasks.add(tasks.create("testRegoCoverage", TestRegoCoverageTask.class)); + List> addedTasks = new ArrayList<>(); + addedTasks.add(tasks.register("startOpa", StartOpaTask.class)); + addedTasks.add(tasks.register("stopOpa", StopOpaTask.class)); + addedTasks.add(tasks.register("testRego", TestRegoTask.class)); + addedTasks.add(tasks.register("testRegoCoverage", TestRegoCoverageTask.class)); - project.afterEvaluate(currentProject -> applyToRootProject(currentProject, addedTasks)); + project.afterEvaluate(currentProject -> applyToRootProject(currentProject, opaExtension, addedTasks)); } - private void applyToRootProject(Project project, List dependentTasks) { - OpaExtension opaExtension = project.getExtensions().findByType(OpaExtension.class); - if (opaExtension == null) { - return; - } + private void applyToRootProject(Project project, OpaExtension opaExtension, List> dependentTasks) { if (!ExecutableMode.DOWNLOAD.equals(opaExtension.getMode())) { return; } @@ -57,7 +53,7 @@ private void applyToRootProject(Project project, List dependentTasks) { } } - private synchronized void applyDownloadTask(Project project, String version, List dependentTasks) { + private synchronized void applyDownloadTask(Project project, String version, List> dependentTasks) { final String taskName = String.format("%s_%s", DownloadOpaTask.TASK_BASE_NAME, version); final File opaExecutable = OpaPlatform.getPlatform().getExecutablePath(project.getBuildDir().toPath(), version).toFile(); Set downloadTasks = project.getTasksByName(taskName, false); @@ -71,8 +67,8 @@ private synchronized void applyDownloadTask(Project project, String version, Lis downloadTasks.add(downloadTask.get()); } downloadTasks.forEach(downloadTask -> dependentTasks.forEach(task -> { - task.dependsOn(downloadTask); - final OpaExtension opaExtension = task.getExtensions().findByType(OpaExtension.class); + task.get().dependsOn(downloadTask); + final OpaExtension opaExtension = task.get().getExtensions().findByType(OpaExtension.class); if (opaExtension != null) { opaExtension.setLocation(opaExecutable.getParent()); }