@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;
  }