struts-extras git commit: Updates info about Struts 2.3.8

2017-08-01 Thread lukaszlenart
Repository: struts-extras
Updated Branches:
  refs/heads/master c056b516a -> 3103f1fbe


Updates info about Struts 2.3.8


Project: http://git-wip-us.apache.org/repos/asf/struts-extras/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts-extras/commit/3103f1fb
Tree: http://git-wip-us.apache.org/repos/asf/struts-extras/tree/3103f1fb
Diff: http://git-wip-us.apache.org/repos/asf/struts-extras/diff/3103f1fb

Branch: refs/heads/master
Commit: 3103f1fbec18edc9d4098d1aac13c0b7140c8f28
Parents: c056b51
Author: Lukasz Lenart 
Authored: Tue Aug 1 10:47:47 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 10:48:13 2017 +0200

--
 struts2-secure-jakarta-multipart-parser-plugin/README.md| 3 +++
 struts2-secure-jakarta-stream-multipart-parser-plugin/README.md | 3 +++
 2 files changed, 6 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts-extras/blob/3103f1fb/struts2-secure-jakarta-multipart-parser-plugin/README.md
--
diff --git a/struts2-secure-jakarta-multipart-parser-plugin/README.md 
b/struts2-secure-jakarta-multipart-parser-plugin/README.md
index 0676d3d..783c96d 100644
--- a/struts2-secure-jakarta-multipart-parser-plugin/README.md
+++ b/struts2-secure-jakarta-multipart-parser-plugin/README.md
@@ -24,6 +24,9 @@ Just drop the jar into `WEB-INF/libs` folder and add the 
bellow definition into
 name="secure-jakarta"
 scope="default"/>
 
+  
+  
+  
   
  ```
 

http://git-wip-us.apache.org/repos/asf/struts-extras/blob/3103f1fb/struts2-secure-jakarta-stream-multipart-parser-plugin/README.md
--
diff --git a/struts2-secure-jakarta-stream-multipart-parser-plugin/README.md 
b/struts2-secure-jakarta-stream-multipart-parser-plugin/README.md
index 984ba6d..a7aaf5b 100644
--- a/struts2-secure-jakarta-stream-multipart-parser-plugin/README.md
+++ b/struts2-secure-jakarta-stream-multipart-parser-plugin/README.md
@@ -24,6 +24,9 @@ Just drop the jar into `WEB-INF/libs` folder and add the 
bellow definition into
 name="secure-jakarta-stream"
 scope="default"/>
 
+  
+  
+  
   
  ```
 



[2/2] struts git commit: Upgrades to OGNL 3.1.15

2017-08-01 Thread lukaszlenart
Upgrades to OGNL 3.1.15


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d29caba5
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d29caba5
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d29caba5

Branch: refs/heads/master
Commit: d29caba5eedf463a0c4f748d50a23cd69ab92cde
Parents: 8df5a89
Author: Lukasz Lenart 
Authored: Tue Aug 1 11:41:48 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 11:41:48 2017 +0200

--
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/d29caba5/pom.xml
--
diff --git a/pom.xml b/pom.xml
index b3c9328..4f757ab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,7 +84,7 @@
 
 ${project.version}
 
4.1.6.RELEASE
-3.1.12
+3.1.15
 5.2
 3.0.7
 1.0.6



[1/2] struts git commit: Uses better regex to improve performance

2017-08-01 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/master 91ae3448c -> d29caba5e


Uses better regex to improve performance


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/8df5a897
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/8df5a897
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/8df5a897

Branch: refs/heads/master
Commit: 8df5a897f61f3ef45c36fdd9275e9ae4516c
Parents: 91ae344
Author: Lukasz Lenart 
Authored: Tue Aug 1 11:29:23 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 11:29:23 2017 +0200

--
 .../validator/validators/URLValidator.java  | 10 
 .../xwork2/validator/URLValidatorTest.java  | 26 
 2 files changed, 31 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/8df5a897/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
 
