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/FeatureMapTest.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FeatureMapTest.java496
1 files changed, 248 insertions, 248 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FeatureMapTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FeatureMapTest.java
index a8977baa7b..7ce06b455f 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FeatureMapTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FeatureMapTest.java
@@ -1,248 +1,248 @@
-/*
- * 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:
- * Simon McDuff - initial API and implementation
- * Eike Stepper - maintenance
- * Stefan Winkler - enhanced test cases
- */
-package org.eclipse.emf.cdo.tests;
-
-import org.eclipse.emf.cdo.common.model.EMFUtil;
-import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.tests.model5.Doctor;
-import org.eclipse.emf.cdo.tests.model5.TestFeatureMap;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.emf.cdo.util.CommitException;
-
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
-import org.eclipse.emf.ecore.util.FeatureMap;
-
-import java.util.List;
-
-/**
- * @author Simon McDuff
- */
-public class FeatureMapTest extends AbstractCDOTest
-{
- private EPackage pkg;
-
- private EClass dummy;
-
- private EAttribute name;
-
- private EClass fmapContainer;
-
- private EAttribute string1;
-
- private EAttribute integer;
-
- private EAttribute fMap;
-
- private EAttribute string2;
-
- private EAttribute longObj;
-
- private EAttribute bool;
-
- private EReference ref1;
-
- private EReference ref2;
-
- private CDOSession session;
-
- private CDOTransaction tx;
-
- private CDOResource resource;
-
- private EObject dummyObj;
-
- @Override
- protected void doSetUp() throws Exception
- {
- super.doSetUp();
-
- final EcorePackage epackage = EcorePackage.eINSTANCE;
- pkg = EMFUtil.createEPackage("fmaps", "fmaps", "http://cdo.emf.eclipse.org/fmaps");
- dummy = EMFUtil.createEClass(pkg, "Dummy", false, false);
- name = EMFUtil.createEAttribute(dummy, "name", epackage.getEString());
- fmapContainer = EMFUtil.createEClass(pkg, "FMapContainer", false, false);
-
- string1 = EMFUtil.createEAttribute(fmapContainer, "string1", epackage.getEString());
- string1.setUpperBound(-1);
-
- integer = EMFUtil.createEAttribute(fmapContainer, "integer", epackage.getEInt());
- integer.setUpperBound(-1);
-
- fMap = EMFUtil.createEAttribute(fmapContainer, "fmap", epackage.getEFeatureMapEntry());
- fMap.setUpperBound(-1);
-
- string2 = EMFUtil.createEAttribute(fmapContainer, "string2", epackage.getEString());
- string2.setUpperBound(-1);
-
- longObj = EMFUtil.createEAttribute(fmapContainer, "longObj", epackage.getELongObject());
- longObj.setUpperBound(-1);
-
- bool = EMFUtil.createEAttribute(fmapContainer, "bool", epackage.getEBoolean());
-
- ref1 = EMFUtil.createEReference(fmapContainer, "ref1", dummy, true, true);
- ref1.setUpperBound(-1);
-
- ref2 = EMFUtil.createEReference(fmapContainer, "ref2", dummy, true, false);
-
- ExtendedMetaData.INSTANCE.setFeatureKind(fMap, ExtendedMetaData.GROUP_FEATURE);
-
- ExtendedMetaData.INSTANCE.setGroup(string1, fMap);
- ExtendedMetaData.INSTANCE.setGroup(string2, fMap);
- ExtendedMetaData.INSTANCE.setGroup(integer, fMap);
- ExtendedMetaData.INSTANCE.setGroup(longObj, fMap);
- ExtendedMetaData.INSTANCE.setGroup(bool, fMap);
- ExtendedMetaData.INSTANCE.setGroup(ref1, fMap);
- ExtendedMetaData.INSTANCE.setGroup(ref2, fMap);
- if (!isConfig(LEGACY))
- {
- CDOUtil.prepareDynamicEPackage(pkg);
- }
-
- dummyObj = pkg.getEFactoryInstance().create(dummy);
- dummyObj.eSet(name, "DummyName");
-
- session = openSession();
- tx = session.openTransaction();
- resource = tx.getOrCreateResource(getResourcePath("/test/" + System.currentTimeMillis()));
- session.getPackageRegistry().putEPackage(pkg);
- resource.getContents().add(dummyObj);
- tx.commit();
- }
-
- public void _testAddDifferentTypes() throws CommitException
- {
- EObject fMapObj = EcoreUtil.create(fmapContainer);
-
- FeatureMap fm = (FeatureMap)fMapObj.eGet(fMap);
- fm.add(string1, "Hello");
- fm.add(string2, "lorem ipsum dolor sit amet");
- fm.add(string1, "World");
- fm.add(integer, 5);
- fm.add(bool, true);
- fm.add(ref1, dummyObj);
- fm.add(longObj, 12345678901234567L);
- fm.add(ref2, dummyObj);
- fm.add(bool, false); // Overwrites bool=true
- fm.add(ref2, null); // Overwrites ref2=dummyObj
-
- assertEquals(8, fm.size());
-
- resource.getContents().add(fMapObj);
- tx.commit();
-
- purgeCaches();
-
- EObject fMapObjDb = resource.getContents().get(1);
- FeatureMap fmDb = (FeatureMap)fMapObjDb.eGet(fMap);
- EObject dummyDb = resource.getContents().get(0);
-
- assertEquals(8, fmDb.size());
- assertEquals("Hello", fmDb.getValue(0));
- assertEquals(string1, fmDb.getEStructuralFeature(0));
-
- assertEquals("lorem ipsum dolor sit amet", fmDb.getValue(1));
- assertEquals(string2, fmDb.getEStructuralFeature(1));
-
- assertEquals("World", fmDb.getValue(2));
- assertEquals(string1, fmDb.getEStructuralFeature(2));
-
- assertEquals(5, fmDb.getValue(3));
- assertEquals(integer, fmDb.getEStructuralFeature(3));
-
- assertEquals(false, (boolean)(Boolean)fmDb.getValue(4));
- assertEquals(bool, fmDb.getEStructuralFeature(4));
-
- assertEquals(dummyDb, fmDb.getValue(5));
- assertEquals(ref1, fmDb.getEStructuralFeature(5));
-
- assertEquals(12345678901234567L, fmDb.getValue(6));
- assertEquals(longObj, fmDb.getEStructuralFeature(6));
-
- assertNull(fmDb.getValue(7));
- assertEquals(ref2, fmDb.getEStructuralFeature(7));
- }
-
- @Skips("Postgresql")
- public void testFeatureMaps() throws Exception
- {
- skipStoreWithoutFeatureMaps();
-
- EReference feature = getModel5Package().getTestFeatureMap_Doctors();
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- CDOResource resource = transaction.createResource(getResourcePath("/res1"));
-
- TestFeatureMap featureMap = getModel5Factory().createTestFeatureMap();
- FeatureMap people = featureMap.getPeople();
-
- Doctor doctor1 = getModel5Factory().createDoctor();
- Doctor doctor2 = getModel5Factory().createDoctor();
-
- resource.getContents().add(doctor1);
- resource.getContents().add(doctor2);
-
- people.add(feature, doctor1);
- people.add(feature, doctor2);
-
- int featureMapIndex = resource.getContents().size();
- resource.getContents().add(featureMap);
-
- assertEquals(doctor1, people.get(0).getValue());
- List<?> doctors = (List<?>)people.get(feature, true);
- assertEquals(doctor1, doctors.get(0));
- assertEquals(doctor2, doctors.get(1));
- transaction.commit();
-
- clearCache(getRepository().getRevisionManager());
-
- session = openSession();
- transaction = session.openTransaction();
- resource = transaction.getResource(getResourcePath("/res1"));
-
- featureMap = (TestFeatureMap)resource.getContents().get(featureMapIndex);
- doctors = (List<?>)featureMap.getPeople().get(feature, true);
- assertInstanceOf(Doctor.class, doctors.get(0));
- assertInstanceOf(Doctor.class, doctors.get(1));
- }
-
- private void purgeCaches()
- {
- // according to Eike's comment at Bug 249681, client caches are
- // ignored, if a new session is opened.
- // server caches are wiped by the clearCache call.
-
- String path = resource.getPath();
-
- tx.close();
- session.close();
-
- clearCache(getRepository().getRevisionManager());
-
- session = openSession();
- session.getPackageRegistry().putEPackage(pkg);
-
- tx = session.openTransaction();
-
- resource = tx.getResource(getResourcePath(path));
- }
-}
+/*
+ * 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:
+ * Simon McDuff - initial API and implementation
+ * Eike Stepper - maintenance
+ * Stefan Winkler - enhanced test cases
+ */
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.tests.model5.Doctor;
+import org.eclipse.emf.cdo.tests.model5.TestFeatureMap;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CDOUtil;
+import org.eclipse.emf.cdo.util.CommitException;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+import java.util.List;
+
+/**
+ * @author Simon McDuff
+ */
+public class FeatureMapTest extends AbstractCDOTest
+{
+ private EPackage pkg;
+
+ private EClass dummy;
+
+ private EAttribute name;
+
+ private EClass fmapContainer;
+
+ private EAttribute string1;
+
+ private EAttribute integer;
+
+ private EAttribute fMap;
+
+ private EAttribute string2;
+
+ private EAttribute longObj;
+
+ private EAttribute bool;
+
+ private EReference ref1;
+
+ private EReference ref2;
+
+ private CDOSession session;
+
+ private CDOTransaction tx;
+
+ private CDOResource resource;
+
+ private EObject dummyObj;
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ super.doSetUp();
+
+ final EcorePackage epackage = EcorePackage.eINSTANCE;
+ pkg = EMFUtil.createEPackage("fmaps", "fmaps", "http://cdo.emf.eclipse.org/fmaps");
+ dummy = EMFUtil.createEClass(pkg, "Dummy", false, false);
+ name = EMFUtil.createEAttribute(dummy, "name", epackage.getEString());
+ fmapContainer = EMFUtil.createEClass(pkg, "FMapContainer", false, false);
+
+ string1 = EMFUtil.createEAttribute(fmapContainer, "string1", epackage.getEString());
+ string1.setUpperBound(-1);
+
+ integer = EMFUtil.createEAttribute(fmapContainer, "integer", epackage.getEInt());
+ integer.setUpperBound(-1);
+
+ fMap = EMFUtil.createEAttribute(fmapContainer, "fmap", epackage.getEFeatureMapEntry());
+ fMap.setUpperBound(-1);
+
+ string2 = EMFUtil.createEAttribute(fmapContainer, "string2", epackage.getEString());
+ string2.setUpperBound(-1);
+
+ longObj = EMFUtil.createEAttribute(fmapContainer, "longObj", epackage.getELongObject());
+ longObj.setUpperBound(-1);
+
+ bool = EMFUtil.createEAttribute(fmapContainer, "bool", epackage.getEBoolean());
+
+ ref1 = EMFUtil.createEReference(fmapContainer, "ref1", dummy, true, true);
+ ref1.setUpperBound(-1);
+
+ ref2 = EMFUtil.createEReference(fmapContainer, "ref2", dummy, true, false);
+
+ ExtendedMetaData.INSTANCE.setFeatureKind(fMap, ExtendedMetaData.GROUP_FEATURE);
+
+ ExtendedMetaData.INSTANCE.setGroup(string1, fMap);
+ ExtendedMetaData.INSTANCE.setGroup(string2, fMap);
+ ExtendedMetaData.INSTANCE.setGroup(integer, fMap);
+ ExtendedMetaData.INSTANCE.setGroup(longObj, fMap);
+ ExtendedMetaData.INSTANCE.setGroup(bool, fMap);
+ ExtendedMetaData.INSTANCE.setGroup(ref1, fMap);
+ ExtendedMetaData.INSTANCE.setGroup(ref2, fMap);
+ if (!isConfig(LEGACY))
+ {
+ CDOUtil.prepareDynamicEPackage(pkg);
+ }
+
+ dummyObj = pkg.getEFactoryInstance().create(dummy);
+ dummyObj.eSet(name, "DummyName");
+
+ session = openSession();
+ tx = session.openTransaction();
+ resource = tx.getOrCreateResource(getResourcePath("/test/" + System.currentTimeMillis()));
+ session.getPackageRegistry().putEPackage(pkg);
+ resource.getContents().add(dummyObj);
+ tx.commit();
+ }
+
+ public void _testAddDifferentTypes() throws CommitException
+ {
+ EObject fMapObj = EcoreUtil.create(fmapContainer);
+
+ FeatureMap fm = (FeatureMap)fMapObj.eGet(fMap);
+ fm.add(string1, "Hello");
+ fm.add(string2, "lorem ipsum dolor sit amet");
+ fm.add(string1, "World");
+ fm.add(integer, 5);
+ fm.add(bool, true);
+ fm.add(ref1, dummyObj);
+ fm.add(longObj, 12345678901234567L);
+ fm.add(ref2, dummyObj);
+ fm.add(bool, false); // Overwrites bool=true
+ fm.add(ref2, null); // Overwrites ref2=dummyObj
+
+ assertEquals(8, fm.size());
+
+ resource.getContents().add(fMapObj);
+ tx.commit();
+
+ purgeCaches();
+
+ EObject fMapObjDb = resource.getContents().get(1);
+ FeatureMap fmDb = (FeatureMap)fMapObjDb.eGet(fMap);
+ EObject dummyDb = resource.getContents().get(0);
+
+ assertEquals(8, fmDb.size());
+ assertEquals("Hello", fmDb.getValue(0));
+ assertEquals(string1, fmDb.getEStructuralFeature(0));
+
+ assertEquals("lorem ipsum dolor sit amet", fmDb.getValue(1));
+ assertEquals(string2, fmDb.getEStructuralFeature(1));
+
+ assertEquals("World", fmDb.getValue(2));
+ assertEquals(string1, fmDb.getEStructuralFeature(2));
+
+ assertEquals(5, fmDb.getValue(3));
+ assertEquals(integer, fmDb.getEStructuralFeature(3));
+
+ assertEquals(false, (boolean)(Boolean)fmDb.getValue(4));
+ assertEquals(bool, fmDb.getEStructuralFeature(4));
+
+ assertEquals(dummyDb, fmDb.getValue(5));
+ assertEquals(ref1, fmDb.getEStructuralFeature(5));
+
+ assertEquals(12345678901234567L, fmDb.getValue(6));
+ assertEquals(longObj, fmDb.getEStructuralFeature(6));
+
+ assertNull(fmDb.getValue(7));
+ assertEquals(ref2, fmDb.getEStructuralFeature(7));
+ }
+
+ @Skips("Postgresql")
+ public void testFeatureMaps() throws Exception
+ {
+ skipStoreWithoutFeatureMaps();
+
+ EReference feature = getModel5Package().getTestFeatureMap_Doctors();
+
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource resource = transaction.createResource(getResourcePath("/res1"));
+
+ TestFeatureMap featureMap = getModel5Factory().createTestFeatureMap();
+ FeatureMap people = featureMap.getPeople();
+
+ Doctor doctor1 = getModel5Factory().createDoctor();
+ Doctor doctor2 = getModel5Factory().createDoctor();
+
+ resource.getContents().add(doctor1);
+ resource.getContents().add(doctor2);
+
+ people.add(feature, doctor1);
+ people.add(feature, doctor2);
+
+ int featureMapIndex = resource.getContents().size();
+ resource.getContents().add(featureMap);
+
+ assertEquals(doctor1, people.get(0).getValue());
+ List<?> doctors = (List<?>)people.get(feature, true);
+ assertEquals(doctor1, doctors.get(0));
+ assertEquals(doctor2, doctors.get(1));
+ transaction.commit();
+
+ clearCache(getRepository().getRevisionManager());
+
+ session = openSession();
+ transaction = session.openTransaction();
+ resource = transaction.getResource(getResourcePath("/res1"));
+
+ featureMap = (TestFeatureMap)resource.getContents().get(featureMapIndex);
+ doctors = (List<?>)featureMap.getPeople().get(feature, true);
+ assertInstanceOf(Doctor.class, doctors.get(0));
+ assertInstanceOf(Doctor.class, doctors.get(1));
+ }
+
+ private void purgeCaches()
+ {
+ // according to Eike's comment at Bug 249681, client caches are
+ // ignored, if a new session is opened.
+ // server caches are wiped by the clearCache call.
+
+ String path = resource.getPath();
+
+ tx.close();
+ session.close();
+
+ clearCache(getRepository().getRevisionManager());
+
+ session = openSession();
+ session.getPackageRegistry().putEPackage(pkg);
+
+ tx = session.openTransaction();
+
+ resource = tx.getResource(getResourcePath(path));
+ }
+}

Back to the top