@Override protected boolean filter( CDORevision revision, CDORevisionProvider revisionProvider, CDOBranchPoint securityContext, int level) throws Exception { EPackage actualPackage = revision.getEClass().getEPackage(); EPackage applicablePackage = getApplicablePackage(); return actualPackage == applicablePackage; }
protected void checkDuplicateResources(CDORevision revision) throws IllegalStateException { final long folderID = CDOIDUtil.getLong((CDOID) revision.data().getContainerID()); final long revisionID = CDOIDUtil.getLong(revision.getID()); final String name = (String) revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0); ObjectSet<DB4ORevision> resultSet = getObjectContainer() .query( new Predicate<DB4ORevision>() { private static final long serialVersionUID = 1L; @Override public boolean match(DB4ORevision revision) { if (revision.isResourceNode() && ObjectUtil.equals(revision.getContainerID(), folderID)) { String candidateName = (String) revision.getValues().get(EresourcePackage.CDO_RESOURCE__NAME); if (StringUtil.compare(name, candidateName) == 0) { if (!ObjectUtil.equals(revision.getID(), revisionID)) { return true; } } } return false; } }); if (!resultSet.isEmpty()) { throw new IllegalStateException( "Duplicate resource or folder: " + name + " in folder " + folderID); //$NON-NLS-1$ //$NON-NLS-2$ } }
public boolean handleRevision(CDORevision revision) { if (revision.getVersion() < CDOBranchVersion.FIRST_VERSION - 1) { revision = new DetachedCDORevision( revision.getEClass(), revision.getID(), revision.getBranch(), -revision.getVersion(), revision.getTimeStamp(), revision.getRevised()); } return delegate.handleRevision(revision); }
/** See bug 315409. */ @Requires(IRepositoryConfig.CAPABILITY_BRANCHING) public void _testInvalidationWithDeltas_SubBranch() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); Company company = getModel1Factory().createCompany(); company.setName("main-v1"); CDOResource resource = transaction.createResource(getResourcePath("/test1")); resource.getContents().add(company); transaction.commit(); company.setName("main-v2"); transaction.commit(); CDOBranch subBranch = transaction.getBranch().createBranch("SUB_BRANCH"); transaction.setBranch(subBranch); CDOView view = session.openView(subBranch); view.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); Company company2 = view.getObject(company); company2.eAdapters().add(new AdapterImpl()); company.setName("sub-v1"); commitAndSync(transaction, view); CDORevision revision2 = CDOUtil.getCDOObject(company2).cdoRevision(); assertEquals(1, revision2.getVersion()); assertEquals(transaction.getBranch(), revision2.getBranch()); assertEquals(transaction.getLastCommitTime(), revision2.getTimeStamp()); company.setName("sub-v2"); commitAndSync(transaction, view); revision2 = CDOUtil.getCDOObject(company2).cdoRevision(); assertEquals(2, revision2.getVersion()); assertEquals(transaction.getBranch(), revision2.getBranch()); assertEquals(transaction.getLastCommitTime(), revision2.getTimeStamp()); }
/** See bug 315409. */ public void testInvalidationWithDeltas_SameBranch() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOView view = session.openView(); Company company = getModel1Factory().createCompany(); company.setName("main-v1"); CDOResource resource = transaction.createResource(getResourcePath("/test1")); resource.getContents().add(company); commitAndSync(transaction, view); company.setName("main-v2"); commitAndSync(transaction, view); view.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); Company company2 = view.getObject(company); company2.eAdapters().add(new AdapterImpl()); company.setName("main-v3"); commitAndSync(transaction, view); CDORevision revision2 = CDOUtil.getCDOObject(company2).cdoRevision(); assertEquals(3, revision2.getVersion()); assertEquals(transaction.getBranch(), revision2.getBranch()); assertEquals(transaction.getLastCommitTime(), revision2.getTimeStamp()); company.setName("main-v4"); commitAndSync(transaction, view); revision2 = CDOUtil.getCDOObject(company2).cdoRevision(); assertEquals(4, revision2.getVersion()); assertEquals(transaction.getBranch(), revision2.getBranch()); assertEquals(transaction.getLastCommitTime(), revision2.getTimeStamp()); }