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