in impl/src/main/java/org/apache/tuscany/sdo/util/resource/ChangeSummaryStreamSerializer.java [307:360]
String refDeleted() throws XMLStreamException {
String id = EcoreUtil.getID((EObject) dataObject);
if (id != null)
return id;
id = path(); // "dataObject" is updated too!!
DataObject deletedDataObject = dataObject;
/*
* construct "#//...changeSummary/"
* output: pathDeleted
*/
if (lengthDeleted == -1) {
String path = pathRootObject == null ? "#//" : pathRootObject;
if (pathDeleted == null)
pathDeleted = new StringBuffer(path);
else
pathDeleted.replace(0, pathDeleted.length(), path);
dataObject = rootObject;
path = path();
if (path != null)
pathDeleted.append(path).append('/');
step(changeSummaryElementNS, changeSummaryElementName, pathDeleted).append('/');
lengthDeleted = pathDeleted.length();
} else
pathDeleted.delete(lengthDeleted, pathDeleted.length());
dataObject = changeSummary.getOldContainer(deletedDataObject);
Property containmentProperty = dataObject.getContainmentProperty();
String name = containmentProperty == null ? rootElementName() : xsdHelper.getLocalName(containmentProperty);
int index = 1;
for (Iterator iterator = modifiedDataObjects.iterator(); iterator.hasNext();) {
DataObject modifiedDataObject = (DataObject) iterator.next();
if (skipDeletedModification(modifiedDataObject))
continue;
if (modifiedDataObject == dataObject)
break;
Property property = modifiedDataObject.getContainmentProperty();
if (property == containmentProperty || name.equals(property == null ? rootElementName() : xsdHelper.getLocalName(property)))
++index;
}
pathDeleted/*.append("*:")*/.append(name).append('[').append(index).append("]/");
containmentProperty = changeSummary.getOldContainmentProperty(deletedDataObject);
// assert containmentProperty != null;
step(containmentProperty, pathDeleted);
Object f;
if (containmentProperty.isMany()
|| (f = extendedMetaData.getAffiliation(((EObject) dataObject).eClass(), (EStructuralFeature) containmentProperty)) != null
&& f != containmentProperty)
pathDeleted.append('[').append(
((List) changeSummary.getOldValue(dataObject, containmentProperty).getValue()).indexOf(deletedDataObject) + 1).append(']');
if (id != null)
pathDeleted.append('/').append(id);
return pathDeleted.toString();
}