b/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
index eab0fa8..6cf58ef 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
@@ -49,18 +49,18 @@ public class URLValidator extends FieldValidatorSupport {
 private static final Logger LOG = LogManager.getLogger(URLValidator.class);
 
 public static final String DEFAULT_URL_REGEX = "^(https?|ftp):\\/\\/" +
-"(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+" +
-"(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)?" +
+"(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=\\-]|%[0-9a-f]{2})+" +
+"(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=\\-]|%[0-9a-f]{2})+)?" +
 "@)?(#?" +
 ")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*" +
 "[a-z][a-z0-9-]*[a-z0-9]" +
 "|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}" +
 "(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])" +
 ")(:\\d+)?" +
-
")(((\\/{0,1}([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*" +
-"(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)" +
+")(((\\/([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-]|%[0-9a-f]{2})*)*" +
+
"(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-\\/\\:]|%[0-9a-f]{2})*)" +
 "?)?)?" +
-"(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?" +
+"(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-]|%[0-9a-f]{2})*)?" +
 "$";
 
 private String urlRegexExpression;

http://git-wip-us.apache.org/repos/asf/struts/blob/8df5a897/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java
--
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java 
b/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java
index 5c83dd1..baa2bb1 100644
--- a/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java
@@ -160,6 +160,32 @@ public class URLValidatorTest extends XWorkTestCase {
 
 
assertTrue(pattern.matcher("http://netsol-underconstruction-page-monitor-1.com/__media__/js/netsoltrademark.php?d=www.le-soutien-scolaire.fr%2Favis-et-test-comparatifs-des-robots-multifonctions%2F";).matches());
 
assertTrue(UrlValidator.getInstance().isValid("http://netsol-underconstruction-page-monitor-1.com/__media__/js/netsoltrademark.php?d=www.le-soutien-scolaire.fr%2Favis-et-test-comparatifs-des-robots-multifonctions%2F";));
+
+//this will cause test to hang indefinitely using JDK 1.8.0_121, 
Struts 2.5.10.1 and JUnit 4.5
+
assertTrue(pattern.matcher("http://www.javaroad.jp/news/redirect.jsp?link=http://www.forum-course-de-cote.com/que-penser-dune-trottinette-electrique/";).matches());
+
assertTrue(UrlValidator.getInstance().isValid("http://www.javaroad.jp/news/redirect.jsp?link=http://www.forum-course-de-cote.com/que-penser-dune-trottinette-electrique/";));
+
+//this will cause test to hang indefinitely using JDK 1.8.0_121, 
Struts 2.5.10.1 and JUnit 4.5
+
assertTrue(pattern.matcher("http://wargame.ch/wc/acw/sub/aotm/guestbook/index.php?page3D183EClearwater20Roofing20Contractors3C/a3E3Ekaldu20non20msg3C/a3E";).matches());
+
assertTrue(UrlValidator.getInstance().isValid("http://wargame.ch/wc/acw/sub/aotm/guestbook/index.php?page3D183EClearwater20Roofing20Contractors3C/a3E3Ekaldu20non20msg3C/a3E";));
+}
+
+public void testLongRu

struts git commit: WW-4832 Upgrades to OGNL 3.0.21

2017-08-01 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/support-2-3 16eb7fa76 -> 54a4dce7b


WW-4832 Upgrades to OGNL 3.0.21


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/54a4dce7
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/54a4dce7
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/54a4dce7

Branch: refs/heads/support-2-3
Commit: 54a4dce7bfbe33f01c6a9836ae5da30ae6300d0a
Parents: 16eb7fa
Author: Lukasz Lenart 
Authored: Tue Aug 1 11:50:33 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 11:50:33 2017 +0200

--
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/54a4dce7/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 8173be5..956f794 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
 
 ${project.version}
 
3.0.5.RELEASE
-3.0.19
+3.0.21
 3.3
 5.0.2
 2.2.2



struts git commit: Uses better RegEx to improve performance

2017-08-01 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/support-2-3 54a4dce7b -> 744c1f409


Uses better RegEx to improve performance


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/744c1f40
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/744c1f40
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/744c1f40

Branch: refs/heads/support-2-3
Commit: 744c1f409d983641af3e8e3b573c2f2d2c2c6d9c
Parents: 54a4dce
Author: Lukasz Lenart 
Authored: Tue Aug 1 12:01:43 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 12:01:43 2017 +0200

--
 .../xwork2/validator/validators/URLValidator.java | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/744c1f40/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
index 9aa3c9d..b46dea3 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
@@ -74,18 +74,18 @@ public class URLValidator extends FieldValidatorSupport {
 return urlRegex;
 } else {
 return "^(https?|ftp):\\/\\/" +
-"(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+" +
-
"(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)?" +
+"(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=\\-]|%[0-9a-f]{2})+" 
+
+
"(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=\\-]|%[0-9a-f]{2})+)?" +
 "@)?(#?" +
 ")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*" +
 "[a-z][a-z0-9-]*[a-z0-9]" +
 "|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}" +
 "(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])" +
 ")(:\\d+)?" +
-
")(((\\/{0,1}([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*" +
-
"(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)" +
+
")(((\\/([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-]|%[0-9a-f]{2})*)*" +
+
"(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-\\/\\:]|%[0-9a-f]{2})*)" +
 "?)?)?" +
-"(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?" 
+
+
"(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-]|%[0-9a-f]{2})*)?" +
 "$";
 }
 }



