import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.util.Alarm;
-import com.intellij.util.Consumer;
import com.intellij.util.EventDispatcher;
+import com.intellij.util.NullableConsumer;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.update.Update;
});
}
- public void evaluateEffectivePom(@NotNull final MavenProject mavenProject, @NotNull final Consumer<String> consumer) {
+ public void evaluateEffectivePom(@NotNull final MavenProject mavenProject, @NotNull final NullableConsumer<String> consumer) {
runWhenFullyOpen(new Runnable() {
@Override
public void run() {
new MavenProjectsTree.EmbedderTask() {
@Override
public void run(MavenEmbedderWrapper embedder) throws MavenProcessCanceledException {
- String res =
- embedder.evaluateEffectivePom(mavenProject.getFile(), mavenProject.getActivatedProfilesIds());
- consumer.consume(res);
+ try {
+ String res =
+ embedder.evaluateEffectivePom(mavenProject.getFile(), mavenProject.getActivatedProfilesIds());
+ consumer.consume(res);
+ }
+ catch (UnsupportedOperationException e) {
+ consumer.consume(null); // null means UnsupportedOperationException
+ }
}
});
}
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
-import com.intellij.util.Consumer;
+import com.intellij.util.NullableConsumer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.project.MavenProject;
}).notify(project);
}
- public static void actionPerformed(@NotNull final Project project, @NotNull VirtualFile file) {
+ public static void actionPerformed(@NotNull final Project project, @NotNull final VirtualFile file) {
final MavenProjectsManager manager = MavenProjectsManager.getInstance(project);
final MavenProject mavenProject = manager.findProject(file);
assert mavenProject != null;
- manager.evaluateEffectivePom(mavenProject, new Consumer<String>() {
+ manager.evaluateEffectivePom(mavenProject, new NullableConsumer<String>() {
@Override
public void consume(final String s) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
if (project.isDisposed()) return;
+ if (s == null) { // null means UnsupportedOperationException
+ showUnsupportedNotification(project, file);
+ return;
+ }
+
String fileName = mavenProject.getMavenId().getArtifactId() + "-effective-pom.xml";
PsiFile file = PsiFileFactory.getInstance(project).createFileFromText(fileName, XMLLanguage.INSTANCE, s);
try {