Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon McDuff2009-03-31 00:17:12 +0000
committerSimon McDuff2009-03-31 00:17:12 +0000
commit4b53c5f9a91c09c7bc1c3bcc15079226db5075ef (patch)
tree5197d86c717fd5bf73ac2a6782eedb178b6c05af /plugins/org.eclipse.emf.cdo/src/org
parent5b39ba6836376ce9bfa7c310ef97ea6ae94f7c20 (diff)
downloadcdo-4b53c5f9a91c09c7bc1c3bcc15079226db5075ef.tar.gz
cdo-4b53c5f9a91c09c7bc1c3bcc15079226db5075ef.tar.xz
cdo-4b53c5f9a91c09c7bc1c3bcc15079226db5075ef.zip
[254698] Allows CDOType to convert value (e.g.: AdjustReference)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=254698
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java58
1 files changed, 32 insertions, 26 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java
index ab89082de0..682f25d712 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java
@@ -38,14 +38,13 @@ import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.InternalEObject.EStore;
import org.eclipse.emf.ecore.impl.EStoreEObjectImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
import org.eclipse.emf.spi.cdo.InternalCDOView;
@@ -369,28 +368,31 @@ public final class CDOStore implements EStore
}
}
}
-
if (feature instanceof EReference)
{
+ // The EReference condition should be in the CDOType.convertToCDO. Since common package do not have access to
+ // InternalCDOView I kept it here.
value = view.convertIDToObject(value);
}
+ else if (FeatureMapUtil.isFeatureMap(feature))
+ {
+ // TODO Handle feature maps!
+ // EStructuralFeatureMapEntryDataTypeImpl entry = (EStructuralFeatureMapEntryDataTypeImpl)value;
+ // EStructuralFeature feature = (EStructuralFeature)view.getResourceSet().getEObject(
+ // URI.createURI(entry.getURI()), true);
+ // Object object = view.convertIDToObject(entry.getObject());
+ // value = FeatureMapUtil.createEntry(feature, object);
+ throw new UnsupportedOperationException(
+ "Feature maps currently not supported. See https://bugs.eclipse.org/249436");
+ }
else
{
- EDataType eType = (EDataType)feature.getEType();
- CDOType type = CDOModelUtil.getCoreType(eType);
- if (type == null)
+ CDOType type = CDOModelUtil.getType(feature.getEType());
+ if (type != null)
{
- value = EcoreUtil.createFromString(eType, (String)value);
+ value = type.convertToEMF(feature.getEType(), value);
}
}
- // TODO Handle feature maps! else if (feature.getType() == CDOType.FEATURE_MAP_ENTRY)
- // {
- // EStructuralFeatureMapEntryDataTypeImpl entry = (EStructuralFeatureMapEntryDataTypeImpl)value;
- // EStructuralFeature feature = (EStructuralFeature)view.getResourceSet().getEObject(
- // URI.createURI(entry.getURI()), true);
- // Object object = view.convertIDToObject(entry.getObject());
- // value = FeatureMapUtil.createEntry(feature, object);
- // }
}
return value;
@@ -409,21 +411,25 @@ public final class CDOStore implements EStore
}
else if (feature instanceof EReference)
{
+ // The EReference condition should be in the CDOType.convertToCDO. Since common package do not have access to
+ // InternalCDOView I kept it here.
value = view.convertObjectToID(value, true);
}
- // TODO Handle feature maps! else if (feature.getType() == CDOType.FEATURE_MAP_ENTRY)
- // {
- // FeatureMap.Entry entry = (FeatureMap.Entry)value;
- // String uri = EcoreUtil.getURI(entry.getEStructuralFeature()).toString();
- // value = CDORevisionUtil.createFeatureMapEntry(uri, entry.getValue());
- // }
- else if (feature.getEType() instanceof EDataType)
+ else if (FeatureMapUtil.isFeatureMap(feature))
+ {
+ // TODO Handle feature maps!
+ // FeatureMap.Entry entry = (FeatureMap.Entry)value;
+ // String uri = EcoreUtil.getURI(entry.getEStructuralFeature()).toString();
+ // value = CDORevisionUtil.createFeatureMapEntry(uri, entry.getValue());
+ throw new UnsupportedOperationException(
+ "Feature maps currently not supported. See https://bugs.eclipse.org/249436");
+ }
+ else
{
- EDataType eType = (EDataType)feature.getEType();
- CDOType type = CDOModelUtil.getCoreType(eType);
- if (type == null)
+ CDOType type = CDOModelUtil.getType(feature.getEType());
+ if (type != null)
{
- value = EcoreUtil.convertToString(eType, value);
+ value = type.convertToCDO(feature.getEType(), value);
}
}
}

Back to the top