AnnotationMethodHandlerAdapter.java 文件源码

java
阅读 27 收藏 0 点赞 0 评论 0

项目:class-guard 作者:
@Override
protected Object resolveStandardArgument(Class<?> parameterType, NativeWebRequest webRequest)
        throws Exception {

    PortletRequest request = webRequest.getNativeRequest(PortletRequest.class);
    PortletResponse response = webRequest.getNativeResponse(PortletResponse.class);

    if (PortletRequest.class.isAssignableFrom(parameterType) ||
            MultipartRequest.class.isAssignableFrom(parameterType)) {
        Object nativeRequest = webRequest.getNativeRequest(parameterType);
        if (nativeRequest == null) {
            throw new IllegalStateException(
                    "Current request is not of type [" + parameterType.getName() + "]: " + request);
        }
        return nativeRequest;
    }
    else if (PortletResponse.class.isAssignableFrom(parameterType)) {
        Object nativeResponse = webRequest.getNativeResponse(parameterType);
        if (nativeResponse == null) {
            throw new IllegalStateException(
                    "Current response is not of type [" + parameterType.getName() + "]: " + response);
        }
        return nativeResponse;
    }
    else if (PortletSession.class.isAssignableFrom(parameterType)) {
        return request.getPortletSession();
    }
    else if (PortletPreferences.class.isAssignableFrom(parameterType)) {
        return request.getPreferences();
    }
    else if (PortletMode.class.isAssignableFrom(parameterType)) {
        return request.getPortletMode();
    }
    else if (WindowState.class.isAssignableFrom(parameterType)) {
        return request.getWindowState();
    }
    else if (PortalContext.class.isAssignableFrom(parameterType)) {
        return request.getPortalContext();
    }
    else if (Principal.class.isAssignableFrom(parameterType)) {
        return request.getUserPrincipal();
    }
    else if (Locale.class.equals(parameterType)) {
        return request.getLocale();
    }
    else if (InputStream.class.isAssignableFrom(parameterType)) {
        if (!(request instanceof ClientDataRequest)) {
            throw new IllegalStateException("InputStream can only get obtained for Action/ResourceRequest");
        }
        return ((ClientDataRequest) request).getPortletInputStream();
    }
    else if (Reader.class.isAssignableFrom(parameterType)) {
        if (!(request instanceof ClientDataRequest)) {
            throw new IllegalStateException("Reader can only get obtained for Action/ResourceRequest");
        }
        return ((ClientDataRequest) request).getReader();
    }
    else if (OutputStream.class.isAssignableFrom(parameterType)) {
        if (!(response instanceof MimeResponse)) {
            throw new IllegalStateException("OutputStream can only get obtained for Render/ResourceResponse");
        }
        return ((MimeResponse) response).getPortletOutputStream();
    }
    else if (Writer.class.isAssignableFrom(parameterType)) {
        if (!(response instanceof MimeResponse)) {
            throw new IllegalStateException("Writer can only get obtained for Render/ResourceResponse");
        }
        return ((MimeResponse) response).getWriter();
    }
    else if (Event.class.equals(parameterType)) {
        if (!(request instanceof EventRequest)) {
            throw new IllegalStateException("Event can only get obtained from EventRequest");
        }
        return ((EventRequest) request).getEvent();
    }
    return super.resolveStandardArgument(parameterType, webRequest);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号