This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch release122 in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 91c7976690b4ad42d2bea5bb831a57ffbe249da6 Author: Jaroslav Tulach <jaroslav.tul...@oracle.com> AuthorDate: Mon Oct 19 12:15:25 2020 +0200 Notify successful execution as soon as Gradle build succeeds --- .../modules/gradle/ActionProviderImpl.java | 3 +- .../modules/gradle/NbGradleProjectImpl.java | 4 +- .../modules/gradle/api/execute/RunUtils.java | 4 +- .../gradle/execute/GradleDaemonExecutor.java | 44 ++++++++++++++++++++++ 4 files changed, 50 insertions(+), 5 deletions(-) diff --git a/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java b/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java index 97831ad..03ad503 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java @@ -269,7 +269,8 @@ public class ActionProviderImpl implements ActionProvider { boolean canReload = project.getLookup().lookup(BeforeReloadActionHook.class).beforeReload(action, outerCtx, task.result(), out1); if (needReload && canReload) { String[] reloadArgs = RunUtils.evaluateActionArgs(project, mapping.getName(), mapping.getReloadArgs(), outerCtx); - prj.reloadProject(true, maxQualily, reloadArgs); + RequestProcessor.Task reloadTask = prj.reloadProject(true, maxQualily, reloadArgs); + reloadTask.waitFinished(); } project.getLookup().lookup(AfterBuildActionHook.class).afterAction(action, outerCtx, task.result(), out1); for (AfterBuildActionHook l : context.lookupAll(AfterBuildActionHook.class)) { diff --git a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java index 103f3ba..276d982 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java @@ -255,8 +255,8 @@ public final class NbGradleProjectImpl implements Project { return prj; } - void reloadProject(final boolean ignoreCache, final Quality aim, final String... args) { - RELOAD_RP.post(() -> { + RequestProcessor.Task reloadProject(final boolean ignoreCache, final Quality aim, final String... args) { + return RELOAD_RP.post(() -> { project = loadProject(ignoreCache, aim, args); ACCESSOR.doFireReload(watcher); }); diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/execute/RunUtils.java b/extide/gradle/src/org/netbeans/modules/gradle/api/execute/RunUtils.java index 5bf7bde..3f3de2d 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/execute/RunUtils.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/execute/RunUtils.java @@ -120,11 +120,11 @@ public final class RunUtils { public static ExecutorTask executeGradle(RunConfig config, String initialOutput) { LifecycleManager.getDefault().saveAll(); - GradleExecutor exec = new GradleDaemonExecutor(config); + GradleDaemonExecutor exec = new GradleDaemonExecutor(config); ExecutorTask task = executeGradleImpl(config.getTaskDisplayName(), exec, initialOutput); GRADLE_TASKS.put(config, exec); - return task; + return exec.createTask(task); } /** diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java b/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java index 51a7645..410b324 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java @@ -54,12 +54,15 @@ import org.netbeans.api.progress.ProgressHandle; import org.netbeans.api.progress.ProgressHandleFactory; import org.netbeans.api.project.ProjectInformation; import org.netbeans.api.project.ProjectUtils; +import org.netbeans.modules.gradle.NbGradleProjectImpl; +import org.netbeans.modules.gradle.api.NbGradleProject; import org.netbeans.modules.gradle.api.execute.GradleDistributionManager.GradleDistribution; import org.netbeans.modules.gradle.spi.GradleFiles; import org.netbeans.modules.gradle.spi.execute.GradleDistributionProvider; import org.netbeans.modules.gradle.spi.execute.GradleJavaPlatformProvider; import org.netbeans.spi.project.ui.support.BuildExecutionSupport; import org.openide.awt.StatusDisplayer; +import org.openide.execution.ExecutorTask; import org.openide.filesystems.FileUtil; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; @@ -83,6 +86,7 @@ public final class GradleDaemonExecutor extends AbstractGradleExecutor { private OutputStream outStream; private OutputStream errStream; private boolean cancelling; + private GradleTask gradleTask; @SuppressWarnings("LeakingThisInConstructor") public GradleDaemonExecutor(RunConfig config) { @@ -196,6 +200,7 @@ public final class GradleDaemonExecutor extends AbstractGradleExecutor { } buildLauncher.run(); StatusDisplayer.getDefault().setStatusText(Bundle.BUILD_SUCCESS(getProjectName())); + gradleTask.finish(0); } catch (BuildCancelledException ex) { showAbort(); } catch (UncheckedException | BuildException ex) { @@ -331,4 +336,43 @@ public final class GradleDaemonExecutor extends AbstractGradleExecutor { private static String gradleExecutable() { return Utilities.isWindows() ? "bin\\gradle.bat" : "bin/gradle"; //NOI18N } + + public final ExecutorTask createTask(ExecutorTask process) { + assert gradleTask == null; + gradleTask = new GradleTask(process); + return gradleTask; + } + + private static final class GradleTask extends ExecutorTask { + private final ExecutorTask delegate; + private Integer result; + + GradleTask(ExecutorTask delegate) { + super(() -> {}); + this.delegate = delegate; + } + + @Override + public void stop() { + this.delegate.stop(); + } + + @Override + public int result() { + if (result != null) { + return result; + } + return this.delegate.result(); + } + + @Override + public InputOutput getInputOutput() { + return this.delegate.getInputOutput(); + } + + public void finish(int result) { + this.result = result; + notifyFinished(); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists