Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java32
1 files changed, 25 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java
index 257ae86235..c971760930 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java
@@ -451,8 +451,6 @@ public abstract class CDOServerImporter
else if (FEATURE.equals(qName))
{
String name = attributes.getValue(FEATURE_NAME);
- Object value = value(attributes);
-
EClass eClass = revision.getEClass();
EStructuralFeature feature = eClass.getEStructuralFeature(name);
if (feature == null)
@@ -460,16 +458,36 @@ public abstract class CDOServerImporter
throw new IllegalStateException("Feature " + name + " not found in class " + eClass.getName());
}
- if (feature.isMany())
+ String isSetString = attributes.getValue(FEATURE_ISSET);
+ if (isSetString != null)
{
- CDOList list = revision.getOrCreateList(feature);
- list.add(value);
+ // This must be an empty or an unset list.
+ boolean isSet = Boolean.parseBoolean(isSetString);
+ if (isSet)
+ {
+ // Create an empty list.
+ revision.getOrCreateList(feature);
+ }
+ else
+ {
+ // Leave the list unset.
+ }
}
else
{
- if (value != null)
+ Object value = value(attributes);
+
+ if (feature.isMany())
+ {
+ CDOList list = revision.getOrCreateList(feature);
+ list.add(value);
+ }
+ else
{
- revision.setValue(feature, value);
+ if (value != null)
+ {
+ revision.setValue(feature, value);
+ }
}
}
}

Back to the top