| /* |
| * 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. |
| */ |
| /* |
| * $Id$ |
| */ |
| |
| package org.apache.xml.serializer.dom3; |
| |
| import java.io.IOException; |
| |
| import org.apache.xml.serializer.DOM3Serializer; |
| import org.apache.xml.serializer.SerializationHandler; |
| import org.apache.xml.serializer.utils.WrappedRuntimeException; |
| import org.w3c.dom.DOMErrorHandler; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.ls.LSSerializerFilter; |
| |
| /** |
| * This class implements the DOM3Serializer interface. |
| * |
| * @xsl.usage internal |
| */ |
| public final class DOM3SerializerImpl implements DOM3Serializer { |
| |
| /** |
| * Private class members |
| */ |
| // The DOMErrorHandler |
| private DOMErrorHandler fErrorHandler; |
| |
| // A LSSerializerFilter |
| private LSSerializerFilter fSerializerFilter; |
| |
| // A LSSerializerFilter |
| private String fNewLine; |
| |
| // A SerializationHandler ex. an instance of ToXMLStream |
| private SerializationHandler fSerializationHandler; |
| |
| /** |
| * Constructor |
| * |
| * @param handler An instance of the SerializationHandler interface. |
| */ |
| public DOM3SerializerImpl(SerializationHandler handler) { |
| fSerializationHandler = handler; |
| } |
| |
| // Public memebers |
| |
| /** |
| * Returns a DOMErrorHandler set on the DOM Level 3 Serializer. |
| * |
| * This interface is a public API. |
| * |
| * @return A Level 3 DOMErrorHandler |
| */ |
| public DOMErrorHandler getErrorHandler() { |
| return fErrorHandler; |
| } |
| |
| /** |
| * Returns a LSSerializerFilter set on the DOM Level 3 Serializer to filter nodes |
| * during serialization. |
| * |
| * This interface is a public API. |
| * |
| * @return The Level 3 LSSerializerFilter |
| */ |
| public LSSerializerFilter getNodeFilter() { |
| return fSerializerFilter; |
| } |
| |
| /** |
| * Gets the end-of-line sequence of characters to be used during serialization. |
| */ |
| public char[] getNewLine() { |
| return (fNewLine != null) ? fNewLine.toCharArray() : null; |
| } |
| |
| /** |
| * Serializes the Level 3 DOM node by creating an instance of DOM3TreeWalker |
| * which traverses the DOM tree and invokes handler events to serialize |
| * the DOM NOde. Throws an exception only if an I/O exception occured |
| * while serializing. |
| * This interface is a public API. |
| * |
| * @param node the Level 3 DOM node to serialize |
| * @throws IOException if an I/O exception occured while serializing |
| */ |
| public void serializeDOM3(Node node) throws IOException { |
| try { |
| DOM3TreeWalker walker = new DOM3TreeWalker(fSerializationHandler, |
| fErrorHandler, fSerializerFilter, fNewLine); |
| |
| walker.traverse(node); |
| } catch (org.xml.sax.SAXException se) { |
| throw new WrappedRuntimeException(se); |
| } |
| } |
| |
| /** |
| * Sets a DOMErrorHandler on the DOM Level 3 Serializer. |
| * |
| * This interface is a public API. |
| * |
| * @param handler the Level 3 DOMErrorHandler |
| */ |
| public void setErrorHandler(DOMErrorHandler handler) { |
| fErrorHandler = handler; |
| } |
| |
| /** |
| * Sets a LSSerializerFilter on the DOM Level 3 Serializer to filter nodes |
| * during serialization. |
| * |
| * This interface is a public API. |
| * |
| * @param filter the Level 3 LSSerializerFilter |
| */ |
| public void setNodeFilter(LSSerializerFilter filter) { |
| fSerializerFilter = filter; |
| } |
| |
| /** |
| * Sets a SerializationHandler on the DOM Serializer. |
| * |
| * This interface is a public API. |
| * |
| * @param handler An instance of SerializationHandler |
| */ |
| public void setSerializationHandler(SerializationHandler handler) { |
| fSerializationHandler = handler; |
| } |
| |
| /** |
| * Sets the end-of-line sequence of characters to be used during serialization. |
| * @param newLine The end-of-line sequence of characters to be used during serialization. |
| */ |
| public void setNewLine(char[] newLine) { |
| fNewLine = (newLine != null) ? new String(newLine) : null; |
| } |
| } |