Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] getting HttpServletRequest and HttpServletResponse from within an advice

 

December 11, 2015 2:25 PM from Frank Pavageau

    |

    |  I think that by using an ITD …

    |

 

ITD works. For the benefit of others, here’s a sample of how to get HttpServlet*’s for the active servlet:

 

public interface IServletContext {

     HttpServletRequest  _getRequest();

     HttpServletResponse _getResponse();

}

 

public aspect Foo perthis(endPointsNoArgs(IServletContext)){

 

  declare parents: (@javax.ws.rs.Path *) implements IServletContext;

 

  @Context private HttpServletRequest IServletContext._request;

    

  public HttpServletRequest IServletContext._getRequest() {

    return _request;

  };

 

  @Context private HttpServletResponse IServletContext._response;

 

  public HttpServletResponse IServletContext._getResponse() {

    return _response;

  };

 

  pointcut endPointsNoArgs(IServletContext servletContext):

    ( execution (@javax.ws.rs.GET * *.*()) ||

      execution (@javax.ws.rs.PUT * *.*()) ||

      execution (@javax.ws.rs.POST * *.*()) ||

      execution (@javax.ws.rs.DELETE * *.*()) ) &&

    target(servletContext);

 

  Object around(IServletContext servletContext): endPointsNoArgs(servletContext) {

    HttpServletRequest request = servletContext._getRequest();

    HttpServletResponse response = servletContext._getResponse();

    // you can use request and response here

    Object result = proceed(servletContext);

    // and here

    return result;

  }

}

 

All Izz Well

Regards,
Shackman


Back to the top