protected boolean saveElementFeatureMap()

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;
        }