Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIbrahim Sallam2010-06-14 02:18:06 +0000
committerIbrahim Sallam2010-06-14 02:18:06 +0000
commit11229c7330105990031f4caca2ab6f8e62aa39fb (patch)
tree91849f6df9304722483fc2bb30878f5f6c3318ed /plugins
parent925d81873d31dee7771998d6b31ec29fb80aa86c (diff)
downloadcdo-11229c7330105990031f4caca2ab6f8e62aa39fb.tar.gz
cdo-11229c7330105990031f4caca2ab6f8e62aa39fb.tar.xz
cdo-11229c7330105990031f4caca2ab6f8e62aa39fb.zip
Added support for branching and auditing when dealing with duplicate resources.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyResourceList.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyResourceList.java b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyResourceList.java
index 1b0c319f69..3303f05dc6 100644
--- a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyResourceList.java
+++ b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyResourceList.java
@@ -10,8 +10,10 @@
*/
package org.eclipse.emf.cdo.server.internal.objectivity.schema;
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.server.internal.objectivity.ObjectivityStoreAccessor;
import org.eclipse.emf.cdo.server.internal.objectivity.bundle.OM;
import org.eclipse.emf.cdo.server.internal.objectivity.db.ObjyObject;
import org.eclipse.emf.cdo.server.internal.objectivity.db.ObjySchema;
@@ -153,7 +155,8 @@ public class ObjyResourceList
getList().add(objyObject.ooId());
}
- public void checkDuplicateResources(InternalCDORevision revision) throws IllegalStateException
+ public void checkDuplicateResources(ObjectivityStoreAccessor storeAccessor, InternalCDORevision revision)
+ throws IllegalStateException
{
// CDOID folderID = (CDOID)revision.data().getContainerID();
CDOID folderId = (CDOID)revision.data().getContainerID();
@@ -167,9 +170,25 @@ public class ObjyResourceList
for (int i = 0; i < size; i++)
{
ObjyObject resource = getResource(i);
- int v = resource.getVersion();
- CDOID resourceFolderId = (CDOID)resource.getEContainer();
- String resourceName = ObjyResourceList.getResourceName(resource);
+ ObjyObject resourceRevision = resource;
+ // get the proper revision of the resource (might need to refactor this code, see readRevision())
+ if (storeAccessor.getStore().isRequiredToSupportBranches())
+ {
+ resourceRevision = resource.getRevision(revision.getTimeStamp(), revision.getBranch().getID());
+ }
+ else if (storeAccessor.getStore().isRequiredToSupportAudits())
+ {
+ resourceRevision = resource.getRevision(revision.getTimeStamp(), CDOBranch.MAIN_BRANCH_ID);
+ }
+
+ if (resourceRevision == null || resourceRevision.getVersion() < 0)
+ {
+ continue;
+ }
+
+ // int v = resource.getVersion();
+ CDOID resourceFolderId = (CDOID)resourceRevision.getEContainer();
+ String resourceName = ObjyResourceList.getResourceName(resourceRevision);
if (resourceFolderId != null && resourceFolderId.equals(folderId) && resourceName != null
&& resourceName.equals(name))
{

Back to the top