diff options
Diffstat (limited to 'extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java')
-rw-r--r-- | extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java index 359790fcf02..d3fc0db52e0 100644 --- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java +++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java @@ -85,14 +85,17 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl return result; } + @Override public IManagedContainer getSessionsContainer() { return container; } + @Override public Collection<? extends IInternalPapyrusRepository> getRepositories() { return Collections.unmodifiableCollection(repositories.values()); } + @Override public IInternalPapyrusRepository createRepository(String url) { if(getRepository(url) != null) { throw new IllegalArgumentException("repository already exists"); //$NON-NLS-1$ @@ -110,6 +113,7 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl return result; } + @Override public void setURL(IPapyrusRepository repository, String url) { if(!Objects.equal(repository.getURL(), url)) { if(getRepository(url) != null) { @@ -127,6 +131,7 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl } } + @Override public void removeRepository(IPapyrusRepository repository) { if(repository.isConnected()) { throw new IllegalArgumentException("repository is still connected"); //$NON-NLS-1$ @@ -138,11 +143,18 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl fireElementRemovedEvent(repository); } + @Override public IInternalPapyrusRepository getRepository(String url) { return repositories.get(url); } + @Override public IInternalPapyrusRepository getRepositoryForURI(URI uri) { + return getRepositoryForURI(uri, true); + } + + @Override + public IInternalPapyrusRepository getRepositoryForURI(URI uri, boolean connectedOnly) { IInternalPapyrusRepository result = null; if(CDOUtils.isCDOURI(uri)) { @@ -151,16 +163,27 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl for(IInternalPapyrusRepository next : repositories.values()) { CDOSession session = next.getCDOSession(); if((session != null) && Objects.equal(uuid, session.getRepositoryInfo().getUUID())) { - result = next; break; } } + + if((result == null) && !connectedOnly) { + // guess based on the last known UUIDs + for(IInternalPapyrusRepository next : repositories.values()) { + PapyrusRepository repo = CDOUtils.tryCast(next, PapyrusRepository.class); + if((repo != null) && Objects.equal(uuid, repo.getModel().getUUID())) { + result = next; + break; + } + } + } } return result; } + @Override public void saveRepositories() { if(storage != null) { try { @@ -248,15 +271,18 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl return result; } + @Override public ICredentialsProviderFactory getCredentialsProviderFactory() { return credentialsProviderFactory; } + @Override public void setCredentialsProviderFactory(ICredentialsProviderFactory credentialsProviderFactory) { this.credentialsProviderFactory = credentialsProviderFactory; } + @Override public IInternalPapyrusRepository getRepository(CDOView view) { IInternalPapyrusRepository result = null; @@ -284,6 +310,7 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl return !isActive() || repositories.isEmpty(); } + @Override public IPapyrusRepository[] getElements() { return Iterables.toArray(repositories.values(), IPapyrusRepository.class); } |