Hi Sergey,
I found some other sample XML on the web, and it appears to amount to this:
<bean id="jaxbProvider"
class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties">
<map>
<entry key="jaxb.formatted.output">
<value type="java.lang.Boolean">true</value>
</entry>
</map>
</property>
</bean>
Yet, even this doesn't work (nor does "TRUE"). The XML still comes back
without whitespace, when I make a REST call, and with no particular formatting.
I know it's at least looking at this value because when I try to, e.g., change
it to "marshallerPropertiesx" (to put a typo in it), it complains, and suggests
"marshallerProperties" for me. So, I think the setting is fine. Somehow, CXF
and JAXB just aren't connecting the dots.
I'm using a Spring-based approach now, to my knowledge. My web.xml says:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CDETSWSAPI</servlet-name>
<display-name>CDETS Web Services API</display-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CDETSWSAPI</servlet-name>
<url-pattern>/v1/*</url-pattern>
</servlet-mapping>
while my beans.xml says:
<bean id="defectResourceBean"
class="com.cisco.cdets.wsapi.resources.DefectResource"/>
<jaxrs:server id="defectResource" address="/">
<jaxrs:serviceBeans>
<ref bean="defectResourceBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="jaxbProvider"
class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties">
<map>
<entry key="jaxb.formatted.output">
<value type="java.lang.Boolean">true</value>
</entry>
</map>
</property>
</bean>
Any ideas?
Thanks!
On Nov 18, 2009, at 3:36 PM, Sergey Beryozkin wrote:
> Hi
>
> I'm sorry, that property has to be of type java.lang.Boolean according
> to the Marshaller docs. I'm not sure right now how to specify from
> Spring that a given map value should be of Boolean type, does anyone
> know how to do it ?
> I'll give it a try tomorrow
>
> Thanks, Sergey
>
>
>
> -----Original Message-----
> From: John Klassa [mailto:[email protected]]
> Sent: 18 November 2009 18:39
> To: [email protected]
> Subject: Re: pretty printing XML
>
>
> Sorry... I meant to say that the primary docs (for JAX-RS in CXF) is
> where I got the same XML from. It doesn't work for me, though. So, I
> went looking online, and found the osdir.com reference to doing it
> programmatically.
>
> Regardless, just looking to get it to work via a configuration setting.
> :-)
>
> On Nov 18, 2009, at 1:35 PM, John Klassa wrote:
>
>>
>> Saw this thread:
>>
>> http://osdir.com/ml/users-cxf-apache/2009-09/msg00014.html
>>
>> but am wondering how this would be done in a config file. I saw an
> example somewhere that says to use:
>>
>> <bean id="jaxbProvider"
> class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
>> <property name="marshallerProperties" ref="propertiesMap"/>
>> </bean>
>> <util:map id="propertiesMap" map-class="java.util.Hashtable">
>> <entry key="jaxb.formatted.output" value="true"/>
>> </util:map>
>>
>> This seems to have no effect, however.
>>
>> Basically, I'm trying to get my JAX-RS resources to come back looking
> "nice".
>>
>