diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_338884_Test.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_338884_Test.java | 494 |
1 files changed, 247 insertions, 247 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_338884_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_338884_Test.java index 93fdfc9e64..0572ba8354 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_338884_Test.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_338884_Test.java @@ -1,247 +1,247 @@ -/* - * 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: - * Caspar De Groot - initial API and implementation - */ -package org.eclipse.emf.cdo.tests.bugzilla; - -import org.eclipse.emf.cdo.eresource.CDOResource; -import org.eclipse.emf.cdo.session.CDOSession; -import org.eclipse.emf.cdo.tests.AbstractCDOTest; -import org.eclipse.emf.cdo.tests.model4.ContainedElementNoOpposite; -import org.eclipse.emf.cdo.tests.model4.RefMultiContainedNPL; -import org.eclipse.emf.cdo.tests.model4.RefMultiNonContainedNPL; -import org.eclipse.emf.cdo.tests.model4.RefSingleContainedNPL; -import org.eclipse.emf.cdo.tests.model4.RefSingleNonContainedNPL; -import org.eclipse.emf.cdo.tests.model4.model4Factory; -import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.util.CommitException; -import org.eclipse.emf.cdo.util.CommitIntegrityException; - -import org.eclipse.net4j.util.transaction.TransactionException; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EReference; - -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -/** - * See bug 338884. - * - * @author Caspar De Groot - */ -public class Bugzilla_338884_Test extends AbstractCDOTest -{ - public void test_single() throws CommitException - { - CDOSession session = openSession(); - CDOTransaction tx = session.openTransaction(); - CDOResource resource = tx.createResource(getResourcePath("test")); - - // 1. Create object A; - model4Factory factory = getModel4Factory(); - RefSingleNonContainedNPL referencer = factory.createRefSingleNonContainedNPL(); - resource.getContents().add(referencer); - - // 2. Commit; - tx.commit(); - - // 3. Create object B; - ContainedElementNoOpposite element = factory.createContainedElementNoOpposite(); - resource.getContents().add(element); - - // 4. Create reference from object A to object B; - referencer.setElement(element); - - // 5. Add object A to committables, but not add B; - tx.setCommittables(Collections.singleton(referencer)); - - // 6. Commit. - try - { - tx.commit(); - fail("Should have thrown " + CommitException.class.getName()); - } - catch (CommitException e) - { - Throwable t = e.getCause().getCause(); - if (t instanceof CommitIntegrityException) - { - // Good - } - else - { - fail("Unexpected exception type: " + t.getClass().getName()); - } - } - - tx.close(); - session.close(); - } - - public void test_multi() throws CommitException - { - CDOSession session = openSession(); - CDOTransaction tx = session.openTransaction(); - CDOResource resource = tx.createResource(getResourcePath("test")); - - // 1. Create object A; - model4Factory factory = getModel4Factory(); - RefMultiNonContainedNPL referencer = factory.createRefMultiNonContainedNPL(); - resource.getContents().add(referencer); - - // 2. Commit; - tx.commit(); - - // 3. Create object B; - ContainedElementNoOpposite element = factory.createContainedElementNoOpposite(); - resource.getContents().add(element); - - // 4. Create reference from object A to object B; - referencer.getElements().add(element); - - // 5. Add object A to committables, but not add B; - tx.setCommittables(Collections.singleton(referencer)); - - // 6. Commit. - try - { - tx.commit(); - fail("Should have thrown " + CommitException.class.getName()); - } - catch (CommitException e) - { - Throwable t = e.getCause().getCause(); - if (t instanceof CommitIntegrityException) - { - // Good - } - else - { - fail("Unexpected exception type: " + t.getClass().getName()); - } - } - - tx.close(); - session.close(); - } - - public void test_canHandleUnset() throws CommitException - { - CDOSession session = openSession(); - CDOTransaction tx = session.openTransaction(); - CDOResource resource = tx.createResource(getResourcePath("test")); - - model4Factory factory = getModel4Factory(); - ContainedElementNoOpposite dummy = factory.createContainedElementNoOpposite(); - resource.getContents().add(dummy); - - RefSingleNonContainedNPL referencer = factory.createRefSingleNonContainedNPL(); - resource.getContents().add(referencer); - - ContainedElementNoOpposite referencee = factory.createContainedElementNoOpposite(); - resource.getContents().add(referencee); - - referencer.setElement(referencee); - - tx.commit(); - - EReference ref = getModel4Package().getRefSingleNonContainedNPL_Element(); - referencer.eUnset(ref); - - // Make the dummy object dirty to make the commit partial - dummy.setName("dirty"); - - Set<EObject> committables = new HashSet<EObject>(); - committables.add(referencer); - committables.add(referencee); - tx.setCommittables(committables); - tx.commit(); - - session.close(); - } - - public void test_nonBidiMultiRef_newTarget() throws CommitException - { - CDOSession session = openSession(); - CDOTransaction transaction = session.openTransaction(); - - model4Factory factory = getModel4Factory(); - - CDOResource resource = transaction.createResource(getResourcePath("test")); - transaction.commit(); - - RefMultiContainedNPL parent = factory.createRefMultiContainedNPL(); - resource.getContents().add(parent); - - ContainedElementNoOpposite child = factory.createContainedElementNoOpposite(); - parent.getElements().add(child); - - transaction.setCommittables(new HashSet<EObject>(Arrays.asList(new EObject[] { resource, parent }))); - try - { - transaction.commit(); - fail("Should have thrown an exception"); - } - catch (CommitException e) - { - Throwable c = e.getCause(); - if (c instanceof TransactionException && c.getCause() instanceof CommitIntegrityException) - { - // Good - } - else - { - throw e; - } - } - - session.close(); - } - - public void test_nonBidiSingleRef_newTarget() throws CommitException - { - CDOSession session = openSession(); - CDOTransaction transaction = session.openTransaction(); - - model4Factory factory = getModel4Factory(); - - CDOResource resource = transaction.createResource(getResourcePath("test")); - transaction.commit(); - - RefSingleContainedNPL parent = factory.createRefSingleContainedNPL(); - resource.getContents().add(parent); - - ContainedElementNoOpposite child = factory.createContainedElementNoOpposite(); - parent.setElement(child); - - transaction.setCommittables(new HashSet<EObject>(Arrays.asList(new EObject[] { resource, parent }))); - try - { - transaction.commit(); - fail("Should have thrown an exception"); - } - catch (CommitException e) - { - Throwable c = e.getCause(); - if (c instanceof TransactionException && c.getCause() instanceof CommitIntegrityException) - { - // Good - } - else - { - throw e; - } - } - - session.close(); - } -} +/*
+ * Copyright (c) 2004 - 2012 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:
+ * Caspar De Groot - initial API and implementation
+ */
+package org.eclipse.emf.cdo.tests.bugzilla;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.tests.AbstractCDOTest;
+import org.eclipse.emf.cdo.tests.model4.ContainedElementNoOpposite;
+import org.eclipse.emf.cdo.tests.model4.RefMultiContainedNPL;
+import org.eclipse.emf.cdo.tests.model4.RefMultiNonContainedNPL;
+import org.eclipse.emf.cdo.tests.model4.RefSingleContainedNPL;
+import org.eclipse.emf.cdo.tests.model4.RefSingleNonContainedNPL;
+import org.eclipse.emf.cdo.tests.model4.model4Factory;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CommitException;
+import org.eclipse.emf.cdo.util.CommitIntegrityException;
+
+import org.eclipse.net4j.util.transaction.TransactionException;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * See bug 338884.
+ *
+ * @author Caspar De Groot
+ */
+public class Bugzilla_338884_Test extends AbstractCDOTest
+{
+ public void test_single() throws CommitException
+ {
+ CDOSession session = openSession();
+ CDOTransaction tx = session.openTransaction();
+ CDOResource resource = tx.createResource(getResourcePath("test"));
+
+ // 1. Create object A;
+ model4Factory factory = getModel4Factory();
+ RefSingleNonContainedNPL referencer = factory.createRefSingleNonContainedNPL();
+ resource.getContents().add(referencer);
+
+ // 2. Commit;
+ tx.commit();
+
+ // 3. Create object B;
+ ContainedElementNoOpposite element = factory.createContainedElementNoOpposite();
+ resource.getContents().add(element);
+
+ // 4. Create reference from object A to object B;
+ referencer.setElement(element);
+
+ // 5. Add object A to committables, but not add B;
+ tx.setCommittables(Collections.singleton(referencer));
+
+ // 6. Commit.
+ try
+ {
+ tx.commit();
+ fail("Should have thrown " + CommitException.class.getName());
+ }
+ catch (CommitException e)
+ {
+ Throwable t = e.getCause().getCause();
+ if (t instanceof CommitIntegrityException)
+ {
+ // Good
+ }
+ else
+ {
+ fail("Unexpected exception type: " + t.getClass().getName());
+ }
+ }
+
+ tx.close();
+ session.close();
+ }
+
+ public void test_multi() throws CommitException
+ {
+ CDOSession session = openSession();
+ CDOTransaction tx = session.openTransaction();
+ CDOResource resource = tx.createResource(getResourcePath("test"));
+
+ // 1. Create object A;
+ model4Factory factory = getModel4Factory();
+ RefMultiNonContainedNPL referencer = factory.createRefMultiNonContainedNPL();
+ resource.getContents().add(referencer);
+
+ // 2. Commit;
+ tx.commit();
+
+ // 3. Create object B;
+ ContainedElementNoOpposite element = factory.createContainedElementNoOpposite();
+ resource.getContents().add(element);
+
+ // 4. Create reference from object A to object B;
+ referencer.getElements().add(element);
+
+ // 5. Add object A to committables, but not add B;
+ tx.setCommittables(Collections.singleton(referencer));
+
+ // 6. Commit.
+ try
+ {
+ tx.commit();
+ fail("Should have thrown " + CommitException.class.getName());
+ }
+ catch (CommitException e)
+ {
+ Throwable t = e.getCause().getCause();
+ if (t instanceof CommitIntegrityException)
+ {
+ // Good
+ }
+ else
+ {
+ fail("Unexpected exception type: " + t.getClass().getName());
+ }
+ }
+
+ tx.close();
+ session.close();
+ }
+
+ public void test_canHandleUnset() throws CommitException
+ {
+ CDOSession session = openSession();
+ CDOTransaction tx = session.openTransaction();
+ CDOResource resource = tx.createResource(getResourcePath("test"));
+
+ model4Factory factory = getModel4Factory();
+ ContainedElementNoOpposite dummy = factory.createContainedElementNoOpposite();
+ resource.getContents().add(dummy);
+
+ RefSingleNonContainedNPL referencer = factory.createRefSingleNonContainedNPL();
+ resource.getContents().add(referencer);
+
+ ContainedElementNoOpposite referencee = factory.createContainedElementNoOpposite();
+ resource.getContents().add(referencee);
+
+ referencer.setElement(referencee);
+
+ tx.commit();
+
+ EReference ref = getModel4Package().getRefSingleNonContainedNPL_Element();
+ referencer.eUnset(ref);
+
+ // Make the dummy object dirty to make the commit partial
+ dummy.setName("dirty");
+
+ Set<EObject> committables = new HashSet<EObject>();
+ committables.add(referencer);
+ committables.add(referencee);
+ tx.setCommittables(committables);
+ tx.commit();
+
+ session.close();
+ }
+
+ public void test_nonBidiMultiRef_newTarget() throws CommitException
+ {
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+
+ model4Factory factory = getModel4Factory();
+
+ CDOResource resource = transaction.createResource(getResourcePath("test"));
+ transaction.commit();
+
+ RefMultiContainedNPL parent = factory.createRefMultiContainedNPL();
+ resource.getContents().add(parent);
+
+ ContainedElementNoOpposite child = factory.createContainedElementNoOpposite();
+ parent.getElements().add(child);
+
+ transaction.setCommittables(new HashSet<EObject>(Arrays.asList(new EObject[] { resource, parent })));
+ try
+ {
+ transaction.commit();
+ fail("Should have thrown an exception");
+ }
+ catch (CommitException e)
+ {
+ Throwable c = e.getCause();
+ if (c instanceof TransactionException && c.getCause() instanceof CommitIntegrityException)
+ {
+ // Good
+ }
+ else
+ {
+ throw e;
+ }
+ }
+
+ session.close();
+ }
+
+ public void test_nonBidiSingleRef_newTarget() throws CommitException
+ {
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+
+ model4Factory factory = getModel4Factory();
+
+ CDOResource resource = transaction.createResource(getResourcePath("test"));
+ transaction.commit();
+
+ RefSingleContainedNPL parent = factory.createRefSingleContainedNPL();
+ resource.getContents().add(parent);
+
+ ContainedElementNoOpposite child = factory.createContainedElementNoOpposite();
+ parent.setElement(child);
+
+ transaction.setCommittables(new HashSet<EObject>(Arrays.asList(new EObject[] { resource, parent })));
+ try
+ {
+ transaction.commit();
+ fail("Should have thrown an exception");
+ }
+ catch (CommitException e)
+ {
+ Throwable c = e.getCause();
+ if (c instanceof TransactionException && c.getCause() instanceof CommitIntegrityException)
+ {
+ // Good
+ }
+ else
+ {
+ throw e;
+ }
+ }
+
+ session.close();
+ }
+}
|