/** * If <code>delta == null</code> the cache is cleared unconditionally. * If <code>delta != null</code> the cache is cleared only if the delta can have an impact on the resource tree structure. */ public synchronized void clearResourcePathCacheIfNecessary(CDORevisionDelta delta) { if (resourcePathCache != null && !resourcePathCache.isEmpty()) { if (delta == null) { resourcePathCache.clear(); } else { CDOID rootResourceID = getSession().getRepositoryInfo().getRootResourceID(); if (canHaveResourcePathImpact(delta, rootResourceID)) { resourcePathCache.clear(); } } } }
public synchronized CDOResourceImpl getRootResource() { checkActive(); if (rootResource == null) { CDOID rootResourceID = getSession().getRepositoryInfo().getRootResourceID(); if (rootResourceID == null || rootResourceID.isNull()) { throw new IllegalStateException("RootResourceID is null; is the repository not yet initialized?"); } getObject(rootResourceID); CheckUtil.checkState(rootResource, "rootResource"); } return rootResource; }
public synchronized CDOResourceImpl getRootResource() { checkActive(); if (rootResource == null) { CDOID rootResourceID = getSession().getRepositoryInfo().getRootResourceID(); if (rootResourceID == null || rootResourceID.isNull()) { throw new IllegalStateException("RootResourceID is null; is the repository not yet initialized?"); } getObject(rootResourceID); CheckUtil.checkState(rootResource, "rootResource"); } return rootResource; }
protected synchronized CDOID getRootOrTopLevelResourceNodeID(String name) { if (name == null) { if (rootResource != null) { return rootResource.cdoID(); } return getSession().getRepositoryInfo().getRootResourceID(); } CDOQuery resourceQuery = createResourcesQuery(null, name, true); resourceQuery.setMaxResults(1); List<CDOID> ids = resourceQuery.getResult(CDOID.class); if (ids.isEmpty()) { throw new CDOException(MessageFormat.format(Messages.getString("CDOViewImpl.7"), name)); //$NON-NLS-1$ } if (ids.size() > 1) { // TODO is this still needed since the is resourceQuery.setMaxResults(1) ?? throw new ImplementationError(Messages.getString("CDOViewImpl.8")); //$NON-NLS-1$ } return ids.get(0); }
/** * @since 2.0 */ public synchronized void registerProxyResource(CDOResourceImpl resource) { URI uri = resource.getURI(); String path = CDOURIUtil.extractResourcePath(uri); boolean isRoot = "/".equals(path); //$NON-NLS-1$ try { CDOID id = isRoot ? getSession().getRepositoryInfo().getRootResourceID() : getResourceNodeID(path); resource.cdoInternalSetID(id); registerObject(resource); if (isRoot) { resource.setRoot(true); rootResource = resource; } } catch (Exception ex) { throw new InvalidURIException(uri, ex); } }
/** * @since 2.0 */ public synchronized void registerProxyResource(CDOResourceImpl resource) { URI uri = resource.getURI(); String path = CDOURIUtil.extractResourcePath(uri); boolean isRoot = "/".equals(path); //$NON-NLS-1$ try { CDOID id = isRoot ? getSession().getRepositoryInfo().getRootResourceID() : getResourceNodeID(path); resource.cdoInternalSetID(id); registerObject(resource); if (isRoot) { resource.setRoot(true); rootResource = resource; } } catch (LifecycleException ex) { throw ex; } catch (Exception ex) { throw new InvalidURIException(uri, ex); } }
else if (id.equals(getSession().getRepositoryInfo().getRootResourceID()))
/** * @return Never <code>null</code> */ private InternalCDOObject createObject(CDOID id) { if (TRACER.isEnabled()) { TRACER.trace("Creating object for " + id); //$NON-NLS-1$ } InternalCDORevision revision = getRevision(id, true); if (revision == null) { throw new ObjectNotFoundException(id, this); } EClass eClass = revision.getEClass(); InternalCDOObject object; if (CDOModelUtil.isResource(eClass) && !id.equals(getSession().getRepositoryInfo().getRootResourceID())) { object = (InternalCDOObject)newResourceInstance(revision); // object is PROXY } else { object = newInstance(eClass); // object is TRANSIENT } cleanObject(object, revision); return object; }
else if (id == getSession().getRepositoryInfo().getRootResourceID())
CDOID rootResourceID = repositoryInfo.getRootResourceID(); for (CDORevisionKey changedObject : changedObjects)
/** * @return Never <code>null</code> */ private InternalCDOObject createObject(CDOID id) { if (TRACER.isEnabled()) { TRACER.trace("Creating object for " + id); //$NON-NLS-1$ } InternalCDORevision revision = getRevision(id, true); if (revision == null) { throw new ObjectNotFoundException(id, this); } EClass eClass = revision.getEClass(); InternalCDOObject object; if (CDOModelUtil.isResource(eClass) && id != getSession().getRepositoryInfo().getRootResourceID()) { object = (InternalCDOObject)newResourceInstance(revision); // object is PROXY } else { object = newInstance(eClass); // object is TRANSIENT } cleanObject(object, revision); CDOStateMachine.INSTANCE.dispatchLoadNotification(object); return object; }
localRepository.setRootResourceID(remoteSession.getRepositoryInfo().getRootResourceID());
CDOID id = remoteSession.getRepositoryInfo().getRootResourceID(); localRepository.setRootResourceID(id);