Skip to content

Commit

Permalink
Produce a warning for the user when the problem resolution/priming bu…
Browse files Browse the repository at this point in the history
…ild fails.
  • Loading branch information
lahodaj committed May 10, 2024
1 parent 11a9566 commit d826509
Showing 1 changed file with 30 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand All @@ -31,6 +32,9 @@
import org.netbeans.modules.maven.NbMavenProjectImpl;
import org.netbeans.modules.maven.TestChecker;
import org.netbeans.modules.maven.api.NbMavenProject;
import org.netbeans.modules.maven.api.execute.ExecutionContext;
import org.netbeans.modules.maven.api.execute.ExecutionResultChecker;
import org.netbeans.modules.maven.api.execute.RunConfig;
import org.netbeans.modules.maven.api.execute.RunConfig.ReactorStyle;
import org.netbeans.modules.maven.api.execute.RunUtils;
import org.netbeans.modules.maven.execute.BeanRunConfig;
Expand All @@ -39,6 +43,7 @@
import org.netbeans.modules.maven.modelcache.MavenProjectCache;
import org.netbeans.modules.maven.options.MavenSettings;
import static org.netbeans.modules.maven.problems.Bundle.*;
import org.netbeans.spi.project.ProjectServiceProvider;
import org.netbeans.spi.project.ui.ProjectProblemResolver;
import org.netbeans.spi.project.ui.ProjectProblemsProvider;
import org.openide.execution.ExecutorTask;
Expand All @@ -54,7 +59,8 @@
* to believe that there really is a problem with their project, not NetBeans.
*/
@Messages({"ACT_validate=Priming Build",
"ACT_PrimingComplete=Priming build was completed",
"ACT_PrimingComplete=Priming build was completed.",
"ACT_PrimingFailed=Priming build failed. Please check project build output and resolve problems manually.",
"ACT_start_validate=Priming build was started."})
public class SanityBuildAction implements ProjectProblemResolver {
private static final Logger LOG = Logger.getLogger(SanityBuildAction.class.getName());
Expand Down Expand Up @@ -116,6 +122,7 @@ public void run() {
}
try {
LOG.log(Level.FINE, "Configuring sanity build");
AtomicInteger result = new AtomicInteger();
BeanRunConfig config = new BeanRunConfig();
if (context != null) {
config.setActionContext(context);
Expand All @@ -138,6 +145,7 @@ public void run() {
String label = build_label(nbproject.getProjectDirectory().getNameExt());
config.setExecutionName(label);
config.setTaskDisplayName(label);
config.setInternalProperty(SanityBuildAction.class.getName(), result);

MavenProxySupport mps = nbproject.getLookup().lookup(MavenProxySupport.class);
if (mps != null) {
Expand All @@ -164,7 +172,12 @@ public void run() {
ExecutorTask et = RunUtils.run(config);
if (et != null) {
et.waitFinished();
ProjectProblemsProvider.Result r = ProjectProblemsProvider.Result.create(ProjectProblemsProvider.Status.RESOLVED, ACT_start_validate());
ProjectProblemsProvider.Result r;
if (result.get() == 0) {
r = ProjectProblemsProvider.Result.create(ProjectProblemsProvider.Status.RESOLVED, ACT_PrimingComplete());
} else {
r = ProjectProblemsProvider.Result.create(ProjectProblemsProvider.Status.UNRESOLVED, ACT_PrimingFailed());
}
LOG.log(Level.FINE, "Sanity build of {0} finished, took {1} ms.", new Object[] { nbproject, System.currentTimeMillis() - t});
publicResult.complete(r);
}
Expand Down Expand Up @@ -210,5 +223,19 @@ public boolean equals(Object obj) {
return true;
}



@ProjectServiceProvider(service=ExecutionResultChecker.class, projectType="org-netbeans-modules-maven")
public static class ResultChecker implements ExecutionResultChecker {

@Override
public void executionResult(RunConfig config, ExecutionContext res, int resultCode) {
Object resultObj = config.getInternalProperties().get(SanityBuildAction.class.getName());
if (!(resultObj instanceof AtomicInteger)) {
return ;
}
AtomicInteger result = (AtomicInteger) resultObj;
result.set(resultCode);
}
}

}

0 comments on commit d826509

Please sign in to comment.