org.openmdx.dalvik.xml.stream.AbstractXMLStreamWriter Maven / Gradle / Ivy
/*
* ====================================================================
* Project: openMDX/Dalvik, http://www.openmdx.org/
* Description: Abstract XML Stream Writer
* Owner: OMEX AG, Switzerland, http://www.omex.ch
* ====================================================================
*
* This software is published under the BSD license as listed below.
*
* Copyright (c) 2010, OMEX AG, Switzerland
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* * Neither the name of the openMDX team nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* ------------------
*
* This product includes software developed by other organizations as
* listed in the NOTICE file.
*/
package org.openmdx.dalvik.xml.stream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.xml.XMLConstants;
import javax.xml.namespace.NamespaceContext;
import org.openmdx.base.exception.ServiceException;
import org.openmdx.base.io.UTF8Writer;
import org.openmdx.dalvik.uses.javax.xml.stream.XMLStreamException;
import org.openmdx.dalvik.uses.javax.xml.stream.XMLStreamWriter;
import org.openmdx.kernel.exception.BasicException;
/**
* Abstract XML Stream Writer
*/
public abstract class AbstractXMLStreamWriter implements XMLStreamWriter, LargeObjectWriter {
/**
* Constructor
*/
protected AbstractXMLStreamWriter(
) {
super();
}
/**
* The namespace context
*/
private NonRepairingNamespaceContext namespaceContext = new NonRepairingNamespaceContext(
null,
null,
null,
null
);
/**
* Create a namespace scope
*
* @param namespaceURI the element's namespace URI, may be null
* @param prefix the element's prefix, may be XMLConstants.DEFAULT_NS_PREFIX
or null
* @param localName the elements local name
*/
protected void enterNamespaceScope(
String namespaceURI,
String prefix,
String localName
){
this.namespaceContext = new NonRepairingNamespaceContext(
this.namespaceContext,
namespaceURI,
prefix,
localName
);
}
/**
* Retrieve the namespace URI of the currrent element
*
* @return the namespace URI of the currrent element
*/
protected String getCurrentNamespaceURI(){
return this.namespaceContext.getCurrentNamespaceURI();
}
/**
* Retrieve the local name of the currrent element
* @return the local name of the currrent element
*/
protected String getCurrentElementName(){
return this.namespaceContext.getCurrentElementName();
}
/**
* Create a new namespace scope
*/
protected void leaveNamespaceScope(){
this.namespaceContext = this.namespaceContext.getNext();
}
/**
* Map a cause to an XMLStreamException
*
* @param exception the exception to be mapped
*
* @return an XMLStreamException
*/
protected static XMLStreamException toXMLStreamException(
Exception exception
){
BasicException cause = BasicException.toExceptionStack(exception);
return new XMLStreamException(cause.getMessage(), cause);
}
/* (non-Javadoc)
* @see javax.xml.stream.XMLStreamWriter#getNamespaceContext()
*/
@Override
public NamespaceContext getNamespaceContext(
) {
return this.namespaceContext;
}
/**
* Validate a namespace URI prefix
*
* @param namespaceURI
* @param prefix
*
* @return true
if the namespace is already bound to the given prefix
* @throws XMLStreamException
*
* @throws XMLStreamException
*/
protected boolean validatePrefix(
String namespaceURI,
String prefix
) throws XMLStreamException {
try {
Collection
© 2015 - 2024 Weber Informatics LLC | Privacy Policy