svn commit: r1534087 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/config/BeanSelectionProvider.java main/java/org/apache/struts2/dispatcher/ContainerHolder.java test/java/org/apac
Author: lukaszlenart Date: Mon Oct 21 10:43:53 2013 New Revision: 1534087 URL: http://svn.apache.org/r1534087 Log: WW-4129 Removes checking if configuration changed in ContainerHolder and allows to explicit set reload/cache options independent from devMode Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java?rev=1534087&r1=1534086&r2=1534087&view=diff == --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java Mon Oct 21 10:43:53 2013 @@ -409,16 +409,7 @@ public class BeanSelectionProvider imple alias(SecurityGate.class, StrutsConstants.STRUTS_SECURITY_GATE, builder, props); -if ("true".equalsIgnoreCase(props.getProperty(StrutsConstants.STRUTS_DEVMODE))) { -props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD, "true"); -props.setProperty(StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, "true"); - props.setProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE, "false"); - props.setProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY, "0"); -// Convert struts properties into ones that xwork expects -props.setProperty(XWorkConstants.DEV_MODE, "true"); -} else { -props.setProperty(XWorkConstants.DEV_MODE, "false"); -} +switchDevMode(props); // Convert Struts properties into XWork properties convertIfExist(props, StrutsConstants.STRUTS_LOG_MISSING_PROPERTIES, XWorkConstants.LOG_MISSING_PROPERTIES); @@ -431,6 +422,32 @@ public class BeanSelectionProvider imple loadCustomResourceBundles(props); } +/** + * Enables/disables devMode and related settings if they aren't explicit set in struts.xml/struts.properties + * + * @param props configured properties + */ +private void switchDevMode(LocatableProperties props) { +if ("true".equalsIgnoreCase(props.getProperty(StrutsConstants.STRUTS_DEVMODE))) { +if (props.getProperty(StrutsConstants.STRUTS_I18N_RELOAD) == null) { +props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD, "true"); +} +if (props.getProperty(StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD) == null) { + props.setProperty(StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, "true"); +} +if (props.getProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE) == null) { + props.setProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE, "false"); +} +if (props.getProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY) == null) { + props.setProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY, "0"); +} +// Convert struts properties into ones that xwork expects +props.setProperty(XWorkConstants.DEV_MODE, "true"); +} else { +props.setProperty(XWorkConstants.DEV_MODE, "false"); +} +} + private void convertIfExist(LocatableProperties props, String fromKey, String toKey) { if (props.containsKey(fromKey)) { props.setProperty(toKey, props.getProperty(fromKey)); Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java?rev=1534087&r1=1534086&r2=1534087&view=diff == --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java Mon Oct 21 10:43:53 2013 @@ -1,25 +1,21 @@ package org.apache.struts2.dispatcher; import com.opensymphony.xwork2.inject.Container; -import org.apache.struts2.StrutsConstants; /** * Simple class to hold Container instance per thread to minimise number of attempts * to read configuration and build each time a new configuration. * - * Thus depends on {@link StrutsConstants#STRUTS_CONFIGURATION_XML_RELOAD} flag, - * if set to false just use stored container, configuration will do not change. + * As Co
svn commit: r1534089 - in /struts/struts2/trunk: core/src/main/resources/struts-default.xml xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
Author: lukaszlenart Date: Mon Oct 21 10:49:52 2013 New Revision: 1534089 URL: http://svn.apache.org/r1534089 Log: WW-4023 Adds action: and method: prefixes to excludeParams list and changes order to first check for excludeParams and then for acceptedParams in ParametersInterceptor Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=1534089&r1=1534088&r2=1534089&view=diff == --- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original) +++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Mon Oct 21 10:49:52 2013 @@ -251,7 +251,7 @@ -dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...* +^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.* @@ -261,7 +261,7 @@ -dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...* +^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.* @@ -298,7 +298,7 @@ -dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...* +^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.* Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1534089&r1=1534088&r2=1534089&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Mon Oct 21 10:49:52 2013 @@ -144,8 +144,7 @@ public class ParametersInterceptor exten private boolean devMode = false; // Allowed names of parameters -private String acceptedParamNames = ACCEPTED_PARAM_NAMES; -private Pattern acceptedPattern = Pattern.compile(acceptedParamNames); +private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PARAM_NAMES); private ValueStackFactory valueStackFactory; @@ -389,7 +388,7 @@ public class ParametersInterceptor exten } protected boolean acceptableName(String name) { -boolean accepted = isWithinLengthLimit(name) && isAccepted(name) && !isExcluded(name); +boolean accepted = isWithinLengthLimit(name) && !isExcluded(name) && isAccepted(name); if (devMode && accepted) { // notify only when in devMode LOG.debug("Parameter [#0] was accepted and will be appended to action!", name); }
svn commit: r1534091 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
Author: lukaszlenart Date: Mon Oct 21 10:57:43 2013 New Revision: 1534091 URL: http://svn.apache.org/r1534091 Log: WW-4192 Reduces log verbosity about missing property Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1534091&r1=1534090&r2=1534091&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Mon Oct 21 10:57:43 2013 @@ -321,7 +321,7 @@ public class ParametersInterceptor exten String developerNotification = LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification", ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", new Object[]{ "Unexpected Exception caught setting '" + name + "' on '" + action.getClass() + ": " + e.getMessage() }); -LOG.error(developerNotification, e); +LOG.error(developerNotification); if (action instanceof ValidationAware) { ((ValidationAware) action).addActionMessage(developerNotification); }
svn commit: r1534123 - in /struts/struts2/trunk/xwork-core/src: main/java/com/opensymphony/xwork2/interceptor/ main/java/com/opensymphony/xwork2/ognl/ test/java/com/opensymphony/xwork2/interceptor/
Author: lukaszlenart Date: Mon Oct 21 12:19:52 2013 New Revision: 1534123 URL: http://svn.apache.org/r1534123 Log: WW-4109 WW-4154 Reverts to previous behaviour where both ParametersInterceptor and ParameterNameAware must accept parameter Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterNameAware.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterNameAware.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterNameAware.java?rev=1534123&r1=1534122&r2=1534123&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterNameAware.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterNameAware.java Mon Oct 21 12:19:52 2013 @@ -17,19 +17,10 @@ package com.opensymphony.xwork2.intercep /** * - * * This interface is implemented by actions that want to declare acceptable parameters. Works in conjunction with {@link * ParametersInterceptor}. For example, actions may want to create a whitelist of parameters they will accept or a * blacklist of paramters they will reject to prevent clients from setting other unexpected (and possibly dangerous) * parameters. - * - * Using {@link ParameterNameAware} could be dangerous as {@link ParameterNameAware#acceptableParameterName(String)} takes precedence - * over {@link ParametersInterceptor} which means if ParametersInterceptor excluded given parameter name you can accept it with - * {@link ParameterNameAware#acceptableParameterName(String)}. - * - * The best idea is to define very tight restrictions with ParametersInterceptor and relax them per action with - * {@link ParameterNameAware#acceptableParameterName(String)} - * * * * @author Bob Lee (crazy...@google.com) Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1534123&r1=1534122&r2=1534123&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Mon Oct 21 12:19:52 2013 @@ -344,7 +344,7 @@ public class ParametersInterceptor exten */ protected boolean isAcceptableParameter(String name, Object action) { ParameterNameAware parameterNameAware = (action instanceof ParameterNameAware) ? (ParameterNameAware) action : null; -return acceptableName(name) || (parameterNameAware != null && parameterNameAware.acceptableParameterName(name)); +return acceptableName(name) && (parameterNameAware == null || parameterNameAware.acceptableParameterName(name)); } /** Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java?rev=1534123&r1=1534122&r2=1534123&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java Mon Oct 21 12:19:52 2013 @@ -80,7 +80,7 @@ public class SecurityMemberAccess extend return true; } -if ((isAccepted(name) && !isExcluded(name)) || (propertiesJudge != null && propertiesJudge.acceptProperty(name))) { +if ((!isExcluded(name)) && isAccepted(name) && (propertiesJudge == null || propertiesJudge.acceptProperty(name))) { return true; } return false; Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java?rev=1534123&r1=1534122&r2=1534123&view=diff == --- struts/str
svn commit: r1534156 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
Author: lukaszlenart Date: Mon Oct 21 13:51:04 2013 New Revision: 1534156 URL: http://svn.apache.org/r1534156 Log: WW-4066 Solves problem with StringIndexOutOfBoundsException when message was already translated Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1534156&r1=1534155&r2=1534156&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Mon Oct 21 13:51:04 2013 @@ -23,12 +23,23 @@ import com.opensymphony.xwork2.conversio import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.ognl.PropertiesJudge; -import com.opensymphony.xwork2.util.*; +import com.opensymphony.xwork2.util.ArrayUtils; +import com.opensymphony.xwork2.util.ClearableValueStack; +import com.opensymphony.xwork2.util.LocalizedTextUtil; +import com.opensymphony.xwork2.util.MemberAccessValueStack; +import com.opensymphony.xwork2.util.ValueStack; +import com.opensymphony.xwork2.util.ValueStackFactory; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import com.opensymphony.xwork2.util.reflection.ReflectionContextState; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -318,13 +329,7 @@ public class ParametersInterceptor exten newStack.setParameter(name, value); } catch (RuntimeException e) { if (devMode) { -String developerNotification = LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification", ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", new Object[]{ - "Unexpected Exception caught setting '" + name + "' on '" + action.getClass() + ": " + e.getMessage() -}); -LOG.error(developerNotification); -if (action instanceof ValidationAware) { -((ValidationAware) action).addActionMessage(developerNotification); -} +notifyDeveloper(action, name, e.getMessage()); } } } @@ -335,6 +340,22 @@ public class ParametersInterceptor exten addParametersToContext(ActionContext.getContext(), acceptableParameters); } +protected void notifyDeveloper(Object action, String property, String message) { +String developerNotification = LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification", +ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", +new Object[]{ +"Unexpected Exception caught setting '" + property + "' on '" + action.getClass() + ": " + message +} +); +LOG.error(developerNotification); +// see https://issues.apache.org/jira/browse/WW-4066 +if (action instanceof ValidationAware) { +Collection messages = ((ValidationAware) action).getActionMessages(); +messages.add(message); +((ValidationAware) action).setActionMessages(messages); +} +} + /** * Checks if name of parameter can be accepted or thrown away *
[CONF] Confluence Changes in the last 24 hours
Apache ActiveMQ Pages Blog post: Apache ActiveMQ 5.9.0 Released created by Gary Tully[09:54 PM] Page: Replicated LevelDB Store edited by Gary Tully[02:48 PM] (view changes) Page: QuickLinks edited by Gary Tully[12:23 PM] (view changes) Home page: Index edited by Gary Tully[12:21 PM] (view changes) Page: Download edited by Gary Tully[12:20 PM] (view changes) Page: ActiveMQ 5.9.0 Release edited by Gary Tully[12:15 PM] (view changes) Page: Xml Reference edited by Gary Tully[12:13 PM] (view changes) Page: Release Guide edited by Gary Tully[12:11 PM] (view changes) Apache Camel Pages Page: Log edited by Claus Ibsen[02:02 PM] (view changes) Page: Camel 2.13.0 Release edited by Claus Ibsen[12:51 PM] (view changes) Page: ETL Example edited by Babak Vahdat[12:35 PM] (view changes) Page: Merging commits from trunk to fixes branch edited by Ben O'Day[03:27 AM] (view changes) Apache Cloudstack Pages Page: Release Management created by Animesh[11:26 PM] Page: Cloudstack 4.2 Release edited by Animesh[11:26 PM] (view changes) Page: Dynamic Compute Offering FS edited by Bharat Kumar[10:25 AM] (view changes) Page: Deployment edited by Donal Lafferty[09:30 AM] (view changes) Page: Update UI visual appearance edited by Frankie Onuonga[08:23 AM] (view changes) Apache Hive Pages Page: HiveODBC edited by Thejas M Nair[08:15 PM] (view changes) Apache Kafka Pages Page: FAQ