use of com.zimbra.doc.soap.apidesc.SoapApiWrapperElement in project zm-mailbox by Zimbra.
the class CommandChanges method elementChangesWhereBaseIsWrapper.
private void elementChangesWhereBaseIsWrapper(Ancestry ancestry, SoapApiWrapperElement baseWrapper, SoapApiNamedElement currElem) {
Map<String, SoapApiNamedElement> baseSubElems = makeSubElemMap(baseWrapper.getSubElements());
if (currElem instanceof SoapApiWrapperElement) {
// Both "base" and "curr" are wrappers.
SoapApiWrapperElement currWrapper = (SoapApiWrapperElement) currElem;
Map<String, SoapApiNamedElement> currSubElems = makeSubElemMap(currWrapper.getSubElements());
findSubElementChanges(ancestry, baseSubElems, currSubElems);
} else if (currElem instanceof SoapApiSimpleElement) {
// "base" was a wrapper.
SoapApiSimpleElement simpleCurr = (SoapApiSimpleElement) currElem;
String currJaxbClass = simpleCurr.getJaxb();
if (currJaxbClass == null) {
// New class doesn't have children, so, have deleted elements which used to come under wrapper
for (Entry<String, SoapApiNamedElement> entry : baseSubElems.entrySet()) {
deletedElems.add(new NamedElem(ancestry.getXpath(), entry.getValue()));
}
} else {
SoapApiType currType = currentTypes.get(currJaxbClass);
// "base" is a wrapper, so any attributes in "curr" are new
if (currType.getAttributes() != null) {
for (SoapApiAttribute attr : currType.getAttributes()) {
newAttrs.add(new NamedAttr(ancestry.getXpath(), attr));
}
}
Map<String, SoapApiNamedElement> currSubElems = makeSubElemMap(currType.getSubElements());
findSubElementChanges(ancestry, baseSubElems, currSubElems);
}
}
}
Aggregations