You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2016/05/05 05:34:15 UTC
struts git commit: WW-4596 Allows redefine regex used to match
methods when SMI is disabled
Repository: struts
Updated Branches:
refs/heads/master c4d2b687b -> 02b207fca
WW-4596 Allows redefine regex used to match methods when SMI is disabled
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/02b207fc
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/02b207fc
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/02b207fc
Branch: refs/heads/master
Commit: 02b207fca529627f3a34660de86b51444461a7d2
Parents: c4d2b68
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu May 5 07:33:31 2016 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu May 5 07:34:04 2016 +0200
----------------------------------------------------------------------
.../opensymphony/xwork2/config/entities/ActionConfig.java | 9 +++++++--
.../xwork2/config/impl/DefaultConfiguration.java | 10 ++++++++++
.../xwork2/config/providers/XmlConfigurationProvider.java | 2 +-
.../src/main/java/org/apache/struts2/StrutsConstants.java | 1 +
.../convention/PackageBasedActionConfigBuilder.java | 2 +-
5 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/02b207fc/core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java b/core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
index 3e921f4..1958f53 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
@@ -43,7 +43,6 @@ public class ActionConfig extends Located implements Serializable {
public static final String DEFAULT_METHOD = "execute";
public static final String WILDCARD = "*";
- public static final String REGEX_WILDCARD = "regex:.*";
public static final String DEFAULT_METHOD_REGEX = "([A-Za-z0-9_$]*)";
protected List<InterceptorMapping> interceptors; // a list of interceptorMapping Objects eg. List<InterceptorMapping>
@@ -218,6 +217,7 @@ public class ActionConfig extends Located implements Serializable {
protected ActionConfig target;
protected Set<String> allowedMethods;
+ private String methodRegex;
public Builder(ActionConfig toClone) {
target = new ActionConfig(toClone);
@@ -338,12 +338,17 @@ public class ActionConfig extends Located implements Serializable {
return this;
}
+ public Builder setDefaultMethodRegex(String methodRegex) {
+ this.methodRegex = methodRegex;
+ return this;
+ }
+
public ActionConfig build() {
target.params = Collections.unmodifiableMap(target.params);
target.results = Collections.unmodifiableMap(target.results);
target.interceptors = Collections.unmodifiableList(target.interceptors);
target.exceptionMappings = Collections.unmodifiableList(target.exceptionMappings);
- target.allowedMethods = AllowedMethods.build(target.strictMethodInvocation, allowedMethods, DEFAULT_METHOD_REGEX);
+ target.allowedMethods = AllowedMethods.build(target.strictMethodInvocation, allowedMethods, methodRegex != null ? methodRegex : DEFAULT_METHOD_REGEX);
ActionConfig result = target;
target = new ActionConfig(target);
http://git-wip-us.apache.org/repos/asf/struts/blob/02b207fc/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
index 1aa45c1..7426831 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
@@ -36,6 +36,7 @@ import ognl.PropertyAccessor;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.struts2.StrutsConstants;
import java.util.*;
@@ -370,11 +371,20 @@ public class DefaultConfiguration implements Configuration {
}
}
+ String methodRegex = container.getInstance(String.class, StrutsConstants.STRUTS_SMI_METHOD_REGEX);
+ if (methodRegex == null) {
+ methodRegex = ActionConfig.DEFAULT_METHOD_REGEX;
+ }
+
+ LOG.debug("Using pattern [{}] to match allowed methods when SMI is disabled!", methodRegex);
+
return new ActionConfig.Builder(baseConfig)
.addParams(params)
.addResultConfigs(results)
.defaultClassName(packageContext.getDefaultClassRef()) // fill in default if non class has been provided
.interceptors(interceptors)
+ .setStrictMethodInvocation(packageContext.isStrictMethodInvocation())
+ .setDefaultMethodRegex(methodRegex)
.addExceptionMappings(packageContext.getAllExceptionMappingConfigs())
.build();
}
http://git-wip-us.apache.org/repos/asf/struts/blob/02b207fc/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java b/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
index c87cbea..e761b4b 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
@@ -875,7 +875,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
} else {
// Strict DMI is disabled to any method can be called
allowedMethods = new HashSet<>();
- allowedMethods.add(ActionConfig.REGEX_WILDCARD);
+ allowedMethods.add(ActionConfig.WILDCARD);
}
return Collections.unmodifiableSet(allowedMethods);
http://git-wip-us.apache.org/repos/asf/struts/blob/02b207fc/core/src/main/java/org/apache/struts2/StrutsConstants.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java
index d5b70cf..186e880 100644
--- a/core/src/main/java/org/apache/struts2/StrutsConstants.java
+++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java
@@ -298,4 +298,5 @@ public final class StrutsConstants {
public static final String STRUTS_CONTENT_TYPE_MATCHER = "struts.contentTypeMatcher";
+ public static final String STRUTS_SMI_METHOD_REGEX = "struts.strictMethodInvocation.methodRegex";
}
http://git-wip-us.apache.org/repos/asf/struts/blob/02b207fc/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
index fc85d54..45c71a3 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
@@ -930,7 +930,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
actionConfig.addAllowedMethod(allowedMethods);
actionConfig.addAllowedMethod(pkgCfg.getGlobalAllowedMethods());
} else {
- actionConfig.addAllowedMethod(ActionConfig.REGEX_WILDCARD);
+ actionConfig.addAllowedMethod(ActionConfig.WILDCARD);
}
if (LOG.isDebugEnabled()) {