in impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java [875:969]
protected boolean saveElementFeatureMap(EObject o, EStructuralFeature f)
{
List values = (List)helper.getValue(o, f);
int size = values.size();
for (int i = 0; i < size; i++)
{
FeatureMap.Entry entry = (FeatureMap.Entry)values.get(i);
EStructuralFeature entryFeature = entry.getEStructuralFeature();
Object value = entry.getValue();
if (entryFeature instanceof EReference)
{
if (value == null)
{
saveNil(o, entryFeature);
}
else
{
EReference referenceEntryFeature = (EReference)entryFeature;
if (referenceEntryFeature.isContainment())
{
saveElement((InternalEObject)value, entryFeature);
}
else if (referenceEntryFeature.isResolveProxies())
{
saveFeatureMapElementReference((EObject)value, referenceEntryFeature);
}
else
{
saveElementIDRef(o, (EObject)value, entryFeature);
}
}
}
else
{
if (entryFeature == XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot_Text())
{
String svalue = value.toString();
if (escape != null)
{
svalue = escape.convertText(svalue);
}
if (!toDOM)
{
doc.addText(svalue);
}
else
{
Node text = document.createTextNode(svalue);
currentNode.appendChild(text);
handler.recordValues(text, o, f, entry);
}
}
else if (entryFeature == XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot_CDATA())
{
String stringValue = value.toString();
if (escape != null)
{
stringValue = escape.convertLines(stringValue);
}
if (!toDOM)
{
doc.addCDATA(stringValue);
}
else
{
Node cdata = document.createCDATASection(stringValue);
currentNode.appendChild(cdata);
handler.recordValues(cdata, o, f, entry);
}
}
else if (entryFeature == XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot_Comment())
{
String stringValue = value.toString();
if (escape != null)
{
stringValue = escape.convertLines(stringValue);
}
if (!toDOM)
{
doc.addComment(stringValue);
}
else
{
// TODO comments are not sent to recordValues
currentNode.appendChild(document.createComment(stringValue));
}
}
else
{
saveElement(o, value, entryFeature);
}
}
}
return size > 0;
}