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

Reply via email to