コード例 #1
0
  /**
   * Unwrap a ServletResponse.
   *
   * @see javax.servlet.ServletResponseWrapper
   * @see javax.servlet.http.HttpServletResponseWrapper
   * @param response
   * @return The core ServletHttpResponse which must be the underlying response object
   */
  public static ServletHttpResponse unwrap(ServletResponse response) {
    while (!(response instanceof ServletHttpResponse)) {
      if (response instanceof ServletResponseWrapper) {
        ServletResponseWrapper wrapper = (ServletResponseWrapper) response;
        response = wrapper.getResponse();
      } else throw new IllegalArgumentException("Does not wrap ServletHttpResponse");
    }

    return (ServletHttpResponse) response;
  }
コード例 #2
0
 /**
  * Creates a wrapper that implements either {@code ServletResponse} or {@code
  * HttpServletResponse}, depending on the type of {@code pImplementation.getResponse()}.
  *
  * @param pImplementation the servlet response to create a wrapper for
  * @return a {@code ServletResponse} or {@code HttpServletResponse}, depending on the type of
  *     {@code pImplementation.getResponse()}
  */
 public static ServletResponse createWrapper(final ServletResponseWrapper pImplementation) {
   // TODO: Get all interfaces from implementation
   if (pImplementation.getResponse() instanceof HttpServletResponse) {
     return (HttpServletResponse)
         Proxy.newProxyInstance(
             pImplementation.getClass().getClassLoader(),
             new Class[] {HttpServletResponse.class, ServletResponse.class},
             new HttpServletResponseHandler(pImplementation));
   }
   return pImplementation;
 }
コード例 #3
0
    public Object invoke(final Object pProxy, final Method pMethod, final Object[] pArgs)
        throws Throwable {
      try {
        // TODO: Allow partial implementing?
        if (pMethod.getDeclaringClass().isInstance(response)) {
          return pMethod.invoke(response, pArgs);
        }

        // Method is not implemented in wrapper
        return pMethod.invoke(response.getResponse(), pArgs);
      } catch (InvocationTargetException e) {
        // Unwrap, to avoid UndeclaredThrowableException...
        throw e.getTargetException();
      }
    }