All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opensymphony.xwork2.interceptor.ParameterRemoverInterceptor Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package com.opensymphony.xwork2.interceptor;

import com.opensymphony.xwork2.ActionContext;
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.dispatcher.HttpParameters;

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 
 * 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 
 * the action.
 * 
 * 
 * 
 * 
 * 
    *
  • paramNames - A comma separated value (csv) indicating the parameter name * whose param value should be considered that if they match any of the * comma separated value (csv) from paramValues attribute, shall be * removed from the parameter map such that they will not be applied * to the action
  • *
  • paramValues - A comma separated value (csv) indicating the parameter value that if * matched shall have its parameter be removed from the parameter map * such that they will not be applied to 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>
 * 	</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 long serialVersionUID = 1; 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(); 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); } } } } 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 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); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy