@Override public IInternalPapyrusRepository getRepositoryForURI(URI uri, boolean connectedOnly) { IInternalPapyrusRepository result = null; if (CDOUtils.isCDOURI(uri)) { String uuid = CDOURIUtil.extractRepositoryUUID(uri); 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 IInternalPapyrusRepository getRepository(CDOView view) { IInternalPapyrusRepository result = null; int sessionID = view.getSessionID(); for (IInternalPapyrusRepository next : repositories.values()) { // if it's not connected, it can't be responsible for this view if (next.isConnected()) { if (next.getCDOSession().getSessionID() == sessionID) { result = next; break; } } } return result; }