Hi,

First of all thank you for your help.

>
> Custom providers can also extend this method and wrap
> the writer with yet another writer as you do, but in your specific case you
> need to register a writer using a response filter, here's an example :
>
> http://svn.apache.org/repos/asf/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java
>
> you can register this filter the same way as the custom JAXB provider.

I have implemented a NoNamespacesResponseHandler getting a cleaner
solution to my problem. Thanks.

In the other hand, my problem seems to rely on the
CustomXmlStreamWriter I´m providing. Overwriting some methods I have
been able to remove all prefixes in the XML but no the "xmlns"
attributes in head elements. I´m getting something like this:

<?xml version='1.0' encoding='UTF-8'?>
<house xmlns:ns2="http://namespace2"; xmlns="http://namespace1";>
    <window>....</window>
    .....
</house>

where "window" elements don´t have any prefixes but
xmlns:ns2="http://namespace2"; xmlns="http://namespace1"; are printed as
attributes in "house" element.

The "NoNamespacesWriterWrapper" class is now:

class NoNamespacesWriterWrapper implements XMLStreamWriter {

        private XMLStreamWriter wrappedStreamWriter;

        public NoNamespacesWriterWrapper(XMLStreamWriter wrappedStreamWriter) {
            this.wrappedStreamWriter = wrappedStreamWriter;
        }

        public void close() throws XMLStreamException {
            wrappedStreamWriter.close();
        }

        public void flush() throws XMLStreamException {
            wrappedStreamWriter.flush();
        }

        public NamespaceContext getNamespaceContext() {
            return wrappedStreamWriter.getNamespaceContext();
        }

        public String getPrefix(String uri) throws XMLStreamException {
            return wrappedStreamWriter.getPrefix(uri);
        }

        public Object getProperty(String name) throws IllegalArgumentException {
            return wrappedStreamWriter.getProperty(name);
        }

        public void setDefaultNamespace(String uri) throws XMLStreamException {
            wrappedStreamWriter.setDefaultNamespace(uri);
        }

        public void setNamespaceContext(NamespaceContext context)
                throws XMLStreamException {
            wrappedStreamWriter.setNamespaceContext(context);
        }

        public void setPrefix(String prefix, String uri)
                throws XMLStreamException {
            wrappedStreamWriter.setPrefix(prefix, uri);
        }

        public void writeAttribute(String localName, String value)
                throws XMLStreamException {
            wrappedStreamWriter.writeAttribute(localName, value);
        }

        public void writeAttribute(String namespaceURI, String localName,
                String value) throws XMLStreamException {
            writeAttribute(localName, value);
        }

        public void writeAttribute(String prefix, String namespaceURI,
                String localName, String value) throws XMLStreamException {
            writeAttribute(localName, value);
        }

        public void writeCData(String data) throws XMLStreamException {
            wrappedStreamWriter.writeCData(data);
        }

        public void writeCharacters(String text) throws XMLStreamException {
            wrappedStreamWriter.writeCharacters(text);
        }

        public void writeCharacters(char[] text, int start, int len)
                throws XMLStreamException {
            wrappedStreamWriter.writeCharacters(text, start, len);
        }

        public void writeComment(String data) throws XMLStreamException {
            wrappedStreamWriter.writeComment(data);
        }

        public void writeDTD(String dtd) throws XMLStreamException {
            wrappedStreamWriter.writeDTD(dtd);
        }

        public void writeDefaultNamespace(String namespaceURI)
                throws XMLStreamException {
            wrappedStreamWriter.writeDefaultNamespace(namespaceURI);
        }

        public void writeEmptyElement(String localName)
                throws XMLStreamException {
            wrappedStreamWriter.writeEmptyElement(localName);
        }

        public void writeEmptyElement(String namespaceURI, String localName)
                throws XMLStreamException {
            writeEmptyElement(localName);
        }

        public void writeEmptyElement(String prefix, String localName,
                String namespaceURI) throws XMLStreamException {
            writeEmptyElement(localName);
        }

        public void writeEndDocument() throws XMLStreamException {
            wrappedStreamWriter.writeEndDocument();
        }

        public void writeEndElement() throws XMLStreamException {
            wrappedStreamWriter.writeEndElement();
        }

        public void writeEntityRef(String name) throws XMLStreamException {
            wrappedStreamWriter.writeEntityRef(name);
        }

        public void writeNamespace(String prefix, String namespaceURI)
                throws XMLStreamException {
            wrappedStreamWriter.writeNamespace(prefix, namespaceURI);

        }

        public void writeProcessingInstruction(String target)
                throws XMLStreamException {
            wrappedStreamWriter.writeProcessingInstruction(target);
        }

        public void writeProcessingInstruction(String target, String data)
                throws XMLStreamException {
            wrappedStreamWriter.writeProcessingInstruction(target, data);
        }

        public void writeStartDocument() throws XMLStreamException {
            wrappedStreamWriter.writeStartDocument();
        }

        public void writeStartDocument(String version)
                throws XMLStreamException {
            wrappedStreamWriter.writeStartDocument();
        }

        public void writeStartDocument(String encoding, String version)
                throws XMLStreamException {
            wrappedStreamWriter.writeStartDocument(encoding, version);
        }

        public void writeStartElement(String localName)
                throws XMLStreamException {
            wrappedStreamWriter.writeStartElement(localName);
        }

        public void writeStartElement(String namespaceURI, String localName)
                throws XMLStreamException {
            writeStartElement(localName);
        }

        public void writeStartElement(String prefix, String localName,
                String namespaceURI) throws XMLStreamException {
            writeStartElement(localName);
        }

    }

Thanks and regards,

Juanjo.

Reply via email to