src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/XmlWriterToTree.java
branchstuefe-statistical-history
changeset 57244 a535e674d50d
parent 57221 9653470b7294
parent 54010 17fb726e6d8e
child 57245 0ed37e453a39
--- a/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/XmlWriterToTree.java	Fri Sep 07 07:52:35 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
- */
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.jcp.xml.dsig.internal.dom;
-
-import java.util.List;
-
-import javax.xml.XMLConstants;
-import javax.xml.crypto.MarshalException;
-import javax.xml.crypto.XMLCryptoContext;
-import javax.xml.crypto.XMLStructure;
-import javax.xml.crypto.dom.DOMStructure;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-
-/**
- * Manifestation of XmlWriter interface designed to write to a tree.
- */
-public class XmlWriterToTree implements XmlWriter {
-
-    private Document factory;
-
-    private Element createdElement;
-
-    private Node nextSibling;
-
-    private Node currentNode;
-
-    private List<XmlWriter.ToMarshal<? extends XMLStructure>> m_marshallers;
-
-    public XmlWriterToTree(List<XmlWriter.ToMarshal<? extends XMLStructure>> marshallers, Node parent) {
-        m_marshallers = marshallers;
-        factory = parent instanceof Document ? (Document)parent : parent.getOwnerDocument();
-        currentNode = parent;
-    }
-
-    /**
-     * Reset to a new parent so that the writer can be re-used.
-     * @param newParent
-     */
-    public void resetToNewParent(Node newParent) {
-        currentNode = newParent;
-        createdElement = null;
-    }
-
-    /**
-     * Get the root element created with this writer.
-     * @return the root element created with this writer.
-     */
-    public Element getCreatedElement() {
-        return createdElement;
-    }
-
-    /**
-     * In cases where the serialization is supposed to precede a specific
-     * element, we add an extra parameter to capture that. Only affects the
-     * first element insertion (obviously?).
-     *
-     * @param marshallers
-     * @param parent
-     * @param nextSibling The first element created will be created *before* this element.
-     */
-    public XmlWriterToTree(List<XmlWriter.ToMarshal<? extends XMLStructure>> marshallers, Node parent, Node nextSibling) {
-        this(marshallers, parent);
-        this.nextSibling = nextSibling;
-    }
-
-    @Override
-    public void writeStartElement(String prefix, String localName, String namespaceURI) {
-        if ("".equals(namespaceURI)) {
-            // Map global namespace from StAX to DOM
-            namespaceURI = null;
-        }
-
-        Element newElem = factory.createElementNS(namespaceURI, DOMUtils.getQNameString(prefix, localName));
-        if (nextSibling != null) {
-            newElem = (Element)nextSibling.getParentNode().insertBefore(newElem, nextSibling);
-        }
-        else {
-            newElem = (Element)currentNode.appendChild(newElem);
-        }
-        nextSibling = null;
-        currentNode = newElem;
-
-        if (createdElement == null) {
-            createdElement = newElem;
-        }
-    }
-
-    @Override
-    public void writeEndElement() {
-        currentNode = currentNode.getParentNode();
-    }
-
-
-    @Override
-    public void writeTextElement(String prefix, String localName, String namespaceURI, String value) {
-        writeStartElement(prefix, localName, namespaceURI);
-        writeCharacters(value);
-        writeEndElement();
-    }
-
-    @Override
-    public void writeNamespace(String prefix, String namespaceURI) {
-        if ("".equals(prefix) || prefix == null) {
-            writeAttribute(null, XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns", namespaceURI);
-        }
-        else {
-            writeAttribute("xmlns", XMLConstants.XMLNS_ATTRIBUTE_NS_URI, prefix, namespaceURI);
-        }
-    }
-
-    @Override
-    public void writeCharacters(String text) {
-        Text textNode = factory.createTextNode(text);
-        currentNode.appendChild(textNode);
-    }
-
-
-    @Override
-    public void writeComment(String text) {
-        Comment commentNode = factory.createComment(text);
-        currentNode.appendChild(commentNode);
-    }
-
-    @Override
-    public Attr writeAttribute(String prefix, String namespaceURI, String localName, String value) {
-
-        Attr result = null;
-        if (value != null) {
-            if ("".equals(namespaceURI)) {
-                // Map global namespace from StAX to DOM
-                namespaceURI = null;
-            }
-
-            result = factory.createAttributeNS(namespaceURI, DOMUtils.getQNameString(prefix, localName));
-            result.setTextContent(value);
-            if (! (currentNode instanceof Element)) {
-                throw new IllegalStateException(
-                        "Attempting to add an attribute to something other than an element node. Node is "
-                                + currentNode.toString());
-            }
-            ( (Element)currentNode).setAttributeNodeNS(result);
-        }
-        return result;
-    }
-
-    @Override
-    public void writeIdAttribute(String prefix, String namespaceURI, String localName, String value) {
-        if (value == null) {
-            return;
-        }
-        Attr newAttr = writeAttribute(prefix, namespaceURI, localName, value);
-        ( (Element)currentNode).setIdAttributeNode(newAttr, true);
-    }
-
-
-    @Override
-    public String getCurrentLocalName() {
-        return currentNode.getLocalName();
-    }
-
-    @Override
-    public XMLStructure getCurrentNodeAsStructure() {
-        return new DOMStructure(currentNode);
-    }
-
-    @Override
-    public void marshalStructure(XMLStructure toMarshal, String dsPrefix, XMLCryptoContext context) throws MarshalException {
-
-        // look for the first isInstance match, and marshal to that.
-        for (int idx = 0 ; idx < m_marshallers.size() ; idx++) {
-            @SuppressWarnings("unchecked")
-            XmlWriter.ToMarshal<XMLStructure> marshaller = (ToMarshal<XMLStructure>) m_marshallers.get(idx);
-            if (marshaller.clazzToMatch.isInstance(toMarshal)) {
-                marshaller.marshalObject(this, toMarshal, dsPrefix, context);
-                return;
-            }
-        }
-        throw new IllegalArgumentException("Unable to marshal unexpected object of class " + toMarshal.getClass().toString());
-    }
-
-
-}