[8/8] struts git commit: WW-4808 Allows define multiple suffixes when using Convention plugin

2017-08-01 Thread lukaszlenart
WW-4808 Allows define multiple suffixes when using
Convention plugin


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/62900ee9
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/62900ee9
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/62900ee9

Branch: refs/heads/master
Commit: 62900ee9868c4d12ef76b8a7a8bbc60b694cbcaa
Parents: d29caba 855be0e
Author: Lukasz Lenart 
Authored: Tue Aug 1 15:50:24 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 15:50:24 2017 +0200

--
 .../convention/AbstractActionNameBuilder.java   | 63 
 .../struts2/convention/ActionConfigBuilder.java |  2 -
 .../struts2/convention/ActionNameBuilder.java   |  2 -
 .../ClasspathConfigurationProvider.java |  4 +-
 .../convention/ClasspathPackageProvider.java|  5 +-
 .../struts2/convention/ConventionConstants.java | 26 +++-
 .../convention/ConventionUnknownHandler.java|  8 +--
 .../struts2/convention/ConventionsService.java  |  2 -
 .../convention/ConventionsServiceImpl.java  |  4 +-
 .../convention/DefaultActionNameBuilder.java| 45 ++
 .../struts2/convention/DefaultClassFinder.java  | 29 +
 .../DefaultInterceptorMapBuilder.java   |  2 -
 .../convention/DefaultResultMapBuilder.java |  6 +-
 .../convention/InterceptorMapBuilder.java   |  2 -
 .../PackageBasedActionConfigBuilder.java| 51 +---
 .../struts2/convention/ReflectionTools.java |  2 -
 .../struts2/convention/ResultMapBuilder.java|  2 -
 .../convention/SEOActionNameBuilder.java| 39 
 .../apache/struts2/convention/StringTools.java  |  2 -
 19 files changed, 171 insertions(+), 125 deletions(-)
--




[1/8] struts git commit: Extends action suffix to support multiple suffixes

2017-08-01 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/master d29caba5e -> 62900ee98


Extends action suffix to support multiple suffixes


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/cf10f68e
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/cf10f68e
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/cf10f68e

Branch: refs/heads/master
Commit: cf10f68e766957fdd7f1bf70f25d4cc899a40b87
Parents: cf7bfe6
Author: Lukasz Lenart 
Authored: Fri Jul 7 10:23:54 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 10:23:54 2017 +0200

--
 .../convention/PackageBasedActionConfigBuilder.java  | 15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/cf10f68e/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 25083e2..b244392 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
@@ -75,7 +75,7 @@ public class PackageBasedActionConfigBuilder implements 
ActionConfigBuilder {
 private String packageLocatorsBasePackage;
 private boolean disableActionScanning = false;
 private boolean disablePackageLocatorsScanning = false;
-private String actionSuffix = "Action";
+private Set actionSuffix = Collections.singleton("Action");
 private boolean checkImplementsAction = true;
 private boolean mapAllMatches = false;
 private Set loadedFileUrls = new HashSet<>();
@@ -227,7 +227,7 @@ public class PackageBasedActionConfigBuilder implements 
ActionConfigBuilder {
 @Inject(value = "struts.convention.action.suffix", required = false)
 public void setActionSuffix(String actionSuffix) {
 if (StringUtils.isNotBlank(actionSuffix)) {
-this.actionSuffix = actionSuffix;
+this.actionSuffix = 
TextParseUtil.commaDelimitedStringToSet(actionSuffix);
 }
 }
 
@@ -615,7 +615,7 @@ public class PackageBasedActionConfigBuilder implements 
ActionConfigBuilder {
 // such as com.opensymphony.xwork2.ActionSupport.  We repeat 
the
 // package filter here to filter out such results.
 boolean inPackage = 
includeClassNameInActionScan(classInfo.getName());
-boolean nameMatches = 
classInfo.getName().endsWith(actionSuffix);
+boolean nameMatches = matchesSuffix(classInfo.getName());
 
 try {
 return inPackage && (nameMatches || (checkImplementsAction 
&& com.opensymphony.xwork2.Action.class.isAssignableFrom(classInfo.get(;
@@ -624,6 +624,15 @@ public class PackageBasedActionConfigBuilder implements 
ActionConfigBuilder {
 return false;
 }
 }
+
+private boolean matchesSuffix(String name) {
+for (String suffix : actionSuffix) {
+if (name.endsWith(suffix)) {
+return true;
+}
+}
+return false;
+}
 };
 }
 



[4/8] struts git commit: Converts comments into logging statements

2017-08-01 Thread lukaszlenart
Converts comments into logging statements


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b5be431f
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b5be431f
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b5be431f

Branch: refs/heads/master
Commit: b5be431f540271685eed803c7e55bf5a4d3138e6
Parents: f522fbc
Author: Lukasz Lenart 
Authored: Fri Jul 7 11:01:03 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 11:01:03 2017 +0200

--
 .../convention/DefaultActionNameBuilder.java| 16 +---
 .../struts2/convention/SEOActionNameBuilder.java|  4 ++--
 2 files changed, 11 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/b5be431f/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
index 797a519..8a220b8 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
@@ -21,6 +21,8 @@
 package org.apache.struts2.convention;
 
 import com.opensymphony.xwork2.inject.Inject;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * 
@@ -33,6 +35,8 @@ import com.opensymphony.xwork2.inject.Inject;
  */
 public class DefaultActionNameBuilder extends AbstractActionNameBuilder {
 
+private static final Logger LOG = 
LogManager.getLogger(DefaultActionNameBuilder.class);
+
 private boolean lowerCase;
 
 @Inject
@@ -47,17 +51,15 @@ public class DefaultActionNameBuilder extends 
AbstractActionNameBuilder {
 
 checkActionName(actionName);
 
-// Truncate Action suffix if found
+LOG.trace("Truncate Action suffix if found");
 actionName = truncateSuffixIfMatches(actionName);
 
-// Force initial letter of action to lowercase, if desired
+LOG.trace("Force initial letter of action to lowercase, if desired");
 if ((lowerCase) && (actionName.length() > 1)) {
 int lowerPos = actionName.lastIndexOf('/') + 1;
-StringBuilder sb = new StringBuilder();
-sb.append(actionName.substring(0, lowerPos));
-sb.append(Character.toLowerCase(actionName.charAt(lowerPos)));
-sb.append(actionName.substring(lowerPos + 1));
-actionName = sb.toString();
+actionName = actionName.substring(0, lowerPos) +
+Character.toLowerCase(actionName.charAt(lowerPos)) +
+actionName.substring(lowerPos + 1);
 }
 
 return actionName;

http://git-wip-us.apache.org/repos/asf/struts/blob/b5be431f/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
index 3fea36a..d96fd2d 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
@@ -53,10 +53,10 @@ public class SEOActionNameBuilder extends 
AbstractActionNameBuilder {
 
 checkActionName(actionName);
 
-// Truncate Action suffix if found
+LOG.trace("Truncate Action suffix if found");
 actionName = truncateSuffixIfMatches(actionName);
 
-// Convert to underscores
+LOG.trace("Convert to underscores");
 char[] ca = actionName.toCharArray();
 StringBuilder build = new StringBuilder("" + ca[0]);
 boolean lower = true;



[7/8] struts git commit: Updates header with license

2017-08-01 Thread lukaszlenart
Updates header with license


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/855be0e3
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/855be0e3
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/855be0e3

Branch: refs/heads/master
Commit: 855be0e36c0ac07e36bb027750ae6ddf20dfbfee
Parents: 89d9342
Author: Lukasz Lenart 
Authored: Fri Jul 7 11:31:45 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 11:31:45 2017 +0200

--
 .../convention/AbstractActionNameBuilder.java   | 19 +
 .../struts2/convention/ActionConfigBuilder.java |  2 --
 .../struts2/convention/ActionNameBuilder.java   |  2 --
 .../ClasspathConfigurationProvider.java |  2 --
 .../convention/ClasspathPackageProvider.java|  5 ++--
 .../struts2/convention/ConventionConstants.java |  2 --
 .../convention/ConventionUnknownHandler.java|  2 --
 .../struts2/convention/ConventionsService.java  |  2 --
 .../convention/ConventionsServiceImpl.java  |  2 --
 .../convention/DefaultActionNameBuilder.java|  2 --
 .../struts2/convention/DefaultClassFinder.java  | 29 +++-
 .../DefaultInterceptorMapBuilder.java   |  2 --
 .../convention/DefaultResultMapBuilder.java |  2 --
 .../convention/InterceptorMapBuilder.java   |  2 --
 .../PackageBasedActionConfigBuilder.java|  2 --
 .../struts2/convention/ReflectionTools.java |  2 --
 .../struts2/convention/ResultMapBuilder.java|  2 --
 .../convention/SEOActionNameBuilder.java|  2 --
 .../apache/struts2/convention/StringTools.java  |  2 --
 19 files changed, 37 insertions(+), 48 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/855be0e3/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
index df2214f..333b293 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
@@ -1,3 +1,22 @@
+/*
+ * 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 org.apache.struts2.convention;
 
 import com.opensymphony.xwork2.inject.Inject;

http://git-wip-us.apache.org/repos/asf/struts/blob/855be0e3/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
index 0d45590..89a9832 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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

http://git-wip-us.apache.org/repos/asf/struts/blob/855be0e3/plugins/convention/src/main/java/org/apache/struts2/convention/ActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ActionNameBuilder.java
index 8944405..e9f41e3 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ActionNameBuilder.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  *

[5/8] struts git commit: Extracts constants

2017-08-01 Thread lukaszlenart
Extracts constants


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/f585d792
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/f585d792
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/f585d792

Branch: refs/heads/master
Commit: f585d7920ebdd2ce5b7164b5425d4567dddeddcb
Parents: b5be431
Author: Lukasz Lenart 
Authored: Fri Jul 7 11:13:44 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 11:13:44 2017 +0200

--
 .../convention/AbstractActionNameBuilder.java   |  2 +-
 .../ClasspathConfigurationProvider.java |  2 +-
 .../struts2/convention/ConventionConstants.java | 20 
 .../convention/ConventionUnknownHandler.java|  6 ++--
 .../convention/ConventionsServiceImpl.java  |  2 +-
 .../convention/DefaultResultMapBuilder.java |  4 +--
 .../PackageBasedActionConfigBuilder.java| 34 ++--
 7 files changed, 45 insertions(+), 25 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f585d792/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
index a546e62..df2214f 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
@@ -15,7 +15,7 @@ public abstract class AbstractActionNameBuilder implements 
ActionNameBuilder {
  * @param   actionSuffix (Optional) Classes that end with these value will 
be mapped as actions
  *  (defaults to "Action")
  */
-@Inject(value = "struts.convention.action.suffix", required = false)
+@Inject(value = ConventionConstants.CONVENTION_ACTION_SUFFIX, required = 
false)
 public void setActionSuffix(String actionSuffix) {
 if (StringUtils.isNotBlank(actionSuffix)) {
 this.actionSuffix = 
TextParseUtil.commaDelimitedStringToSet(actionSuffix);

http://git-wip-us.apache.org/repos/asf/struts/blob/f585d792/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
index 32aec96..79334e7 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
@@ -53,7 +53,7 @@ public class ClasspathConfigurationProvider implements 
ConfigurationProvider, Di
 this.devMode = BooleanUtils.toBoolean(mode);
 }
 
-@Inject("struts.convention.classes.reload")
+@Inject(ConventionConstants.CONVENTION_CLASSES_RELOAD)
 public void setReload(String reload) {
 this.reload = BooleanUtils.toBoolean(reload);
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/f585d792/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
index b360d94..ad5f4e8 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
@@ -31,4 +31,24 @@ public class ConventionConstants {
 public static final String CONVENTION_CONVENTIONS_SERVICE = 
"struts.convention.conventionsService";
 public static final String CONVENTION_ACTION_NAME_LOWERCASE = 
"struts.convention.action.name.lowercase";
 public static final String CONVENTION_ACTION_NAME_SEPARATOR = 
"struts.convention.action.name.separator";
+public static final String CONVENTION_ACTION_SUFFIX = 
"struts.convention.action.suffix";
+public static final String CONVENTION_CLASSES_RELOAD = 
"struts.convention.classes.reload";
+public static final String CONVENTION_RESULT_PATH = 
"struts.convention.result.path";
+public static final String CONVENTION_DEFAULT_PARENT_PACKAGE = 
"struts.convention.default.parent.package";
+public static final String CONVENTION_REDIRECT_TO_SLASH = 
"struts.convention.redirect.to.slash";
+public st

[2/8] struts git commit: Uses multiple suffixes

2017-08-01 Thread lukaszlenart
Uses multiple suffixes


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b708d844
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b708d844
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b708d844

Branch: refs/heads/master
Commit: b708d844c292e064f5ef90bf65bfcd53b32b6659
Parents: cf10f68
Author: Lukasz Lenart 
Authored: Fri Jul 7 10:24:02 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 10:24:02 2017 +0200

--
 .../convention/DefaultActionNameBuilder.java| 22 +---
 .../convention/SEOActionNameBuilder.java| 36 +++-
 2 files changed, 45 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/b708d844/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
index 46b2169..9719970 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
@@ -21,8 +21,12 @@
 package org.apache.struts2.convention;
 
 import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.TextParseUtil;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.Collections;
+import java.util.Set;
+
 /**
  * 
  * This class strips the word Action from the end of the class name
@@ -33,7 +37,7 @@ import org.apache.commons.lang3.StringUtils;
  * 
  */
 public class DefaultActionNameBuilder implements ActionNameBuilder {
-private String actionSuffix = "Action";
+private Set actionSuffix = Collections.singleton("Action");
 private boolean lowerCase;
 
 @Inject
@@ -48,7 +52,7 @@ public class DefaultActionNameBuilder implements 
ActionNameBuilder {
 @Inject(value = "struts.convention.action.suffix", required = false)
 public void setActionSuffix(String actionSuffix) {
 if (StringUtils.isNotBlank(actionSuffix)) {
-this.actionSuffix = actionSuffix;
+this.actionSuffix = 
TextParseUtil.commaDelimitedStringToSet(actionSuffix);
 }
 }
 
@@ -56,9 +60,7 @@ public class DefaultActionNameBuilder implements 
ActionNameBuilder {
 String actionName = className;
 
 // Truncate Action suffix if found
-if (actionName.endsWith(actionSuffix)) {
-actionName = actionName.substring(0, actionName.length() - 
actionSuffix.length());
-}
+actionName = truncateSuffixIfMatches(actionName);
 
 // Force initial letter of action to lowercase, if desired
 if ((lowerCase) && (actionName.length() > 1)) {
@@ -72,4 +74,14 @@ public class DefaultActionNameBuilder implements 
ActionNameBuilder {
 
 return actionName;
 }
+
+private String truncateSuffixIfMatches(String name) {
+String actionName = name;
+for (String suffix : actionSuffix) {
+if (actionName.endsWith(suffix)) {
+actionName = actionName.substring(0, actionName.length() - 
suffix.length());
+}
+}
+return actionName;
+}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/b708d844/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
index f2920c0..490476d 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
@@ -21,10 +21,14 @@
 package org.apache.struts2.convention;
 
 import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.TextParseUtil;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.Collections;
+import java.util.Set;
+
 /**
  * 
  * This class converts the class name into a SEO friendly name by recognizing
@@ -35,7 +39,7 @@ import org.apache.commons.lang3.StringUtils;
  */
 public class SEOActionNameBuilder implements ActionNameBuilder {
 private static final Logger LOG = 
LogManager.getLogger(SEOActionNameBuilder.class);
-private String actionSuffix = "Action";
+private Set actionSuffix = Collections.singleton

[6/8] struts git commit: Fixes small typo

2017-08-01 Thread lukaszlenart
Fixes small typo


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/89d9342e
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/89d9342e
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/89d9342e

Branch: refs/heads/master
Commit: 89d9342e53c167fadc883afd81c1f81443e28c24
Parents: f585d79
Author: Lukasz Lenart 
Authored: Fri Jul 7 11:28:14 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 11:28:14 2017 +0200

--
 .../java/org/apache/struts2/convention/ConventionConstants.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/89d9342e/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
index ad5f4e8..3d8c74d 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
@@ -21,7 +21,7 @@
 package org.apache.struts2.convention;
 
 /**
- * Constants used to extend the COnvention plugin
+ * Constants used to extend the Convention plugin
  */
 public class ConventionConstants {
 public static final String CONVENTION_ACTION_CONFIG_BUILDER = 
"struts.convention.actionConfigBuilder";



[3/8] struts git commit: Extract common code

2017-08-01 Thread lukaszlenart
Extract common code


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/f522fbc4
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/f522fbc4
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/f522fbc4

Branch: refs/heads/master
Commit: f522fbc45417b836463553e3d9110ee58fcf2673
Parents: b708d84
Author: Lukasz Lenart 
Authored: Fri Jul 7 10:58:26 2017 +0200
Committer: Lukasz Lenart 
Committed: Fri Jul 7 10:58:26 2017 +0200

--
 .../convention/AbstractActionNameBuilder.java   | 44 +++
 .../struts2/convention/ConventionConstants.java |  2 +
 .../convention/DefaultActionNameBuilder.java| 35 +++
 .../convention/SEOActionNameBuilder.java| 45 +++-
 4 files changed, 60 insertions(+), 66 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f522fbc4/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
new file mode 100644
index 000..a546e62
--- /dev/null
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/AbstractActionNameBuilder.java
@@ -0,0 +1,44 @@
+package org.apache.struts2.convention;
+
+import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.TextParseUtil;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Collections;
+import java.util.Set;
+
+public abstract class AbstractActionNameBuilder implements ActionNameBuilder {
+
+private Set actionSuffix = Collections.singleton("Action");
+
+/**
+ * @param   actionSuffix (Optional) Classes that end with these value will 
be mapped as actions
+ *  (defaults to "Action")
+ */
+@Inject(value = "struts.convention.action.suffix", required = false)
+public void setActionSuffix(String actionSuffix) {
+if (StringUtils.isNotBlank(actionSuffix)) {
+this.actionSuffix = 
TextParseUtil.commaDelimitedStringToSet(actionSuffix);
+}
+}
+
+
+protected void checkActionName(String actionName) {
+for (String suffix : actionSuffix) {
+if (actionName.equals(suffix)) {
+throw new IllegalStateException("The action name cannot be the 
same as the action suffix [" + suffix + "]");
+}
+}
+}
+
+protected String truncateSuffixIfMatches(String name) {
+String actionName = name;
+for (String suffix : actionSuffix) {
+if (actionName.endsWith(suffix)) {
+actionName = actionName.substring(0, actionName.length() - 
suffix.length());
+}
+}
+return actionName;
+}
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/f522fbc4/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
index 2842b8c..b360d94 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionConstants.java
@@ -29,4 +29,6 @@ public class ConventionConstants {
 public static final String CONVENTION_RESULT_MAP_BUILDER = 
"struts.convention.resultMapBuilder";
 public static final String CONVENTION_INTERCEPTOR_MAP_BUILDER = 
"struts.convention.interceptorMapBuilder";
 public static final String CONVENTION_CONVENTIONS_SERVICE = 
"struts.convention.conventionsService";
+public static final String CONVENTION_ACTION_NAME_LOWERCASE = 
"struts.convention.action.name.lowercase";
+public static final String CONVENTION_ACTION_NAME_SEPARATOR = 
"struts.convention.action.name.separator";
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/f522fbc4/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
index 9719970..797a519 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultActionNameBuilder.java
@@ -21,11 

[1/3] struts git commit: [WW-4831] convert nulls within arrays to empty strings rather than the 4 letters 'null'

2017-08-01 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/master 62900ee98 -> 7f90a4fec


[WW-4831] convert nulls within arrays to empty strings rather than the 4 
letters 'null'


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/8cc56b29
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/8cc56b29
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/8cc56b29

Branch: refs/heads/master
Commit: 8cc56b2974e5c744954b110e645f61f18e0b12ab
Parents: 91ae344
Author: thrawnca 
Authored: Tue Aug 1 11:51:20 2017 +1000
Committer: thrawnca 
Committed: Tue Aug 1 11:51:20 2017 +1000

--
 .../com/opensymphony/xwork2/conversion/impl/StringConverter.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/8cc56b29/core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
 
b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
index 61d2516..d8895e8 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
@@ -14,6 +14,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 
 public class StringConverter extends DefaultTypeConverter {
 
@@ -69,7 +70,7 @@ public class StringConverter extends DefaultTypeConverter {
 }
 return format.format(value);
 } else {
-return String.valueOf(value);
+return Objects.toString(value, null);
 }
 }
 



[3/3] struts git commit: WW-4831 Converts nulls to nulls

2017-08-01 Thread lukaszlenart
WW-4831 Converts nulls to nulls


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/7f90a4fe
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/7f90a4fe
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/7f90a4fe

Branch: refs/heads/master
Commit: 7f90a4fec9e6718621c4f195fe7a334d43d8a2bb
Parents: 62900ee 60d61fa
Author: Lukasz Lenart 
Authored: Tue Aug 1 15:56:36 2017 +0200
Committer: Lukasz Lenart 
Committed: Tue Aug 1 15:56:36 2017 +0200

--
 .../xwork2/conversion/impl/StringConverter.java |  3 ++-
 .../conversion/impl/StringConverterTest.java| 28 +++-
 2 files changed, 29 insertions(+), 2 deletions(-)
--




[2/3] struts git commit: [WW-4831] add unit tests for conversion of String arrays

2017-08-01 Thread lukaszlenart
[WW-4831] add unit tests for conversion of String arrays


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/60d61fac
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/60d61fac
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/60d61fac

Branch: refs/heads/master
Commit: 60d61fac0abb5993977e84f8dcc5bea6588f41d6
Parents: 8cc56b2
Author: thrawnca 
Authored: Tue Aug 1 11:51:37 2017 +1000
Committer: thrawnca 
Committed: Tue Aug 1 11:51:37 2017 +1000

--
 .../conversion/impl/StringConverterTest.java| 28 +++-
 1 file changed, 27 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/60d61fac/core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
--
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
index c275669..27fbb6b 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
@@ -49,4 +49,30 @@ public class StringConverterTest extends 
StrutsInternalTestCase {
 assertEquals("234,12", value);
 }
 
-}
\ No newline at end of file
+public void testStringArrayToStringConversion() {
+// given
+StringConverter converter = new StringConverter();
+Map context = new HashMap<>();
+context.put(ActionContext.LOCALE, new Locale("pl", "PL"));
+
+// when
+Object value = converter.convertValue(context, null, null, null, new 
String[] {"foo", "baz"}, null);
+
+// then
+assertEquals("foo, baz", value);
+   }
+
+public void testArrayOfNullToStringConversion() {
+// given
+StringConverter converter = new StringConverter();
+Map context = new HashMap<>();
+context.put(ActionContext.LOCALE, new Locale("pl", "PL"));
+
+// when
+Object value = converter.convertValue(context, null, null, null, new 
String[] {null}, null);
+
+// then
+assertEquals("", value);
+   }
+
+}



struts git commit: WW-4834 Improve RegEx used to validate URLs

2017-08-01 Thread sdutry
Repository: struts
Updated Branches:
  refs/heads/master 7f90a4fec -> 9d47af6ff


WW-4834 Improve RegEx used to validate URLs


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/9d47af6f
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/9d47af6f
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/9d47af6f

Branch: refs/heads/master
Commit: 9d47af6ffa355977b5acc713e6d1f25fac260a28
Parents: 7f90a4f
Author: Stefaan Dutry 
Authored: Tue Aug 1 17:33:53 2017 +0200
Committer: Stefaan Dutry 
Committed: Tue Aug 1 17:33:53 2017 +0200

--
 .../validator/validators/URLValidator.java  | 23 ++--
 1 file changed, 11 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9d47af6f/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
 
b/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
index 6cf58ef..b61f786 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
@@ -48,19 +48,18 @@ public class URLValidator extends FieldValidatorSupport {
 
 private static final Logger LOG = LogManager.getLogger(URLValidator.class);
 
-public static final String DEFAULT_URL_REGEX = "^(https?|ftp):\\/\\/" +
-"(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=\\-]|%[0-9a-f]{2})+" +
-"(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=\\-]|%[0-9a-f]{2})+)?" +
-"@)?(#?" +
-")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*" +
+public static final String DEFAULT_URL_REGEX = "^(?:https?|ftp)://" +
+"(?:(?:[a-z0-9$_.+!*'(),;?&=\\-]|%[0-9a-f]{2})+" +
+"(?::(?:[a-z0-9$_.+!*'(),;?&=\\-]|%[0-9a-f]{2})+)?" +
+"@)?#?" +
+"(?:(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)*" +
 "[a-z][a-z0-9-]*[a-z0-9]" +
-"|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}" +
-"(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])" +
-")(:\\d+)?" +
-")(((\\/([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-]|%[0-9a-f]{2})*)*" +
-
"(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-\\/\\:]|%[0-9a-f]{2})*)" +
-"?)?)?" +
-"(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=\\-]|%[0-9a-f]{2})*)?" +
+"|(?:[1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5]\\.){3}" +
+"[1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5]" +
+")(?::\\d+)?" +
+")(?:(?:/(?:[a-z0-9$_.+!*'(),;:@&=\\-]|%[0-9a-f]{2})*)*" +
+"(?:\\?(?:[a-z0-9$_.+!*'(),;:@&=\\-/:]|%[0-9a-f]{2})*)?)?" +
+"(?:#(?:[a-z0-9$_.+!*'(),;:@&=\\-]|%[0-9a-f]{2})*)?" +
 "$";
 
 private String urlRegexExpression;