001
014
015 package com.liferay.portlet.relatedassets.filter;
016
017 import com.liferay.portal.kernel.servlet.DynamicServletRequest;
018 import com.liferay.portal.theme.ThemeDisplay;
019 import com.liferay.portal.util.PortalUtil;
020 import com.liferay.portal.util.WebKeys;
021 import com.liferay.portlet.RenderParametersPool;
022
023 import java.io.IOException;
024
025 import java.util.Map;
026
027 import javax.portlet.PortletException;
028 import javax.portlet.RenderRequest;
029 import javax.portlet.RenderResponse;
030 import javax.portlet.filter.FilterChain;
031 import javax.portlet.filter.FilterConfig;
032 import javax.portlet.filter.RenderFilter;
033
034 import javax.servlet.http.HttpServletRequest;
035 import javax.servlet.http.HttpServletRequestWrapper;
036
037
041 public class RelatedAssetsRenderParametersPortletFilter
042 implements RenderFilter {
043
044 @Override
045 public void destroy() {
046 }
047
048 @Override
049 public void doFilter(
050 RenderRequest renderRequest, RenderResponse renderResponse,
051 FilterChain filterChain)
052 throws IOException, PortletException {
053
054 HttpServletRequest request = PortalUtil.getHttpServletRequest(
055 renderRequest);
056
057 if (request.getAttribute(WebKeys.LAYOUT_ASSET_ENTRY) == null) {
058 clearDynamicServletRequestParameters(request);
059
060 clearRenderRequestParameters(renderRequest, request);
061 }
062
063 filterChain.doFilter(renderRequest, renderResponse);
064 }
065
066 @Override
067 public void init(FilterConfig filterConfig) {
068 }
069
070 protected void clearDynamicServletRequestParameters(
071 HttpServletRequest request) {
072
073 DynamicServletRequest dynamicServletRequest = null;
074
075 while (request instanceof HttpServletRequestWrapper) {
076 if (request instanceof DynamicServletRequest) {
077 dynamicServletRequest = (DynamicServletRequest)request;
078
079 break;
080 }
081
082 HttpServletRequestWrapper httpServletRequestWrapper =
083 (HttpServletRequestWrapper)request;
084
085 request =
086 (HttpServletRequest)httpServletRequestWrapper.getRequest();
087 }
088
089 if (dynamicServletRequest != null) {
090 Map<String, String[]> dynamicParameterMap =
091 dynamicServletRequest.getDynamicParameterMap();
092
093 dynamicParameterMap.clear();
094 }
095 }
096
097 protected void clearRenderRequestParameters(
098 RenderRequest renderRequest, HttpServletRequest request) {
099
100 ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(
101 WebKeys.THEME_DISPLAY);
102
103 String portletId = PortalUtil.getPortletId(renderRequest);
104
105 RenderParametersPool.clear(request, themeDisplay.getPlid(), portletId);
106 }
107
108 }