On 24/11/11 05:03, AGGARWAL, NEERAJ (NEERAJ) wrote:
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

Well, that approach is being tested in system tests in trunk but also in 2.3.x, so - please try 2.3.7 (they only diff between this one and 2.3.2 is that it contains more bug fixes, no extra deps), and if that still does not work then provide a basic test case and we will look into it; hope you can appreciate it's next to impossible to identify where the problem is without seeing a real test

Cheers, Sergey


-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