From 0895ae052ba8289a36f337b303fb1f54d9e030e8 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 18 Nov 2013 17:15:52 +0400 Subject: [PATCH] EA-49679 - NSE: Thread.run --- .../maven/server/MavenServerEmbedder.java | 2 +- .../embedder/Maven2ServerEmbedderImpl.java | 2 +- .../server/Maven3ServerEmbedderImpl.java | 2 +- .../maven/server/MavenEffectivePomDumper.java | 46 +++++++++++-------- .../actions/MavenShowEffectivePom.java | 5 +- .../maven/server/MavenEmbedderWrapper.java | 2 +- 6 files changed, 34 insertions(+), 25 deletions(-) diff --git a/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java b/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java index dba0c44502b2..8fe4348a0ade 100644 --- a/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java +++ b/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java @@ -36,7 +36,7 @@ public interface MavenServerEmbedder extends Remote { @NotNull Collection activeProfiles) throws RemoteException, MavenServerProcessCanceledException; - @NotNull + @Nullable String evaluateEffectivePom(@NotNull File file, @NotNull List activeProfiles) throws RemoteException, MavenServerProcessCanceledException; diff --git a/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java b/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java index 89f97f522910..630e664c2366 100644 --- a/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java +++ b/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java @@ -198,7 +198,7 @@ public class Maven2ServerEmbedderImpl extends MavenRemoteObject implements Maven return result; } - @NotNull + @Nullable public String evaluateEffectivePom(@NotNull File file, @NotNull List activeProfiles) { throw new UnsupportedOperationException(); } diff --git a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java index bffa0403e26c..6a927fc786a8 100644 --- a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java +++ b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java @@ -287,7 +287,7 @@ public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements Maven return createExecutionResult(file, result, listener.getRootNode()); } - @NotNull + @Nullable @Override public String evaluateEffectivePom(@NotNull File file, @NotNull List activeProfiles) throws RemoteException, MavenServerProcessCanceledException { diff --git a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/MavenEffectivePomDumper.java b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/MavenEffectivePomDumper.java index 180fc0572822..2d0c90dd3c0a 100644 --- a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/MavenEffectivePomDumper.java +++ b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/MavenEffectivePomDumper.java @@ -17,6 +17,7 @@ import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; @@ -43,38 +44,43 @@ public class MavenEffectivePomDumper { private static final String SETTINGS_XSD_URL = "http://maven.apache.org/xsd/settings-1.0.0.xsd"; // See org.apache.maven.plugins.help.EffectivePomMojo#execute from maven-help-plugin - + @Nullable public static String evaluateEffectivePom(final Maven3ServerEmbedderImpl embedder, @NotNull final File file, @NotNull List activeProfiles) throws RemoteException, MavenServerProcessCanceledException { - final MavenExecutionRequest - request = embedder.createRequest(file, activeProfiles, Collections.emptyList(), Collections.emptyList()); - final StringWriter w = new StringWriter(); - embedder.executeWithMavenSession(request, new Runnable() { - @Override - public void run() { - try { - // copied from DefaultMavenProjectBuilder.buildWithDependencies - ProjectBuilder builder = embedder.getComponent(ProjectBuilder.class); - ProjectBuildingResult buildingResult = builder.build(new File(file.getPath()), request.getProjectBuildingRequest()); + try { + final MavenExecutionRequest + request = embedder.createRequest(file, activeProfiles, Collections.emptyList(), Collections.emptyList()); - MavenProject project = buildingResult.getProject(); + embedder.executeWithMavenSession(request, new Runnable() { + @Override + public void run() { + try { + // copied from DefaultMavenProjectBuilder.buildWithDependencies + ProjectBuilder builder = embedder.getComponent(ProjectBuilder.class); + ProjectBuildingResult buildingResult = builder.build(new File(file.getPath()), request.getProjectBuildingRequest()); - XMLWriter writer = new PrettyPrintXMLWriter(w, StringUtils.repeat(" ", XmlWriterUtil.DEFAULT_INDENTATION_SIZE)); + MavenProject project = buildingResult.getProject(); - writeHeader(writer); + XMLWriter writer = new PrettyPrintXMLWriter(w, StringUtils.repeat(" ", XmlWriterUtil.DEFAULT_INDENTATION_SIZE)); - writeEffectivePom(project, writer); + writeHeader(writer); + + writeEffectivePom(project, writer); + } + catch (Exception e) { + throw new RuntimeException(e); + } } - catch (Exception e) { - throw new RuntimeException(e); - } - } - }); + }); + } + catch (Exception e) { + return null; + } return w.toString(); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java index 7e1bd642c06b..b938230f8a1d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java @@ -66,7 +66,10 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware { if (project.isDisposed()) return; if (s == null) { // null means UnsupportedOperationException - showUnsupportedNotification(project, file); + new Notification(MavenUtil.MAVEN_NOTIFICATION_GROUP, + "Error", + "Failed to evaluate effective pom.", + NotificationType.ERROR).notify(project); return; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.java index fad0d0e5f467..c5ac93cd6d7b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.java @@ -101,7 +101,7 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper activeProfiles) throws MavenProcessCanceledException { return perform(new RetriableCancelable() {