package com.frameworkset.platform.cms.driver.jsp;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponseWrapper;
import com.frameworkset.common.tag.CommonRequest;
/**
* Static class that provides utility methods to convert a generic
* PortletRequest or PortletResponse object into an Internal respresentation
* of the same object.
* @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a>
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @author <a href="mailto:yin-bp@163.com">biaoping.yin</a>
*/
public class InternalImplConverter implements java.io.Serializable {
/**
* Private constructor that prevents external instantiation.
*/
private InternalImplConverter() {
// Do nothing.
}
// Public Static Utility Methods -------------------------------------------
/**
* The scary part about this is that there is not yet a
* PortletRequestWrapper defined by the spec. Because of this, there's a
* chance someone might implement their own wrapper and we won't be able to
* get the real internal one!
* @param request the portlet request to be converted.
* @return the internal request.
*/
public static CMSServletRequest getInternalRequest(
ServletRequest request) {
while (!(request instanceof CMSServletRequest)) {
if(request instanceof CommonRequest)
{
request = ((CommonRequest) request).getInternalrequest();
}
else
{
if(request instanceof HttpServletRequestWrapper)
{
request = ((HttpServletRequestWrapper) request).getRequest();
}
else
{
return null;
}
// if (request == null) {
// throw new IllegalStateException(
// "The internal cms request cannot be found.");
// }
}
}
return (CMSServletRequest) request;
}
/**
* The scary part about this is that there is not yet a
* PortletRequestWrapper defined by the spec. Because of this, there's a
* chance someone might implement their own wrapper and we won't be able to
* get the real internal one!
* @param response the portlet response to be converted.
* @return the internal response.
*/
public static CMSServletResponse getInternalResponse(
ServletResponse response) {
while (!(response instanceof CMSServletResponse)) {
if(response instanceof HttpServletResponseWrapper)
{
response = ((HttpServletResponseWrapper) response).getResponse();
}
else
{
return null;
}
// if (response == null) {
// throw new IllegalStateException(
// "The internal cms response cannot be found.");
// }
}
return (CMSServletResponse) response;
}
}