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