Hi David
On 11/06/12 17:42, KARR, DAVID wrote:
-----Original Message-----
From: Sergey Beryozkin [mailto:[email protected]]
Sent: Monday, June 11, 2012 5:29 AM
To: [email protected]
Cc: KARR, DAVID
Subject: Re: How to configure namespace prefixes in Jettison

Hi David
On 07/06/12 18:56, KARR, DAVID wrote:
I've seen various FAQs and examples about configuring the namespace
prefixes used in Jettison output.  What I've tried hasn't made any
difference.

I have a "package-info.java" that looks like this:
--------------
@XmlSchema(namespace =
"http://www.example.com/schema/app/SomeThing/v1.0";,
             elementFormDefault = XmlNsForm.QUALIFIED,
             xmlns = { @XmlNs(prefix = "os", namespaceURI =
"http://www.example.com/schema/app/SomeThing/v1.0";),
                       @XmlNs(prefix = "xs", namespaceURI =
"http://www.w3.org/2001/XMLSchema";),
                       @XmlNs(prefix = "xsi", namespaceURI =
"http://www.w3.org/2001/XMLSchema-instance";)})
// Use either FIELD or PUBLIC_MEMBER.  If you change it, you have to
move the annotations.
@XmlAccessorType(XmlAccessType.FIELD)
package com.example.app.domain;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
--------------

When I make the call, however, my output uses a "ns1" namespace
prefix (instead of the "os" that I was trying to set it to).  Am I
missing an association with the package?

I wonder if this blog can explain why the above declarations are
ignored ?
http://hwellmann.blogspot.ie/2011/03/jaxb-marshalling-with-custom-
namespace.html

I tried implementing the alleged fix using solution 2, but it had no effect.  I 
verified that the 2.2.2 implementation was put into the jar.

I could spend some time tracing through some code in the debugger if I had some 
clues about what to look for.

JSONProvider attempts to set up a namespace map internally and unfortunately it overrides the package level information. At this stage, given that you also need it working in a non-Spring case, the workaround is to extend JSONProvider and in the custom provider constructor call super.setNamespaceMap. I'll need to check a bit more how easy it is to avoid auto-populating the namespace map.

Cheers, Sergey

--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to