cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anders Clausen <anders.s.clau...@gmail.com>
Subject Re: JSON, XSD and response validation
Date Wed, 11 Dec 2013 15:56:07 GMT
Hi Sergey

Thanks for replying so quickly. Yes, it is the output data (the response
sent back to the calling client) that we're trying to validate.

Cheers
Anders


On 11 December 2013 15:45, Sergey Beryozkin <sberyozkin@gmail.com> wrote:

> Hi
>
>
> On 11/12/13 15:22, Anders Clausen wrote:
>
>> Hi
>>
>> I've only used CXF for a little while and still trying to find my way.
>> I've
>> got a question that I hope you can help me resolve. For our current
>> project
>> we expose a service both as REST and as SOAP. We have defined our
>> interfaces through XSDs and use JAXB2. We want to turn on response
>> validation during development time and have successfully done that for our
>> SOAP service, however, when it comes to our REST service I am not sure if
>> this can be done. How does JSON work with XSDs? I've been trying to follow
>> the guidelines from this page
>> CXF<https://cwiki.apache.org/confluence/display/CXF20DOC/
>> JAX-RS+Data+Bindings#JAX-RSDataBindings-Schemavalidation>
>>
>> but
>> without any luck.
>>
>> This is the code I've used:
>>
>>      <bean id="exRSJsonProvider"
>> class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
>>          <property name="dropRootElement" value="false" />
>>          <property name="supportUnwrapped" value="true" />
>>          <property name="ignoreNamespaces" value="true" />
>>          <property name="schemaHandler" ref="schemaHolder"/>
>>      </bean>
>>
>>      <bean id="jaxbProvider"
>> class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
>>          <property name="schemaHandler" ref="schemaHolder"/>
>>      </bean>
>>
>>      <bean id="schemaHolder"
>> class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler">
>>          <property name="schemas" ref="theSchemas"/>
>>      </bean>
>>
>>      <util:list id="theSchemas">
>>          <value>classpath:webapi/xsd/GetSchedulesV01_C.xsd</value>
>>      </util:list>
>>
>>      <jaxrs:server name="exRSScheduleResource"
>> address="${ex.rs.endpoint.address}">
>>          <jaxrs:serviceBeans>
>>              <bean
>>                      class="com.ex.rs.ScheduleResource" />
>>              <bean class="com.ex.rs.LocationResource" />
>>          </jaxrs:serviceBeans>
>>          <jaxrs:properties>
>>              <entry key="schema-validation-enabled" value="true" />
>>          </jaxrs:properties>
>>          <jaxrs:schemaLocations>
>>
>> <jaxrs:schemaLocation>classpath:/webapi/xsd/GetSchedulesV01_C.xsd</jaxrs:
>> schemaLocation>
>>          </jaxrs:schemaLocations>
>>          <jaxrs:providers>
>>              <ref bean="exRSJsonProvider" />
>>              <ref bean="jaxbProvider" />"
>>              <ref bean="dateParamHandler" />
>>              <ref bean="timeParamHandler" />
>>          </jaxrs:providers>
>>
>>          ....................
>>          ....................
>> </jaxrs:server>
>>
>> Is this even possible to be done or should I just drop the idea?
>>
> Technically it is possible, we have tests where input JSON sequences are
> validated, it works with Jettison because they are eventually handled by
> JAXB.
>
> I'm presuming that the input JSON sequence has no namespace prefixes,
> right ? Does the JAX-RS resource method accepting a JAXB bean populated
> from such a sequence has a namespace property at all ?
>
> Or are you trying to validate output data by any chance ?
>
> Cheers, Sergey
>
>>
>> Cheers
>> Anders
>>
>>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message