All, 

I am attempting to perform XSD validation on incoming XML to REST. I'm using 
REST 2.3.7.Final (in EAP 6.2.2.GA). 

I found a few decent articles...one discussing @Decorator / @DecoratorTypes ( 
http://stackoverflow.com/questions/7570326/jboss-resteasy-jax-rs-jaxb-schema-validation-with-decorator/
 )..also found a few references to defining a MessageBodyReaderInterceptor 
(additionally noting its in the 2.3.7 docs - 
http://docs.jboss.org/resteasy/docs/2.3.7.Final/userguide/html_single/#MessageBodyInterceptors
 ). 

I initially considered using the @Decorator option - but decided against it as 
I'll need to annotate a bunch of params on a bunch of methods across a bunch of 
classes. Truthfully, I'll want XSD validation enabled for all calls - which is 
why I'm leaning toward MessageBodyReaderInterceptor. 

As a side note, I was able to get both options working. Only caveat is with the 
MessageBodyReaderInterceptor - it works, but I am hesitant to consider the 
"working" version working "correctly." I'll explain shortly... 

I note the documentation states " You must call 
MessageBodyReaderContext.proceed() or MessageBodyWriterContext.proceed() to go 
to the next interceptor or, if there are no more interceptors to invoke, the 
readFrom() or writeTo() method of the MessageBodyReader or MessageBodyWriter." 
In order for me to XSD validate the XML coming over, I have 2 options - I can 
use a Schema creating a new Validator and having it validate using the 
MessageBodyReaderContext's input stream...or I can set the schema on an 
unmarshaller and have it unmarshal an object. The problem is, in both instances 
I am consuming the input stream. 

I could return the unmarshalled object - but then no more interceptors (if 
there are any) will get an opportunity to process. If I attempt to return 
MessageBodyReaderContext.proceed(), the stream is now closed as I consumed it 
via the unmarshal. I had no luck trying to reset the input stream as I get an 
IOException "mark/reset not supported." 

I'm certain I'm not seeing the proper way to do this, or am approaching this 
problem incorrectly. As I mentioned above the MessageBodyReaderContext version 
I have works if I return the unmarshalled object - but while it works, I think 
its improper way to deal with this scenario. 

Thanks ahead of time! 

Flossy 





-- 
Make It So Number One 
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to