diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/NoParameters.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/NoParameters.java index 6c918d032..4657380ea 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/NoParameters.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/NoParameters.java @@ -30,7 +30,8 @@ package com.opensymphony.xwork2.interceptor; * parameters cannot be set by malicious users. *

* - * @author Dick Zetterberg (dick@transitor.se) + * @deprecated since Struts 6.2.0, use {@link org.apache.struts2.action.NoParameters} */ +@Deprecated public interface NoParameters { } diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java index 1003be900..c0f83765c 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java @@ -23,120 +23,102 @@ import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.util.TextParseUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.struts2.dispatcher.Parameter; +import org.apache.struts2.action.NoParameters; import org.apache.struts2.dispatcher.HttpParameters; +import org.apache.struts2.dispatcher.Parameter; import java.util.Collections; import java.util.Set; /** - * * This is a simple XWork interceptor that allows parameters (matching - * one of the paramNames attribute csv value) to be + * one of the paramNames attribute csv value) to be * removed from the parameter map if they match a certain value - * (matching one of the paramValues attribute csv value), before they - * are set on the action. A typical usage would be to want a dropdown/select - * to map onto a boolean value on an action. The select had the options - * none, yes and no with values -1, true and false. The true and false would - * map across correctly. However the -1 would be set to false. - * This was not desired as one might needed the value on the action to stay null. - * This interceptor fixes this by preventing the parameter from ever reaching + * (matching one of the paramValues attribute csv value), before they + * are set on the action. A typical usage would be to want a dropdown/select + * to map onto a boolean value on an action. The select had the options + * none, yes and no with values -1, true and false. The true and false would + * map across correctly. However the -1 would be set to false. + * This was not desired as one might needed the value on the action to stay null. + * This interceptor fixes this by preventing the parameter from ever reaching * the action. - * - * - * - * + * * - * - * - * - * + *

* No intended extension point - * - * + * *

- * 
- *	
  * <action name="sample" class="org.martingilday.Sample">
  * 	<interceptor-ref name="paramRemover">
- *   		<param name="paramNames">aParam,anotherParam</param>
- *   		<param name="paramValues">--,-1</param>
+ *          <param name="paramNames">aParam,anotherParam</param>
+ *          <param name="paramValues">--,-1</param>
  * 	</interceptor-ref>
  * 	<interceptor-ref name="defaultStack" />
  * 	...
  * </action>
- *  
- * 
  * 
- * - * - * @author martin.gilday */ public class ParameterRemoverInterceptor extends AbstractInterceptor { - private static final Logger LOG = LogManager.getLogger(ParameterRemoverInterceptor.class); + private static final Logger LOG = LogManager.getLogger(ParameterRemoverInterceptor.class); - private static final long serialVersionUID = 1; + private Set paramNames = Collections.emptySet(); + private Set paramValues = Collections.emptySet(); - private Set paramNames = Collections.emptySet(); - private Set paramValues = Collections.emptySet(); + /** + * Decide if the parameter should be removed from the parameter map based on + * paramNames and paramValues. + * + * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor + */ + @Override + public String intercept(ActionInvocation invocation) throws Exception { + if (!(invocation.getAction() instanceof NoParameters) + && (null != this.paramNames)) { + ActionContext ac = invocation.getInvocationContext(); + HttpParameters parameters = ac.getParameters(); - - /** - * Decide if the parameter should be removed from the parameter map based on - * paramNames and paramValues. - * - * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor - */ - @Override - public String intercept(ActionInvocation invocation) throws Exception { - if (!(invocation.getAction() instanceof NoParameters) - && (null != this.paramNames)) { - ActionContext ac = invocation.getInvocationContext(); - HttpParameters parameters = ac.getParameters(); - - if (parameters != null) { + if (parameters != null) { for (String removeName : paramNames) { - try { - Parameter parameter = parameters.get(removeName); - if (parameter.isDefined() && this.paramValues.contains(parameter.getValue())) { - parameters.remove(removeName); - } - } catch (Exception e) { - LOG.error("Failed to convert parameter to string", e); - } + try { + Parameter parameter = parameters.get(removeName); + if (parameter.isDefined() && this.paramValues.contains(parameter.getValue())) { + parameters.remove(removeName); + } + } catch (Exception e) { + LOG.error("Failed to convert parameter to string", e); + } } - } - } - return invocation.invoke(); - } + } + } + return invocation.invoke(); + } - /** - * Allows paramNames attribute to be set as comma-separated-values (csv). - * - * @param paramNames the paramNames to set - */ - public void setParamNames(String paramNames) { - this.paramNames = TextParseUtil.commaDelimitedStringToSet(paramNames); - } + /** + * Allows paramNames attribute to be set as comma-separated-values (csv). + * + * @param paramNames the paramNames to set + */ + public void setParamNames(String paramNames) { + this.paramNames = TextParseUtil.commaDelimitedStringToSet(paramNames); + } + /** + * Allows paramValues attribute to be set as a comma-separated-values (csv). + * + * @param paramValues the paramValues to set + */ + public void setParamValues(String paramValues) { + this.paramValues = TextParseUtil.commaDelimitedStringToSet(paramValues); + } - /** - * Allows paramValues attribute to be set as a comma-separated-values (csv). - * - * @param paramValues the paramValues to set - */ - public void setParamValues(String paramValues) { - this.paramValues = TextParseUtil.commaDelimitedStringToSet(paramValues); - } } - diff --git a/core/src/main/java/org/apache/struts2/interceptor/NoParameters.java b/core/src/main/java/org/apache/struts2/action/NoParameters.java similarity index 96% rename from core/src/main/java/org/apache/struts2/interceptor/NoParameters.java rename to core/src/main/java/org/apache/struts2/action/NoParameters.java index c42aa809b..80424a5f0 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/NoParameters.java +++ b/core/src/main/java/org/apache/struts2/action/NoParameters.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.struts2.interceptor; +package org.apache.struts2.action; /** * This marker interface should be implemented by actions that do not want any parameters set on