Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon McDuff2009-04-05 13:12:50 +0000
committerSimon McDuff2009-04-05 13:12:50 +0000
commit4d2fdea2a47f4c5fd294d5d1349f250847a6541a (patch)
tree3480e7785c4407d6b4bc24e576ce1d36953a4248 /plugins
parent4da9e1b7dc8026e5d5d5a3fa8f6a6fa8077972eb (diff)
downloadcdo-4d2fdea2a47f4c5fd294d5d1349f250847a6541a.tar.gz
cdo-4d2fdea2a47f4c5fd294d5d1349f250847a6541a.tar.xz
cdo-4d2fdea2a47f4c5fd294d5d1349f250847a6541a.zip
[269789] Support EMF BigInteger and BigDecimal data types
https://bugs.eclipse.org/bugs/show_bug.cgi?id=269789
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java71
2 files changed, 73 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java
index 015afcdd8b..d8330e05f9 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java
@@ -75,8 +75,8 @@ public final class CDOModelUtil
static
{
List<CDOType> types = new ArrayList<CDOType>();
- registerCoreType(types, EcorePackage.eINSTANCE.getEBigDecimal(), null);
- registerCoreType(types, EcorePackage.eINSTANCE.getEBigInteger(), null);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEBigDecimal(), CDOType.CUSTOM);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEBigInteger(), CDOType.CUSTOM);
registerCoreType(types, EcorePackage.eINSTANCE.getEBooleanObject(), CDOType.BOOLEAN_OBJECT);
registerCoreType(types, EcorePackage.eINSTANCE.getEBoolean(), CDOType.BOOLEAN);
registerCoreType(types, EcorePackage.eINSTANCE.getEByteArray(), CDOType.BYTE_ARRAY);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
index bf96b8ea32..48954bc8ae 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
@@ -26,6 +26,9 @@ import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
/**
* @author Eike Stepper
*/
@@ -127,6 +130,45 @@ public class AttributeTest extends AbstractCDOTest
}
}
+ public void testBigDecimalAndBigInteger() throws Exception
+ {
+ BigDecimal bigDecimal = new BigDecimal(10);
+ BigInteger bigInteger = BigInteger.valueOf(10);
+ {
+ EPackage packageBytes = createDynamicEPackageBigIntegerAndBigDecimal();
+ CDOSession session = openSession();
+ session.getPackageRegistry().putEPackage(packageBytes);
+ CDOTransaction transaction = session.openTransaction();
+
+ EClass eClass = (EClass)packageBytes.getEClassifier("Gen");
+ EObject gen = packageBytes.getEFactoryInstance().create(eClass);
+ gen.eSet(gen.eClass().getEStructuralFeature("bigDecimal"), bigDecimal);
+ gen.eSet(gen.eClass().getEStructuralFeature("bigInteger"), bigInteger);
+
+ CDOResource resource = transaction.createResource("/my/resource");
+ resource.getContents().add(gen);
+
+ transaction.commit();
+ session.close();
+ }
+
+ clearCache(getRepository().getRevisionManager());
+
+ {
+ CDOSession session = openSession();
+ CDOView view = session.openView();
+ CDOResource resource = view.getResource("/my/resource");
+ EObject gen = resource.getContents().get(0);
+ BigDecimal bigDecimalStore = (BigDecimal)gen.eGet(gen.eClass().getEStructuralFeature("bigDecimal"));
+ BigInteger bigIntegerStore = (BigInteger)gen.eGet(gen.eClass().getEStructuralFeature("bigInteger"));
+ assertEquals(bigDecimal, bigDecimalStore);
+ assertEquals(bigInteger, bigIntegerStore);
+
+ view.close();
+ session.close();
+ }
+ }
+
private EPackage createDynamicEPackageWithByte()
{
final EcoreFactory efactory = EcoreFactory.eINSTANCE;
@@ -150,4 +192,33 @@ public class AttributeTest extends AbstractCDOTest
return schoolPackage;
}
+
+ private EPackage createDynamicEPackageBigIntegerAndBigDecimal()
+ {
+ final EcoreFactory efactory = EcoreFactory.eINSTANCE;
+ final EcorePackage epackage = EcorePackage.eINSTANCE;
+
+ EClass schoolBookEClass = efactory.createEClass();
+ schoolBookEClass.setName("Gen");
+
+ // create a new attribute for this EClass
+ EAttribute attrBigDecimal = efactory.createEAttribute();
+ attrBigDecimal.setName("bigDecimal");
+ attrBigDecimal.setEType(epackage.getEBigDecimal());
+ schoolBookEClass.getEStructuralFeatures().add(attrBigDecimal);
+
+ EAttribute attrBigInteger = efactory.createEAttribute();
+ attrBigInteger.setName("bigInteger");
+ attrBigInteger.setEType(epackage.getEBigInteger());
+ schoolBookEClass.getEStructuralFeatures().add(attrBigInteger);
+
+ // Create a new EPackage and add the new EClasses
+ EPackage schoolPackage = efactory.createEPackage();
+ schoolPackage.setName("EPackageTest");
+ schoolPackage.setNsPrefix("EPackageTest");
+ schoolPackage.setNsURI("http:///www.cdo.org/testcase");
+ schoolPackage.getEClassifiers().add(schoolBookEClass);
+ return schoolPackage;
+
+ }
}

Back to the top