You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2020/10/23 01:10:52 UTC

[netbeans] 05/18: Notify successful execution as soon as Gradle build succeeds

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 <ja...@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-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists