Prepared the ADB data sources for AXIOM-420.

diff --git a/modules/adb/src/org/apache/axis2/databinding/AbstractADBDataSource.java b/modules/adb/src/org/apache/axis2/databinding/AbstractADBDataSource.java
index c83767d..0c3263f 100644
--- a/modules/adb/src/org/apache/axis2/databinding/AbstractADBDataSource.java
+++ b/modules/adb/src/org/apache/axis2/databinding/AbstractADBDataSource.java
@@ -18,31 +18,14 @@
  */
 package org.apache.axis2.databinding;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.HashMap;
-
 import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
 
-import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMDataSourceExt;
-import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.QNameAwareOMDataSource;
-import org.apache.axiom.om.util.StAXUtils;
-import org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder;
+import org.apache.axiom.om.ds.AbstractPushOMDataSource;
 
-public abstract class AbstractADBDataSource implements OMDataSourceExt, QNameAwareOMDataSource {
+public abstract class AbstractADBDataSource extends AbstractPushOMDataSource implements QNameAwareOMDataSource {
     protected QName parentQName;
-    
-    HashMap map = null;  // Map of properties
 
     public AbstractADBDataSource(QName parentQName) {
         this.parentQName = parentQName;
@@ -61,51 +44,6 @@
     }
 
     /**
-     * @param output
-     * @param format
-     * @throws XMLStreamException
-     * @see OMDataSource#serialize(java.io.OutputStream, org.apache.axiom.om.OMOutputFormat)
-     */
-    public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {
-        XMLStreamWriter xmlStreamWriter = StAXUtils.createXMLStreamWriter(output);
-        serialize(xmlStreamWriter);
-        xmlStreamWriter.flush();
-    }
-
-    /**
-     * @param writer
-     * @param format
-     * @throws XMLStreamException
-     * @see OMDataSource#serialize(java.io.Writer, org.apache.axiom.om.OMOutputFormat)
-     */
-    public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {
-        XMLStreamWriter xmlStreamWriter = StAXUtils.createXMLStreamWriter(writer);
-        serialize(xmlStreamWriter);
-        xmlStreamWriter.flush();
-    }
-
-    /**
-     * @throws XMLStreamException
-     * @see org.apache.axiom.om.OMDataSource#getReader()
-     */
-    public XMLStreamReader getReader() throws XMLStreamException {
-        MTOMAwareOMBuilder mtomAwareOMBuilder = new MTOMAwareOMBuilder();
-        serialize(mtomAwareOMBuilder);
-        return mtomAwareOMBuilder.getOMElement().getXMLStreamReader();
-    }
-
-    /**
-     * Returns true if reading the backing object is destructive.
-     * An example of an object with a destructive read is an InputSteam.
-     * The owning OMSourcedElement uses this information to detemine if OM tree
-     * expansion is needed when reading the OMDataSourceExt.
-     * @return boolean
-     */
-    public boolean isDestructiveRead() {
-        return false;
-    }
-    
-    /**
      * Returns true if writing the backing object is destructive.
      * An example of an object with a destructive write is an InputStream.
      * The owning OMSourcedElement uses this information to detemine if OM tree
@@ -116,55 +54,7 @@
         return false;
     }
     
-    /**
-     * Returns a InputStream representing the xml data
-     * @param encoding String encoding of InputStream
-     * @return InputStream
-     */
-    public InputStream getXMLInputStream(String encoding) throws UnsupportedEncodingException {
-        return new ByteArrayInputStream(getXMLBytes(encoding));
-    }
-    
-    /**
-     * Returns a byte[] representing the xml data
-     * @param encoding String encoding of InputStream
-     * @return byte[]
-     * @see getXMLInputStream
-     */
-    public byte[] getXMLBytes(String encoding) throws UnsupportedEncodingException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        OMOutputFormat format = new OMOutputFormat();
-        format.setCharSetEncoding(encoding);
-        try {
-            serialize(baos, format);
-        } catch (XMLStreamException e) {
-            new OMException(e);
-        }
-        return baos.toByteArray();
-    }
-    
     public OMDataSourceExt copy() {
         return null;
     }
-    
-    public Object getProperty(String key) {
-        if (map == null) {
-            return null;
-        }
-        return map.get(key);
-    }
-
-    public Object setProperty(String key, Object value) {
-        if (map == null) {
-            map = new HashMap();
-        }
-        return map.put(key, value);
-    }
-
-    public boolean hasProperty(String key) {
-        if (map == null) {
-            return false;
-        } 
-        return map.containsKey(key);
-    }
 }
