diff options
author | Simon McDuff | 2009-04-05 13:12:50 +0000 |
---|---|---|
committer | Simon McDuff | 2009-04-05 13:12:50 +0000 |
commit | 4d2fdea2a47f4c5fd294d5d1349f250847a6541a (patch) | |
tree | 3480e7785c4407d6b4bc24e576ce1d36953a4248 /plugins | |
parent | 4da9e1b7dc8026e5d5d5a3fa8f6a6fa8077972eb (diff) | |
download | cdo-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.java | 4 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java | 71 |
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; + + } } |