public void endElement()

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(">");
                }
            }
        }