Title: xmlns="" in root element always present using 0.9.4.2 (not present in 0.9.4)

Hi there!

I have been using Castor XML for a while and it is really great!!
I am currently starting to use version 0.9.4.2 (from 0.9.4) and I have a strange behaviour when I marshall objects: Castor always add an empty namespace to the root element, ' xmlns="" '.

It does not cause any trouble, but I was wondering if this is a bug or a feature of version 0.9.4.2?

Following are shown the exact objects, mapping, properties that I use for my tests.

The mapping file :

<mapping>

    <!--  Mapping for MarshallerTest1  -->
    <class name="tests.otf.messaging.MarshallTest1">
        <map-to xml="marshaller-test"/>

        <field name="name" type="string">
            <bind-xml name="name" node="attribute"/>
        </field>

        <field name="value" type="string">
            <bind-xml name="value" node="attribute"/>
        </field>
    </class>

</mapping>

The test class, MarshallTest1 :

package tests.otf.messaging;

/**
 * DOCUMENT ME!
 *
 * @version $revision$
 * @author $author$
 */
public class MarshallTest1 implements java.io.Serializable {
    private String name;
    private String value;

    /**
     * Creates a new MarshallTest1 object.
     */
    public MarshallTest1() {
        name = null;
        value = null;
    }

    /**
     * Creates a new MarshallTest1 object.
     *
     * @param name DOCUMENT ME!
     * @param value DOCUMENT ME!
     */
    public MarshallTest1(String name, String value) {
        this.name = name;
        this.value = value;
    }

    /**
     * Sets the name
     *
     * @param name The name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Gets the name
     *
     * @return Returns a String
     */
    public String getName() {
        return name;
    }

    /**
     * Sets the value
     *
     * @param value The value to set
     */
    public void setValue(String value) {
        this.value = value;
    }

    /**
     * Gets the value
     *
     * @return Returns a String
     */
    public String getValue() {
        return value;
    }

    /**
     * @see java.lang.Object#equals(Object)
     */
    public boolean equals(Object obj) {
        return toString().equals("" + obj);
    }

    /**
     * @see java.lang.Object#toString()
     */
    public String toString() {
        return "MarshallTest1(" + name + ", " + value + ")";
    }
}

And the test code that does the marshalling, followed by the resulting XML :

               
                ClassLoader cl = getClass().getClassLoader();
                Mapping mapping = new Mapping(cl);

                String mappingFile = "META-INF/mapping/MdfTest-mapping.xml";
                URL mapurl = cl.getResource(mappingFile);
                mapping.loadMapping(mapurl);

                StringWriter writer = new StringWriter();
                Marshaller marshaller = new Marshaller(writer);
                marshaller.setMapping(mapping);

                Log4jStringWriter log4jWriter =
                        new Log4jStringWriter(logger, Level.DEBUG);
                marshaller.setLogWriter(log4jWriter.getLogWriter("xml-test"));

                //Set the marshaller properties
                marshaller.setValidation(false);
                marshaller.setDebug(true);

                // create the data to marshal
                MarshallTest1 data = "" MarshallTest1("from", "[EMAIL PROTECTED]"));

                marshaller.marshal(data);
                writer.close();

                String xmlValue = writer.getBuffer().toString();

The output in xmlValue:

<?xml version="1.0" encoding="UTF-8"?>
<marshaller-test name="from" value="[EMAIL PROTECTED]" xmlns=""/>

And my castor.properties contains the following modifications:

org.exolab.castor.parser.validation=false
org.exolab.castor.parser.namespaces=false
org.exolab.castor.marshalling.validation=false

Thanks for the feedback,

David



__________________________________________________________________________
· This email and any files transmitted with it are CONFIDENTIAL and intended
solely for the use of the individual or entity to which they are addressed.

· Any unauthorized copying, disclosure, or distribution of the material within
this email is strictly forbidden.

· Any views or opinions presented within this e-mail are solely those of the
author and do not necessarily represent those of Odyssey Asset Management
Systems SA unless otherwise specifically stated.

· An electronic message is not binding on its sender.  Any message referring to
a binding engagement must be confirmed in writing and duly signed.

· If you have received this email in error, please notify the sender immediately
and delete the original.

Reply via email to