public void processResource()

in src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java [62:109]


    public void processResource(String resource, InputStream is, List<Relocator> relocators, long time)
            throws IOException {
        Document r;
        try {
            SAXBuilder builder = new SAXBuilder(false);
            builder.setExpandEntities(false);
            if (ignoreDtd) {
                builder.setEntityResolver(new EntityResolver() {
                    @Override
                    public InputSource resolveEntity(String publicId, String systemId)
                            throws SAXException, IOException {
                        return new InputSource(new StringReader(""));
                    }
                });
            }
            r = builder.build(is);
        } catch (JDOMException e) {
            throw new RuntimeException("Error processing resource " + resource + ": " + e.getMessage(), e);
        }

        if (doc == null) {
            doc = r;
        } else {
            Element root = r.getRootElement();

            for (Iterator<Attribute> itr = root.getAttributes().iterator(); itr.hasNext(); ) {
                Attribute a = itr.next();
                itr.remove();

                Element mergedEl = doc.getRootElement();
                Attribute mergedAtt = mergedEl.getAttribute(a.getName(), a.getNamespace());
                if (mergedAtt == null) {
                    mergedEl.setAttribute(a);
                }
            }

            for (Iterator<Element> itr = root.getChildren().iterator(); itr.hasNext(); ) {
                Content n = itr.next();
                itr.remove();

                doc.getRootElement().addContent(n);
            }
        }

        if (time > this.time) {
            this.time = time;
        }
    }