Example usage for com.liferay.portal.kernel.servlet PersistentHttpServletRequestWrapper clone

List of usage examples for com.liferay.portal.kernel.servlet PersistentHttpServletRequestWrapper clone

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.servlet PersistentHttpServletRequestWrapper clone.

Prototype

@Override
    public PersistentHttpServletRequestWrapper clone() 

Source Link

Usage

From source file:com.liferay.nested.portlets.web.internal.display.context.NestedPortletsDisplayContext.java

License:Open Source License

/**
  * @see com.liferay.portal.util.PortalImpl#getOriginalServletRequest
  *///from   ww w.j av  a 2s  .  co  m
public HttpServletRequest getLastForwardRequest() {
    HttpServletRequest currentRequest = _request;
    HttpServletRequestWrapper currentRequestWrapper = null;
    HttpServletRequest originalRequest = null;
    HttpServletRequest nextRequest = null;

    while (currentRequest instanceof HttpServletRequestWrapper) {
        if (currentRequest instanceof PersistentHttpServletRequestWrapper) {

            PersistentHttpServletRequestWrapper persistentHttpServletRequestWrapper = (PersistentHttpServletRequestWrapper) currentRequest;

            persistentHttpServletRequestWrapper = persistentHttpServletRequestWrapper.clone();

            if (originalRequest == null) {
                originalRequest = persistentHttpServletRequestWrapper;
            }

            if (currentRequestWrapper != null) {
                currentRequestWrapper.setRequest(persistentHttpServletRequestWrapper);
            }

            currentRequestWrapper = persistentHttpServletRequestWrapper;
        }

        HttpServletRequestWrapper httpServletRequestWrapper = (HttpServletRequestWrapper) currentRequest;

        nextRequest = (HttpServletRequest) httpServletRequestWrapper.getRequest();

        if ((currentRequest.getDispatcherType() == DispatcherType.FORWARD)
                && (nextRequest.getDispatcherType() == DispatcherType.REQUEST)) {

            break;
        }

        currentRequest = nextRequest;
    }

    if (currentRequestWrapper != null) {
        currentRequestWrapper.setRequest(currentRequest);
    }

    if (originalRequest != null) {
        return originalRequest;
    }

    return currentRequest;
}