Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_306710_Test.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_306710_Test.java374
1 files changed, 187 insertions, 187 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_306710_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_306710_Test.java
index f0000904a2..cda83c219d 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_306710_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_306710_Test.java
@@ -1,187 +1,187 @@
-/*
- * 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:
- * Eike Stepper - 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.model1.Category;
-import org.eclipse.emf.cdo.tests.model1.Company;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-
-/**
- * IndexOutOfBoundsException in buildNotification.
- * <p>
- * See bug 306710
- */
-public class Bugzilla_306710_Test extends AbstractCDOTest
-{
- public void testBugzilla_306710_remove() throws Exception
- {
- final NotifyCounter counter = new NotifyCounter();
-
- // setup connection1.
- CDOSession session1 = openSession();
- CDOTransaction transaction1 = session1.openTransaction();
- CDOResource resource1 = transaction1.createResource(getResourcePath("/test1"));
-
- // add initial model.
- Company company1 = getModel1Factory().createCompany();
- resource1.getContents().add(company1);
- Category category1a = getModel1Factory().createCategory();
- company1.getCategories().add(category1a);
- transaction1.commit();
-
- // sleep(100);
-
- // setup connection2.
- CDOSession session2 = openSession();
- CDOTransaction transaction2 = session2.openTransaction();
- transaction2.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
- CDOResource resource2 = transaction2.getOrCreateResource(getResourcePath("/test1"));
-
- // add adapter to company2 to have sendDeltaNotification being called.
- Company company2 = (Company)resource2.getContents().get(0);
- company2.eAdapters().add(new AdapterImpl()
- {
- @Override
- public void notifyChanged(Notification msg)
- {
- if (msg.getEventType() == Notification.ADD)
- {
- counter.incAdds();
- }
- else if (msg.getEventType() == Notification.REMOVE)
- {
- counter.incRemoves();
- }
- }
- });
-
- // add and remove an object from category list of company to have the CDONotificationBuilder call remove with an
- // index not known to the oldRevision.
- Category category1b = getModel1Factory().createCategory();
- company1.getCategories().add(0, category1b);
- company1.getCategories().remove(1);
-
- // commit the changes.
- transaction1.commit();
-
- // wait for the invalidation to arrive on transaction2.
- transaction2.waitForUpdate(transaction1.getLastCommitTime(), DEFAULT_TIMEOUT);
-
- // cleanup.
- session1.close();
- session2.close();
-
- // check if the notifications arrived (which is not the case because of the exception).
- assertEquals(1, counter.getAdds());
- assertEquals(1, counter.getRemoves());
- }
-
- /**
- * @since 4.0
- */
- public void testBugzilla_306710_addRemove() throws Exception
- {
- final NotifyCounter counter = new NotifyCounter();
-
- // setup connection1.
- CDOSession session1 = openSession();
- CDOTransaction transaction1 = session1.openTransaction();
- CDOResource resource1 = transaction1.createResource(getResourcePath("/test1"));
-
- // add initial model.
- Company company1 = getModel1Factory().createCompany();
- resource1.getContents().add(company1);
- transaction1.commit();
-
- // sleep(100);
-
- // setup connection2.
- CDOSession session2 = openSession();
- CDOTransaction transaction2 = session2.openTransaction();
- transaction2.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
- CDOResource resource2 = transaction2.getOrCreateResource(getResourcePath("/test1"));
-
- // add adapter to company2 to have sendDeltaNotification being called.
- Company company2 = (Company)resource2.getContents().get(0);
- company2.eAdapters().add(new AdapterImpl()
- {
- @Override
- public void notifyChanged(Notification msg)
- {
- if (msg.getEventType() == Notification.ADD)
- {
- counter.incAdds();
- }
- else if (msg.getEventType() == Notification.REMOVE)
- {
- counter.incRemoves();
- }
- }
- });
-
- // add and remove an object from category list of company to have the CDONotificationBuilder call remove with an
- // index not known to the oldRevision.
- Category category1a = getModel1Factory().createCategory();
- company1.getCategories().add(0, category1a);
- company1.getCategories().remove(0);
-
- // commit the changes.
- transaction1.commit();
-
- // wait for the invalidation to arrive on transaction2.
- transaction2.waitForUpdate(transaction1.getLastCommitTime(), DEFAULT_TIMEOUT);
-
- // cleanup.
- session1.close();
- session2.close();
-
- // check if the notifications arrived (which is not the case because of the exception).
- assertEquals(0, counter.getAdds());
- assertEquals(0, counter.getRemoves());
- }
-
- /**
- * Helper class to count the notifications.
- */
- public static class NotifyCounter
- {
- int adds;
-
- int removes;
-
- public int getAdds()
- {
- return adds;
- }
-
- public int getRemoves()
- {
- return removes;
- }
-
- public void incAdds()
- {
- adds++;
- }
-
- public void incRemoves()
- {
- removes++;
- }
- }
-}
+/*
+ * 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:
+ * Eike Stepper - 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.model1.Category;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+
+/**
+ * IndexOutOfBoundsException in buildNotification.
+ * <p>
+ * See bug 306710
+ */
+public class Bugzilla_306710_Test extends AbstractCDOTest
+{
+ public void testBugzilla_306710_remove() throws Exception
+ {
+ final NotifyCounter counter = new NotifyCounter();
+
+ // setup connection1.
+ CDOSession session1 = openSession();
+ CDOTransaction transaction1 = session1.openTransaction();
+ CDOResource resource1 = transaction1.createResource(getResourcePath("/test1"));
+
+ // add initial model.
+ Company company1 = getModel1Factory().createCompany();
+ resource1.getContents().add(company1);
+ Category category1a = getModel1Factory().createCategory();
+ company1.getCategories().add(category1a);
+ transaction1.commit();
+
+ // sleep(100);
+
+ // setup connection2.
+ CDOSession session2 = openSession();
+ CDOTransaction transaction2 = session2.openTransaction();
+ transaction2.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
+ CDOResource resource2 = transaction2.getOrCreateResource(getResourcePath("/test1"));
+
+ // add adapter to company2 to have sendDeltaNotification being called.
+ Company company2 = (Company)resource2.getContents().get(0);
+ company2.eAdapters().add(new AdapterImpl()
+ {
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getEventType() == Notification.ADD)
+ {
+ counter.incAdds();
+ }
+ else if (msg.getEventType() == Notification.REMOVE)
+ {
+ counter.incRemoves();
+ }
+ }
+ });
+
+ // add and remove an object from category list of company to have the CDONotificationBuilder call remove with an
+ // index not known to the oldRevision.
+ Category category1b = getModel1Factory().createCategory();
+ company1.getCategories().add(0, category1b);
+ company1.getCategories().remove(1);
+
+ // commit the changes.
+ transaction1.commit();
+
+ // wait for the invalidation to arrive on transaction2.
+ transaction2.waitForUpdate(transaction1.getLastCommitTime(), DEFAULT_TIMEOUT);
+
+ // cleanup.
+ session1.close();
+ session2.close();
+
+ // check if the notifications arrived (which is not the case because of the exception).
+ assertEquals(1, counter.getAdds());
+ assertEquals(1, counter.getRemoves());
+ }
+
+ /**
+ * @since 4.0
+ */
+ public void testBugzilla_306710_addRemove() throws Exception
+ {
+ final NotifyCounter counter = new NotifyCounter();
+
+ // setup connection1.
+ CDOSession session1 = openSession();
+ CDOTransaction transaction1 = session1.openTransaction();
+ CDOResource resource1 = transaction1.createResource(getResourcePath("/test1"));
+
+ // add initial model.
+ Company company1 = getModel1Factory().createCompany();
+ resource1.getContents().add(company1);
+ transaction1.commit();
+
+ // sleep(100);
+
+ // setup connection2.
+ CDOSession session2 = openSession();
+ CDOTransaction transaction2 = session2.openTransaction();
+ transaction2.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
+ CDOResource resource2 = transaction2.getOrCreateResource(getResourcePath("/test1"));
+
+ // add adapter to company2 to have sendDeltaNotification being called.
+ Company company2 = (Company)resource2.getContents().get(0);
+ company2.eAdapters().add(new AdapterImpl()
+ {
+ @Override
+ public void notifyChanged(Notification msg)
+ {
+ if (msg.getEventType() == Notification.ADD)
+ {
+ counter.incAdds();
+ }
+ else if (msg.getEventType() == Notification.REMOVE)
+ {
+ counter.incRemoves();
+ }
+ }
+ });
+
+ // add and remove an object from category list of company to have the CDONotificationBuilder call remove with an
+ // index not known to the oldRevision.
+ Category category1a = getModel1Factory().createCategory();
+ company1.getCategories().add(0, category1a);
+ company1.getCategories().remove(0);
+
+ // commit the changes.
+ transaction1.commit();
+
+ // wait for the invalidation to arrive on transaction2.
+ transaction2.waitForUpdate(transaction1.getLastCommitTime(), DEFAULT_TIMEOUT);
+
+ // cleanup.
+ session1.close();
+ session2.close();
+
+ // check if the notifications arrived (which is not the case because of the exception).
+ assertEquals(0, counter.getAdds());
+ assertEquals(0, counter.getRemoves());
+ }
+
+ /**
+ * Helper class to count the notifications.
+ */
+ public static class NotifyCounter
+ {
+ int adds;
+
+ int removes;
+
+ public int getAdds()
+ {
+ return adds;
+ }
+
+ public int getRemoves()
+ {
+ return removes;
+ }
+
+ public void incAdds()
+ {
+ adds++;
+ }
+
+ public void incRemoves()
+ {
+ removes++;
+ }
+ }
+}

Back to the top