alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Axis 2 example source code file (OMElementStreamWriterTest.java)

This example Axis 2 source code file (OMElementStreamWriterTest.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Axis 2 tags/keywords

omelement, omelementstreamwriter, omelementstreamwritertest, qname, qname, staxombuilder, string, string, stringbuffer, xmlstreamexception, xmlstreamexception, xmlstreamreader, xmlstreamwriter, xmlstreamwriter

The Axis 2 OMElementStreamWriterTest.java source code

/*
 * Copyright 2004,2005 The Apache Software Foundation.
 *
 * Licensed 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 javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.stream.XMLStreamReader;
import javax.xml.namespace.QName;

import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axis2.databinding.utils.ConverterUtil;
import org.apache.axis2.databinding.utils.BeanUtil;


public class OMElementStreamWriterTest extends TestCase {

    private int prefixNum;

    public void testGetOMElement() {

        OMElementStreamWriter omElementStreamWriter = new OMElementStreamWriter();

        try {

            writeStartElement(null, "test1", omElementStreamWriter);
            writeStartElement("http://apach.temp.uri", "test2", omElementStreamWriter);
            writeStartElement("http://apach.temp.uri1", "test3", omElementStreamWriter);
            omElementStreamWriter.writeCharacters("test string3");
            writeAttribute("http://apach.temp.uri", "attribute1", "attrubteValue1", omElementStreamWriter);
            writeQNames(new QName[]{new QName("http://axis2.apach.org1", "testQName"),
                    new QName("http://axis2.apach.org2", "testQName2")}, omElementStreamWriter);
            omElementStreamWriter.writeEndElement();
            writeStartElement("http://apach.temp.uri1", "test4", omElementStreamWriter);
            writeAttribute(null, "attribute1", "attrubteValue1", omElementStreamWriter);
            writeAttribute("ns1", "http://apach.temp.uri", "attribute1", "attrubteValue1", omElementStreamWriter);
            omElementStreamWriter.writeCharacters("test string4");
            omElementStreamWriter.writeEndElement();
            writeStartElement("http://temp.new.org", "testattributeElement", omElementStreamWriter);
            writeQNameAttribute(null, "testQname", new QName("http://temp.new.org", "testQName"), omElementStreamWriter);
            writeQName(new QName("http://axis2.apach.org", "testQName"), omElementStreamWriter);
            omElementStreamWriter.writeEndElement();
            omElementStreamWriter.writeEndElement();
            omElementStreamWriter.writeEndElement();

            OMElement omElement = omElementStreamWriter.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;
    }

}

Other Axis 2 examples (source code examples)

Here is a short list of links related to this Axis 2 OMElementStreamWriterTest.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.