Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java')
-rw-r--r--org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java b/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java
new file mode 100644
index 0000000000..31f7452c78
--- /dev/null
+++ b/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ * Simon McDuff - bug 233490
+ * Simon McDuff - bug 213402
+ */
+package org.eclipse.emf.cdo.internal.server;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
+import org.eclipse.emf.cdo.spi.server.InternalCommitContext;
+import org.eclipse.emf.cdo.spi.server.InternalSession;
+import org.eclipse.emf.cdo.spi.server.InternalTransaction;
+
+import org.eclipse.net4j.util.om.monitor.OMMonitor;
+
+/**
+ * @author Eike Stepper
+ * @since 2.0
+ */
+public class Transaction extends View implements InternalTransaction
+{
+ public Transaction(InternalSession session, int viewID, CDOBranchPoint branchPoint)
+ {
+ super(session, viewID, branchPoint);
+ }
+
+ @Override
+ public boolean isReadOnly()
+ {
+ return false;
+ }
+
+ @Override
+ protected String getClassName()
+ {
+ return "Transaction"; //$NON-NLS-1$
+ }
+
+ /**
+ * @since 2.0
+ */
+ public InternalCommitContext createCommitContext()
+ {
+ checkOpen();
+ return getRepository().createCommitContext(this);
+ }
+
+ /**
+ * For tests only.
+ *
+ * @since 2.0
+ */
+ public InternalCommitContext testCreateCommitContext(final long timeStamp)
+ {
+ checkOpen();
+ return new TransactionCommitContext(this)
+ {
+ @Override
+ protected long[] createTimeStamp(OMMonitor monitor)
+ {
+ return new long[] { timeStamp, CDOBranchPoint.UNSPECIFIED_DATE };
+ }
+ };
+ }
+
+ @Override
+ protected void validateTimeStamp(long timeStamp) throws IllegalArgumentException
+ {
+ if (timeStamp != UNSPECIFIED_DATE)
+ {
+ throw new IllegalArgumentException("Changing the target time is not supported by transactions");
+ }
+ }
+
+ private void checkOpen()
+ {
+ if (isClosed())
+ {
+ throw new IllegalStateException("View closed"); //$NON-NLS-1$
+ }
+ }
+}

Back to the top