diff options
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.java | 32 |
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); + } } } } |