001
014
015 package com.liferay.portlet;
016
017 import com.liferay.portal.kernel.portlet.DynamicActionRequest;
018 import com.liferay.portal.kernel.portlet.DynamicResourceRequest;
019 import com.liferay.portal.kernel.util.SetUtil;
020 import com.liferay.portal.kernel.util.StringUtil;
021 import com.liferay.portal.kernel.util.Validator;
022
023 import java.io.IOException;
024
025 import java.util.Set;
026
027 import javax.portlet.ActionRequest;
028 import javax.portlet.ActionResponse;
029 import javax.portlet.PortletException;
030 import javax.portlet.ResourceRequest;
031 import javax.portlet.ResourceResponse;
032 import javax.portlet.filter.ActionFilter;
033 import javax.portlet.filter.FilterChain;
034 import javax.portlet.filter.FilterConfig;
035 import javax.portlet.filter.ResourceFilter;
036
037
040 public class CheckboxParametersPortletFilter
041 implements ActionFilter, ResourceFilter {
042
043 @Override
044 public void destroy() {
045 }
046
047 @Override
048 public void doFilter(
049 ActionRequest actionRequest, ActionResponse actionResponse,
050 FilterChain filterChain)
051 throws IOException, PortletException {
052
053 String checkboxNames = actionRequest.getParameter("checkboxNames");
054
055 if (Validator.isNull(checkboxNames)) {
056 filterChain.doFilter(actionRequest, actionResponse);
057
058 return;
059 }
060
061 DynamicActionRequest dynamicActionRequest = new DynamicActionRequest(
062 actionRequest);
063
064 Set<String> parameterNames = SetUtil.fromEnumeration(
065 actionRequest.getParameterNames());
066
067 for (String checkboxName : StringUtil.split(checkboxNames)) {
068 if (!parameterNames.contains(checkboxName)) {
069 dynamicActionRequest.setParameter(
070 checkboxName, Boolean.FALSE.toString());
071 }
072 else {
073 String value = dynamicActionRequest.getParameter(checkboxName);
074
075 if (Validator.equals(value, "on")) {
076 dynamicActionRequest.setParameter(
077 checkboxName, Boolean.TRUE.toString());
078 }
079 }
080 }
081
082 filterChain.doFilter(dynamicActionRequest, actionResponse);
083 }
084
085 @Override
086 public void doFilter(
087 ResourceRequest resourceRequest, ResourceResponse resourceResponse,
088 FilterChain filterChain)
089 throws IOException, PortletException {
090
091 String checkboxNames = resourceRequest.getParameter("checkboxNames");
092
093 if (Validator.isNull(checkboxNames)) {
094 filterChain.doFilter(resourceRequest, resourceResponse);
095
096 return;
097 }
098
099 DynamicResourceRequest dynamicResourceRequest =
100 new DynamicResourceRequest(resourceRequest);
101
102 Set<String> parameterNames = SetUtil.fromEnumeration(
103 resourceRequest.getParameterNames());
104
105 for (String checkboxName : StringUtil.split(checkboxNames)) {
106 if (!parameterNames.contains(checkboxName)) {
107 dynamicResourceRequest.setParameter(
108 checkboxName, Boolean.FALSE.toString());
109 }
110 else {
111 String value = dynamicResourceRequest.getParameter(
112 checkboxName);
113
114 if (Validator.equals(value, "on")) {
115 dynamicResourceRequest.setParameter(
116 checkboxName, Boolean.TRUE.toString());
117 }
118 }
119 }
120
121 filterChain.doFilter(dynamicResourceRequest, resourceResponse);
122 }
123
124 @Override
125 public void init(FilterConfig filterConfig) {
126 }
127
128 }