/* | |
* 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; | |
} | |
} |