Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-03-17 14:24:52 +0000
committerEike Stepper2010-03-17 14:24:52 +0000
commit4d3e7a9ed87a48b2cf25e35586a0aa6a23f9b909 (patch)
tree2bf99ad4ae2cef621036378bc04321af7585667f
parent8dbab7d3b66dd1d7ee49f1b8124caa997a5c4044 (diff)
downloadcdo-4d3e7a9ed87a48b2cf25e35586a0aa6a23f9b909.tar.gz
cdo-4d3e7a9ed87a48b2cf25e35586a0aa6a23f9b909.tar.xz
cdo-4d3e7a9ed87a48b2cf25e35586a0aa6a23f9b909.zip
hotfix for clone sync of detached revisions
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBRevisionHandler.java30
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java3
4 files changed, 37 insertions, 14 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBRevisionHandler.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBRevisionHandler.java
new file mode 100644
index 0000000000..cf418358f9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBRevisionHandler.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.cdo.server.internal.db;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
+import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
+import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision;
+
+/**
+ * @author Eike Stepper
+ */
+public class DBRevisionHandler implements CDORevisionHandler
+{
+ private CDORevisionHandler delegate;
+
+ public DBRevisionHandler(CDORevisionHandler delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public void handleRevision(CDORevision revision)
+ {
+ if (revision.getVersion() < CDOBranchVersion.FIRST_VERSION - 1)
+ {
+ revision = new DetachedCDORevision(revision.getEClass(), revision.getID(), revision.getBranch(), -revision
+ .getVersion(), revision.getTimeStamp());
+ }
+
+ delegate.handleRevision(revision);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
index 29c02fef04..23f530b9fd 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
@@ -798,22 +798,10 @@ public class DBStoreAccessor extends LongIDStoreAccessor implements IDBStoreAcce
*
* @since 3.0
*/
- public void handleRevisions(EClass eClass, CDOBranch branch, long timeStamp, final CDORevisionHandler handler)
+ public void handleRevisions(EClass eClass, CDOBranch branch, long timeStamp, CDORevisionHandler handler)
{
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- mappingStrategy.handleRevisions(this, eClass, branch, timeStamp, new CDORevisionHandler()
- {
- public void handleRevision(CDORevision revision)
- {
- if (revision.getVersion() < CDOBranchVersion.FIRST_VERSION - 1)
- {
- revision = new DetachedCDORevision(revision.getEClass(), revision.getID(), revision.getBranch(), -revision
- .getVersion(), revision.getTimeStamp());
- }
-
- handler.handleRevision(revision);
- }
- });
+ mappingStrategy.handleRevisions(this, eClass, branch, timeStamp, new DBRevisionHandler(handler));
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
index 65adb4ddb3..839f8d0ea8 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
@@ -36,6 +36,7 @@ import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
+import org.eclipse.emf.cdo.server.internal.db.DBRevisionHandler;
import org.eclipse.emf.cdo.server.internal.db.DBStore;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
@@ -466,6 +467,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
// this does not make any difference for non-branching store.
// see #handleRevisions() implementation in HorizontalBranchingClassMapping
// for branch handling.
+ handler = new DBRevisionHandler(handler);
IPreparedStatementCache statementCache = accessor.getStatementCache();
IRepository repository = accessor.getStore().getRepository();
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
index 1e6161becb..623678fd43 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
@@ -32,6 +32,7 @@ import org.eclipse.emf.cdo.server.db.mapping.IClassMappingAuditSupport;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
+import org.eclipse.emf.cdo.server.internal.db.DBRevisionHandler;
import org.eclipse.emf.cdo.server.internal.db.DBStore;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
@@ -636,6 +637,8 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
@Override
public void handleRevisions(IDBStoreAccessor accessor, CDOBranch branch, long timeStamp, CDORevisionHandler handler)
{
+ handler = new DBRevisionHandler(handler);
+
StringBuilder builder = new StringBuilder(sqlSelectForHandle);
boolean whereAppend = false;

Back to the top