diff --git a/modules/adb/src/org/apache/axis2/databinding/utils/writer/MTOMAwareOMBuilder.java b/modules/adb/src/org/apache/axis2/databinding/utils/writer/MTOMAwareOMBuilder.java
deleted file mode 100644
index eecfe1e..0000000
--- a/modules/adb/src/org/apache/axis2/databinding/utils/writer/MTOMAwareOMBuilder.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * 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.apache.axis2.databinding.utils.writer;
-
-import org.apache.axiom.ext.stax.datahandler.DataHandlerProvider;
-import org.apache.axiom.ext.stax.datahandler.DataHandlerWriter;
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMText;
-
-import javax.activation.DataHandler;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import java.io.IOException;
-import java.util.*;
-
-
-public class MTOMAwareOMBuilder implements XMLStreamWriter, DataHandlerWriter {
-    // this is the om Element we are going to create
-    private OMElement rootElement;
-    private OMFactory omFactory;
-
-    private OMElement currentOMElement;
-
-    private Stack omElementStack;
-
-    // this map contains the namespace key and OMNamespace
-    private Map namespaceOMNamesapceMap;
-
-    private int prefixNum;
-
-    private OMStreamNamespaceContext omStreamNamespaceContext;
-
-    /**
-     * this stack keeps the name spaces added to the oMElementStack at a pirticular element
-     * when end element is written the namspeces added at a pirticulare element is removed.
-     */
-    private Stack<List<String>> namespacesListStack;
-
-
-    public MTOMAwareOMBuilder() {
-        omFactory = OMAbstractFactory.getOMFactory();
-        omElementStack = new Stack();
-        currentOMElement = null;
-        omStreamNamespaceContext = new OMStreamNamespaceContext();
-        namespaceOMNamesapceMap = new HashMap();
-        prefixNum = 0;
-        namespacesListStack = new Stack<List<String>>();
-
-    }
-
-    // serailizer must have finish serializing when we call this method.
-    public OMElement getOMElement() throws XMLStreamException {
-        if (!omElementStack.isEmpty()) {
-            throw new XMLStreamException("This is an invalid Xml ");
-        }
-        return rootElement;
-    }
-
-    private OMNamespace getOMNamespace(String namespace, String prefix) throws XMLStreamException {
-        OMNamespace omNamespace = null;
-        if (namespace != null) {
-            if (namespaceOMNamesapceMap.containsKey(namespace)) {
-                omNamespace = (OMNamespace) namespaceOMNamesapceMap.get(namespace);
-            } else {
-                if (prefix == null) {
-                    prefix = "ns" + ++prefixNum;
-                } 
-                omNamespace = omFactory.createOMNamespace(namespace, prefix);
-                this.omStreamNamespaceContext.registerNamespace(namespace, prefix);
-                namespaceOMNamesapceMap.put(namespace, omNamespace);
-                // add this namespce to top list as well
-                namespacesListStack.peek().add(namespace);
-            }
-        }
-        return omNamespace;
-    }
-
-    public void writeStartElement(String localName) throws XMLStreamException {
-        writeStartElement(null, localName, null);
-    }
-
-    public void writeStartElement(String namespace, String localName) throws XMLStreamException {
-        writeStartElement(null, localName, namespace);
-    }
-
-    public void writeStartElement(String prefix, String localName, String namespace) throws XMLStreamException {
-        // add a new stack element at the start of a new element
-        namespacesListStack.push(new ArrayList<String>());
-        OMNamespace omNamespace = getOMNamespace(namespace, prefix);
-        currentOMElement = omFactory.createOMElement(localName, omNamespace);
-        if (!omElementStack.isEmpty()) {
-            // we always keep the parent at the top of the stack
-            OMElement parent = (OMElement) omElementStack.peek();
-            parent.addChild(currentOMElement);
-        } else {
-            // i.e this must be an start root element
-            rootElement = currentOMElement;
-        }
-        // set this as the top element
-        omElementStack.push(currentOMElement);
-    }
-
-    public void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException {
-        writeEmptyElement(null, localName, namespaceURI);
-    }
-
-    public void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException {
-        writeStartElement(prefix, localName, namespaceURI);
-        writeEndElement();
-    }
-
-    public void writeEmptyElement(String localName) throws XMLStreamException {
-        writeEmptyElement(null, localName, null);
-    }
-
-    public void writeEndElement() throws XMLStreamException {
-        omElementStack.pop();
-        // remove the namespaces declared by this element
-        List<String> addedNamespaces = namespacesListStack.pop();
-        for (String namespace : addedNamespaces){
-            namespaceOMNamesapceMap.remove(namespace);
-            omStreamNamespaceContext.removeNamespce(namespace);
-        }
-    }
-
-    public void writeEndDocument() throws XMLStreamException {
-        // nothing to do
-    }
-
-    public void close() throws XMLStreamException {
-        // nothing to do
-    }
-
-    public void flush() throws XMLStreamException {
-        // nothing to do
-
-
-    }
-
-    public void writeAttribute(String attributeName, String attributeValue) throws XMLStreamException {
-        writeAttribute(null, null, attributeName, attributeValue);
-    }
-
-    public void writeAttribute(String prefix, String namespace, String attributeName, String attributeValue) throws XMLStreamException {
-        currentOMElement.addAttribute(attributeName, attributeValue, getOMNamespace(namespace, prefix));
-    }
-
-    public void writeAttribute(String namespace, String attributeName, String attributeValue) throws XMLStreamException {
-        writeAttribute(null, namespace, attributeName, attributeValue);
-    }
-
-    public void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException {
-        if (namespaceURI != null) {
-            OMNamespace omNamespace = getOMNamespace(namespaceURI, prefix);
-            currentOMElement.declareNamespace(omNamespace);
-        }
-    }
-
-    public void writeDefaultNamespace(String namespace) throws XMLStreamException {
-        rootElement.declareDefaultNamespace(namespace);
-        getOMNamespace(namespace, "");
-    }
-
-    public void writeComment(String string) throws XMLStreamException {
-        omFactory.createOMComment(currentOMElement, string);
-    }
-
-    public void writeProcessingInstruction(String string) throws XMLStreamException {
-        throw new UnsupportedOperationException("this method has not yet been implemented");
-    }
-
-    public void writeProcessingInstruction(String string, String string1) throws XMLStreamException {
-        throw new UnsupportedOperationException("this method has not yet been implemented");
-    }
-
-    public void writeCData(String string) throws XMLStreamException {
-        throw new UnsupportedOperationException("this method has not yet been implemented");
-    }
-
-    public void writeDTD(String string) throws XMLStreamException {
-        throw new UnsupportedOperationException("this method has not yet been implemented");
-    }
-
-    public void writeEntityRef(String string) throws XMLStreamException {
-        throw new UnsupportedOperationException("this method has not yet been implemented");
-    }
-
-    public void writeStartDocument() throws XMLStreamException {
-        // nothing to do
-    }
-
-    public void writeStartDocument(String string) throws XMLStreamException {
-        // nothing to do
-    }
-
-    public void writeStartDocument(String string, String string1) throws XMLStreamException {
-        // nothing to do
-    }
-
-    public void writeCharacters(String string) throws XMLStreamException {
-        currentOMElement.setText(string);
-    }
-
-    public void writeCharacters(char[] chars, int i, int i1) throws XMLStreamException {
-        writeCharacters(new String(chars, i, i1));
-    }
-
-    public String getPrefix(String namespace) throws XMLStreamException {
-        return this.omStreamNamespaceContext.getPrefix(namespace);
-    }
-
-    public void setPrefix(String prefix, String uri) throws XMLStreamException {
-        // this method will add the namespace correctly.
-        getOMNamespace(uri, prefix);
-    }
-
-    public void setDefaultNamespace(String namespace) throws XMLStreamException {
-        rootElement.declareDefaultNamespace(namespace);
-        getOMNamespace(namespace, "");
-    }
-
-    public void setNamespaceContext(NamespaceContext namespaceContext) throws XMLStreamException {
-        throw new UnsupportedOperationException("this method has not yet been implemented");
-    }
-
-    public NamespaceContext getNamespaceContext() {
-        return this.omStreamNamespaceContext;
-    }
-
-    public Object getProperty(String name) throws IllegalArgumentException {
-        if (DataHandlerWriter.PROPERTY.equals(name)) {
-            return this;
-        } else {
-            throw new IllegalArgumentException("Property " + name + " not supported");
-        }
-    }
-
-    public void writeDataHandler(DataHandler dataHandler, String contentID, boolean optimize)
-            throws IOException, XMLStreamException {
-        OMText omText = omFactory.createOMText(dataHandler, optimize);
-        if (contentID != null) {
-            omText.setContentID(contentID);
-        }
-        currentOMElement.addChild(omText);
-    }
-
-    public void writeDataHandler(DataHandlerProvider dataHandlerProvider, String contentID,
-            boolean optimize) throws IOException, XMLStreamException {
-        OMText omText = omFactory.createOMText(contentID, dataHandlerProvider, optimize);
-        currentOMElement.addChild(omText);
-    }
-}
diff --git a/modules/adb/src/org/apache/axis2/databinding/utils/writer/OMStreamNamespaceContext.java b/modules/adb/src/org/apache/axis2/databinding/utils/writer/OMStreamNamespaceContext.java
deleted file mode 100644
index e947b9c..0000000
--- a/modules/adb/src/org/apache/axis2/databinding/utils/writer/OMStreamNamespaceContext.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.apache.axis2.databinding.utils.writer;
-
-import javax.xml.namespace.NamespaceContext;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-
-public class OMStreamNamespaceContext implements NamespaceContext {
-
-    private Map namespaceToPrefixMap;
-    private Map prefixToNamespaceMap;
-
-    public OMStreamNamespaceContext() {
-        this.namespaceToPrefixMap = new HashMap();
-        this.prefixToNamespaceMap = new HashMap();
-    }
-
-    public void registerNamespace(String namespace,String prefix){
-        this.namespaceToPrefixMap.put(namespace,prefix);
-        this.prefixToNamespaceMap.put(prefix,namespace);
-    }
-
-    public String getNamespaceURI(String prefix) {
-        return (String) prefixToNamespaceMap.get(prefix);
-    }
-
-    public String getPrefix(String namespaceURI) {
-        return (String) namespaceToPrefixMap.get(namespaceURI);
-    }
-
-    public Iterator getPrefixes(String namespaceURI) {
-        return prefixToNamespaceMap.keySet().iterator();
-    }
-
-    public void removeNamespce(String namespaceURI){
-        String prefix = (String) this.namespaceToPrefixMap.remove(namespaceURI);
-        this.prefixToNamespaceMap.remove(prefix);
-    }
-
-
-}
diff --git a/modules/adb/test/org/apache/axis2/databinding/utils/writer/MTOMAwareOMBuilderTest.java b/modules/adb/test/org/apache/axis2/databinding/utils/writer/MTOMAwareOMBuilderTest.java
deleted file mode 100644
index 8eea492..0000000
--- a/modules/adb/test/org/apache/axis2/databinding/utils/writer/MTOMAwareOMBuilderTest.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * 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.apache.axis2.databinding.utils.writer;
-
-import junit.framework.TestCase;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axis2.databinding.utils.BeanUtil;
-import org.apache.axis2.databinding.utils.ConverterUtil;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-
-public class MTOMAwareOMBuilderTest extends TestCase {
-
-    private int prefixNum;
-
-    public void testGetOMElement() {
-
-        MTOMAwareOMBuilder writer = new MTOMAwareOMBuilder();
-
-        try {
-
-            writeStartElement(null, "test1", writer);
-            writeStartElement("http://apach.temp.uri", "test2", writer);
-            writeStartElement("http://apach.temp.uri1", "test3", writer);
-            writer.writeCharacters("test string3");
-            writeAttribute("http://apach.temp.uri", "attribute1", "attrubteValue1", writer);
-            writeQNames(new QName[]{new QName("http://axis2.apach.org1", "testQName"),
-                    new QName("http://axis2.apach.org2", "testQName2")}, writer);
-            writer.writeEndElement();
-            writeStartElement("http://apach.temp.uri1", "test4", writer);
-            writeAttribute(null, "attribute1", "attrubteValue1", writer);
-            writeAttribute("ns1", "http://apach.temp.uri", "attribute1", "attrubteValue1", writer);
-            writer.writeCharacters("test string4");
-            writer.writeEndElement();
-            writeStartElement("http://temp.new.org", "testattributeElement", writer);
-            writeQNameAttribute(null, "testQname", new QName("http://temp.new.org", "testQName"), writer);
-            writeQName(new QName("http://axis2.apach.org", "testQName"), writer);
-            writer.writeEndElement();
-            writer.writeEndElement();
-            writer.writeEndElement();
-
-            OMElement omElement = writer.getOMElement();
-            System.out.println("OM String ==> " + omElement.toString());
-
-            XMLStreamReader xmlReader = omElement.getXMLStreamReader();
-            StAXOMBuilder stAXOMBuilder = new StAXOMBuilder(xmlReader);
-            OMElement result = stAXOMBuilder.getDocumentElement();
-
-            System.out.println("OM result ==> " + result.toString());
-        } catch (XMLStreamException e) {
-            fail();
-        }
-
-    }
-
-    private String generatePrefix(String string) {
-        return "ns" + ++prefixNum;
-    }
-
-    private void writeStartElement(String namespace, String localName, XMLStreamWriter xmlWriter) throws XMLStreamException {
-
-        if ((namespace != null) && ! namespace.equals("")) {
-            java.lang.String prefix = xmlWriter.getPrefix(namespace);
-
-            if (prefix == null) {
-                prefix = "ns" + ++prefixNum;
-                xmlWriter.writeStartElement(prefix, localName, namespace);
-                xmlWriter.writeNamespace(prefix, namespace);
-                xmlWriter.setPrefix(prefix, namespace);
-            } else {
-                xmlWriter.writeStartElement(namespace, localName);
-            }
-        } else {
-            xmlWriter.writeStartElement(localName);
-        }
-    }
-
-    private void writeAttribute(String prefix, String namespace, String attName,
-                                String attValue, XMLStreamWriter xmlWriter)
-            throws XMLStreamException {
-        if (xmlWriter.getPrefix(namespace) == null) {
-            xmlWriter.writeNamespace(prefix, namespace);
-            xmlWriter.setPrefix(prefix, namespace);
-
-        }
-        xmlWriter.writeAttribute(namespace, attName, attValue);
-    }
-
-    private void writeAttribute(String namespace, String attName,
-                                String attValue, XMLStreamWriter xmlWriter) throws XMLStreamException {
-        if ((namespace == null) || namespace.equals("")) {
-            xmlWriter.writeAttribute(attName, attValue);
-        } else {
-            registerPrefix(xmlWriter, namespace);
-            xmlWriter.writeAttribute(namespace, attName, attValue);
-        }
-    }
-
-    private void writeQNameAttribute(String namespace, String attName,
-                                     QName qname, XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
-
-        String attributeNamespace = qname.getNamespaceURI();
-        String attributePrefix = xmlWriter.getPrefix(attributeNamespace);
-        if (attributePrefix == null) {
-            attributePrefix = registerPrefix(xmlWriter, attributeNamespace);
-        }
-        java.lang.String attributeValue;
-        if (attributePrefix.trim().length() > 0) {
-            attributeValue = attributePrefix + ":" + qname.getLocalPart();
-        } else {
-            attributeValue = qname.getLocalPart();
-        }
-
-        if ((namespace != null) && namespace.equals("")) {
-            xmlWriter.writeAttribute(attName, attributeValue);
-        } else {
-            if (namespace != null) {
-                registerPrefix(xmlWriter, namespace);
-            }
-            xmlWriter.writeAttribute(namespace, attName, attributeValue);
-        }
-    }
-
-    private void writeQName(QName qname,
-                            XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
-        String namespaceURI = qname.getNamespaceURI();
-        if (namespaceURI != null) {
-            String prefix = xmlWriter.getPrefix(namespaceURI);
-            if (prefix == null) {
-                prefix = generatePrefix(namespaceURI);
-                xmlWriter.writeNamespace(prefix, namespaceURI);
-                xmlWriter.setPrefix(prefix, namespaceURI);
-            }
-
-            if (prefix.trim().length() > 0) {
-                xmlWriter.writeCharacters(prefix + ":" + ConverterUtil.convertToString(qname));
-            } else {
-                // i.e this is the default namespace
-                xmlWriter.writeCharacters(ConverterUtil.convertToString(qname));
-            }
-
-        } else {
-            xmlWriter.writeCharacters(ConverterUtil.convertToString(qname));
-        }
-    }
-
-    private void writeQNames(QName[] qnames,
-                             XMLStreamWriter xmlWriter) throws XMLStreamException {
-
-        if (qnames != null) {
-            // we have to store this data until last moment since it is not possible to write any
-            // namespace data after writing the charactor data
-            StringBuffer stringToWrite = new StringBuffer();
-            String namespaceURI = null;
-            String prefix = null;
-
-            for (int i = 0; i < qnames.length; i++) {
-                if (i > 0) {
-                    stringToWrite.append(" ");
-                }
-                namespaceURI = qnames[i].getNamespaceURI();
-                if (namespaceURI != null) {
-                    prefix = xmlWriter.getPrefix(namespaceURI);
-                    if ((prefix == null) || (prefix.length() == 0)) {
-                        prefix = generatePrefix(namespaceURI);
-                        xmlWriter.writeNamespace(prefix, namespaceURI);
-                        xmlWriter.setPrefix(prefix, namespaceURI);
-                    }
-
-                    if (prefix.trim().length() > 0) {
-                        stringToWrite.append(prefix).append(":").append(ConverterUtil.convertToString(qnames[i]));
-                    } else {
-                        stringToWrite.append(ConverterUtil.convertToString(qnames[i]));
-                    }
-                } else {
-                    stringToWrite.append(ConverterUtil.convertToString(qnames[i]));
-                }
-            }
-            xmlWriter.writeCharacters(stringToWrite.toString());
-        }
-
-    }
-
-
-    private String registerPrefix(XMLStreamWriter xmlWriter, String namespace) throws XMLStreamException {
-        String prefix = xmlWriter.getPrefix(namespace);
-
-        if (prefix == null) {
-            prefix = generatePrefix(namespace);
-            while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
-                prefix = BeanUtil.getUniquePrefix();
-            }
-            xmlWriter.writeNamespace(prefix, namespace);
-            xmlWriter.setPrefix(prefix, namespace);
-        }
-        return prefix;
-    }
-
-}