You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Sergey Beryozkin <sb...@gmail.com> on 2011/09/08 23:27:22 UTC

Re: JAX-RS: Specify namespace prefix in responses

Hi Raphael

I've added a namespacePrefixes property to JAXBElementProvider, so 
starting from 2.4.3 it will be easier to customize the prefixes when 
really needed.
I also tried JAXRSDataBindingTest (in systest/jaxrs) and updated the 
relevant spring config to add a property to the databinding the way you 
did it and updated Book class used in the test to have a namespace - 
that worked for me. Not sure why it did not for you - one possibility is 
that you have resource methods returning explicit collections - JAXRS 
does not generate wrappers so would not add a relevant class to the 
total JAXB context...

thanks, Sergey

On 26/08/11 21:33, Raphael Vullriede wrote:
> Hi,
>
> I'm building a JAX-RS service with CXF 2.4.2 and JAXB for the bindings
> (Java 1.6.0_26).
>
> My response contains elements from two namespaces and it is correctly
> rendered.
> The second namespace gets automatically the prefix "ns2" which I have to
> change to something more "meaningful" for a third-party component.
>
> I found http://cxf.apache.org/docs/jaxb.html that mentioned something
> like this for JAX-WS:
>
> <util:map id="namespace2Prefix" map-class="java.util.HashMap">
>      <entry key="myPrimaryNameSpace" value=""/>
>      <entry key="mySecondaryNamespace" value="ip"/>
> </util:map>
>
> <jaxws:server....>
>      <jaxws:dataBinding>
>          <bean class="org.apache.cxf.jaxb.JAXBDataBinding">
>              <property name="namespaceMap" ref="namespace2Prefix" />
>          </bean>
>      </jaxws:dataBinding>
> </jaxws:server>
>
> I tried the same for JAXRS but it does not seems to work:
>
> <jaxrs:server...>
>      <jaxrs:dataBinding>
>          <bean class="org.apache.cxf.jaxb.JAXBDataBinding">
>               <property name="namespaceMap" ref="namespace2Prefix" />
>          </bean>
>      </jaxrs:dataBinding>
> </jaxrs:server>
>
> I also tried this:
>
> <bean id="xmlDataBinding" class="org.apache.cxf.jaxb.JAXBDataBinding">
>      <property name="namespaceMap" ref="namespace2Prefix" />
> </bean>
>
> <bean id="xmlDataBindingProvider"
> class="org.apache.cxf.jaxrs.provider.DataBindingProvider">
>      <property name="dataBinding" ref="xmlDataBinding" />
> </bean>
>
>
> But it does not work either and I don't find anything useful in the
> logs. Do I miss something?
>
> Thanks,
> Raphael


Re: JAX-RS: Specify namespace prefix in responses

Posted by Raphael Vullriede <li...@vullriede.de>.
Hi Sergey,

On 09/08/2011 11:27 PM, Sergey Beryozkin wrote:

> Hi Raphael
> 
> I've added a namespacePrefixes property to JAXBElementProvider, so
> starting from 2.4.3 it will be easier to customize the prefixes when
> really needed.

Thanks a lot! I'll try with the next snapshot.

> I also tried JAXRSDataBindingTest (in systest/jaxrs) and updated the
> relevant spring config to add a property to the databinding the way you
> did it and updated Book class used in the test to have a namespace -
> that worked for me. Not sure why it did not for you - one possibility is
> that you have resource methods returning explicit collections - JAXRS
> does not generate wrappers so would not add a relevant class to the
> total JAXB context...

I'll check your test and try to find a difference.


Thanks again for your help!

Raphael


> thanks, Sergey
> 
> On 26/08/11 21:33, Raphael Vullriede wrote:
>> Hi,
>>
>> I'm building a JAX-RS service with CXF 2.4.2 and JAXB for the bindings
>> (Java 1.6.0_26).
>>
>> My response contains elements from two namespaces and it is correctly
>> rendered.
>> The second namespace gets automatically the prefix "ns2" which I have to
>> change to something more "meaningful" for a third-party component.
>>
>> I found http://cxf.apache.org/docs/jaxb.html that mentioned something
>> like this for JAX-WS:
>>
>> <util:map id="namespace2Prefix" map-class="java.util.HashMap">
>>      <entry key="myPrimaryNameSpace" value=""/>
>>      <entry key="mySecondaryNamespace" value="ip"/>
>> </util:map>
>>
>> <jaxws:server....>
>>      <jaxws:dataBinding>
>>          <bean class="org.apache.cxf.jaxb.JAXBDataBinding">
>>              <property name="namespaceMap" ref="namespace2Prefix" />
>>          </bean>
>>      </jaxws:dataBinding>
>> </jaxws:server>
>>
>> I tried the same for JAXRS but it does not seems to work:
>>
>> <jaxrs:server...>
>>      <jaxrs:dataBinding>
>>          <bean class="org.apache.cxf.jaxb.JAXBDataBinding">
>>               <property name="namespaceMap" ref="namespace2Prefix" />
>>          </bean>
>>      </jaxrs:dataBinding>
>> </jaxrs:server>
>>
>> I also tried this:
>>
>> <bean id="xmlDataBinding" class="org.apache.cxf.jaxb.JAXBDataBinding">
>>      <property name="namespaceMap" ref="namespace2Prefix" />
>> </bean>
>>
>> <bean id="xmlDataBindingProvider"
>> class="org.apache.cxf.jaxrs.provider.DataBindingProvider">
>>      <property name="dataBinding" ref="xmlDataBinding" />
>> </bean>
>>
>>
>> But it does not work either and I don't find anything useful in the
>> logs. Do I miss something?
>>
>> Thanks,
>> Raphael
> 
>