From d008fa0335d17fe2e125187dcac94af1569439d2 Mon Sep 17 00:00:00 2001 From: Gregory Shrago Date: Thu, 17 Jun 2010 15:24:30 +0400 Subject: [PATCH] IDEA-55657 & other repository attach fixes --- .../jetbrains/idea/maven/facade/MavenFacade.java | 2 ++ .../idea/maven/facade/MavenFacadeImpl.java | 5 +++++ .../idea/maven/facade/MavenFacadeManager.java | 14 +++++++++++--- .../idea/maven/project/MavenProjectsManager.java | 5 ++--- .../idea/maven/utils/RepositoryAttachDialog.java | 2 +- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/plugins/maven/facade-api/src/org/jetbrains/idea/maven/facade/MavenFacade.java b/plugins/maven/facade-api/src/org/jetbrains/idea/maven/facade/MavenFacade.java index 6404209ecfbd..2b8bf981e701 100644 --- a/plugins/maven/facade-api/src/org/jetbrains/idea/maven/facade/MavenFacade.java +++ b/plugins/maven/facade-api/src/org/jetbrains/idea/maven/facade/MavenFacade.java @@ -26,6 +26,8 @@ import java.util.Collection; import java.util.List; public interface MavenFacade extends Remote { + void ping() throws RemoteException; + void set(MavenFacadeLogger logger, MavenFacadeDownloadListener downloadListener) throws RemoteException; MavenFacadeEmbedder createEmbedder(MavenFacadeSettings settings) throws RemoteException; diff --git a/plugins/maven/facade-impl/src/org/jetbrains/idea/maven/facade/MavenFacadeImpl.java b/plugins/maven/facade-impl/src/org/jetbrains/idea/maven/facade/MavenFacadeImpl.java index cd3bb19f4bd1..0817ac11eb10 100644 --- a/plugins/maven/facade-impl/src/org/jetbrains/idea/maven/facade/MavenFacadeImpl.java +++ b/plugins/maven/facade-impl/src/org/jetbrains/idea/maven/facade/MavenFacadeImpl.java @@ -36,6 +36,11 @@ import java.util.Collection; import java.util.List; public class MavenFacadeImpl extends RemoteObject implements MavenFacade { + @Override + public void ping() throws RemoteException { + // no op + } + public void set(MavenFacadeLogger logger, MavenFacadeDownloadListener downloadListener) throws RemoteException { try { MavenFacadeGlobalsManager.set(logger, downloadListener); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/facade/MavenFacadeManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/facade/MavenFacadeManager.java index e3b46660ca72..809062d28ad6 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/facade/MavenFacadeManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/facade/MavenFacadeManager.java @@ -114,11 +114,19 @@ public class MavenFacadeManager { } private synchronized MavenFacade getFacade() { - if (myFacade == null) { + try { + myFacade.ping(); + } + catch (Exception ex) { try { + if (myFacade == null) { + UnicastRemoteObject.exportObject(myLogger, 0); + UnicastRemoteObject.exportObject(myDownloadListener, 0); + } + else { + // todo [anton] if myFacade != null reinit + } myFacade = mySupport.acquire(this, ""); - UnicastRemoteObject.exportObject(myLogger, 0); - UnicastRemoteObject.exportObject(myDownloadListener, 0); myFacade.set(myLogger, myDownloadListener); } catch (Exception e) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 043196f086ee..2dec57b9a9a0 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -74,7 +74,7 @@ public class MavenProjectsManager extends SimpleProjectComponent private MavenProjectsManagerState myState = new MavenProjectsManagerState(); - private MavenEmbeddersManager myEmbeddersManager; + private final MavenEmbeddersManager myEmbeddersManager; private MavenProjectsTree myProjectsTree; private MavenProjectsManagerWatcher myWatcher; @@ -103,6 +103,7 @@ public class MavenProjectsManager extends SimpleProjectComponent public MavenProjectsManager(Project project) { super(project); + myEmbeddersManager = new MavenEmbeddersManager(myProject); } public MavenProjectsManagerState getState() { @@ -239,8 +240,6 @@ public class MavenProjectsManager extends SimpleProjectComponent } private void initWorkers() { - myEmbeddersManager = new MavenEmbeddersManager(myProject); - myReadingProcessor = new MavenProjectsProcessor(myProject, ProjectBundle.message("maven.reading"), false, myEmbeddersManager); myResolvingProcessor = new MavenProjectsProcessor(myProject, ProjectBundle.message("maven.resolving"), true, myEmbeddersManager); myPluginsResolvingProcessor = diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/RepositoryAttachDialog.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/RepositoryAttachDialog.java index 4362c507b2db..aaa3f2492ce7 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/RepositoryAttachDialog.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/RepositoryAttachDialog.java @@ -331,7 +331,7 @@ public class RepositoryAttachDialog extends DialogWrapper { } else { final Pair artifactAndRepo = myCoordinates.get(getCoordinateText()); - final MavenRepositoryInfo repository = artifactAndRepo.second; + final MavenRepositoryInfo repository = artifactAndRepo == null? null : artifactAndRepo.second; return repository != null? Collections.singletonList(repository) : ContainerUtil.findAll(myRepositories.values(), Condition.NOT_NULL); } }