Hi,

I guess you are referring to the second method mentioned at this link-

http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-Schemavalidation

I have tried that and even that does not work with 2.3.2

-Neeraj

-----Original Message-----
From: Sergey Beryozkin [mailto:[email protected]] 
Sent: Monday, November 21, 2011 3:10 PM
To: [email protected]
Subject: Re: schema validation not working in cxf restful service

Hi,

On 21/11/11 06:21, AGGARWAL, NEERAJ (NEERAJ) wrote:
> Thanks Sergey.
>
> It worked with 2.4.4
> But there was no trace in the logs that indicates that the XSDs has been 
> found(in both the versions).
> So does it mean that validation is not supported in cxf 2.3.2??
Most likely there's a bug in 2.3.2 to do with jaxrs:schemaLocations 
being ignored which is most likely fixed in later 2.3.x versions as well.
A workaround with 2.3.2 is to explicitly register 
org.apache.cxf.jaxrs.provider.JAXBElementProvider and set schema 
locations on it. And this workaround becomes a better solution if
incoming JSON payloads have to validated too

Cheers, Sergey

>
> Regards,
> Neeraj
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:[email protected]]
> Sent: Friday, November 18, 2011 4:34 PM
> To: [email protected]
> Subject: Re: schema validation not working in cxf restful service
>
> Hi
>
> Can you check the logs please and see if schemas have been found ?
> By the way, I'm presuming search.xsd imports types.xsd - I believe it's
> not needed to specify the imported schemas in later versions, try for
> example CXF 2.4.4 juts to confirm it
>
> Sergey
>
> On 18/11/11 10:24, AGGARWAL, NEERAJ (NEERAJ) wrote:
>> Hello,
>>
>> I have designed a restful service. And I am trying to enable the validation 
>> of the input request against the schema files.
>> I added the following in my spring configuration file.
>> <jaxrs:server id="restContainer" address="/rest/">
>>               <jaxrs:serviceBeans>
>>                     <ref bean="searchService" />
>>               </jaxrs:serviceBeans>
>>               <jaxrs:schemaLocations>
>>                     
>> <jaxrs:schemaLocation>classpath:/search.xsd</jaxrs:schemaLocation>
>> <jaxrs:schemaLocation>classpath:/type.xsd</jaxrs:schemaLocation>
>>               </jaxrs:schemaLocations>
>>               <jaxrs:providers>
>>                     <ref bean="jaxbProvider" />
>>               </jaxrs:providers>
>> </jaxrs:server>
>>
>> Both search.xsd and type.xsd are located parallel to META-INF and WEB-INF.
>>
>> Here is the schema for my input request-
>> <complexType name="searchRequest">
>>               <sequence>
>>                     <element name="productName" type="ns1:productName"/>
>>                     <element name="transactionType" 
>> type="ns1:transactionType"/>
>>                     <element name="searchCriterias" 
>> type="ns1:searchCriteriaType"/>
>>                     <element name="offset" type="int"/>
>>                     <element name="pageCount" type="int"/>
>>               </sequence>
>> </complexType>
>> <complexType name="searchCriteriaType">
>>               <sequence>
>>                     <element name="searchCriteria" maxOccurs="unbounded">
>>                           <complexType>
>>                                 <sequence>
>>                                       <element name="name" type="string"/>
>>                                       <element name="value" type="string"/>
>>                                 </sequence>
>>                           </complexType>
>>                     </element>
>>               </sequence>
>> </complexType>
>> <simpleType name="transactionType">
>>               <restriction base="string"/>
>> </simpleType>
>>
>> Here is the incorrect request I am sending expecting the CXF framework to 
>> send me the error-
>> <types:searchRequest xmlns:types="http://www.eras.com/ ">
>>      <types:productName>SCF</types:productName>
>>      <types:transactionType>TDR</types:transactionType>
>>      <types:searchCriterias>
>>               <types:searchCriteria>
>>               </types:searchCriteria>
>> <types:pageCount>1</types:pageCount>
>>                <types:offset>0</types:offset>
>>      </types:searchCriterias>
>> </types:searchRequest>
>>
>> Why the above request is incorrect?
>> Because 'pageCount' and 'offset' should come after 'searchCriterias' tag as 
>> its sibling and not as its child.
>>
>> The Result-
>> CXF is just ignoring 'pageCount' and 'offset' tags and returing the results.
>>
>> Version of CXF used- 2.3.2
>>
>> I have tried out both the ways mentioned at 
>> http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-Schemavalidation
>>  but still my input request is not getting validated.
>>
>> Please suggest something.
>>
>> Regards,
>> Neeraj Aggarwal
>>
>
>


-- 
Sergey Beryozkin

http://sberyozkin.blogspot.com

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

Reply via email to