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

com.agiletec.apsadmin.system.ChainingInterceptor Maven / Gradle / Ivy

/*
 * Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */
package com.agiletec.apsadmin.system;

import com.opensymphony.xwork2.Unchainable;
import com.opensymphony.xwork2.util.TextParseUtil;
import com.opensymphony.xwork2.util.reflection.ReflectionProvider;

import java.util.Set;

/**
 * 
 * 

* An interceptor that copies all the properties of every object in the value stack to the currently executing object, * except for any object that implements {@link Unchainable}. A collection of optional includes and * excludes may be provided to control how and which parameters are copied. Only includes or excludes may be * specified. Specifying both results in undefined behavior. See the javadocs for {@link ReflectionProvider#copy(Object, Object, * java.util.Map, java.util.Collection, java.util.Collection)} for more information. *

* *

* Note: It is important to remember that this interceptor does nothing if there are no objects already on the stack. *
This means two things: *
One, you can safely apply it to all your actions without any worry of adverse affects. *
Two, it is up to you to ensure an object exists in the stack prior to invoking this action. The most typical way this is done * is through the use of the chain result type, which combines with this interceptor to make up the action * chaining feature. *

* *

* Note: By default Errors, Field errors and Message aren't copied during chaining, to change the behaviour you can specify * the below three constants in struts.properties or struts.xml: *

* *
    *
  • struts.xwork.chaining.copyErrors - set to true to copy Action Errors
  • *
  • struts.xwork.chaining.copyFieldErrors - set to true to copy Field Errors
  • *
  • struts.xwork.chaining.copyMessages - set to true to copy Action Messages
  • *
* *

* Example: *

* *
 * <constant name="struts.xwork.chaining.copyErrors" value="true"/>
 * 
* *

* Note: By default actionErrors and actionMessages are excluded when copping object's properties. *

* * Interceptor parameters: * *
    *
  • excludes (optional) - the list of parameter names to exclude from copying (all others will be included).
  • *
  • includes (optional) - the list of parameter names to include when copying (all others will be excluded).
  • *
* * Extending the interceptor: * *

* There are no known extension points to this interceptor. *

* * Example code: * * *
 * <action name="someAction" class="com.examples.SomeAction">
 *     <interceptor-ref name="basicStack"/>
 *     <result name="success" type="chain">otherAction</result>
 * </action>
 * 
* *
 * <action name="otherAction" class="com.examples.OtherAction">
 *     <interceptor-ref name="chain"/>
 *     <interceptor-ref name="basicStack"/>
 *     <result name="success">good_result.ftl</result>
 * </action>
 * 
* * * * @author mrdon * @author tm_jee ( tm_jee(at)yahoo.co.uk ) * @author E.Santoboni * @see com.opensymphony.xwork2.ActionChainResult */ public class ChainingInterceptor extends com.opensymphony.xwork2.interceptor.ChainingInterceptor { public void setExcludeParameters(String parametersToExclude) { Set parameters = TextParseUtil.commaDelimitedStringToSet(parametersToExclude); if (parameters.contains("fieldErrors")) { super.setCopyFieldErrors(Boolean.FALSE.toString()); } if (parameters.contains("actionErrors")) { super.setCopyErrors(Boolean.FALSE.toString()); } if (parameters.contains("actionMessages")) { super.setCopyMessages(Boolean.FALSE.toString()); } super.setExcludesCollection(parameters); } public void setIncludeParameters(String parametersToInclude) { Set parameters = TextParseUtil.commaDelimitedStringToSet(parametersToInclude); if (parameters.contains("fieldErrors")) { super.setCopyFieldErrors(Boolean.TRUE.toString()); } if (parameters.contains("actionErrors")) { super.setCopyErrors(Boolean.TRUE.toString()); } if (parameters.contains("actionMessages")) { super.setCopyMessages(Boolean.TRUE.toString()); } super.setIncludesCollection(parameters); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy