in src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java [1280:1342]
public void endElement(String uri, String localName, String qName) throws SAXException {
if (state == State.PUB && "artifact".equals(qName)
&& artifact.getConfigurations().length == 0) {
String[] configs = (publicationsDefaultConf == null)
? getMd().getConfigurationsNames() : publicationsDefaultConf;
for (String config : configs) {
artifact.addConfiguration(config);
getMd().addArtifact(config, artifact);
}
} else if ("configurations".equals(qName)) {
checkConfigurations();
} else if (state == State.DEP_ARTIFACT && "artifact".equals(qName)
|| state == State.ARTIFACT_INCLUDE && "include".equals(qName)
|| state == State.ARTIFACT_EXCLUDE && "exclude".equals(qName)) {
state = State.DEP;
if (confAware.getConfigurations().length == 0) {
for (String config : getMd().getConfigurationsNames()) {
addConfiguration(config);
}
}
confAware = null;
} else if ("exclude".equals(qName) && state == State.EXCLUDE) {
if (confAware.getConfigurations().length == 0) {
for (String config : getMd().getConfigurationsNames()) {
addConfiguration(config);
}
}
confAware = null;
state = State.DEPS;
} else if ("dependency".equals(qName) && state == State.DEP) {
if (dd.getModuleConfigurations().length == 0) {
parseDepsConfs(getDefaultConf(), dd);
}
state = State.DEPS;
} else if ("dependencies".equals(qName) && state == State.DEPS) {
state = State.NONE;
} else if (state == State.INFO && "info".equals(qName)) {
state = State.NONE;
} else if (state == State.DESCRIPTION && "description".equals(qName)) {
getMd().setDescription(buffer == null ? "" : buffer.toString().trim());
buffer = null;
state = State.INFO;
} else if (state == State.EXTRA_INFO) {
String content = buffer == null ? "" : buffer.toString();
buffer = null;
ExtraInfoHolder extraInfo = extraInfoStack.pop();
extraInfo.setContent(content);
if (extraInfoStack.isEmpty()) {
getMd().addExtraInfo(extraInfo);
state = State.INFO;
} else {
ExtraInfoHolder parentHolder = extraInfoStack.peek();
parentHolder.getNestedExtraInfoHolder().add(extraInfo);
}
} else if (state == State.DESCRIPTION) {
if (buffer.toString().endsWith("<" + qName + ">")) {
buffer.deleteCharAt(buffer.length() - 1);
buffer.append("/>");
} else {
buffer.append("</").append(qName).append(">");
}
}
}