On 1/4/2013 4:56 AM, ignou_mca wrote:
Hi folks,
I am working on a poc using resteasy framework and resteasy's
MessageBodyWriterInterceptor
the resource looks like this
@GET
@Path(/{id})
public Response getUserDetails(@PathParam(id) String id);
The business logic is implemented using a stateless ejb below is the
implementation
@Override
public Response getUserDetails(HttpRequest request, String id) {
- business logic ---
ResponseBuilder builder = Response.ok());
return builder.build();
}
The interceptor class code is mentioned below
==
@Provider
@ServerInterceptor
public class ResponseInterceptor implements MessageBodyWriterInterceptor{
private static final Logger logger =
Logger.getLogger(ResponseInterceptor.class);
ResponseBuilder builder = null;
@Override
public void write(MessageBodyWriterContext context) throws IOException,
WebApplicationException {
Object entity = context.getEntity();
logger.debug(Response interceptor: +entity.getClass());
if (entity != null) {
if ( entity instanceof User){
User entls = (User)entity;
if (entls !=null entls.getErrorCode()!=null) {
if (entls.getErrorCode() == Status.BAD_REQUEST.getStatusCode()){
logger.debug(Response interceptor: +entls.getErrorCode());
throw new BadRequestException(Bad request,Response.status(400)
.entity(entls).header(Bad request, 400)
.type(application/xml)
.build());
}
My question are the following
1. Whether it's good to create all the response from the interceptor class
i.e . for htpp 200, 40*, 50* etc..or we should handle only exceptional cases
which are then Handel by the Exception mappers
You should probably not do business login within interceptors. For
error conditions that are business logic, either handle them in your
business logic (jaxrs methods) or throw an exception and write an
exception mapper.
2. What is the advantage of PostProcessorInterceptors over
MessageBodyWriterInterceptor ?
MessageBodyXXXInterceptors are for intercepting and processing the
marshalling and unmarshalling of http message bodies. The will not be
invoked if there is no http method body. PostProcessInterceptors always
get invoked after the jax-rs method call and befor marshalling.
3. Could you please provide some sample use case?
The below blog is about JAX-RS 2.0 but the concepts map 1to1 to
Resteasy's old interceptor model
http://bill.burkecentral.com/2011/05/24/interceptors-in-jax-rs-2-0/
If you can, switch to Resteasy 3.0 beta 1dardized interceptor model.
4. out of Resteasy interceptor and Ejb interceptor which one is good in terms
of performance ?
resteasy interceptor is for massaging incoming and outgoing HTTP
requests. EJB interceptors are for massaging business logic.
--
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com
--
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122912
___
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users