struts git commit: WW-4628: avoid double encoding of url parameters, e.g. when spaces are present in parameter values

2016-08-01 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 8b559afc7 -> af50018f1


WW-4628: avoid double encoding of url parameters, e.g. when spaces are present 
in parameter values


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

Branch: refs/heads/master
Commit: af50018f11d4fdfa8ac04a55f942a4973cb15c87
Parents: 8b559af
Author: cnenning 
Authored: Mon Aug 1 13:09:12 2016 +0200
Committer: cnenning 
Committed: Mon Aug 1 13:09:12 2016 +0200

--
 .../struts2/views/util/DefaultUrlHelper.java| 43 ++---
 .../views/util/DefaultUrlHelperTest.java| 50 +++-
 2 files changed, 76 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/af50018f/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 9e8418b..1306a8f 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -21,7 +21,18 @@
 
 package org.apache.struts2.views.util;
 
-import com.opensymphony.xwork2.inject.Inject;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
@@ -29,12 +40,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.util.URLDecoderUtil;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.*;
+import com.opensymphony.xwork2.inject.Inject;
 
 /**
  * Default implementation of UrlHelper
@@ -174,10 +180,11 @@ public class DefaultUrlHelper implements UrlHelper {
 }
 
 //if the action was not explicitly set grab the params from the request
+//always pass encode=false here as encoding might happen for complete 
URL later
 if (escapeAmp) {
-buildParametersString(params, link, AMP);
+buildParametersString(params, link, AMP, false);
 } else {
-buildParametersString(params, link, "&");
+buildParametersString(params, link, "&", false);
 }
 
 String result = link.toString();
@@ -196,6 +203,10 @@ public class DefaultUrlHelper implements UrlHelper {
 }
 
 public void buildParametersString(Map params, 
StringBuilder link, String paramSeparator) {
+buildParametersString(params, link, paramSeparator, true);
+}
+
+public void buildParametersString(Map params, 
StringBuilder link, String paramSeparator, boolean encode) {
 if ((params != null) && (params.size() > 0)) {
 if (!link.toString().contains("?")) {
 link.append("?");
@@ -213,7 +224,7 @@ public class DefaultUrlHelper implements UrlHelper {
 if (value instanceof Iterable) {
 for (Iterator iterator = ((Iterable) value).iterator(); 
iterator.hasNext();) {
 Object paramValue = iterator.next();
-link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY));
+link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY, encode));
 
 if (iterator.hasNext()) {
 link.append(paramSeparator);
@@ -223,14 +234,14 @@ public class DefaultUrlHelper implements UrlHelper {
 Object[] array = (Object[]) value;
 for (int i = 0; i < array.length; i++) {
 Object paramValue = array[i];
-link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY));
+link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMP

struts git commit: merged fix for WW-4628 (avoid double encoding of url parameters)

2016-08-01 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 e8b48f8bb -> ae2840f18


merged fix for WW-4628 (avoid double encoding of url parameters)


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

Branch: refs/heads/support-2-3
Commit: ae2840f18386492530de1fb875ca9f8804adbb3e
Parents: e8b48f8
Author: cnenning 
Authored: Mon Aug 1 13:50:23 2016 +0200
Committer: cnenning 
Committed: Mon Aug 1 13:50:23 2016 +0200

--
 .../struts2/views/util/DefaultUrlHelper.java| 33 +
 .../views/util/DefaultUrlHelperTest.java| 50 +++-
 2 files changed, 74 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/ae2840f1/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 66a9b7c..05895f0 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -24,6 +24,18 @@ package org.apache.struts2.views.util;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsConstants;
@@ -178,10 +190,11 @@ public class DefaultUrlHelper implements UrlHelper {
 }
 
 //if the action was not explicitly set grab the params from the request
+//always pass encode=false here as encoding might happen for complete 
URL later
 if (escapeAmp) {
-buildParametersString(params, link, AMP);
+buildParametersString(params, link, AMP, false);
 } else {
-buildParametersString(params, link, "&");
+buildParametersString(params, link, "&", false);
 }
 
 String result = link.toString();
@@ -202,6 +215,10 @@ public class DefaultUrlHelper implements UrlHelper {
 }
 
 public void buildParametersString(Map params, 
StringBuilder link, String paramSeparator) {
+buildParametersString(params, link, paramSeparator, true);
+}
+
+public void buildParametersString(Map params, 
StringBuilder link, String paramSeparator, boolean encode) {
 if ((params != null) && (params.size() > 0)) {
 if (!link.toString().contains("?")) {
 link.append("?");
@@ -219,7 +236,7 @@ public class DefaultUrlHelper implements UrlHelper {
 if (value instanceof Iterable) {
 for (Iterator iterator = ((Iterable) value).iterator(); 
iterator.hasNext();) {
 Object paramValue = iterator.next();
-link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY));
+link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY, encode));
 
 if (iterator.hasNext()) {
 link.append(paramSeparator);
@@ -229,14 +246,14 @@ public class DefaultUrlHelper implements UrlHelper {
 Object[] array = (Object[]) value;
 for (int i = 0; i < array.length; i++) {
 Object paramValue = array[i];
-link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY));
+link.append(buildParameterSubstring(name, paramValue 
!= null ? paramValue.toString() : StringUtils.EMPTY, encode));
 
 if (i < array.length - 1) {
 link.append(paramSeparator);
 }
 }
 } else {
-link.append(buildParameterSubstring(name, value != null ? 
value.toString() : StringUtils.EMPTY));
+link.append(buildParameterSubstring(name, value != null ? 
value.toString() : S

[1/2] struts git commit: WW-4628: new issues were introduced by last change, restoring old behavior and ignoring new tests

2016-08-01 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master ec9a24ec2 -> 7fdc103e8


WW-4628: new issues were introduced by last change, restoring old behavior and 
ignoring new tests


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

Branch: refs/heads/master
Commit: a6b33018561f12724f89aa28f7849f3f2fc34092
Parents: af50018
Author: cnenning 
Authored: Mon Aug 1 15:33:21 2016 +0200
Committer: cnenning 
Committed: Mon Aug 1 15:33:21 2016 +0200

--
 .../java/org/apache/struts2/views/util/DefaultUrlHelper.java  | 5 ++---
 .../org/apache/struts2/views/util/DefaultUrlHelperTest.java   | 7 +--
 2 files changed, 7 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/a6b33018/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 1306a8f..16739af 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -180,11 +180,10 @@ public class DefaultUrlHelper implements UrlHelper {
 }
 
 //if the action was not explicitly set grab the params from the request
-//always pass encode=false here as encoding might happen for complete 
URL later
 if (escapeAmp) {
-buildParametersString(params, link, AMP, false);
+buildParametersString(params, link, AMP, true);
 } else {
-buildParametersString(params, link, "&", false);
+buildParametersString(params, link, "&", true);
 }
 
 String result = link.toString();

http://git-wip-us.apache.org/repos/asf/struts/blob/a6b33018/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
--
diff --git 
a/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java 
b/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
index aa66602..57786c4 100644
--- a/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
+++ b/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
@@ -27,6 +27,7 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Scope.Strategy;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsInternalTestCase;
+import org.junit.Ignore;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -128,7 +129,8 @@ public class DefaultUrlHelperTest extends 
StrutsInternalTestCase {
expectedUrl, url.toString());
 }
 
-public void testBuildUrlWithJavaScriptInjected() throws Exception {
+@Ignore
+public void ignoreTestBuildUrlWithJavaScriptInjected() throws Exception {
 String expectedUrl = 
"http://localhost:8080/myContext/myPage.jsp?initParam=initValue&param1=value1&param2=value2&param3%22%3Cscript+type%3D%22text%2Fjavascript%22%3Ealert%281%29%3B%3C%2Fscript%3E=value3";;
 
 // there is explicit escaping for EcmaScript before URL encoding
@@ -421,7 +423,8 @@ public class DefaultUrlHelperTest extends 
StrutsInternalTestCase {
 assertEquals(result, expectedResult);
 }
 
-public void testDontEncode() throws Exception {
+@Ignore
+public void ignoreTestDontEncode() throws Exception {
 String expectedUrl = 
"http://localhost/contextPath/myAction.action?param1=value+with+spaces";;
 
 Mock mockHttpServletRequest = new Mock(HttpServletRequest.class);



[2/2] struts git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts

2016-08-01 Thread cnenning
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts


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

Branch: refs/heads/master
Commit: 7fdc103e8abd3eac07297c254078ba399357521b
Parents: a6b3301 ec9a24e
Author: cnenning 
Authored: Mon Aug 1 15:34:07 2016 +0200
Committer: cnenning 
Committed: Mon Aug 1 15:34:07 2016 +0200

--
 README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
--




struts git commit: WW-4628: new issues were introduced by last change, restoring old behavior and ignoring new tests

2016-08-01 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 ae2840f18 -> 83bb64f4c


WW-4628: new issues were introduced by last change, restoring old behavior and 
ignoring new tests


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

Branch: refs/heads/support-2-3
Commit: 83bb64f4c232348c4162ad2272c7eae1855a7362
Parents: ae2840f
Author: cnenning 
Authored: Mon Aug 1 15:42:36 2016 +0200
Committer: cnenning 
Committed: Mon Aug 1 15:42:36 2016 +0200

--
 .../java/org/apache/struts2/views/util/DefaultUrlHelper.java  | 5 ++---
 .../org/apache/struts2/views/util/DefaultUrlHelperTest.java   | 7 +--
 2 files changed, 7 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/83bb64f4/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 05895f0..8aacf63 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -190,11 +190,10 @@ public class DefaultUrlHelper implements UrlHelper {
 }
 
 //if the action was not explicitly set grab the params from the request
-//always pass encode=false here as encoding might happen for complete 
URL later
 if (escapeAmp) {
-buildParametersString(params, link, AMP, false);
+buildParametersString(params, link, AMP, true);
 } else {
-buildParametersString(params, link, "&", false);
+buildParametersString(params, link, "&", true);
 }
 
 String result = link.toString();

http://git-wip-us.apache.org/repos/asf/struts/blob/83bb64f4/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
--
diff --git 
a/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java 
b/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
index aa66602..57786c4 100644
--- a/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
+++ b/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
@@ -27,6 +27,7 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Scope.Strategy;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsInternalTestCase;
+import org.junit.Ignore;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -128,7 +129,8 @@ public class DefaultUrlHelperTest extends 
StrutsInternalTestCase {
expectedUrl, url.toString());
 }
 
-public void testBuildUrlWithJavaScriptInjected() throws Exception {
+@Ignore
+public void ignoreTestBuildUrlWithJavaScriptInjected() throws Exception {
 String expectedUrl = 
"http://localhost:8080/myContext/myPage.jsp?initParam=initValue&param1=value1&param2=value2&param3%22%3Cscript+type%3D%22text%2Fjavascript%22%3Ealert%281%29%3B%3C%2Fscript%3E=value3";;
 
 // there is explicit escaping for EcmaScript before URL encoding
@@ -421,7 +423,8 @@ public class DefaultUrlHelperTest extends 
StrutsInternalTestCase {
 assertEquals(result, expectedResult);
 }
 
-public void testDontEncode() throws Exception {
+@Ignore
+public void ignoreTestDontEncode() throws Exception {
 String expectedUrl = 
"http://localhost/contextPath/myAction.action?param1=value+with+spaces";;
 
 Mock mockHttpServletRequest = new Mock(HttpServletRequest.class);



struts git commit: WW-4628: proper decoding of parameters in query-string

2016-08-03 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 7fdc103e8 -> ef9c66118


WW-4628: proper decoding of parameters in query-string


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

Branch: refs/heads/master
Commit: ef9c66118ede16f3ff239ea864641d5bdadeecae
Parents: 7fdc103
Author: cnenning 
Authored: Wed Aug 3 13:02:16 2016 +0200
Committer: cnenning 
Committed: Wed Aug 3 13:02:16 2016 +0200

--
 .../org/apache/struts2/util/URLDecoderUtil.java | 12 
 .../struts2/views/util/DefaultUrlHelper.java| 27 +---
 .../apache/struts2/util/URLDecoderUtilTest.java |  7 ++
 .../views/util/DefaultUrlHelperTest.java| 71 +---
 4 files changed, 53 insertions(+), 64 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/ef9c6611/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
--
diff --git a/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java 
b/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
index 10f2a78..3c61d1e 100644
--- a/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
@@ -19,4 +19,16 @@ public class URLDecoderUtil {
 return UDecoder.URLDecode(sequence, charset);
 }
 
+/**
+ * Decodes a x-www-form-urlencoded string.
+ * @param sequence the String to decode
+ * @param charset The name of a supported character encoding.
+ * @param isQueryString whether input is a query string. If 
true other decoding rules apply.
+ * @return the newly decoded String
+ * @exception IllegalArgumentException If the encoding is not valid
+ */
+public static String decode(String sequence, String charset, boolean 
isQueryString) {
+return UDecoder.URLDecode(sequence, charset, isQueryString);
+}
+
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/ef9c6611/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 16739af..668d1a9 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -284,14 +284,25 @@ public class DefaultUrlHelper implements UrlHelper {
 * @return the encoded string
 */
public String decode( String input ) {
-   try {
-return URLDecoderUtil.decode(input, encoding);
-   } catch (Exception e) {
-   LOG.warn("Could not decode URL parameter '{}', returning value 
un-decoded", input);
-   return input;
-   }
+return URLDecoderUtil.decode(input, encoding, false);
}
 
+/**
+ * Decodes the URL using {@link URLDecoderUtil#decode(String, String, 
boolean)} with the encoding specified in the configuration.
+ *
+ * @param input the input to decode
+ * @param isQueryString whether input is a query string. If 
true other decoding rules apply.
+ * @return the encoded string
+ */
+public String decode( String input, boolean isQueryString ) {
+try {
+return URLDecoderUtil.decode(input, encoding, isQueryString);
+} catch (Exception e) {
+LOG.warn("Could not decode URL parameter '{}', returning value 
un-decoded", input);
+return input;
+}
+}
+
 public Map parseQueryString(String queryString, boolean 
forceValueArray) {
 Map queryParams = new LinkedHashMap();
 if (queryString != null) {
@@ -308,8 +319,8 @@ public class DefaultUrlHelper implements UrlHelper {
 paramValue = tmpParams[1];
 }
 if (paramName != null) {
-paramName = decode(paramName);
-String translatedParamValue = decode(paramValue);
+paramName = decode(paramName, true);
+String translatedParamValue = decode(paramValue, true);
 
 if (queryParams.containsKey(paramName) || 
forceValueArray) {
 // WW-1619 append new param value to existing 
value(s)

http://git-wip-us.apache.org/repos/asf/struts/blob/ef9c6611/core/src/test/java/org/apache/struts2/util/URLDecoderUtilTest.java

struts git commit: merged fix for WW-4628 (proper url decoding of query-string)

2016-08-03 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 83bb64f4c -> 7d8c3598e


merged fix for WW-4628 (proper url decoding of query-string)


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

Branch: refs/heads/support-2-3
Commit: 7d8c3598ef4a4699515a2b8e1064d4e9b921a58b
Parents: 83bb64f
Author: cnenning 
Authored: Wed Aug 3 13:02:16 2016 +0200
Committer: cnenning 
Committed: Wed Aug 3 13:28:00 2016 +0200

--
 .../org/apache/struts2/util/URLDecoderUtil.java | 12 
 .../struts2/views/util/DefaultUrlHelper.java| 22 +-
 .../apache/struts2/util/URLDecoderUtilTest.java |  7 ++
 .../views/util/DefaultUrlHelperTest.java| 71 +---
 4 files changed, 53 insertions(+), 59 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/7d8c3598/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
--
diff --git a/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java 
b/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
index 10f2a78..3c61d1e 100644
--- a/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
@@ -19,4 +19,16 @@ public class URLDecoderUtil {
 return UDecoder.URLDecode(sequence, charset);
 }
 
+/**
+ * Decodes a x-www-form-urlencoded string.
+ * @param sequence the String to decode
+ * @param charset The name of a supported character encoding.
+ * @param isQueryString whether input is a query string. If 
true other decoding rules apply.
+ * @return the newly decoded String
+ * @exception IllegalArgumentException If the encoding is not valid
+ */
+public static String decode(String sequence, String charset, boolean 
isQueryString) {
+return UDecoder.URLDecode(sequence, charset, isQueryString);
+}
+
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/7d8c3598/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 8aacf63..153b240 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -299,7 +299,7 @@ public class DefaultUrlHelper implements UrlHelper {
 */
public String decode( String input ) {
try {
-   return URLDecoderUtil.decode(input, encoding);
+   return URLDecoderUtil.decode(input, encoding, false);
} catch (Exception e) {
if (LOG.isWarnEnabled()) {
LOG.warn("Could not decode URL parameter '#0', 
returning value un-decoded", input);
@@ -308,6 +308,22 @@ public class DefaultUrlHelper implements UrlHelper {
}
}
 
+/**
+ * Decodes the URL using {@link URLDecoderUtil#decode(String, String, 
boolean)} with the encoding specified in the configuration.
+ *
+ * @param input the input to decode
+ * @param isQueryString whether input is a query string. If 
true other decoding rules apply.
+ * @return the encoded string
+ */
+public String decode( String input, boolean isQueryString ) {
+try {
+return URLDecoderUtil.decode(input, encoding, isQueryString);
+} catch (Exception e) {
+LOG.warn("Could not decode URL parameter '{}', returning value 
un-decoded", input);
+return input;
+}
+}
+
 public Map parseQueryString(String queryString, boolean 
forceValueArray) {
 Map queryParams = new LinkedHashMap();
 if (queryString != null) {
@@ -324,8 +340,8 @@ public class DefaultUrlHelper implements UrlHelper {
 paramValue = tmpParams[1];
 }
 if (paramName != null) {
-paramName = decode(paramName);
-String translatedParamValue = decode(paramValue);
+paramName = decode(paramName, true);
+String translatedParamValue = decode(paramValue, true);
 
 if (queryParams.containsKey(paramName) || 
forceValueArray) {
 // WW-1619 append new param value to existing 
value(s)

http://git-wip-us.apache.org/repos/asf/struts/blob/7d8

struts git commit: WW-4631: unified behavior for empty url parameters

2016-09-23 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 6916f47c9 -> e7ce5dcc0


WW-4631: unified behavior for empty url parameters


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

Branch: refs/heads/master
Commit: e7ce5dcc0dc576fe8081c66e17b57b30257af9f4
Parents: 6916f47
Author: cnenning 
Authored: Fri Sep 23 11:33:19 2016 +0200
Committer: cnenning 
Committed: Fri Sep 23 11:33:19 2016 +0200

--
 .../org/apache/struts2/components/Param.java| 16 ++--
 .../apache/struts2/views/jsp/URLTagTest.java| 88 
 2 files changed, 82 insertions(+), 22 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/e7ce5dcc/core/src/main/java/org/apache/struts2/components/Param.java
--
diff --git a/core/src/main/java/org/apache/struts2/components/Param.java 
b/core/src/main/java/org/apache/struts2/components/Param.java
index 2f7e6bd..acdbd26 100644
--- a/core/src/main/java/org/apache/struts2/components/Param.java
+++ b/core/src/main/java/org/apache/struts2/components/Param.java
@@ -50,7 +50,7 @@ import java.io.Writer;
  * 
  *  name (String) - the name of the parameter
  *  value (Object) - the value of the parameter
- *  suppressEmptyParameters (boolean) - whether to suppress empty 
parameters
+ *  suppressEmptyParameters (boolean) - whether to suppress this 
parameter if empty
  * 
  * 
  * 
@@ -81,13 +81,11 @@ import java.io.Writer;
  * 
  *
  * 
- * <s:a action="eventAdd" accesskey="a">
- *   <s:text name="title.heading.eventadd" />
+ * <s:url action="eventAdd">
  *   <s:param name="bean.searchString" value="%{bean.searchString}" />
  *   <s:param name="bean.filter" value="%{bean.filter}" />
- *   <s:param name="bean.pageNum" value="%{pager.pageNumber}" />
- *   <s:param name="suppressEmptyParameters" value="true"/>
- * </s:a>
+ *   <s:param name="bean.pageNum" value="%{pager.pageNumber}" 
suppressEmptyParameters="true" />
+ * </s:url>
  * 
  * 
  * 
@@ -141,6 +139,8 @@ public class Param extends Component {
 if (value != null && 
StringUtils.isNotBlank(value.toString())) {
 component.addParameter(name, value);
 }
+} else if (value == null || 
StringUtils.isBlank(value.toString())) {
+component.addParameter(name, "");
 } else {
 component.addParameter(name, value);
 }
@@ -149,7 +149,9 @@ public class Param extends Component {
 if (component instanceof UnnamedParametric) {
 ((UnnamedParametric) component).addParameter(body);
 } else {
-component.addParameter(findString(name), body);
+if (!(suppressEmptyParameters && StringUtils.isBlank(body))) {
+component.addParameter(findString(name), body);
+}
 }
 }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/e7ce5dcc/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java
--
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java 
b/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java
index 627fdc4..37d4979 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java
@@ -21,12 +21,17 @@
 
 package org.apache.struts2.views.jsp;
 
-import com.mockobjects.dynamic.Mock;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionProxy;
-import com.opensymphony.xwork2.DefaultActionInvocation;
-import com.opensymphony.xwork2.DefaultActionProxyFactory;
-import com.opensymphony.xwork2.inject.Container;
+import java.io.File;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspWriter;
+
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.components.URL;
 import org.apache.struts2.dispatcher.ApplicationMap;
@@ -37,15 +42,13 @@ import org.apache.struts2.dispatcher.SessionMap;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 import org.apache.struts2.dispatcher.mapper.DefaultAc

struts git commit: WW-4628: proper decoding of parameters in query-string

2016-09-28 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 50328ffe1 -> 9b38ad8fc


WW-4628: proper decoding of parameters in query-string


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

Branch: refs/heads/master
Commit: 9b38ad8fcf20bdbdb6baacd5812bcf196d80ea07
Parents: 50328ff
Author: cnenning 
Authored: Wed Aug 3 13:02:16 2016 +0200
Committer: cnenning 
Committed: Wed Sep 28 13:09:40 2016 +0200

--
 .../org/apache/struts2/util/URLDecoderUtil.java | 12 
 .../struts2/views/util/DefaultUrlHelper.java| 27 +---
 .../apache/struts2/util/URLDecoderUtilTest.java |  7 ++
 .../views/util/DefaultUrlHelperTest.java| 71 +---
 4 files changed, 53 insertions(+), 64 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9b38ad8f/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
--
diff --git a/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java 
b/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
index 10f2a78..3c61d1e 100644
--- a/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/URLDecoderUtil.java
@@ -19,4 +19,16 @@ public class URLDecoderUtil {
 return UDecoder.URLDecode(sequence, charset);
 }
 
+/**
+ * Decodes a x-www-form-urlencoded string.
+ * @param sequence the String to decode
+ * @param charset The name of a supported character encoding.
+ * @param isQueryString whether input is a query string. If 
true other decoding rules apply.
+ * @return the newly decoded String
+ * @exception IllegalArgumentException If the encoding is not valid
+ */
+public static String decode(String sequence, String charset, boolean 
isQueryString) {
+return UDecoder.URLDecode(sequence, charset, isQueryString);
+}
+
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/9b38ad8f/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java 
b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 16739af..668d1a9 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -284,14 +284,25 @@ public class DefaultUrlHelper implements UrlHelper {
 * @return the encoded string
 */
public String decode( String input ) {
-   try {
-return URLDecoderUtil.decode(input, encoding);
-   } catch (Exception e) {
-   LOG.warn("Could not decode URL parameter '{}', returning value 
un-decoded", input);
-   return input;
-   }
+return URLDecoderUtil.decode(input, encoding, false);
}
 
+/**
+ * Decodes the URL using {@link URLDecoderUtil#decode(String, String, 
boolean)} with the encoding specified in the configuration.
+ *
+ * @param input the input to decode
+ * @param isQueryString whether input is a query string. If 
true other decoding rules apply.
+ * @return the encoded string
+ */
+public String decode( String input, boolean isQueryString ) {
+try {
+return URLDecoderUtil.decode(input, encoding, isQueryString);
+} catch (Exception e) {
+LOG.warn("Could not decode URL parameter '{}', returning value 
un-decoded", input);
+return input;
+}
+}
+
 public Map parseQueryString(String queryString, boolean 
forceValueArray) {
 Map queryParams = new LinkedHashMap();
 if (queryString != null) {
@@ -308,8 +319,8 @@ public class DefaultUrlHelper implements UrlHelper {
 paramValue = tmpParams[1];
 }
 if (paramName != null) {
-paramName = decode(paramName);
-String translatedParamValue = decode(paramValue);
+paramName = decode(paramName, true);
+String translatedParamValue = decode(paramValue, true);
 
 if (queryParams.containsKey(paramName) || 
forceValueArray) {
 // WW-1619 append new param value to existing 
value(s)

http://git-wip-us.apache.org/repos/asf/struts/blob/9b38ad8f/core/src/test/java/org/apache/struts2/util/URLDecoderUtilTest.java

struts git commit: fixed JS to show validation errors as server is now sending status code 400

2017-02-21 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 9fcf2dfca -> c8630ac56


fixed JS to show validation errors as server is now sending status code 400


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

Branch: refs/heads/master
Commit: c8630ac56d9535cafa6c2df62bb63663dec70ade
Parents: 9fcf2df
Author: cnenning 
Authored: Tue Feb 21 09:47:59 2017 +0100
Committer: cnenning 
Committed: Tue Feb 21 09:47:59 2017 +0100

--
 .../src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp   | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/c8630ac5/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
--
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
index f30403f..da07ff1 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
@@ -112,8 +112,13 @@ function ajaxFormValidation(event) {
 if (restoreFunction) {
 restoreFunction();
 }
-// show user an error message
-_handleValidationResult(_form, {errors: ['Network or server 
error!']})
+// struts sends status code 400 when validation errors are present
+if (xhr.status === 400) {
+_handleValidationResult(_form, JSON.parse(xhr.responseText))
+} else {
+// a real error occurred -> show user an error message
+_handleValidationResult(_form, {errors: ['Network or server 
error!']})
+}
 }
 }
 



[1/2] struts git commit: [WW-4741] Do not force session creation on locale read operation

2017-02-26 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 38409e0e0 -> 26fa06b11


[WW-4741] Do not force session creation on locale read operation

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

Branch: refs/heads/master
Commit: 78db281cd6f66d50b3a5f48e2b1dee596d0a2232
Parents: 9fcf2df
Author: Yasser Zamani 
Authored: Fri Feb 24 18:18:53 2017 +0330
Committer: Yasser Zamani 
Committed: Fri Feb 24 18:18:53 2017 +0330

--
 .../struts2/interceptor/I18nInterceptor.java  | 18 --
 1 file changed, 12 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/78db281c/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java 
b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
index f86c5f8..9060d69 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
@@ -34,6 +34,8 @@ import org.apache.struts2.dispatcher.Parameter;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
 import java.util.Locale;
 import java.util.Map;
 
@@ -296,12 +298,16 @@ public class I18nInterceptor extends AbstractInterceptor {
 Map session = 
invocation.getInvocationContext().getSession();
 
 if (session != null) {
-String sessionId = 
ServletActionContext.getRequest().getSession().getId();
-synchronized (sessionId.intern()) {
-Object sessionLocale = session.get(attributeName);
-if (sessionLocale != null && sessionLocale instanceof 
Locale) {
-locale = (Locale) sessionLocale;
-LOG.debug("Applied session locale: {}", locale);
+//[WW-4741] Do not force session creation while this is a read 
operation
+HttpSession httpSession = 
ServletActionContext.getRequest().getSession(false);
+if(null != httpSession) {
+String sessionId = httpSession.getId();
+synchronized (sessionId.intern()) {
+Object sessionLocale = session.get(attributeName);
+if (sessionLocale != null && sessionLocale instanceof 
Locale) {
+locale = (Locale) sessionLocale;
+LOG.debug("Applied session locale: {}", locale);
+}
 }
 }
 }



[2/2] struts git commit: WW-4741 Merges #119 which avoids session creation on locale read operation

2017-02-26 Thread cnenning
WW-4741 Merges #119 which avoids session creation on locale read operation


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

Branch: refs/heads/master
Commit: 26fa06b1174f48c862b081809cebb55c53df6f2e
Parents: 38409e0 78db281
Author: cnenning 
Authored: Mon Feb 27 08:56:31 2017 +0100
Committer: cnenning 
Committed: Mon Feb 27 08:56:31 2017 +0100

--
 .../struts2/interceptor/I18nInterceptor.java  | 18 --
 1 file changed, 12 insertions(+), 6 deletions(-)
--




git commit: logging missing text keys only after all resource bundles have been searched, see WW-4407

2014-10-13 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/develop 92f38df89 -> 381e92757


logging missing text keys only after all resource bundles have been
searched, see WW-4407


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

Branch: refs/heads/develop
Commit: 381e92757520af833c6cd94dc383a1206296f52d
Parents: 92f38df
Author: cnenning 
Authored: Mon Oct 13 13:19:54 2014 +0200
Committer: cnenning 
Committed: Mon Oct 13 13:19:54 2014 +0200

--
 .../com/opensymphony/xwork2/util/LocalizedTextUtil.java | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/381e9275/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java 
b/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
index ec7860e..b7e147f 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
@@ -215,15 +215,17 @@ public class LocalizedTextUtil {
 try {
 return bundle.getString(aTextName);
 } catch (MissingResourceException e) {
-if (devMode) {
-LOG.warn("Missing key [#0] in bundle [#1]!", 
aTextName, bundleName);
-} else if (LOG.isDebugEnabled()) {
-LOG.debug("Missing key [#0] in bundle [#1]!", 
aTextName, bundleName);
-}
+   // will be logged when not found in any bundle
 }
 }
 }
 
+if (devMode) {
+LOG.warn("Missing key [#0] in bundles [#1]!", aTextName, 
localList);
+} else if (LOG.isDebugEnabled()) {
+LOG.debug("Missing key [#0] in bundles [#1]!", aTextName, 
localList);
+}
+
 return null;
 }
 



struts git commit: made bufferSize optional, see WW-4466

2015-02-16 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/develop 76ea79f38 -> fbe7d5138


made bufferSize optional, see WW-4466


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

Branch: refs/heads/develop
Commit: fbe7d5138e7f4e67552f766c80cc033050660777
Parents: 76ea79f
Author: cnenning 
Authored: Mon Feb 16 14:24:55 2015 +0100
Committer: cnenning 
Committed: Mon Feb 16 14:24:55 2015 +0100

--
 .../dispatcher/multipart/JakartaStreamMultiPartRequest.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/fbe7d513/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
index fa3dd2f..eae0039 100644
--- 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
+++ 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
@@ -97,7 +97,7 @@ public class JakartaStreamMultiPartRequest implements 
MultiPartRequest {
  *
  * @param bufferSize
  */
-@Inject(StrutsConstants.STRUTS_MULTIPART_BUFFERSIZE)
+@Inject(value = StrutsConstants.STRUTS_MULTIPART_BUFFERSIZE, required = 
false)
 public void setBufferSize(String bufferSize) {
 this.bufferSize = Integer.parseInt(bufferSize);
 }



[1/4] struts git commit: Changing an erroneous variable's name

2015-10-09 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master a5812bf0b -> 41dd070ed


Changing an erroneous variable's name

RFC 3399 does not exist. RFC 3339 is the one used here: 
https://tools.ietf.org/html/rfc3339

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

Branch: refs/heads/master
Commit: 9ad9404bfac2b936e1b5f0f5e828335bc5a51b48
Parents: 9638d7a
Author: Andrea Ligios 
Authored: Mon Oct 5 11:09:48 2015 +0200
Committer: Andrea Ligios 
Committed: Mon Oct 5 11:09:48 2015 +0200

--
 .../com/opensymphony/xwork2/conversion/impl/DateConverter.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9ad9404b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java 
b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
index 99b1558..076817d 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
@@ -93,9 +93,9 @@ public class DateConverter extends DefaultTypeConverter {
 DateFormat d2 = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
 DateFormat d3 = DateFormat.getDateInstance(DateFormat.LONG, locale);
 
-DateFormat rfc3399 = new SimpleDateFormat("-MM-dd'T'HH:mm:ss");
+DateFormat rfc3339 = new SimpleDateFormat("-MM-dd'T'HH:mm:ss");
 
-return new DateFormat[]{dt1, dt2, dt3, rfc3399, d1, d2, d3};
+return new DateFormat[]{dt1, dt2, dt3, rfc3339, d1, d2, d3};
 }
 
 }



[2/4] struts git commit: Added support for RFC3339 with date part only

2015-10-09 Thread cnenning
Added support for RFC3339 with date part only

https://issues.apache.org/jira/browse/WW-4551

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

Branch: refs/heads/master
Commit: d95fc63992f3892519d970b07052776e0401003a
Parents: 9ad9404
Author: Andrea Ligios 
Authored: Wed Oct 7 16:17:38 2015 +0200
Committer: Andrea Ligios 
Committed: Wed Oct 7 16:17:38 2015 +0200

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


http://git-wip-us.apache.org/repos/asf/struts/blob/d95fc639/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java 
b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
index 076817d..bde36f7 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DateConverter.java
@@ -93,9 +93,10 @@ public class DateConverter extends DefaultTypeConverter {
 DateFormat d2 = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
 DateFormat d3 = DateFormat.getDateInstance(DateFormat.LONG, locale);
 
-DateFormat rfc3339 = new SimpleDateFormat("-MM-dd'T'HH:mm:ss");
+DateFormat rfc3339 = new 
SimpleDateFormat("-MM-dd'T'HH:mm:ss");
+DateFormat rfc3339dateOnly = new SimpleDateFormat("-MM-dd");
 
-return new DateFormat[]{dt1, dt2, dt3, rfc3339, d1, d2, d3};
+return new DateFormat[]{dt1, dt2, dt3, rfc3339, d1, d2, d3, 
rfc3339dateOnly};
 }
 
 }



[4/4] struts git commit: WW-4551 merges #52 which adds support for rfc3339 date-only date-format

2015-10-09 Thread cnenning
WW-4551 merges #52 which adds support for rfc3339 date-only date-format


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

Branch: refs/heads/master
Commit: 41dd070eda52a72193b9bbf00b9d1f6343dcc5cc
Parents: a5812bf 366a0b4
Author: cnenning 
Authored: Fri Oct 9 11:13:25 2015 +0200
Committer: cnenning 
Committed: Fri Oct 9 11:13:25 2015 +0200

--
 .../opensymphony/xwork2/conversion/impl/DateConverter.java| 5 +++--
 .../xwork2/conversion/impl/XWorkConverterTest.java| 7 +++
 2 files changed, 10 insertions(+), 2 deletions(-)
--




[3/4] struts git commit: added tests for rfc3339 date formats

2015-10-09 Thread cnenning
added tests for rfc3339 date formats


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

Branch: refs/heads/master
Commit: 366a0b4a5876b26c95eb186487afbd7e84a1cfaf
Parents: d95fc63
Author: cnenning 
Authored: Fri Oct 9 11:11:34 2015 +0200
Committer: cnenning 
Committed: Fri Oct 9 11:11:34 2015 +0200

--
 .../xwork2/conversion/impl/XWorkConverterTest.java| 7 +++
 1 file changed, 7 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/366a0b4a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
--
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
index 3d7fc49..d185c64 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
@@ -109,6 +109,13 @@ public class XWorkConverterTest extends XWorkTestCase {
 assertEquals(date, ts);
 java.sql.Time time1 = (java.sql.Time) converter.convertValue(context, 
null, null, null, datetStr, java.sql.Time.class);
 assertEquals(datet, time1);
+
+Date dateWithTime = format.parse("01/10/2001 01:02:03");
+Date dateRfc3339 = (Date) converter.convertValue(context, null, null, 
null, "2001-01-10T01:02:03", Date.class);
+assertEquals(dateWithTime, dateRfc3339);
+
+Date dateRfc3339DateOnly = (Date) converter.convertValue(context, 
null, null, null, "2001-01-10", Date.class);
+assertEquals(date, dateRfc3339DateOnly);
 }
 
 public void testFieldErrorMessageAddedForComplexProperty() {



[2/4] struts git commit: Make it easier to extend to override interceptor stack

2015-10-12 Thread cnenning
Make it easier to extend to override interceptor stack

Just as createAction is split out from init, it would be great to split out 
creating the interceptor iterator creation so it can be overridden without 
having to override all of init().  (Needed this to always prepend an i18n 
interceptor to all stacks).

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

Branch: refs/heads/master
Commit: 117f5fbacc6193b1384f1cea3ee844252bfbdb3e
Parents: 41dd070
Author: Jasper 
Authored: Fri Oct 9 07:41:05 2015 -0400
Committer: Jasper 
Committed: Fri Oct 9 07:41:05 2015 -0400

--
 .../java/com/opensymphony/xwork2/DefaultActionInvocation.java  | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/117f5fba/core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java 
b/core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
index a5b4723..d6385c6 100644
--- a/core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
+++ b/core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
@@ -396,7 +396,11 @@ public class DefaultActionInvocation implements 
ActionInvocation {
 invocationContext = new ActionContext(contextMap);
 invocationContext.setName(proxy.getActionName());
 
-// get a new List so we don't get problems with the iterator if 
someone changes the list
+createInterceptors(proxy);
+}
+
+protected void createInterceptors(ActionProxy proxy) {
+// Get a new List so we don't get problems with the iterator if 
someone changes the original list
 List interceptorList = new 
ArrayList<>(proxy.getConfig().getInterceptors());
 interceptors = interceptorList.iterator();
 }



[3/4] struts git commit: fixed compile error by adding 'new'

2015-10-12 Thread cnenning
fixed compile error by adding 'new'


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

Branch: refs/heads/master
Commit: a7b840c75a913f4b1394e07e9a54919a10a445e9
Parents: 79a2022
Author: Christoph Nenning 
Authored: Mon Oct 12 12:47:21 2015 +0200
Committer: Christoph Nenning 
Committed: Mon Oct 12 12:47:21 2015 +0200

--
 .../java/com/opensymphony/xwork2/DefaultActionProxyFactory.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/a7b840c7/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java 
b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
index a66774b..cf0c552 100644
--- a/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
+++ b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
@@ -59,7 +59,7 @@ public class DefaultActionProxyFactory implements 
ActionProxyFactory {
 }
 
 protected ActionInvocation createActionInvocation(Map 
extraContext, boolean pushAction) {
-return DefaultActionInvocation(extraContext, pushAction);
+return new DefaultActionInvocation(extraContext, pushAction);
 }
 
 public ActionProxy createActionProxy(ActionInvocation inv, String 
namespace, String actionName, boolean executeResult, boolean cleanupContext) {



[4/4] struts git commit: WW-4553 Merges #55 which moves creation of interceptors list and iterator to a factory method to allow overriding it

2015-10-12 Thread cnenning
WW-4553 Merges #55 which moves creation of interceptors list and iterator to a 
factory method to allow overriding it


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

Branch: refs/heads/master
Commit: da6b03a0a84afbb27ff238247a6edb2c8201066d
Parents: a7b840c 117f5fb
Author: Christoph Nenning 
Authored: Mon Oct 12 12:54:51 2015 +0200
Committer: Christoph Nenning 
Committed: Mon Oct 12 12:54:51 2015 +0200

--
 .../java/com/opensymphony/xwork2/DefaultActionInvocation.java  | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--




[1/4] struts git commit: Make it easier to extend to use own ActionInvocation

2015-10-12 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 41dd070ed -> da6b03a0a


Make it easier to extend to use own ActionInvocation

I needed to extend DefaultActionProxyFactory to return my own ActionInvocation, 
but I had to override all of createActionProxy() to do so.  Seems like a safe 
change to break out the ActionInvocation creation to make it easier to just 
override that piece.

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

Branch: refs/heads/master
Commit: 79a2022b55e48fb65e23f5be8d775c8006ce83e8
Parents: 41dd070
Author: Jasper 
Authored: Fri Oct 9 07:34:31 2015 -0400
Committer: Jasper 
Committed: Fri Oct 9 07:34:31 2015 -0400

--
 .../com/opensymphony/xwork2/DefaultActionProxyFactory.java | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/79a2022b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
--
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java 
b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
index 5c7db7a..a66774b 100644
--- a/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
+++ b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
@@ -53,11 +53,15 @@ public class DefaultActionProxyFactory implements 
ActionProxyFactory {
 
 public ActionProxy createActionProxy(String namespace, String actionName, 
String methodName, Map extraContext, boolean executeResult, 
boolean cleanupContext) {
 
-ActionInvocation inv = new DefaultActionInvocation(extraContext, true);
+ActionInvocation inv = createActionInvocation(extraContext, true);
 container.inject(inv);
 return createActionProxy(inv, namespace, actionName, methodName, 
executeResult, cleanupContext);
 }
 
+protected ActionInvocation createActionInvocation(Map 
extraContext, boolean pushAction) {
+return DefaultActionInvocation(extraContext, pushAction);
+}
+
 public ActionProxy createActionProxy(ActionInvocation inv, String 
namespace, String actionName, boolean executeResult, boolean cleanupContext) {
 
 return createActionProxy(inv, namespace, actionName, null, 
executeResult, cleanupContext);



struts git commit: added changes from PRs #54 and #55 which have been merged to master (also see WW-4552 and WW-4553)

2015-10-12 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 30d30e07d -> d15424ee5


added changes from PRs #54 and #55 which have been merged to master (also see 
WW-4552 and WW-4553)


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

Branch: refs/heads/support-2-3
Commit: d15424ee5f088fea138ed33a5c22631b331cc630
Parents: 30d30e0
Author: Christoph Nenning 
Authored: Mon Oct 12 13:27:22 2015 +0200
Committer: Christoph Nenning 
Committed: Mon Oct 12 13:27:22 2015 +0200

--
 .../java/com/opensymphony/xwork2/DefaultActionInvocation.java  | 4 
 .../com/opensymphony/xwork2/DefaultActionProxyFactory.java | 6 +-
 2 files changed, 9 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/d15424ee/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java 
b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
index 1bf7ccf..e3e13f3 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
@@ -402,6 +402,10 @@ public class DefaultActionInvocation implements 
ActionInvocation {
 invocationContext = new ActionContext(contextMap);
 invocationContext.setName(proxy.getActionName());
 
+createInterceptors(proxy);
+}
+
+protected void createInterceptors(ActionProxy proxy) {
 // get a new List so we don't get problems with the iterator if 
someone changes the list
 List interceptorList = new 
ArrayList(proxy.getConfig().getInterceptors());
 interceptors = interceptorList.iterator();

http://git-wip-us.apache.org/repos/asf/struts/blob/d15424ee/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
index 5c7db7a..4e4df2d 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxyFactory.java
@@ -53,11 +53,15 @@ public class DefaultActionProxyFactory implements 
ActionProxyFactory {
 
 public ActionProxy createActionProxy(String namespace, String actionName, 
String methodName, Map extraContext, boolean executeResult, 
boolean cleanupContext) {
 
-ActionInvocation inv = new DefaultActionInvocation(extraContext, true);
+ActionInvocation inv = createActionInvocation(extraContext, true);
 container.inject(inv);
 return createActionProxy(inv, namespace, actionName, methodName, 
executeResult, cleanupContext);
 }
 
+protected ActionInvocation createActionInvocation(Map 
extraContext, boolean pushAction) {
+return new DefaultActionInvocation(extraContext, pushAction);
+}
+
 public ActionProxy createActionProxy(ActionInvocation inv, String 
namespace, String actionName, boolean executeResult, boolean cleanupContext) {
 
 return createActionProxy(inv, namespace, actionName, null, 
executeResult, cleanupContext);



struts git commit: Cleaned up project to be buildable with jdk8. Moved StrutsPortletTestCase to src/test where it belongs! Declared dependencies -junit-plugin and junit as scope test, as it should be.

2015-10-13 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 0dd0f045d -> 4bff5a874


Cleaned up project to be buildable with jdk8. Moved StrutsPortletTestCase to 
src/test where it belongs! Declared dependencies -junit-plugin and junit as 
scope test, as it should be.


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

Branch: refs/heads/master
Commit: 4bff5a87486b67a6da0f7703af574f2eff65e036
Parents: 0dd0f04
Author: cnenning 
Authored: Tue Oct 13 10:21:43 2015 +0200
Committer: cnenning 
Committed: Tue Oct 13 10:21:43 2015 +0200

--
 plugins/portlet/pom.xml | 27 +++---
 .../apache/struts2/StrutsPortletTestCase.java   | 90 ---
 .../struts2/portlet/StrutsPortletTestCase.java  | 94 
 3 files changed, 109 insertions(+), 102 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/4bff5a87/plugins/portlet/pom.xml
--
diff --git a/plugins/portlet/pom.xml b/plugins/portlet/pom.xml
index da5a8ca..f3f71a2 100644
--- a/plugins/portlet/pom.xml
+++ b/plugins/portlet/pom.xml
@@ -12,18 +12,6 @@
 
 
 
-org.apache.struts
-struts2-junit-plugin
-true
-
-
-
-junit
-junit
-true
-
-
-
 javax.servlet
 jsp-api
 provided
@@ -54,6 +42,21 @@
 provided
 
 
+
+
+org.apache.struts
+struts2-junit-plugin
+true
+test
+
+
+
+junit
+junit
+true
+test
+
+
 
 mockobjects
 mockobjects-jdk1.3-j2ee1.3

http://git-wip-us.apache.org/repos/asf/struts/blob/4bff5a87/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
--
diff --git 
a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java 
b/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
deleted file mode 100644
index ad89df1..000
--- 
a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.apache.struts2;
-
-import com.opensymphony.xwork2.ActionContext;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
-import org.apache.struts2.portlet.PortletConstants;
-import org.apache.struts2.portlet.PortletPhase;
-import org.springframework.mock.web.portlet.MockPortletContext;
-import org.springframework.mock.web.portlet.MockPortletRequest;
-import org.springframework.mock.web.portlet.MockPortletResponse;
-import org.springframework.mock.web.portlet.MockPortletSession;
-import org.springframework.mock.web.portlet.MockStateAwareResponse;
-
-import javax.portlet.PortletMode;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Base class used to test action in portlet environment
- */
-public abstract class StrutsPortletTestCase extends StrutsTestCase {
-
-private static final Logger LOG = 
LogManager.getLogger(StrutsPortletTestCase.class);
-
-protected MockPortletSession portletSession;
-protected MockPortletRequest portletRequest;
-protected MockPortletResponse portletResponse;
-protected MockContext portletContext;
-
-@Override
-protected void initActionContext(ActionContext actionContext) {
-super.initActionContext(actionContext);
-initPortletContext(actionContext);
-}
-
-protected void initPortletContext(ActionContext actionContext) {
-LOG.debug("Initializing mock portlet environment");
-portletContext = new MockContext();
-portletContext.setMajorVersion(getMajorVersion());
-actionContext.put(StrutsStatics.STRUTS_PORTLET_CONTEXT, 
portletContext);
-
-portletRequest = new MockPortletRequest(portletContext);
-portletResponse = new MockStateAwareResponse();
-portletSession = new MockPortletSession();
-portletRequest.setSession(portletSession);
-actionContext.setSession(createSession());
-actionContext.put(PortletConstants.REQUEST, portletRequest);
-actionContext.put(PortletConstants.RESPONSE, portletResponse);
-actionContext.put(PortletConstants.MODE_NAMESPACE_MAP, new 
HashMap());
-actionContext.put(PortletConstants.PHASE, PortletPhase.EVENT_PHASE);
-}
-
-/**
- * Override to define version of your portlet environment
- *
- * @return portlet version
- */
-

[2/3] struts git commit: made spring-core an optional compile dependency, as that is required for javadoc of jdk8

2015-10-13 Thread cnenning
made spring-core an optional compile dependency, as that is required for 
javadoc of jdk8


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

Branch: refs/heads/master
Commit: e0f258f718c4bae691b6b73cb196a3bf55492114
Parents: 9d5b948
Author: cnenning 
Authored: Tue Oct 13 13:06:35 2015 +0200
Committer: cnenning 
Committed: Tue Oct 13 13:06:35 2015 +0200

--
 plugins/portlet/pom.xml | 15 ++-
 1 file changed, 10 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/e0f258f7/plugins/portlet/pom.xml
--
diff --git a/plugins/portlet/pom.xml b/plugins/portlet/pom.xml
index da5a8ca..b7500f7 100644
--- a/plugins/portlet/pom.xml
+++ b/plugins/portlet/pom.xml
@@ -11,6 +11,8 @@
 Struts 2 Portlet Plugin
 
 
+
+
 
 org.apache.struts
 struts2-junit-plugin
@@ -23,6 +25,14 @@
 true
 
 
+
+
+
+org.springframework
+spring-core
+true
+
+
 
 javax.servlet
 jsp-api
@@ -101,11 +111,6 @@
 true
 
 
-org.springframework
-spring-core
-test
-
-
 commons-fileupload
 commons-fileupload
 test



[3/3] struts git commit: refactored testEntrySet() to be not dependent on order of entries, fixes test executio wiht jdk8

2015-10-13 Thread cnenning
refactored testEntrySet() to be not dependent on order of entries, fixes test 
executio wiht jdk8


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

Branch: refs/heads/master
Commit: ed1b8cc7b32dd31d5196c5cbd5e57b6cc38e05eb
Parents: e0f258f
Author: cnenning 
Authored: Tue Oct 13 13:27:57 2015 +0200
Committer: cnenning 
Committed: Tue Oct 13 13:27:57 2015 +0200

--
 .../portlet/PortletApplicationMapTest.java  | 38 +---
 1 file changed, 25 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/ed1b8cc7/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletApplicationMapTest.java
--
diff --git 
a/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletApplicationMapTest.java
 
b/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletApplicationMapTest.java
index 0844b20..e568198 100644
--- 
a/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletApplicationMapTest.java
+++ 
b/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletApplicationMapTest.java
@@ -24,9 +24,11 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import javax.portlet.PortletContext;
@@ -131,23 +133,33 @@ public class PortletApplicationMapTest extends 
MockObjectTestCase {
 .will(returnValue("value1"));
 mockPortletContext.stubs().method("getAttribute").with(eq("key2"))
 .will(returnValue("value2"));
+mockPortletContext.stubs().method("getAttribute").with(eq("key3"))
+.will(returnValue(null));
 mockPortletContext.stubs().method("getInitParameter").with(eq("key3"))
 .will(returnValue("value3"));
 
 PortletApplicationMap map = new PortletApplicationMap(portletContext);
-Set entries = map.entrySet();
-
-assertEquals(3, entries.size());
-Iterator it = entries.iterator();
-Map.Entry entry = (Map.Entry) it.next();
-assertEquals("key2", entry.getKey());
-assertEquals("value2", entry.getValue());
-entry = (Map.Entry) it.next();
-assertEquals("key1", entry.getKey());
-assertEquals("value1", entry.getValue());
-entry = (Map.Entry) it.next();
-assertEquals("key3", entry.getKey());
-assertEquals("value3", entry.getValue());
+
+Set keySet = map.keySet();
+assertEquals(3, keySet.size());
+assertTrue(keySet.contains("key1"));
+assertTrue(keySet.contains("key2"));
+assertTrue(keySet.contains("key3"));
+assertEquals("value1", map.get("key1"));
+assertEquals("value2", map.get("key2"));
+assertEquals("value3", map.get("key3"));
+
+// test iterator
+Set expectedKeys = new HashSet();
+expectedKeys.add("key1");
+expectedKeys.add("key2");
+expectedKeys.add("key3");
+
+Set> entrySet = map.entrySet();
+for (Entry entry : entrySet) {
+String key = entry.getKey();
+assertTrue(expectedKeys.contains(key));
+}
 
 }
 



[1/3] struts git commit: Revert "Cleaned up project to be buildable with jdk8. Moved StrutsPortletTestCase to src/test where it belongs! Declared dependencies -junit-plugin and junit as scope test, as

2015-10-13 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 4bff5a874 -> ed1b8cc7b


Revert "Cleaned up project to be buildable with jdk8. Moved 
StrutsPortletTestCase to src/test where it belongs! Declared dependencies 
-junit-plugin and junit as scope test, as it should be."

This reverts commit 4bff5a87486b67a6da0f7703af574f2eff65e036.


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

Branch: refs/heads/master
Commit: 9d5b948190480aa6916acf639f84529f534b7041
Parents: 4bff5a8
Author: cnenning 
Authored: Tue Oct 13 12:52:54 2015 +0200
Committer: cnenning 
Committed: Tue Oct 13 12:52:54 2015 +0200

--
 plugins/portlet/pom.xml | 27 +++---
 .../apache/struts2/StrutsPortletTestCase.java   | 90 +++
 .../struts2/portlet/StrutsPortletTestCase.java  | 94 
 3 files changed, 102 insertions(+), 109 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9d5b9481/plugins/portlet/pom.xml
--
diff --git a/plugins/portlet/pom.xml b/plugins/portlet/pom.xml
index f3f71a2..da5a8ca 100644
--- a/plugins/portlet/pom.xml
+++ b/plugins/portlet/pom.xml
@@ -12,6 +12,18 @@
 
 
 
+org.apache.struts
+struts2-junit-plugin
+true
+
+
+
+junit
+junit
+true
+
+
+
 javax.servlet
 jsp-api
 provided
@@ -42,21 +54,6 @@
 provided
 
 
-
-
-org.apache.struts
-struts2-junit-plugin
-true
-test
-
-
-
-junit
-junit
-true
-test
-
-
 
 mockobjects
 mockobjects-jdk1.3-j2ee1.3

http://git-wip-us.apache.org/repos/asf/struts/blob/9d5b9481/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
--
diff --git 
a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java 
b/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
new file mode 100644
index 000..ad89df1
--- /dev/null
+++ 
b/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
@@ -0,0 +1,90 @@
+package org.apache.struts2;
+
+import com.opensymphony.xwork2.ActionContext;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.struts2.portlet.PortletConstants;
+import org.apache.struts2.portlet.PortletPhase;
+import org.springframework.mock.web.portlet.MockPortletContext;
+import org.springframework.mock.web.portlet.MockPortletRequest;
+import org.springframework.mock.web.portlet.MockPortletResponse;
+import org.springframework.mock.web.portlet.MockPortletSession;
+import org.springframework.mock.web.portlet.MockStateAwareResponse;
+
+import javax.portlet.PortletMode;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Base class used to test action in portlet environment
+ */
+public abstract class StrutsPortletTestCase extends StrutsTestCase {
+
+private static final Logger LOG = 
LogManager.getLogger(StrutsPortletTestCase.class);
+
+protected MockPortletSession portletSession;
+protected MockPortletRequest portletRequest;
+protected MockPortletResponse portletResponse;
+protected MockContext portletContext;
+
+@Override
+protected void initActionContext(ActionContext actionContext) {
+super.initActionContext(actionContext);
+initPortletContext(actionContext);
+}
+
+protected void initPortletContext(ActionContext actionContext) {
+LOG.debug("Initializing mock portlet environment");
+portletContext = new MockContext();
+portletContext.setMajorVersion(getMajorVersion());
+actionContext.put(StrutsStatics.STRUTS_PORTLET_CONTEXT, 
portletContext);
+
+portletRequest = new MockPortletRequest(portletContext);
+portletResponse = new MockStateAwareResponse();
+portletSession = new MockPortletSession();
+portletRequest.setSession(portletSession);
+actionContext.setSession(createSession());
+actionContext.put(PortletConstants.REQUEST, portletRequest);
+actionContext.put(PortletConstants.RESPONSE, portletResponse);
+actionContext.put(PortletConstants.MODE_NAMESPACE_MAP, new 
HashMap());
+actionContext.put(PortletConstants.PHASE, PortletPhase.EVENT_PHASE);
+}
+
+/**
+ * Override to define version of y

struts git commit: added testcase for WW-4312 / #69

2016-01-05 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master f457c774e -> 4f29d8861


added testcase for WW-4312 / #69


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

Branch: refs/heads/master
Commit: 4f29d8861a57146fa50a1dcebe5f60e0ef9f86cd
Parents: f457c77
Author: cnenning 
Authored: Tue Jan 5 13:47:15 2016 +0100
Committer: cnenning 
Committed: Tue Jan 5 13:47:15 2016 +0100

--
 .../components/IteratorComponentTest.java   | 38 
 1 file changed, 38 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/4f29d886/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java
--
diff --git 
a/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java 
b/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java
index 1115493..c9a075a 100644
--- 
a/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java
+++ 
b/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java
@@ -76,6 +76,44 @@ public class IteratorComponentTest extends 
StrutsInternalTestCase {
 assertEquals("item2 item3 item4 ", out.getBuffer().toString());
 }
 
+public void testIteratorWithNulls() throws Exception {
+// given
+final ValueStack stack = ActionContext.getContext().getValueStack();
+stack.push(new FooAction() {
+private List items  = Arrays.asList("1", "2", null, "4");
+
+public List getItems() {
+return items;
+}
+});
+
+StringWriter out = new StringWriter();
+
+IteratorComponent ic = new IteratorComponent(stack);
+ic.setValue("items");
+ic.setVar("val");
+Property prop = new Property(stack);
+
+ic.getComponentStack().push(prop);
+ic.getComponentStack().push(prop);
+ic.getComponentStack().push(prop);
+ic.getComponentStack().push(prop);
+
+String body = ", ";
+
+// when
+assertTrue(ic.start(out));
+
+for (int i = 0; i < 4; i++) {
+prop.start(out);
+prop.end(out, body);
+ic.end(out, null);
+}
+
+// then
+assertEquals("1, 2, , 4, ", out.getBuffer().toString());
+}
+
 static class FooAction {
 
 private List items;



struts-site git commit: Fixing broken link to Java EE tutorial.

2016-01-18 Thread cnenning
Repository: struts-site
Updated Branches:
  refs/heads/master 8bce64e7d -> 840f0616c


Fixing broken link to Java EE tutorial.


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

Branch: refs/heads/master
Commit: 840f0616c62bda329584c06c8b2f0da431555c77
Parents: 8bce64e
Author: Michael Hidalgo 
Authored: Sat Jan 16 10:25:54 2016 -0600
Committer: Michael Hidalgo 
Committed: Sat Jan 16 10:25:54 2016 -0600

--
 source/primer.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts-site/blob/840f0616/source/primer.md
--
diff --git a/source/primer.md b/source/primer.md
index dafecac..65444aa 100644
--- a/source/primer.md
+++ b/source/primer.md
@@ -48,7 +48,7 @@ If you are not familiar with the Java language generally,then 
the best starting
 [Java Tutorial](http://docs.oracle.com/javase/tutorial/index.html).
 
 If you are familiar with Java, but not the mentioned technologies,
-the best overall starting point is the [Java EE 
Tutorial](http://docs.oracle.com/javaee/7/tutorial/doc/).
+the best overall starting point is the [Java EE 
Tutorial](https://docs.oracle.com/javaee/7/tutorial/).
 
 If you've created web applications for other platforms, you
 may be able to follow along and visit the other references as needed. The core



struts git commit: updated comments

2016-01-28 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 6fb870d38 -> d0baa7060


updated comments


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

Branch: refs/heads/master
Commit: d0baa7060dd502b8a2eadb3916623461a7099f51
Parents: 6fb870d
Author: cnenning 
Authored: Thu Jan 28 10:58:44 2016 +0100
Committer: cnenning 
Committed: Thu Jan 28 10:58:44 2016 +0100

--
 .../src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/d0baa706/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
--
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
index c327802..f30403f 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
@@ -63,7 +63,7 @@
  ***/
 
  /**
-  * Validates given form per AJAX. To be called as onSubmit handler.
+  * Validates form per AJAX. To be called as onSubmit handler.
   *
   * @param event onSubmit event
   */
@@ -141,7 +141,6 @@ function _removeValidationErrors() {
  *
  * @param form Form containing errors.
  * @param errors Errors from server.
- * @returns {Boolean} True if form can be submitted.
  */
 function _handleValidationResult(form, errors) {
 // action errors
@@ -150,7 +149,7 @@ function _handleValidationResult(form, errors) {
 var errorContainer = $('ul.errorMessage');
 $.each(errors.errors, function(index, errorMsg) {
 var li = $('');
-li.text(errorMsg);
+li.text(errorMsg); // use text() for security reasons
 errorContainer.append(li);
 });
 }
@@ -161,7 +160,7 @@ function _handleValidationResult(form, errors) {
 var td = $('td[data-error-for-fieldname="' + fieldName + '"]');
 if (td) {
 var div = $('');
-div.text(errorMsg);
+div.text(errorMsg); // use text() for security reasons
 td.append(div);
 }
 });



[3/4] struts git commit: increased visibilty of methods and constants for better extensibility

2016-01-29 Thread cnenning
increased visibilty of methods and constants for better extensibility


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

Branch: refs/heads/support-2-3
Commit: 377c6cdda03cd1faf95c664e706b7e389f12058b
Parents: 6438396
Author: cnenning 
Authored: Thu Jan 14 09:33:50 2016 +0100
Committer: cnenning 
Committed: Fri Jan 29 13:54:08 2016 +0100

--
 .../org/apache/struts2/json/JSONActionRedirectResult.java| 8 
 .../org/apache/struts2/json/JSONValidationInterceptor.java   | 8 
 2 files changed, 8 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/377c6cdd/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
--
diff --git 
a/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
 
b/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
index 65d0bd3..d672c91 100644
--- 
a/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
+++ 
b/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
@@ -44,12 +44,12 @@ public class JSONActionRedirectResult extends 
ServletActionRedirectResult {
  * @return true if a JSON response shall be generated, false if a redirect
  * shall be sent.
  */
-private boolean sendJsonInsteadOfRedirect() {
+protected boolean sendJsonInsteadOfRedirect() {
 HttpServletRequest request = ServletActionContext.getRequest();
 return isJsonEnabled(request) && !isValidateOnly(request);
 }
 
-private void printJson(HttpServletResponse response, String finalLocation) 
throws IOException {
+protected void printJson(HttpServletResponse response, String 
finalLocation) throws IOException {
 response.setStatus(HttpServletResponse.SC_OK);
 response.setContentType("application/json");
 response.setHeader("Location", finalLocation);
@@ -60,11 +60,11 @@ public class JSONActionRedirectResult extends 
ServletActionRedirectResult {
 writer.close();
 }
 
-private boolean isJsonEnabled(HttpServletRequest request) {
+protected boolean isJsonEnabled(HttpServletRequest request) {
 return 
"true".equals(request.getParameter(JSONValidationInterceptor.VALIDATE_JSON_PARAM));
 }
 
-private boolean isValidateOnly(HttpServletRequest request) {
+protected boolean isValidateOnly(HttpServletRequest request) {
 return 
"true".equals(request.getParameter(JSONValidationInterceptor.VALIDATE_ONLY_PARAM));
 }
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/377c6cdd/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
--
diff --git 
a/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
 
b/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
index 1c7fd54..fc65324 100644
--- 
a/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
+++ 
b/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
@@ -74,11 +74,11 @@ public class JSONValidationInterceptor extends 
MethodFilterInterceptor {
 
 private static final Logger LOG = 
LoggerFactory.getLogger(JSONValidationInterceptor.class);
 
-static final String VALIDATE_ONLY_PARAM = "struts.validateOnly";
-static final String VALIDATE_JSON_PARAM = "struts.enableJSONValidation";
-private static final String NO_ENCODING_SET_PARAM = 
"struts.JSONValidation.no.encoding";
+public static final String VALIDATE_ONLY_PARAM = "struts.validateOnly";
+public static final String VALIDATE_JSON_PARAM = 
"struts.enableJSONValidation";
+public static final String NO_ENCODING_SET_PARAM = 
"struts.JSONValidation.no.encoding";
 
-private static final String DEFAULT_ENCODING = "UTF-8";
+public static final String DEFAULT_ENCODING = "UTF-8";
 
 private int validationFailedStatus = -1;
 



[2/4] struts git commit: made methods non static and private, javadoc updates

2016-01-29 Thread cnenning
made methods non static and private, javadoc updates

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

Branch: refs/heads/support-2-3
Commit: 6438396ef83560f89d18975a5a49dcb336b272f7
Parents: 69bc294
Author: cnenning 
Authored: Tue Jan 12 14:14:09 2016 +0100
Committer: cnenning 
Committed: Fri Jan 29 13:53:48 2016 +0100

--
 .../validation/AjaxFormSubmitAction.java|  2 +-
 .../struts2/json/JSONActionRedirectResult.java  | 23 ++--
 2 files changed, 12 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/6438396e/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
index b179370..50ff53f 100644
--- 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
@@ -23,7 +23,7 @@ import 
com.opensymphony.xwork2.validator.annotations.UrlValidator;
  * 
  *   Depends on json-plugin.
  *   Requires jsonValidationInterceptor to be on stack.
- *   Uses a special json redirect result type.
+ *   Uses result type jsonActionRedirect.
  *   Uses http parameters struts.enableJSONValidation=true 
and struts.validateOnly=false.
  *   Uses a customized theme to make sure html elements required as error 
containers are always present and easily selectable in JS.
  *   Uses some custom JS code depending on jQuery to issue AJAX request 
and to render errors in html.

http://git-wip-us.apache.org/repos/asf/struts/blob/6438396e/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
--
diff --git 
a/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
 
b/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
index f9b28b2..65d0bd3 100644
--- 
a/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
+++ 
b/plugins/json/src/main/java/org/apache/struts2/json/JSONActionRedirectResult.java
@@ -16,13 +16,12 @@ import 
org.apache.struts2.dispatcher.ServletActionRedirectResult;
  * don't pass them to JS handlers. So this result produces a JSON response
  * containing redirect data.
  *
- *
- * To be used along with {@link JSONValidationInterceptor}.
- *
- *
- * Response JSON looks like this:
- * {"location": "$redirect url$"}
- *
+ * To be used along with {@link JSONValidationInterceptor}.
+ *
+ * Response JSON looks like this:
+ * 
+ * {"location": "$redirect url$"}
+ * 
  *
  */
 public class JSONActionRedirectResult extends ServletActionRedirectResult {
@@ -30,7 +29,7 @@ public class JSONActionRedirectResult extends 
ServletActionRedirectResult {
 private static final long serialVersionUID = 3107276294073879542L;
 
 @Override
-   protected void sendRedirect(HttpServletResponse response, String 
finalLocation) throws IOException {
+protected void sendRedirect(HttpServletResponse response, String 
finalLocation) throws IOException {
 if (sendJsonInsteadOfRedirect()) {
 printJson(response, finalLocation);
 } else {
@@ -45,12 +44,12 @@ public class JSONActionRedirectResult extends 
ServletActionRedirectResult {
  * @return true if a JSON response shall be generated, false if a redirect
  * shall be sent.
  */
-static boolean sendJsonInsteadOfRedirect() {
+private boolean sendJsonInsteadOfRedirect() {
 HttpServletRequest request = ServletActionContext.getRequest();
 return isJsonEnabled(request) && !isValidateOnly(request);
 }
 
-static void printJson(HttpServletResponse response, String finalLocation) 
throws IOException {
+private void printJson(HttpServletResponse response, String finalLocation) 
throws IOException {
 response.setStatus(HttpServletResponse.SC_OK);
 response.setContentType("application/json");
 response.setHeader("Location", finalLocation);
@@ -61,11 +60,11 @@ public class JSONActionRedirectResult extends 
ServletActionRedirectResult {
 writer.close();
 }
 
-private static boolean isJsonEnabled(HttpServletRequest request) {
+private boolean isJsonEnabled(HttpServ

[4/4] struts git commit: updated comments

2016-01-29 Thread cnenning
updated comments


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

Branch: refs/heads/support-2-3
Commit: 2a6acabe5d53ba01073f8471c56f95ac31087bd3
Parents: 377c6cd
Author: cnenning 
Authored: Thu Jan 28 10:58:44 2016 +0100
Committer: cnenning 
Committed: Fri Jan 29 13:54:31 2016 +0100

--
 .../src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/2a6acabe/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
--
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
index c327802..f30403f 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/ajaxFormSubmit.jsp
@@ -63,7 +63,7 @@
  ***/
 
  /**
-  * Validates given form per AJAX. To be called as onSubmit handler.
+  * Validates form per AJAX. To be called as onSubmit handler.
   *
   * @param event onSubmit event
   */
@@ -141,7 +141,6 @@ function _removeValidationErrors() {
  *
  * @param form Form containing errors.
  * @param errors Errors from server.
- * @returns {Boolean} True if form can be submitted.
  */
 function _handleValidationResult(form, errors) {
 // action errors
@@ -150,7 +149,7 @@ function _handleValidationResult(form, errors) {
 var errorContainer = $('ul.errorMessage');
 $.each(errors.errors, function(index, errorMsg) {
 var li = $('');
-li.text(errorMsg);
+li.text(errorMsg); // use text() for security reasons
 errorContainer.append(li);
 });
 }
@@ -161,7 +160,7 @@ function _handleValidationResult(form, errors) {
 var td = $('td[data-error-for-fieldname="' + fieldName + '"]');
 if (td) {
 var div = $('');
-div.text(errorMsg);
+div.text(errorMsg); // use text() for security reasons
 td.append(div);
 }
 });



[1/4] struts git commit: WW-4599: backport JSONActionRedirectResult to struts 2.3

2016-01-29 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 15c79e139 -> 2a6acabe5


WW-4599: backport JSONActionRedirectResult to struts 2.3


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

Branch: refs/heads/support-2-3
Commit: 69bc2947c17188bda2502a5bfe1c19e427583581
Parents: 15c79e1
Author: cnenning 
Authored: Mon Jan 11 14:36:32 2016 +0100
Committer: cnenning 
Committed: Fri Jan 29 13:53:31 2016 +0100

--
 .../validation/AjaxFormSubmitAction.java| 152 
 .../validation/AjaxFormSubmitSuccessAction.java |   7 +
 .../src/main/resources/struts-validation.xml|  13 ++
 .../ajaxErrorContainers/actionerror.ftl |  46 +
 .../ajaxErrorContainers/controlfooter.ftl   |  39 
 .../ajaxErrorContainers/controlheader-core.ftl  |  80 +
 .../ajaxErrorContainers/theme.properties|  21 +++
 .../src/main/webapp/WEB-INF/decorators/main.jsp |   1 -
 .../WEB-INF/validation/ajaxFormSubmit.jsp   | 177 +++
 .../validation/ajaxFormSubmitSuccess.jsp|  17 ++
 .../main/webapp/WEB-INF/validation/index.jsp|   2 +
 .../struts2/json/JSONActionRedirectResult.java  |  71 
 .../struts2/json/JSONValidationInterceptor.java |   6 +-
 .../json/src/main/resources/struts-plugin.xml   |   1 +
 .../json/JSONActionRedirectResultTest.java  | 105 +++
 15 files changed, 735 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/69bc2947/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
new file mode 100644
index 000..b179370
--- /dev/null
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/AjaxFormSubmitAction.java
@@ -0,0 +1,152 @@
+package org.apache.struts2.showcase.validation;
+
+import java.sql.Date;
+
+import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;
+import com.opensymphony.xwork2.validator.annotations.EmailValidator;
+import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;
+import com.opensymphony.xwork2.validator.annotations.IntRangeFieldValidator;
+import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;
+import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
+import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
+import 
com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator;
+import com.opensymphony.xwork2.validator.annotations.UrlValidator;
+
+/**
+ * 
+ */
+/**
+ * Example Action that shows how forms can be validated and submitted via AJAX
+ * only. Form-submit-and-page-reload functionality of browsers is not used for
+ * this action.
+ * Some things to note:
+ * 
+ *   Depends on json-plugin.
+ *   Requires jsonValidationInterceptor to be on stack.
+ *   Uses a special json redirect result type.
+ *   Uses http parameters struts.enableJSONValidation=true 
and struts.validateOnly=false.
+ *   Uses a customized theme to make sure html elements required as error 
containers are always present and easily selectable in JS.
+ *   Uses some custom JS code depending on jQuery to issue AJAX request 
and to render errors in html.
+ *   Shows visual feedback while waiting for AJAX response.
+ * 
+ * 
+ *
+ */
+public class AjaxFormSubmitAction extends AbstractValidationActionSupport {
+
+private String requiredValidatorField = null;
+private String requiredStringValidatorField = null;
+private Integer integerValidatorField = null;
+private Date dateValidatorField = null;
+private String emailValidatorField = null;
+private String urlValidatorField = null;
+private String stringLengthValidatorField = null;
+private String regexValidatorField = null;
+private String fieldExpressionValidatorField = null;
+
+@Override
+public void validate() {
+if (hasFieldErrors()) {
+addActionError("Errors present!");
+}
+}
+
+public Date getDateValidatorField() {
+return dateValidatorField;
+}
+
+@DateRangeFieldValidator(
+min="01/01/1990", 
+max="01/01/2000", 
+message="must be a min 01-01-1990 max 01-01-2000 if supplied")
+public void setDateValidatorField(Date dateValidatorField) {
+this.dateValidatorField = date

struts git commit: fixed jenkins by resolving compiler error in test class (did not appear locally) and adjusting asserts to older version of spring mock objects

2016-01-29 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 2a6acabe5 -> c44566bd2


fixed jenkins by resolving compiler error in test class (did not appear 
locally) and adjusting asserts to older version of spring mock objects


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

Branch: refs/heads/support-2-3
Commit: c44566bd24ae7d9834eeb0c8019e3bedd779cc1a
Parents: 2a6acab
Author: cnenning 
Authored: Fri Jan 29 15:12:17 2016 +0100
Committer: cnenning 
Committed: Fri Jan 29 15:12:17 2016 +0100

--
 .../json/JSONActionRedirectResultTest.java  | 22 +---
 1 file changed, 15 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/c44566bd/plugins/json/src/test/java/org/apache/struts2/json/JSONActionRedirectResultTest.java
--
diff --git 
a/plugins/json/src/test/java/org/apache/struts2/json/JSONActionRedirectResultTest.java
 
b/plugins/json/src/test/java/org/apache/struts2/json/JSONActionRedirectResultTest.java
index c98e41a..f305558 100644
--- 
a/plugins/json/src/test/java/org/apache/struts2/json/JSONActionRedirectResultTest.java
+++ 
b/plugins/json/src/test/java/org/apache/struts2/json/JSONActionRedirectResultTest.java
@@ -37,13 +37,17 @@ public class JSONActionRedirectResultTest extends 
StrutsTestCase {
 
 String content = response.getContentAsString();
 assertEquals("", content);
-String location = response.getHeader("Location");
-assertEquals("/targetAction.action", location);
-assertEquals(302, response.getStatus());
+
+// spring MockHttpServletResponse does not set Location-Header and 
status code on sendRedirect()
+//String location = response.getHeader("Location").toString();
+//assertEquals("/targetAction.action", location);
+//assertEquals(302, response.getStatus());
+String redirectedUrl = response.getRedirectedUrl();
+assertEquals("/targetAction.action", redirectedUrl);
 }
 
 public void testJsonRedirect() throws Exception {
-JSONActionRedirectResult result = new JSONActionRedirectResult();
+   JSONActionRedirectResult result = new JSONActionRedirectResult();
 result.setActionName("targetAction");
 result.setActionMapper(new DefaultActionMapper());
 result.setUrlHelper(new DefaultUrlHelper());
@@ -79,9 +83,13 @@ public class JSONActionRedirectResultTest extends 
StrutsTestCase {
 
 String content = response.getContentAsString();
 assertEquals("", content);
-String location = response.getHeader("Location");
-assertEquals("/targetAction.action", location);
-assertEquals(302, response.getStatus());
+
+// spring MockHttpServletResponse does not set Location-Header and 
status code on sendRedirect()
+//  String location = response.getHeader("Location").toString();
+//  assertEquals("/targetAction.action", location);
+//  assertEquals(302, response.getStatus());
+  String redirectedUrl = response.getRedirectedUrl();
+  assertEquals("/targetAction.action", redirectedUrl);
 }
 
 @Override



struts git commit: turned @AllowedMethods into String[]

2016-01-29 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master d0baa7060 -> cceb89166


turned @AllowedMethods into String[]

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

Branch: refs/heads/master
Commit: cceb89166785eafee3e6276c60e04f7356e9e4e2
Parents: d0baa70
Author: cnenning 
Authored: Fri Jan 29 15:53:18 2016 +0100
Committer: cnenning 
Committed: Fri Jan 29 15:53:18 2016 +0100

--
 .../struts2/convention/PackageBasedActionConfigBuilder.java| 6 +-
 .../apache/struts2/convention/annotation/AllowedMethods.java   | 2 +-
 .../convention/actions/allowedmethods/package-info.java| 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/cceb8916/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 c388ee9..fc85d54 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
@@ -744,7 +744,11 @@ public class PackageBasedActionConfigBuilder implements 
ActionConfigBuilder {
 if (annotation == null) {
 return Collections.emptySet();
 } else {
-return TextParseUtil.commaDelimitedStringToSet(annotation.value());
+Set methods = new HashSet<>();
+for (String method : annotation.value()) {
+methods.add(method);
+}
+return methods;
 }
 }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/cceb8916/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AllowedMethods.java
--
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AllowedMethods.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AllowedMethods.java
index 8e3c9ab..a21ae92 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AllowedMethods.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AllowedMethods.java
@@ -25,6 +25,6 @@ import java.lang.annotation.Target;
 @Retention(value = RetentionPolicy.RUNTIME)
 public @interface AllowedMethods {
 
-String value() default ActionConfig.DEFAULT_METHOD;
+String[] value() default ActionConfig.DEFAULT_METHOD;
 
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/cceb8916/plugins/convention/src/test/java/org/apache/struts2/convention/actions/allowedmethods/package-info.java
--
diff --git 
a/plugins/convention/src/test/java/org/apache/struts2/convention/actions/allowedmethods/package-info.java
 
b/plugins/convention/src/test/java/org/apache/struts2/convention/actions/allowedmethods/package-info.java
index 461131f..745a1a6 100644
--- 
a/plugins/convention/src/test/java/org/apache/struts2/convention/actions/allowedmethods/package-info.java
+++ 
b/plugins/convention/src/test/java/org/apache/struts2/convention/actions/allowedmethods/package-info.java
@@ -18,6 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-@org.apache.struts2.convention.annotation.AllowedMethods("home,start")
+@org.apache.struts2.convention.annotation.AllowedMethods({"home", "start"})
 package org.apache.struts2.convention.actions.allowedmethods;
 



struts git commit: Every 2nd build on jenkins with jdk8 fails while generating javadoc for tiles-plugin. It fails at file serialized-form.html because it misses class org.apache.tiles.context.TilesReq

2016-02-01 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master cceb89166 -> 94691e0af


Every 2nd build on jenkins with jdk8 fails while generating javadoc for 
tiles-plugin. It fails at file serialized-form.html because it misses class 
org.apache.tiles.context.TilesRequestContextWrapper. That class was present in 
tiles 2 but is not present in tiles 3 anymore. To avoid failing builds due to 
this failOnError is set to false.


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

Branch: refs/heads/master
Commit: 94691e0afd4434a0cefc063e2100c76afd50438e
Parents: cceb891
Author: cnenning 
Authored: Mon Feb 1 11:33:20 2016 +0100
Committer: cnenning 
Committed: Mon Feb 1 11:33:20 2016 +0100

--
 pom.xml | 3 +++
 1 file changed, 3 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/94691e0a/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 1dc97da..c5f3f2b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -301,6 +301,9 @@
 
 
 
+
+false
+
 
 
 org.apache.rat



[10/13] struts git commit: turned comments into LOG.trace()

2016-02-03 Thread cnenning
turned comments into LOG.trace()


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

Branch: refs/heads/master
Commit: 8651545aaa34dad22c16969f5697cb5b1055f591
Parents: 9230270
Author: cnenning 
Authored: Mon Feb 1 09:44:22 2016 +0100
Committer: cnenning 
Committed: Mon Feb 1 09:44:22 2016 +0100

--
 .../main/java/org/apache/struts2/views/tiles/TilesResult.java| 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/8651545a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
index 4656f91..ecbdcee 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
@@ -115,7 +115,7 @@ public class TilesResult extends ServletDispatcherResult {
 String actionName = invocation.getInvocationContext().getName();
 
 if (StringUtils.isEmpty(location)) {
-// location not set -> action must have one @TilesDefinition
+LOG.trace("location not set -> action must have one 
@TilesDefinition");
 tilesDefinition = annotationProcessor.findAnnotation(action, null);
 String tileName = StringUtils.isNotEmpty(tilesDefinition.name()) ? 
tilesDefinition.name() : actionName;
 location = tileName;
@@ -142,7 +142,7 @@ public class TilesResult extends ServletDispatcherResult {
 }
 if (!definitionValid) {
 if (tilesDefinition == null) {
-// tilesDefinition not found yet, search in action
+LOG.trace("tilesDefinition not found yet, searching in 
action");
 tilesDefinition = annotationProcessor.findAnnotation(action, 
location);
 }
 if (tilesDefinition != null) {



[07/13] struts git commit: renamed test class to stick to naming convention

2016-02-03 Thread cnenning
renamed test class to stick to naming convention

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

Branch: refs/heads/master
Commit: 9ca6eb9813ae65a6dd245071825fb9abf63a2a94
Parents: b1588dd
Author: cnenning 
Authored: Mon Jan 25 14:36:07 2016 +0100
Committer: cnenning 
Committed: Mon Jan 25 14:36:07 2016 +0100

--
 .../StrutsTilesAnnotationProcessorTest.java | 148 +++
 .../TestStrutsTilesAnnotationProcessor.java | 148 ---
 2 files changed, 148 insertions(+), 148 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9ca6eb98/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
--
diff --git 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
new file mode 100644
index 000..acaacce
--- /dev/null
+++ 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
@@ -0,0 +1,148 @@
+package org.apache.struts2.tiles;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.junit.Test;
+
+import org.junit.Assert;
+
+public class StrutsTilesAnnotationProcessorTest {
+
+@Test
+public void findAnnotationSingleAction() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionSingleAnnotation(), null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("definition-name", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameNull() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def1", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameGiven() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def2");
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def2", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNotFound() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def3");
+Assert.assertNull(tilesDefinition);
+}
+
+@Test
+public void buildDefiniton() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionSingleAnnotation(), null);
+
+Definition definition = 
annotationProcessor.buildTilesDefinition("tileName", tilesDefinition);
+
+Assert.assertNotNull(definition);
+Assert.assertEquals("tileName", definition.getName());
+Assert.assertEquals("preparer", definition.getPreparer());
+Assert.assertEquals("base-definition", definition.getExtends());
+Attribute templateAttribute = definition.getTemplateAttribute();
+Assert.assertEquals("template", templateAttribute.getValue());
+Assert.assertEquals("type", templateAttribute.getRenderer());
+Assert.assertEquals("role", templateAttribute.getRole());
+Expression definitionExpressionObject = 
templateAttribute.getExpressionObject();
+Assert.assertEquals("templ*", 
definitionExpressionObject.getExpression());
+Assert.assertNull(definitionExpressionObject.getLanguage());
+
+Attribute putAttribute = definition.getAttribute("put-attr");
+Assert.assertNotNull(putAttribute);
+Assert.assertEquals("attr-val", putAttribute.getValue());
+Assert.assertEquals(&q

[12/13] struts git commit: WW-4594 Merges #85 which adds annotations to configure tiles

2016-02-03 Thread cnenning
WW-4594 Merges #85 which adds annotations to configure tiles


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

Branch: refs/heads/master
Commit: 15688132eff8a5f718ac24794822133fb3fe2d35
Parents: 94691e0 f5ef143
Author: cnenning 
Authored: Wed Feb 3 10:51:15 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 10:51:15 2016 +0100

--
 .../showcase/tiles/TilesAnnotationsAction.java  |  40 +
 apps/showcase/src/main/webapp/WEB-INF/tiles.xml |  10 +-
 .../src/main/webapp/WEB-INF/tiles/body.jsp  |   3 +
 .../webapp/WEB-INF/tiles/layout-annotations.jsp |  14 ++
 .../tiles/StrutsTilesAnnotationProcessor.java   | 177 +++
 .../tiles/annotation/TilesAddAttribute.java |  30 
 .../tiles/annotation/TilesAddListAttribute.java |  28 +++
 .../tiles/annotation/TilesDefinition.java   |  66 +++
 .../tiles/annotation/TilesDefinitions.java  |  36 
 .../tiles/annotation/TilesPutAttribute.java |  32 
 .../tiles/annotation/TilesPutListAttribute.java |  32 
 .../apache/struts2/views/tiles/TilesResult.java |  69 ++--
 .../StrutsTilesAnnotationProcessorTest.java | 147 +++
 .../TilesTestActionMultipleAnnotations.java |  12 ++
 .../tiles/TilesTestActionSingleAnnotation.java  |  49 +
 ...TilesTestActionSingleAnnotationAllEmpty.java |  28 +++
 16 files changed, 760 insertions(+), 13 deletions(-)
--




[06/13] struts git commit: fixed line endings

2016-02-03 Thread cnenning
fixed line endings


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

Branch: refs/heads/master
Commit: b1588ddc84d876a676bab66ad80ec34637e98536
Parents: a53deac
Author: cnenning 
Authored: Mon Jan 25 13:50:45 2016 +0100
Committer: cnenning 
Committed: Mon Jan 25 13:50:45 2016 +0100

--
 apps/showcase/src/main/webapp/WEB-INF/tiles.xml | 108 +++---
 .../src/main/webapp/WEB-INF/tiles/body.jsp  |  52 +--
 .../apache/struts2/views/tiles/TilesResult.java | 326 +--
 3 files changed, 243 insertions(+), 243 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/b1588ddc/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml 
b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
index d644502..a74de1b 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
@@ -1,54 +1,54 @@
-
-
-
-http://tiles.apache.org/dtds/tiles-config_3_0.dtd";>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+http://tiles.apache.org/dtds/tiles-config_3_0.dtd";>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/b1588ddc/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
index ca9d10d..855a896 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
@@ -1,27 +1,27 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-   
-   
-   
-   This example illustrates the Struts/Tiles 
Plugin.
-
-   Tiles 2 is an effort to extract the Tiles 
library from Struts. It is currently housed
-   in the Sandbox area of the Apache 
Struts Subversion repository.
-
-   Features
-   
-   
-   View FreeMarker Example
-   
-   
-   View Example with a FreeMarker Layout
-   
-   
-   View Example with tiles configuration by 
annotating action
-   
-   
-
-   
-   
-   
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+   
+   
+   
+   This example illustrates the Struts/Tiles 
Plugin.
+
+   Tiles 2 is an effort to extract the Tiles 
library from Struts. It is currently housed
+   in the Sandbox area of the Apache 
Struts Subversion repository.
+
+   Features
+   
+   
+   View FreeMarker Example
+   
+   
+   View Example with a FreeMarker Layout
+   
+   
+   View Example with tiles configuration by 
annotating action
+   
+   
+
+   
+   
+   
 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/b1588ddc/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
index da00765..4656f91 100644
--- 
a/plugins/tiles/src/main

[11/13] struts git commit: removed outcommented line

2016-02-03 Thread cnenning
removed outcommented line


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

Branch: refs/heads/master
Commit: f5ef1438aaf4d9841dd5180a470dbe52edd8693e
Parents: 8651545
Author: cnenning 
Authored: Mon Feb 1 09:45:34 2016 +0100
Committer: cnenning 
Committed: Mon Feb 1 09:45:34 2016 +0100

--
 .../apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java| 1 -
 1 file changed, 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f5ef1438/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
--
diff --git 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
index acaacce..c71d100 100644
--- 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
+++ 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
@@ -109,7 +109,6 @@ public class StrutsTilesAnnotationProcessorTest {
 Assert.assertNull(definition.getExtends());
 Attribute templateAttribute = definition.getTemplateAttribute();
 Assert.assertNull(templateAttribute.getValue());
-//Assert.assertNull(templateAttribute.getRenderer());
 Assert.assertNull(templateAttribute.getRole());
 Assert.assertNull(templateAttribute.getExpressionObject());
 



[13/13] struts git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts

2016-02-03 Thread cnenning
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts


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

Branch: refs/heads/master
Commit: 6d2a57355eb596ddafacc7079b017c4d67d1d9f4
Parents: 1568813 954a29e
Author: cnenning 
Authored: Wed Feb 3 10:51:53 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 10:51:53 2016 +0100

--
 .../xwork2/config/entities/AllowedMethods.java  |   3 +
 .../xwork2/config/impl/ActionConfigMatcher.java |   1 +
 .../interceptor/MessageStoreInterceptor.java|  39 ---
 .../config/entities/AllowedMethodsTest.java |  15 +++
 .../config/impl/ActionConfigMatcherTest.java|  16 ++-
 .../MessageStoreInterceptorTest.java| 116 ++-
 6 files changed, 169 insertions(+), 21 deletions(-)
--




[09/13] struts git commit: added missing license header

2016-02-03 Thread cnenning
added missing license header


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

Branch: refs/heads/master
Commit: 92302703f2430ee6077fa93f0eabd6dbfc497d9a
Parents: edf7c09
Author: cnenning 
Authored: Mon Feb 1 09:37:25 2016 +0100
Committer: cnenning 
Committed: Mon Feb 1 09:37:25 2016 +0100

--
 .../showcase/tiles/TilesAnnotationsAction.java| 18 ++
 1 file changed, 18 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/92302703/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
index b5c62f0..2b789c2 100644
--- 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
@@ -1,3 +1,21 @@
+/*
+ * 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.showcase.tiles;
 
 import org.apache.struts2.convention.annotation.Namespace;



[08/13] struts git commit: formatted annotations more nicely

2016-02-03 Thread cnenning
formatted annotations more nicely


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

Branch: refs/heads/master
Commit: edf7c099e3ed6ee17008a738ef8801c854139fd1
Parents: 9ca6eb9
Author: cnenning 
Authored: Mon Feb 1 09:36:23 2016 +0100
Committer: cnenning 
Committed: Mon Feb 1 09:36:23 2016 +0100

--
 .../apache/struts2/showcase/tiles/TilesAnnotationsAction.java   | 5 +++--
 .../org/apache/struts2/tiles/annotation/TilesDefinition.java| 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/edf7c099/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
index 997db11..b5c62f0 100644
--- 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
@@ -12,8 +12,9 @@ import com.opensymphony.xwork2.ActionSupport;
 @ParentPackage("tiles")
 @Result(name = "success", type="tiles")
 @TilesDefinition(extend = "showcase.annotations", putAttributes = {
-@TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
-@TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl"), 
})
+@TilesPutAttribute(name = "header", value = "/WEB-INF/tiles/header.jsp"),
+@TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl")
+})
 public class TilesAnnotationsAction extends ActionSupport {
 
 private static final long serialVersionUID = 2900509995064928866L;

http://git-wip-us.apache.org/repos/asf/struts/blob/edf7c099/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
index 1618b63..3aa144c 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
@@ -42,7 +42,8 @@ import java.lang.annotation.Target;
  *  @Result(name = "success", type="tiles")
  *  @TilesDefinition(extend = "layout", putAttributes = {
  *  @TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
- *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl"), })
+ *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl")
+ *  })
  *  public class FooAction extends ActionSupport {
  *  
  * 



[01/13] struts git commit: fixed tiles showcase by setting dtd to 3.0

2016-02-03 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 954a29efc -> 6d2a57355


fixed tiles showcase by setting dtd to 3.0

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

Branch: refs/heads/master
Commit: d9f4054b1367cd7ab6e3f22b9cc677f62def4e83
Parents: 249d2f8
Author: cnenning 
Authored: Fri Jan 22 14:59:48 2016 +0100
Committer: cnenning 
Committed: Fri Jan 22 14:59:48 2016 +0100

--
 apps/showcase/src/main/webapp/WEB-INF/tiles.xml | 96 ++--
 1 file changed, 48 insertions(+), 48 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/d9f4054b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml 
b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
index 7c7057f..027f9a4 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
@@ -1,48 +1,48 @@
-
-
-
-http://tiles.apache.org/dtds/tiles-config_2_0.dtd";>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+http://tiles.apache.org/dtds/tiles-config_3_0.dtd";>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



[05/13] struts git commit: updated javadoc

2016-02-03 Thread cnenning
updated javadoc

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

Branch: refs/heads/master
Commit: a53deac7ce8732053edd43dddac329448055aef0
Parents: d76357f
Author: cnenning 
Authored: Mon Jan 25 13:39:47 2016 +0100
Committer: cnenning 
Committed: Mon Jan 25 13:39:47 2016 +0100

--
 .../tiles/annotation/TilesDefinition.java   | 20 
 1 file changed, 20 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/a53deac7/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
index a71bbc3..1618b63 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
@@ -27,6 +27,26 @@ import java.lang.annotation.Target;
 /**
  * Represents a <definition> element in 
tiles.xml.
  *
+ * 
+ *  With a sample layout in tiles.xml like this:
+ *  
+ *  <definition name="layout" template="/WEB-INF/tiles/layout.jsp">
+ *  <put-attribute name="header" value=".header"/>
+ *  <put-attribute name="body" value=".body"/>
+ *  </definition>
+ *  
+ * 
+ * 
+ *  You can annotate an action like that:
+ *  
+ *  @Result(name = "success", type="tiles")
+ *  @TilesDefinition(extend = "layout", putAttributes = {
+ *  @TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
+ *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl"), })
+ *  public class FooAction extends ActionSupport {
+ *  
+ * 
+ *
  */
 @Retention(value = RetentionPolicy.RUNTIME)
 @Target(value = { ElementType.TYPE })



[02/13] struts git commit: Added tiles annotations, see WW-4594.

2016-02-03 Thread cnenning
Added tiles annotations, see WW-4594.

Added tiles annotations, created StrutsTilesAnnotationProcessor to
create Definitons from them and using it in TilesResult.

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

Branch: refs/heads/master
Commit: 9ac326aa2458fe43140c1b13b61c87752d282e3d
Parents: d9f4054
Author: cnenning 
Authored: Fri Jan 22 15:27:09 2016 +0100
Committer: cnenning 
Committed: Fri Jan 22 15:27:09 2016 +0100

--
 .../tiles/StrutsTilesAnnotationProcessor.java   | 176 
 .../tiles/annotation/TilesAddAttribute.java |  30 ++
 .../tiles/annotation/TilesAddListAttribute.java |  28 ++
 .../tiles/annotation/TilesDefinition.java   |  45 +++
 .../tiles/annotation/TilesDefinitions.java  |  36 +++
 .../tiles/annotation/TilesPutAttribute.java |  32 +++
 .../tiles/annotation/TilesPutListAttribute.java |  32 +++
 .../apache/struts2/views/tiles/TilesResult.java | 279 +++
 8 files changed, 542 insertions(+), 116 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9ac326aa/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
new file mode 100644
index 000..2ae3ba4
--- /dev/null
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
@@ -0,0 +1,176 @@
+/*
+ * 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.tiles;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.struts2.tiles.annotation.TilesAddAttribute;
+import org.apache.struts2.tiles.annotation.TilesAddListAttribute;
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.struts2.tiles.annotation.TilesDefinitions;
+import org.apache.struts2.tiles.annotation.TilesPutAttribute;
+import org.apache.struts2.tiles.annotation.TilesPutListAttribute;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.apache.tiles.ListAttribute;
+
+/**
+ * Processes tiles annotations to create {@link Definition}s and
+ * {@link Attribute}s in a way as close to tiles.xml as possible.
+ *
+ */
+public class StrutsTilesAnnotationProcessor {
+
+/**
+ * Search strategy is as follows:
+ * 
+ *   Check if action has Annotation {@link TilesDefinition}
+ *   If not, check if action has Annotation {@link 
TilesDefinitions}
+ *   If given tileName is not null and present in {@link 
TilesDefinitions}, return it
+ *   Return first element of {@link TilesDefinitions}
+ *   Return null
+ * 
+ *
+ * @param action
+ *Annotated action.
+ * @param tileName
+ *Tilename to search for. May be null in some circumstances.
+ * @return {@link TilesDefinition}
+ */
+public TilesDefinition findAnnotation(Object action, String tileName) {
+Class clazz = action.getClass();
+TilesDefinition tilesDefinition = 
clazz.getAnnotation(TilesDefinition.class);
+TilesDefinitions tilesDefinitions = 
clazz.getAnnotation(TilesDefinitions.class);
+
+if (tilesDefinition == null && tilesDefinitions != null) {
+if (!StringUtils.isEmpty(tileName)) {
+for (TilesDefinition i : tilesDefinitions.value()) {
+if (i.name() != null && i.name().equals(tileName)) {
+tilesDefinition = i;
+break;
+}
+}
+}
+if (tilesDefinitions.value().length > 0) {
+tiles

[04/13] struts git commit: added tests for StrutsTilesAnnotationProcessor

2016-02-03 Thread cnenning
added tests for StrutsTilesAnnotationProcessor

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

Branch: refs/heads/master
Commit: d76357fd829a3ea8ddca21d625c49b606cca88d5
Parents: e50c37c
Author: cnenning 
Authored: Mon Jan 25 11:23:10 2016 +0100
Committer: cnenning 
Committed: Mon Jan 25 11:23:10 2016 +0100

--
 .../tiles/StrutsTilesAnnotationProcessor.java   |   7 +-
 .../TestStrutsTilesAnnotationProcessor.java | 148 +++
 .../TilesTestActionMultipleAnnotations.java |  12 ++
 .../tiles/TilesTestActionSingleAnnotation.java  |  49 ++
 ...TilesTestActionSingleAnnotationAllEmpty.java |  28 
 5 files changed, 241 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/d76357fd/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
index 2ae3ba4..fa5f735 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
@@ -66,9 +66,10 @@ public class StrutsTilesAnnotationProcessor {
 break;
 }
 }
-}
-if (tilesDefinitions.value().length > 0) {
-tilesDefinition = tilesDefinitions.value()[0];
+} else {
+if (tilesDefinitions.value().length > 0) {
+tilesDefinition = tilesDefinitions.value()[0];
+}
 }
 }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/d76357fd/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
--
diff --git 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
new file mode 100644
index 000..db808cd
--- /dev/null
+++ 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
@@ -0,0 +1,148 @@
+package org.apache.struts2.tiles;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.junit.Test;
+
+import org.junit.Assert;
+
+public class TestStrutsTilesAnnotationProcessor {
+
+@Test
+public void findAnnotationSingleAction() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionSingleAnnotation(), null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("definition-name", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameNull() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def1", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameGiven() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def2");
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def2", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNotFound() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def3");
+Assert.assertNull(tilesDefinition);
+}
+
+@Test
+public void buildDefiniton() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.fi

[03/13] struts git commit: added sample for tiles annotations

2016-02-03 Thread cnenning
added sample for tiles annotations

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

Branch: refs/heads/master
Commit: e50c37c5ba5781900edf53f9ec71b8649471d448
Parents: 9ac326a
Author: cnenning 
Authored: Fri Jan 22 15:27:50 2016 +0100
Committer: cnenning 
Committed: Fri Jan 22 15:27:50 2016 +0100

--
 .../showcase/tiles/TilesAnnotationsAction.java  | 21 +
 apps/showcase/src/main/webapp/WEB-INF/tiles.xml |  6 +++
 .../src/main/webapp/WEB-INF/tiles/body.jsp  | 49 +++-
 .../webapp/WEB-INF/tiles/layout-annotations.jsp | 14 ++
 4 files changed, 67 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/e50c37c5/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
new file mode 100644
index 000..997db11
--- /dev/null
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
@@ -0,0 +1,21 @@
+package org.apache.struts2.showcase.tiles;
+
+import org.apache.struts2.convention.annotation.Namespace;
+import org.apache.struts2.convention.annotation.ParentPackage;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.struts2.tiles.annotation.TilesPutAttribute;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+@Namespace("/tiles")
+@ParentPackage("tiles")
+@Result(name = "success", type="tiles")
+@TilesDefinition(extend = "showcase.annotations", putAttributes = {
+@TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
+@TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl"), 
})
+public class TilesAnnotationsAction extends ActionSupport {
+
+private static final long serialVersionUID = 2900509995064928866L;
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/e50c37c5/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml 
b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
index 027f9a4..d644502 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
@@ -45,4 +45,10 @@
 
 
 
+
+
+
+
+
+
 

http://git-wip-us.apache.org/repos/asf/struts/blob/e50c37c5/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
index e2e3512..ca9d10d 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
@@ -1,24 +1,27 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-   
-   
-   
-   This example illustrates the Struts/Tiles 
Plugin.
-
-   Tiles 2 is an effort to extract the Tiles 
library from Struts. It is currently housed
-   in the Sandbox area of the Apache 
Struts Subversion repository.
-
-   Features
-   
-   
-   View FreeMarker Example
-   
-   
-   View Example with a FreeMarker Layout
-   
-   
-
-   
-   
-   
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+   
+   
+   
+   This example illustrates the Struts/Tiles 
Plugin.
+
+   Tiles 2 is an effort to extract the Tiles 
library from Struts. It is currently housed
+   in the Sandbox area of the Apache 
Struts Subversion repository.
+
+   Features
+  

[08/10] struts git commit: added missing license header

2016-02-03 Thread cnenning
added missing license header


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

Branch: refs/heads/support-2-3
Commit: 5b2b244a662e8a4d51f364419c2c358ecc88ed6b
Parents: 473403c
Author: cnenning 
Authored: Mon Feb 1 09:37:25 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:34:32 2016 +0100

--
 .../showcase/tiles/TilesAnnotationsAction.java| 18 ++
 1 file changed, 18 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/5b2b244a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
index b5c62f0..2b789c2 100644
--- 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
@@ -1,3 +1,21 @@
+/*
+ * 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.showcase.tiles;
 
 import org.apache.struts2.convention.annotation.Namespace;



[03/10] struts git commit: added tests for StrutsTilesAnnotationProcessor

2016-02-03 Thread cnenning
added tests for StrutsTilesAnnotationProcessor

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

Branch: refs/heads/support-2-3
Commit: bd5e64e5980115a37dcdbed29ff6d15ddad06da7
Parents: 9a8f36d
Author: cnenning 
Authored: Mon Jan 25 11:23:10 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:22:35 2016 +0100

--
 .../tiles/StrutsTilesAnnotationProcessor.java   |   7 +-
 .../TestStrutsTilesAnnotationProcessor.java | 148 +++
 .../TilesTestActionMultipleAnnotations.java |  12 ++
 .../tiles/TilesTestActionSingleAnnotation.java  |  49 ++
 ...TilesTestActionSingleAnnotationAllEmpty.java |  28 
 5 files changed, 241 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/bd5e64e5/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
index 2ae3ba4..fa5f735 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
@@ -66,9 +66,10 @@ public class StrutsTilesAnnotationProcessor {
 break;
 }
 }
-}
-if (tilesDefinitions.value().length > 0) {
-tilesDefinition = tilesDefinitions.value()[0];
+} else {
+if (tilesDefinitions.value().length > 0) {
+tilesDefinition = tilesDefinitions.value()[0];
+}
 }
 }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/bd5e64e5/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
--
diff --git 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
new file mode 100644
index 000..db808cd
--- /dev/null
+++ 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/TestStrutsTilesAnnotationProcessor.java
@@ -0,0 +1,148 @@
+package org.apache.struts2.tiles;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.junit.Test;
+
+import org.junit.Assert;
+
+public class TestStrutsTilesAnnotationProcessor {
+
+@Test
+public void findAnnotationSingleAction() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionSingleAnnotation(), null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("definition-name", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameNull() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def1", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameGiven() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def2");
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def2", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNotFound() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def3");
+Assert.assertNull(tilesDefinition);
+}
+
+@Test
+public void buildDefiniton() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.fi

[10/10] struts git commit: WW-4606 made @TilesDefinition work with tiles 2

2016-02-03 Thread cnenning
WW-4606 made @TilesDefinition work with tiles 2


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

Branch: refs/heads/support-2-3
Commit: 87979d282126bfe37ba6993b538310e1ae124e1c
Parents: 8a9e017
Author: cnenning 
Authored: Wed Feb 3 14:18:54 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 14:18:54 2016 +0100

--
 apps/showcase/src/main/resources/struts-tiles.xml   | 5 +
 .../main/java/org/apache/struts2/views/tiles/TilesResult.java   | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/87979d28/apps/showcase/src/main/resources/struts-tiles.xml
--
diff --git a/apps/showcase/src/main/resources/struts-tiles.xml 
b/apps/showcase/src/main/resources/struts-tiles.xml
index 9fbe025..3d30911 100644
--- a/apps/showcase/src/main/resources/struts-tiles.xml
+++ b/apps/showcase/src/main/resources/struts-tiles.xml
@@ -20,6 +20,11 @@
 showcase.freemarkerLayout
 
 
+
+
+
+
+
 
 /WEB-INF/tiles/layout.jsp
 /tiles/layout.jsp

http://git-wip-us.apache.org/repos/asf/struts/blob/87979d28/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
index c1dbfb9..e2a7dc7 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
@@ -130,7 +130,7 @@ public class TilesResult extends ServletDispatcherResult {
 boolean definitionValid = false;
 try {
 LOG.debug("checking if tiles definition exists '{}'", location);
-definitionValid = container.isValidDefinition(location, request);
+definitionValid = container.isValidDefinition(location, request, 
response);
 } catch (TilesException e) {
 LOG.warn("got TilesException while checking if definiton exists, 
ignoring it", e);
 }
@@ -143,7 +143,7 @@ public class TilesResult extends ServletDispatcherResult {
 Definition definition = 
annotationProcessor.buildTilesDefinition(location, tilesDefinition);
 if (container instanceof MutableTilesContainer) {
 LOG.debug("registering tiles definition with name '{}'", 
definition.getName());
-((MutableTilesContainer)container).register(definition, 
request);
+((MutableTilesContainer)container).register(definition, 
request, response);
 } else {
 LOG.error("cannot register tiles definition as tiles 
container is not mutable!");
 }



[01/10] struts git commit: WW-4606 cherry-picked @TilesDefinition and related classes

2016-02-03 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/support-2-3 85373951b -> 87979d282


WW-4606 cherry-picked @TilesDefinition and related classes


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

Branch: refs/heads/support-2-3
Commit: a6345e79c9d0ea0d5137a890af2df1f44e647908
Parents: 8537395
Author: cnenning 
Authored: Fri Jan 22 15:27:09 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:15:44 2016 +0100

--
 .../tiles/StrutsTilesAnnotationProcessor.java   | 176 +++
 .../tiles/annotation/TilesAddAttribute.java |  30 
 .../tiles/annotation/TilesAddListAttribute.java |  28 +++
 .../tiles/annotation/TilesDefinition.java   |  45 +
 .../tiles/annotation/TilesDefinitions.java  |  36 
 .../tiles/annotation/TilesPutAttribute.java |  32 
 .../tiles/annotation/TilesPutListAttribute.java |  32 
 .../apache/struts2/views/tiles/TilesResult.java |  72 ++--
 8 files changed, 438 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/a6345e79/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
new file mode 100644
index 000..2ae3ba4
--- /dev/null
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessor.java
@@ -0,0 +1,176 @@
+/*
+ * 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.tiles;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.struts2.tiles.annotation.TilesAddAttribute;
+import org.apache.struts2.tiles.annotation.TilesAddListAttribute;
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.struts2.tiles.annotation.TilesDefinitions;
+import org.apache.struts2.tiles.annotation.TilesPutAttribute;
+import org.apache.struts2.tiles.annotation.TilesPutListAttribute;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.apache.tiles.ListAttribute;
+
+/**
+ * Processes tiles annotations to create {@link Definition}s and
+ * {@link Attribute}s in a way as close to tiles.xml as possible.
+ *
+ */
+public class StrutsTilesAnnotationProcessor {
+
+/**
+ * Search strategy is as follows:
+ * 
+ *   Check if action has Annotation {@link TilesDefinition}
+ *   If not, check if action has Annotation {@link 
TilesDefinitions}
+ *   If given tileName is not null and present in {@link 
TilesDefinitions}, return it
+ *   Return first element of {@link TilesDefinitions}
+ *   Return null
+ * 
+ *
+ * @param action
+ *Annotated action.
+ * @param tileName
+ *Tilename to search for. May be null in some circumstances.
+ * @return {@link TilesDefinition}
+ */
+public TilesDefinition findAnnotation(Object action, String tileName) {
+Class clazz = action.getClass();
+TilesDefinition tilesDefinition = 
clazz.getAnnotation(TilesDefinition.class);
+TilesDefinitions tilesDefinitions = 
clazz.getAnnotation(TilesDefinitions.class);
+
+if (tilesDefinition == null && tilesDefinitions != null) {
+if (!StringUtils.isEmpty(tileName)) {
+for (TilesDefinition i : tilesDefinitions.value()) {
+if (i.name() != null && i.name().equals(tileName)) {
+tilesDefinition = i;
+break;
+}
+}
+}
+if (tilesDefinitions.value().length > 0) {
+ti

[05/10] struts git commit: WW-4606 fixed javadoc

2016-02-03 Thread cnenning
WW-4606 fixed javadoc


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

Branch: refs/heads/support-2-3
Commit: 469b25f8e10c2b275e1c158e2ee97d753f324ecc
Parents: 2726068
Author: cnenning 
Authored: Mon Jan 25 13:50:45 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:33:22 2016 +0100

--
 .../main/java/org/apache/struts2/views/tiles/TilesResult.java  | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/469b25f8/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
index 1cea77b..c1dbfb9 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/views/tiles/TilesResult.java
@@ -40,6 +40,7 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 
+
 /**
  * 
  * Renders a view using struts-tiles.
@@ -50,7 +51,8 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  *
  * <listener>
  *  
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
- * </listener> * 
+ * </listener>
+ * 
  *
  * 
  * In struts.xml, use type="tiles" on your <result>.
@@ -72,13 +74,13 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  * </result-types>
  * 
  *
+ *
  * 
  * You have to configure tiles itself. Therefore you can add 
tiles.xml either 
  * to resources or WEB-INF. You may also use annotations like {@link 
TilesDefinition}.
  *
  * 
  *
- *
  */
 public class TilesResult extends ServletDispatcherResult {
 



[06/10] struts git commit: renamed test class to stick to naming convention

2016-02-03 Thread cnenning
renamed test class to stick to naming convention

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

Branch: refs/heads/support-2-3
Commit: 1bbcd4bf70077384ee80d9fe39331def4fa40f82
Parents: 469b25f
Author: cnenning 
Authored: Mon Jan 25 14:36:07 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:33:48 2016 +0100

--
 .../StrutsTilesAnnotationProcessorTest.java | 148 +++
 .../TestStrutsTilesAnnotationProcessor.java | 148 ---
 2 files changed, 148 insertions(+), 148 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/1bbcd4bf/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
--
diff --git 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
new file mode 100644
index 000..acaacce
--- /dev/null
+++ 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
@@ -0,0 +1,148 @@
+package org.apache.struts2.tiles;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.junit.Test;
+
+import org.junit.Assert;
+
+public class StrutsTilesAnnotationProcessorTest {
+
+@Test
+public void findAnnotationSingleAction() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionSingleAnnotation(), null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("definition-name", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameNull() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
null);
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def1", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNameGiven() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def2");
+Assert.assertNotNull(tilesDefinition);
+Assert.assertEquals("def2", tilesDefinition.name());
+}
+
+@Test
+public void findAnnotationMultipleActionNotFound() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionMultipleAnnotations(), 
"def3");
+Assert.assertNull(tilesDefinition);
+}
+
+@Test
+public void buildDefiniton() {
+StrutsTilesAnnotationProcessor annotationProcessor = new 
StrutsTilesAnnotationProcessor();
+TilesDefinition tilesDefinition = 
annotationProcessor.findAnnotation(new TilesTestActionSingleAnnotation(), null);
+
+Definition definition = 
annotationProcessor.buildTilesDefinition("tileName", tilesDefinition);
+
+Assert.assertNotNull(definition);
+Assert.assertEquals("tileName", definition.getName());
+Assert.assertEquals("preparer", definition.getPreparer());
+Assert.assertEquals("base-definition", definition.getExtends());
+Attribute templateAttribute = definition.getTemplateAttribute();
+Assert.assertEquals("template", templateAttribute.getValue());
+Assert.assertEquals("type", templateAttribute.getRenderer());
+Assert.assertEquals("role", templateAttribute.getRole());
+Expression definitionExpressionObject = 
templateAttribute.getExpressionObject();
+Assert.assertEquals("templ*", 
definitionExpressionObject.getExpression());
+Assert.assertNull(definitionExpressionObject.getLanguage());
+
+Attribute putAttribute = definition.getAttribute("put-attr");
+Assert.assertNotNull(putAttribute);
+Assert.assertEquals("attr-val", putAttribute.getValue());
+Assert.assertEquals(&q

[07/10] struts git commit: formatted annotations more nicely

2016-02-03 Thread cnenning
formatted annotations more nicely


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

Branch: refs/heads/support-2-3
Commit: 473403ca1702730efd62771b7341790cfb342910
Parents: 1bbcd4b
Author: cnenning 
Authored: Mon Feb 1 09:36:23 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:34:09 2016 +0100

--
 .../apache/struts2/showcase/tiles/TilesAnnotationsAction.java   | 5 +++--
 .../org/apache/struts2/tiles/annotation/TilesDefinition.java| 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/473403ca/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
index 997db11..b5c62f0 100644
--- 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
@@ -12,8 +12,9 @@ import com.opensymphony.xwork2.ActionSupport;
 @ParentPackage("tiles")
 @Result(name = "success", type="tiles")
 @TilesDefinition(extend = "showcase.annotations", putAttributes = {
-@TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
-@TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl"), 
})
+@TilesPutAttribute(name = "header", value = "/WEB-INF/tiles/header.jsp"),
+@TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl")
+})
 public class TilesAnnotationsAction extends ActionSupport {
 
 private static final long serialVersionUID = 2900509995064928866L;

http://git-wip-us.apache.org/repos/asf/struts/blob/473403ca/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
index 1618b63..3aa144c 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
@@ -42,7 +42,8 @@ import java.lang.annotation.Target;
  *  @Result(name = "success", type="tiles")
  *  @TilesDefinition(extend = "layout", putAttributes = {
  *  @TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
- *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl"), })
+ *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl")
+ *  })
  *  public class FooAction extends ActionSupport {
  *  
  * 



[04/10] struts git commit: updated javadoc

2016-02-03 Thread cnenning
updated javadoc

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

Branch: refs/heads/support-2-3
Commit: 27260685e1c878787e24ae6ac6a9a5f28ba6f2a8
Parents: bd5e64e
Author: cnenning 
Authored: Mon Jan 25 13:39:47 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:23:01 2016 +0100

--
 .../tiles/annotation/TilesDefinition.java   | 20 
 1 file changed, 20 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/27260685/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
index a71bbc3..1618b63 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
@@ -27,6 +27,26 @@ import java.lang.annotation.Target;
 /**
  * Represents a <definition> element in 
tiles.xml.
  *
+ * 
+ *  With a sample layout in tiles.xml like this:
+ *  
+ *  <definition name="layout" template="/WEB-INF/tiles/layout.jsp">
+ *  <put-attribute name="header" value=".header"/>
+ *  <put-attribute name="body" value=".body"/>
+ *  </definition>
+ *  
+ * 
+ * 
+ *  You can annotate an action like that:
+ *  
+ *  @Result(name = "success", type="tiles")
+ *  @TilesDefinition(extend = "layout", putAttributes = {
+ *  @TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
+ *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl"), })
+ *  public class FooAction extends ActionSupport {
+ *  
+ * 
+ *
  */
 @Retention(value = RetentionPolicy.RUNTIME)
 @Target(value = { ElementType.TYPE })



[02/10] struts git commit: WW-4606 added @TilesDefinition sample to showcase app

2016-02-03 Thread cnenning
WW-4606 added @TilesDefinition sample to showcase app


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

Branch: refs/heads/support-2-3
Commit: 9a8f36dee2e28d95a08864dd69727d093b12ced3
Parents: a6345e7
Author: cnenning 
Authored: Fri Jan 22 15:27:50 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:21:59 2016 +0100

--
 .../showcase/tiles/TilesAnnotationsAction.java  | 21 
 apps/showcase/src/main/webapp/WEB-INF/tiles.xml |  6 ++
 .../src/main/webapp/WEB-INF/tiles/body.jsp  |  3 +++
 .../webapp/WEB-INF/tiles/layout-annotations.jsp | 14 +
 4 files changed, 44 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9a8f36de/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
new file mode 100644
index 000..997db11
--- /dev/null
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/tiles/TilesAnnotationsAction.java
@@ -0,0 +1,21 @@
+package org.apache.struts2.showcase.tiles;
+
+import org.apache.struts2.convention.annotation.Namespace;
+import org.apache.struts2.convention.annotation.ParentPackage;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.tiles.annotation.TilesDefinition;
+import org.apache.struts2.tiles.annotation.TilesPutAttribute;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+@Namespace("/tiles")
+@ParentPackage("tiles")
+@Result(name = "success", type="tiles")
+@TilesDefinition(extend = "showcase.annotations", putAttributes = {
+@TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
+@TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl"), 
})
+public class TilesAnnotationsAction extends ActionSupport {
+
+private static final long serialVersionUID = 2900509995064928866L;
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/9a8f36de/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml 
b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
index 7c7057f..0a1b1be 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
@@ -45,4 +45,10 @@
 
 
 
+
+
+
+
+
+
 

http://git-wip-us.apache.org/repos/asf/struts/blob/9a8f36de/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
index 095762f..0a5ffe8 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
@@ -16,6 +16,9 @@

View Example with a FreeMarker Layout

+   
+   View Example with tiles configuration by 
annotating action
+   

 


http://git-wip-us.apache.org/repos/asf/struts/blob/9a8f36de/apps/showcase/src/main/webapp/WEB-INF/tiles/layout-annotations.jsp
--
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/layout-annotations.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/tiles/layout-annotations.jsp
new file mode 100644
index 000..5609cb1
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/layout-annotations.jsp
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://tiles.apache.org/tags-tiles"; prefix="tiles" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<%-- Show usage; Used in Header --%>
+
+
+Struts2 Showcase - 
+
+
+
+Notice that this is a layout made in JSP
+It is configured with annotations!
+
+



[09/10] struts git commit: removed outcommented line

2016-02-03 Thread cnenning
removed outcommented line


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

Branch: refs/heads/support-2-3
Commit: 8a9e01727ce51a0a8291a45a593ec40428de
Parents: 5b2b244
Author: cnenning 
Authored: Mon Feb 1 09:45:34 2016 +0100
Committer: cnenning 
Committed: Wed Feb 3 13:34:47 2016 +0100

--
 .../apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java| 1 -
 1 file changed, 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/8a9e0172/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
--
diff --git 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
index acaacce..c71d100 100644
--- 
a/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
+++ 
b/plugins/tiles/src/test/java/org/apache/struts2/tiles/StrutsTilesAnnotationProcessorTest.java
@@ -109,7 +109,6 @@ public class StrutsTilesAnnotationProcessorTest {
 Assert.assertNull(definition.getExtends());
 Attribute templateAttribute = definition.getTemplateAttribute();
 Assert.assertNull(templateAttribute.getValue());
-//Assert.assertNull(templateAttribute.getRenderer());
 Assert.assertNull(templateAttribute.getRole());
 Assert.assertNull(templateAttribute.getExpressionObject());
 



struts git commit: escaped @ characters in javadoc code sample to avoid javadoc warnings

2016-02-25 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 46cd6a127 -> b638260d9


escaped @ characters in javadoc code sample to avoid javadoc warnings


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

Branch: refs/heads/master
Commit: b638260d925ce8d9e5f54cbdb2028cc160cd05d4
Parents: 46cd6a1
Author: cnenning 
Authored: Thu Feb 25 09:31:40 2016 +0100
Committer: cnenning 
Committed: Thu Feb 25 09:31:40 2016 +0100

--
 .../org/apache/struts2/tiles/annotation/TilesDefinition.java | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/b638260d/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
--
diff --git 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
index 3aa144c..239dc85 100644
--- 
a/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
+++ 
b/plugins/tiles/src/main/java/org/apache/struts2/tiles/annotation/TilesDefinition.java
@@ -39,10 +39,10 @@ import java.lang.annotation.Target;
  * 
  *  You can annotate an action like that:
  *  
- *  @Result(name = "success", type="tiles")
- *  @TilesDefinition(extend = "layout", putAttributes = {
- *  @TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
- *  @TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl")
+ *  {@literal @}Result(name = "success", type="tiles")
+ *  {@literal @}TilesDefinition(extend = "layout", putAttributes = {
+ *  {@literal @}TilesPutAttribute(name = "header", value = 
"/WEB-INF/tiles/header.jsp"),
+ *  {@literal @}TilesPutAttribute(name = "body", value = 
"/WEB-INF/tiles/body.ftl")
  *  })
  *  public class FooAction extends ActionSupport {
  *  



[06/10] struts git commit: using ObjectFactory instead of Class.forName()

2015-06-12 Thread cnenning
using ObjectFactory instead of Class.forName()

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

Branch: refs/heads/master
Commit: 372ce960e2395cdbe89c16e142e4a4f2214f7fa1
Parents: 8128ca6
Author: cnenning 
Authored: Fri Jun 12 10:30:38 2015 +0200
Committer: cnenning 
Committed: Fri Jun 12 10:30:38 2015 +0200

--
 .../validation/interceptor/DefaultBeanValidationManager.java | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/372ce960/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
index b502c33..c54cca8 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
@@ -20,7 +20,9 @@
  */
 package org.apache.struts.beanvalidation.validation.interceptor;
 
+import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.inject.Inject;
+
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
@@ -62,14 +64,14 @@ public class DefaultBeanValidationManager
 @Inject
 public DefaultBeanValidationManager(
 @Inject(value = ValidatorConstants.PROVIDER_CLASS, required = 
false) String providerClassName,
-@Inject(value = ValidatorConstants.IGNORE_XMLCONFIGURAITION, 
required = false)String ignoreXMLConfiguration) {
+@Inject(value = ValidatorConstants.IGNORE_XMLCONFIGURAITION, 
required = false)String ignoreXMLConfiguration,
+@Inject(required = true) ObjectFactory objectFactory) {
 super();
 LOG.info("Initializing bean validation factory to get a validator");
 
 if (StringUtils.isNotBlank(providerClassName)) {
 try {
-this.providerClass =
-(Class>>) Class.forName(providerClassName);
+   this.providerClass = 
objectFactory.getClassInstance(providerClassName);
 LOG.info(this.providerClass.getName() + " validator found");
 } catch (ClassNotFoundException e) {
 LOG.error("Unable to find any bean validator implementation 
for " + providerClassName);



[04/10] struts git commit: added some more eclipse specific directories to .gitignore

2015-06-12 Thread cnenning
added some more eclipse specific directories to .gitignore


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

Branch: refs/heads/master
Commit: adf7133c76c9097c4173e02f4d41e3ad883b9d92
Parents: f20570a
Author: cnenning 
Authored: Wed Jun 10 14:54:54 2015 +0200
Committer: cnenning 
Committed: Wed Jun 10 14:54:54 2015 +0200

--
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/adf7133c/.gitignore
--
diff --git a/.gitignore b/.gitignore
index a1e20c7..bcebcd9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,8 @@
 .classpath
 .project
 .settings/
+.metadata/
+Servers/
 
 # OSX
 .DS_Store



[03/10] struts git commit: added testcase for action with method prefixed by 'do'

2015-06-12 Thread cnenning
added testcase for action with method prefixed by 'do'

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

Branch: refs/heads/master
Commit: f20570a470d3d1d6e3c5c26437d1b7b4031fc81f
Parents: c82b4d9
Author: cnenning 
Authored: Wed Jun 10 14:50:16 2015 +0200
Committer: cnenning 
Committed: Wed Jun 10 14:50:16 2015 +0200

--
 .../BeanValidationInterceptorTest.java  | 15 +
 .../actions/FieldActionDoExecute.java   | 23 
 .../src/test/resources/bean-validation-test.xml |  4 
 3 files changed, 42 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f20570a4/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/BeanValidationInterceptorTest.java
--
diff --git 
a/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/BeanValidationInterceptorTest.java
 
b/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/BeanValidationInterceptorTest.java
index 11aa135..a049061 100644
--- 
a/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/BeanValidationInterceptorTest.java
+++ 
b/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/BeanValidationInterceptorTest.java
@@ -24,7 +24,9 @@ import com.opensymphony.xwork2.ActionProxy;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.XWorkTestCase;
 import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
+
 import org.apache.struts.beanvalidation.actions.FieldAction;
+import org.apache.struts.beanvalidation.actions.FieldActionDoExecute;
 import org.apache.struts.beanvalidation.actions.FieldMatchAction;
 import org.apache.struts.beanvalidation.actions.ModelDrivenAction;
 
@@ -133,6 +135,19 @@ public class BeanValidationInterceptorTest extends 
XWorkTestCase {
 assertEquals(2, actionErrors.size());
 }
 
+public void testFieldActionDoExecute() throws Exception {
+ActionProxy baseActionProxy = 
actionProxyFactory.createActionProxy("bean-validation", "fieldActionDoExecute", 
null, null);
+FieldActionDoExecute action = (FieldActionDoExecute) 
baseActionProxy.getAction();
+action.setTest(" ");
+baseActionProxy.execute();
+
+Map> fieldErrors = ((ValidationAware) 
baseActionProxy.getAction()).getFieldErrors();
+
+assertNotNull(fieldErrors);
+assertEquals(1, fieldErrors.size());
+assertTrue(fieldErrors.get("test").size() > 0);
+}
+
 @Override
 protected void setUp() throws Exception {
 super.setUp();

http://git-wip-us.apache.org/repos/asf/struts/blob/f20570a4/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/FieldActionDoExecute.java
--
diff --git 
a/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/FieldActionDoExecute.java
 
b/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/FieldActionDoExecute.java
new file mode 100644
index 000..8bb510e
--- /dev/null
+++ 
b/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/FieldActionDoExecute.java
@@ -0,0 +1,23 @@
+package org.apache.struts.beanvalidation.actions;
+
+import org.hibernate.validator.constraints.NotBlank;
+
+import com.opensymphony.xwork2.ActionSupport;
+import com.opensymphony.xwork2.ValidationAwareSupport;
+
+public class FieldActionDoExecute extends ValidationAwareSupport {
+@NotBlank(message = "canNotBeBlank")
+private String test;
+
+public String doExecute() {
+   return ActionSupport.SUCCESS;
+}
+
+public String getTest() {
+return test;
+}
+
+public void setTest(String test) {
+this.test = test;
+}
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/f20570a4/plugins/bean-validation/src/test/resources/bean-validation-test.xml
--
diff --git 
a/plugins/bean-validation/src/test/resources/bean-validation-test.xml 
b/plugins/bean-validation/src/test/resources/bean-validation-test.xml
index 3e616aa..cb44a74 100644
--- a/plugins/bean-validation/src/test/resources/bean-validation-test.xml
+++ b/plugins/bean-validation/src/test/resources/bean-validation-test.xml
@@ -34,6 +34,10 @@
 
 
 
+
+
+
+
 
 
 



[10/10] struts git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts into asf

2015-06-12 Thread cnenning
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts into asf


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

Branch: refs/heads/master
Commit: 48b064083186ef241776c9550f3650a06ea3c894
Parents: a1abdd8 fa9cac7
Author: cnenning 
Authored: Fri Jun 12 10:52:54 2015 +0200
Committer: cnenning 
Committed: Fri Jun 12 10:52:54 2015 +0200

--
 apps/blank/README.txt   |   16 -
 apps/blank/pom.xml  |   86 -
 .../src/main/java/example/ExampleSupport.java   |   30 -
 .../blank/src/main/java/example/HelloWorld.java |   68 -
 apps/blank/src/main/java/example/Login.java |   58 -
 apps/blank/src/main/java/example/YesNo.java |5 -
 apps/blank/src/main/resources/LICENSE.txt   |  174 --
 apps/blank/src/main/resources/NOTICE.txt|5 -
 apps/blank/src/main/resources/example.xml   |   25 -
 .../main/resources/example/Login-validation.xml |   16 -
 .../main/resources/example/package.properties   |7 -
 .../resources/example/package_es.properties |5 -
 apps/blank/src/main/resources/log4j2.xml|   15 -
 apps/blank/src/main/resources/struts.xml|   35 -
 .../src/main/resources/velocity.properties  |1 -
 .../blank/src/main/webapp/WEB-INF/jsp/error.jsp |   15 -
 .../webapp/WEB-INF/jsp/example/HelloWorld.jsp   |   30 -
 .../main/webapp/WEB-INF/jsp/example/Login.jsp   |   15 -
 .../main/webapp/WEB-INF/jsp/example/Menu.jsp|3 -
 .../main/webapp/WEB-INF/jsp/example/Missing.jsp |   11 -
 .../webapp/WEB-INF/jsp/example/Register.jsp |3 -
 .../main/webapp/WEB-INF/jsp/example/Welcome.jsp |   18 -
 apps/blank/src/main/webapp/WEB-INF/web.xml  |   39 -
 apps/blank/src/main/webapp/index.html   |   10 -
 .../blank/src/test/java/example/ConfigTest.java |   96 -
 .../src/test/java/example/HelloWorldTest.java   |   37 -
 apps/blank/src/test/java/example/LoginTest.java |   55 -
 apps/jboss-blank/README.txt |   16 -
 apps/jboss-blank/pom.xml|   69 -
 .../src/main/java/example/ExampleSupport.java   |   30 -
 .../src/main/java/example/HelloWorld.java   |   61 -
 .../src/main/java/example/Login.java|   59 -
 apps/jboss-blank/src/main/resources/LICENSE.txt |  174 --
 apps/jboss-blank/src/main/resources/NOTICE.txt  |5 -
 apps/jboss-blank/src/main/resources/example.xml |   25 -
 .../main/resources/example/Login-validation.xml |   16 -
 .../main/resources/example/package.properties   |5 -
 .../resources/example/package_es.properties |5 -
 apps/jboss-blank/src/main/resources/log4j2.xml  |   15 -
 apps/jboss-blank/src/main/resources/struts.xml  |   27 -
 .../src/main/resources/velocity.properties  |1 -
 .../webapp/WEB-INF/jsp/example/HelloWorld.jsp   |   28 -
 .../main/webapp/WEB-INF/jsp/example/Login.jsp   |   15 -
 .../main/webapp/WEB-INF/jsp/example/Menu.jsp|3 -
 .../main/webapp/WEB-INF/jsp/example/Missing.jsp |   11 -
 .../webapp/WEB-INF/jsp/example/Register.jsp |3 -
 .../main/webapp/WEB-INF/jsp/example/Welcome.jsp |   18 -
 .../jboss-blank/src/main/webapp/WEB-INF/web.xml |   37 -
 apps/jboss-blank/src/main/webapp/index.html |   10 -
 .../src/test/java/example/ConfigTest.java   |   96 -
 .../src/test/java/example/HelloWorldTest.java   |   37 -
 .../src/test/java/example/LoginTest.java|   55 -
 apps/mailreader/README.txt  |   23 -
 apps/mailreader/pom.xml |   95 -
 .../src/main/java/alternate.properties  |3 -
 .../src/main/java/alternate_ja.properties   |1 -
 .../src/main/java/mailreader-default.xml|   47 -
 .../src/main/java/mailreader-support.xml|   63 -
 .../java/mailreader2/ApplicationListener.java   |  234 --
 .../mailreader2/AuthenticationInterceptor.java  |   52 -
 .../src/main/java/mailreader2/Constants.java|  128 -
 .../main/java/mailreader2/Login-validation.xml  |   14 -
 .../src/main/java/mailreader2/Login.java|   48 -
 .../src/main/java/mailreader2/Logout.java   |   35 -
 .../java/mailreader2/MailreaderSupport.java |  583 -
 .../mailreader2/MailreaderSupport.properties|   97 -
 .../mailreader2/MailreaderSupport_ja.properties |   89 -
 .../mailreader2/MailreaderSupport_ru.properties |   89 -
 ...egistration-Registration_save-validation.xml |   28 -
 .../mailreader2/Registration-validation.xml |   32 -
 .../src/main/java/mailreader2/Registration.java |  122 -
 ...ubscription-Subscription_save-validation.xml |   23 -
 .../mailreader2/Subscription-validation.xml |   11 -
 .../src/main/java/mailreader2/Subscription.java |  145 -
 .../src/main/java/mailreader2/Welcome.java  

[02/10] struts git commit: fixed some typos in javadoc

2015-06-12 Thread cnenning
fixed some typos in javadoc

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

Branch: refs/heads/master
Commit: c82b4d96916a6f6a848b9c62806a58aa33a5ab7e
Parents: f03969d
Author: cnenning 
Authored: Wed Jun 10 14:34:59 2015 +0200
Committer: cnenning 
Committed: Wed Jun 10 14:34:59 2015 +0200

--
 .../apache/struts/beanvalidation/constraints/FieldMatch.java   | 2 +-
 .../beanvalidation/validation/constant/ValidatorConstants.java | 2 +-
 .../validation/interceptor/BeanValidationInterceptor.java  | 4 ++--
 .../validation/interceptor/BeanValidationManager.java  | 2 +-
 .../validation/interceptor/DefaultBeanValidationManager.java   | 6 +++---
 5 files changed, 8 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/c82b4d96/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/constraints/FieldMatch.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/constraints/FieldMatch.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/constraints/FieldMatch.java
index 69bf7c8..db40c4b 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/constraints/FieldMatch.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/constraints/FieldMatch.java
@@ -34,7 +34,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 
 /**
- * Validation annotation to validate that two fields are equals.
+ * Validation annotation to validate that two fields are equal.
  * An array of fields and their matching confirmation fields can be supplied.
  * 
  * Example, compare 1 pair of fields:

http://git-wip-us.apache.org/repos/asf/struts/blob/c82b4d96/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/constant/ValidatorConstants.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/constant/ValidatorConstants.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/constant/ValidatorConstants.java
index a0e61f7..fb4c5cd 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/constant/ValidatorConstants.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/constant/ValidatorConstants.java
@@ -21,7 +21,7 @@
 package org.apache.struts.beanvalidation.validation.constant;
 
 /**
- * Class consisting various constant values being used within
+ * Class consisting of various constant values being used within
  * bean validation plugin 
  * 
  * 

http://git-wip-us.apache.org/repos/asf/struts/blob/c82b4d96/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
index 109..47ad6f3 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
@@ -43,8 +43,8 @@ import java.util.Set;
 
 /**
  * 
- * Bean Validation interceptor. This Interceptor do not itself provide any 
Bean validation functionality but
- * works as a bridge between Bean validation implementation's like Apache Bval 
or Hibernate Validator and Struts2 validation mechanism.
+ * Bean Validation interceptor. This Interceptor does not itself provide any 
Bean validation functionality but
+ * works as a bridge between Bean validation implementations like Apache Bval 
or Hibernate Validator and Struts2 validation mechanism.
  * 
  * 
  * Interceptor will create a Validation Factory based on the provider class 
and will validate requested method or Action

http://git-wip-us.apache.org/repos/asf/struts/blob/c82b4d96/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationManager.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interc

[01/10] struts git commit: fixed some generics related warnings and did a little re-formatting

2015-06-12 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master fa9cac703 -> 48b064083


fixed some generics related warnings and did a little re-formatting

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

Branch: refs/heads/master
Commit: f03969dad8c66500a4d8a70ce9f675e401f14d64
Parents: 850da63
Author: cnenning 
Authored: Wed Jun 10 14:27:17 2015 +0200
Committer: cnenning 
Committed: Wed Jun 10 14:27:17 2015 +0200

--
 .../interceptor/BeanValidationInterceptor.java  |  5 +++--
 .../interceptor/DefaultBeanValidationManager.java   | 12 +++-
 2 files changed, 10 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f03969da/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
index 162e8e6..109 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/BeanValidationInterceptor.java
@@ -109,7 +109,8 @@ public class BeanValidationInterceptor extends 
MethodFilterInterceptor {
 
 if (action instanceof ModelDriven) {
 LOG.trace("Performing validation on model..");
-constraintViolations = validator.validate(((ModelDriven) 
action).getModel());
+Object model = (Object)((ModelDriven) action).getModel();
+constraintViolations = validator.validate(model);
 } else {
 LOG.trace("Performing validation on action..");
 constraintViolations = validator.validate(action);
@@ -173,7 +174,7 @@ public class BeanValidationInterceptor extends 
MethodFilterInterceptor {
 /**
  * This is copied from DefaultActionInvocation
  */
-protected Method getActionMethod(Class actionClass, String methodName) 
throws NoSuchMethodException {
+protected Method getActionMethod(Class actionClass, String methodName) 
throws NoSuchMethodException {
 Method method;
 
 try {

http://git-wip-us.apache.org/repos/asf/struts/blob/f03969da/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
index f03e19e..81aebf8 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
@@ -55,7 +55,7 @@ public class DefaultBeanValidationManager
 
 private static final Logger LOG = 
LogManager.getLogger(DefaultBeanValidationManager.class);
 
-protected Class providerClass;
+protected Class>> 
providerClass;
 
 private ValidatorFactory validationFactory;
 
@@ -68,7 +68,8 @@ public class DefaultBeanValidationManager
 
 if (StringUtils.isNotBlank(providerClassName)) {
 try {
-this.providerClass = (Class) 
Class.forName(providerClassName);
+this.providerClass =
+(Class>>) Class.forName(providerClassName);
 LOG.info(this.providerClass.getName() + " validator found");
 } catch (ClassNotFoundException e) {
 LOG.error("Unable to find any bean validator implementation 
for " + providerClassName);
@@ -80,9 +81,10 @@ public class DefaultBeanValidationManager
 LOG.info("** No bean validator class defined - Falling 
back to default provider **");
 }
 
-Configuration configuration =
-(this.providerClass != null ? 
Validation.byProvider(this.providerClass).configure()
-: Validation.byDefaultProvider().configure());
+Configuration> configuration =
+thi

[05/10] struts git commit: small updates to logging

2015-06-12 Thread cnenning
small updates to logging

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

Branch: refs/heads/master
Commit: 8128ca6b603457bbebf646baaafb80d0d98ec40a
Parents: adf7133
Author: cnenning 
Authored: Fri Jun 12 10:28:44 2015 +0200
Committer: cnenning 
Committed: Fri Jun 12 10:28:44 2015 +0200

--
 .../validation/interceptor/DefaultBeanValidationManager.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/8128ca6b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
--
diff --git 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
index 09676c1..b502c33 100644
--- 
a/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
+++ 
b/plugins/bean-validation/src/main/java/org/apache/struts/beanvalidation/validation/interceptor/DefaultBeanValidationManager.java
@@ -64,7 +64,7 @@ public class DefaultBeanValidationManager
 @Inject(value = ValidatorConstants.PROVIDER_CLASS, required = 
false) String providerClassName,
 @Inject(value = ValidatorConstants.IGNORE_XMLCONFIGURAITION, 
required = false)String ignoreXMLConfiguration) {
 super();
-LOG.info("Initializing bean validation11 factory to get a validator");
+LOG.info("Initializing bean validation factory to get a validator");
 
 if (StringUtils.isNotBlank(providerClassName)) {
 try {
@@ -78,7 +78,7 @@ public class DefaultBeanValidationManager
 
 }
 if (this.providerClass == null) {
-LOG.info("** No bean validator class defined - Falling 
back to default provider **");
+LOG.warn("** No bean validator class defined - Falling 
back to default provider **");
 }
 
 Configuration> configuration =
@@ -87,7 +87,7 @@ public class DefaultBeanValidationManager
 : Validation.byDefaultProvider().configure();
 if (BooleanUtils.toBoolean(ignoreXMLConfiguration)) {
 configuration.ignoreXmlConfiguration();
-LOG.info("XML configurations will be ignore by Validator, to 
enable XML based validation, set struts.beanValidation.ignoreXMLConfiguration 
to false.");
+LOG.info("XML configurations will be ignored by Validator, to 
enable XML based validation, set struts.beanValidation.ignoreXMLConfiguration 
to false.");
 }
 if (configuration != null) {
 this.validationFactory = configuration.buildValidatorFactory();



[08/10] struts git commit: fixed display of last two fields

2015-06-12 Thread cnenning
fixed display of last two fields


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

Branch: refs/heads/master
Commit: 95ee8a780c841481d05ccff09dde14816bde94a7
Parents: f3a0dca
Author: cnenning 
Authored: Fri Jun 12 10:46:00 2015 +0200
Committer: cnenning 
Committed: Fri Jun 12 10:46:00 2015 +0200

--
 .../WEB-INF/validation/successFieldValidatorsExample.jsp | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/95ee8a78/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
--
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
 
b/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
index 12cfa30..28358b2 100644
--- 
a/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
+++ 
b/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
@@ -48,8 +48,12 @@
 
 
 
-Regex Validator Field: 
-Field Expression Validator Field: 
+Regex Validator Field:
+
+
+
+Field Expression Validator Field: 
+
 
 




[07/10] struts git commit: using java.util.Date instead of java.sql.Date

2015-06-12 Thread cnenning
using java.util.Date instead of java.sql.Date


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

Branch: refs/heads/master
Commit: f3a0dcaf24a784699cc6859758b23283e21b35c4
Parents: 372ce96
Author: cnenning 
Authored: Fri Jun 12 10:39:04 2015 +0200
Committer: cnenning 
Committed: Fri Jun 12 10:39:04 2015 +0200

--
 .../struts2/showcase/validation/BeanValidationExampleAction.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f3a0dcaf/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/BeanValidationExampleAction.java
--
diff --git 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/BeanValidationExampleAction.java
 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/BeanValidationExampleAction.java
index b9f2b35..67190e0 100644
--- 
a/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/BeanValidationExampleAction.java
+++ 
b/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/BeanValidationExampleAction.java
@@ -33,7 +33,7 @@ import org.hibernate.validator.constraints.ScriptAssert;
 import org.hibernate.validator.constraints.URL;
 
 import javax.validation.constraints.*;
-import java.sql.Date;
+import java.util.Date;
 
 /**
  * 



[09/10] struts git commit: adjusted h1 to match page title

2015-06-12 Thread cnenning
adjusted h1 to match page title


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

Branch: refs/heads/master
Commit: a1abdd873db008a7f868d5c4c803a44534770282
Parents: 95ee8a7
Author: cnenning 
Authored: Fri Jun 12 10:51:37 2015 +0200
Committer: cnenning 
Committed: Fri Jun 12 10:51:37 2015 +0200

--
 .../src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/a1abdd87/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
--
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
index 67f375f..2210b84 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
@@ -7,7 +7,7 @@
 
 
 
-Field Validation Examples
+Bean Validation Examples
 
 
 



[2/2] struts git commit: WW-4544 Merges #48 which makes ContainUtil more consistent

2015-09-22 Thread cnenning
WW-4544 Merges #48 which makes ContainUtil more consistent


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

Branch: refs/heads/master
Commit: c9efe4d0ee2fc1a916d4407f64a9f80d010aed4a
Parents: 4cd9a74 b3e8da2
Author: cnenning 
Authored: Tue Sep 22 14:39:45 2015 +0200
Committer: cnenning 
Committed: Tue Sep 22 14:39:45 2015 +0200

--
 core/src/main/java/org/apache/struts2/util/ContainUtil.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--




[1/2] struts git commit: Uniform comparison

2015-09-22 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 4cd9a74cb -> c9efe4d0e


Uniform comparison

Add more defense, like compare Enum to String or else.

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

Branch: refs/heads/master
Commit: b3e8da2ec8ac8cc872b95979041cb32d6494a1a6
Parents: 4286d6a
Author: zhouyanming 
Authored: Wed Sep 9 18:20:45 2015 +0800
Committer: zhouyanming 
Committed: Wed Sep 9 18:20:45 2015 +0800

--
 core/src/main/java/org/apache/struts2/util/ContainUtil.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/b3e8da2e/core/src/main/java/org/apache/struts2/util/ContainUtil.java
--
diff --git a/core/src/main/java/org/apache/struts2/util/ContainUtil.java 
b/core/src/main/java/org/apache/struts2/util/ContainUtil.java
index f3cd324..af19603 100644
--- a/core/src/main/java/org/apache/struts2/util/ContainUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/ContainUtil.java
@@ -77,7 +77,7 @@ public class ContainUtil {
 }
 } if (obj1 instanceof Iterable) {
 for (Object value : ((Iterable) obj1)) {
-if (obj2.equals(value) || obj2.toString().equals(value)) {
+if (obj2.equals(value) || 
obj2.toString().equals(value.toString())) {
 return true;
 }
 }
@@ -85,7 +85,7 @@ public class ContainUtil {
 for (int i = 0; i < Array.getLength(obj1); i++) {
 Object value = Array.get(obj1, i);
 
-if (obj2.equals(value)) {
+if (obj2.equals(value) || 
obj2.toString().equals(value.toString())) {
 return true;
 }
 }



struts git commit: fixes broken tests due to WW-4544 / #48

2015-09-22 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master c9efe4d0e -> f829e01f6


fixes broken tests due to WW-4544 / #48


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

Branch: refs/heads/master
Commit: f829e01f6e80902895876d372eecb2ebef87bec8
Parents: c9efe4d
Author: cnenning 
Authored: Tue Sep 22 16:17:14 2015 +0200
Committer: cnenning 
Committed: Tue Sep 22 16:17:14 2015 +0200

--
 .../org/apache/struts2/util/ContainUtil.java|  4 +--
 .../apache/struts2/util/ContainUtilTest.java| 30 ++--
 2 files changed, 29 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/f829e01f/core/src/main/java/org/apache/struts2/util/ContainUtil.java
--
diff --git a/core/src/main/java/org/apache/struts2/util/ContainUtil.java 
b/core/src/main/java/org/apache/struts2/util/ContainUtil.java
index af19603..1cc0bce 100644
--- a/core/src/main/java/org/apache/struts2/util/ContainUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/ContainUtil.java
@@ -77,7 +77,7 @@ public class ContainUtil {
 }
 } if (obj1 instanceof Iterable) {
 for (Object value : ((Iterable) obj1)) {
-if (obj2.equals(value) || 
obj2.toString().equals(value.toString())) {
+if (obj2.equals(value) || (value != null && 
obj2.toString().equals(value.toString( {
 return true;
 }
 }
@@ -85,7 +85,7 @@ public class ContainUtil {
 for (int i = 0; i < Array.getLength(obj1); i++) {
 Object value = Array.get(obj1, i);
 
-if (obj2.equals(value) || 
obj2.toString().equals(value.toString())) {
+if (obj2.equals(value) || (value != null && 
obj2.toString().equals(value.toString( {
 return true;
 }
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/f829e01f/core/src/test/java/org/apache/struts2/util/ContainUtilTest.java
--
diff --git a/core/src/test/java/org/apache/struts2/util/ContainUtilTest.java 
b/core/src/test/java/org/apache/struts2/util/ContainUtilTest.java
index 7e5d162..1bee599 100644
--- a/core/src/test/java/org/apache/struts2/util/ContainUtilTest.java
+++ b/core/src/test/java/org/apache/struts2/util/ContainUtilTest.java
@@ -46,6 +46,11 @@ public class ContainUtilTest extends TestCase {
 assertTrue(ContainUtil.contains(new String[] {"a", null, "b"}, "b"));
 }
 
+public void testArayContainsNull()throws Exception {
+// null gives always false
+assertFalse(ContainUtil.contains(new String[] {"a", null, "b"}, null));
+}
+
 public void testSimpleList() throws Exception {
 List l = new ArrayList();
 l.add("one");
@@ -96,13 +101,28 @@ public class ContainUtilTest extends TestCase {
 }
 
 public void testIterableObject() throws Exception {
-   MyIterableObject i = new MyIterableObject("one", "two");
+MyIterableObject i = new MyIterableObject("one", "two");
+
+assertFalse(ContainUtil.contains(i, "thre"));
+assertTrue(ContainUtil.contains(i, "one"));
+assertTrue(ContainUtil.contains(i, "two"));
+}
+
+public void testNullInIterableObject() throws Exception {
+MyIterableObject i = new MyIterableObject("one", null, "two");
 
 assertFalse(ContainUtil.contains(i, "thre"));
 assertTrue(ContainUtil.contains(i, "one"));
 assertTrue(ContainUtil.contains(i, "two"));
 }
-
+
+public void testIterableObjectContainsNull() throws Exception {
+MyIterableObject i = new MyIterableObject("one", null, "two");
+
+// null gives always false
+assertFalse(ContainUtil.contains(i, null));
+}
+
 public static class MyIterableObject implements Iterable {
private List values;

@@ -126,7 +146,11 @@ public class ContainUtilTest extends TestCase {
 
 @Override
 public int hashCode() {
-return this.name.hashCode();
+final int prime = 31;
+int result = 1;
+result = prime * result + ((age == null) ? 0 : age.hashCode());
+result = prime * result + ((name == null) ? 0 : name.hashCode());
+return result;
 }
 
 @Override



struts git commit: Correcting typos...

2015-09-30 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 6fbdab184 -> 9638d7ada


Correcting typos...

https://issues.apache.org/jira/browse/WW-4550?focusedCommentId=14934912&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14934912

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

Branch: refs/heads/master
Commit: 9638d7adaa9aaed3473e17c9291abdc3421a868a
Parents: 6fbdab1
Author: Andrea Ligios 
Authored: Tue Sep 29 16:59:30 2015 +0200
Committer: Andrea Ligios 
Committed: Tue Sep 29 16:59:30 2015 +0200

--
 .../main/java/org/apache/struts2/result/HttpHeaderResult.java| 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/9638d7ad/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java
--
diff --git a/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java 
b/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java
index d68769e..d600924 100644
--- a/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java
+++ b/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java
@@ -39,7 +39,7 @@ import java.util.Map;
  * 
  * 
  * A custom Result type for setting HTTP headers and status by optionally 
evaluating against the ValueStack.
- * This result can also be used to send and error to the client. All the 
parameters can be evaluated against the ValueStack.
+ * This result can also be used to send an error to the client. All the 
parameters can be evaluated against the ValueStack.
  * 
  *
  * 
@@ -74,7 +74,7 @@ import java.util.Map;
  *
  * 
  *   305
- *   this action must be accessed through a 
prozy
+ *   this action must be accessed through a 
proxy
  * 
  * 
  */



struts git commit: added missing jquery file

2015-06-09 Thread cnenning
Repository: struts
Updated Branches:
  refs/heads/master 5d86c0e5c -> 850da63b8


added missing jquery file


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

Branch: refs/heads/master
Commit: 850da63b8f65e8c8a683e5796131a68e3b263c0a
Parents: 5d86c0e
Author: cnenning 
Authored: Tue Jun 9 16:15:32 2015 +0200
Committer: cnenning 
Committed: Tue Jun 9 16:15:32 2015 +0200

--
 apps/showcase/src/main/webapp/js/jquery-2.1.4.min.js | 4 
 1 file changed, 4 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/850da63b/apps/showcase/src/main/webapp/js/jquery-2.1.4.min.js
--
diff --git a/apps/showcase/src/main/webapp/js/jquery-2.1.4.min.js 
b/apps/showcase/src/main/webapp/js/jquery-2.1.4.min.js
new file mode 100644
index 000..49990d6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/js/jquery-2.1.4.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | 
jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof 
module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw
 new Error("jQuery requires a window with a document");return 
b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var 
c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return
 new 
n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return
 
b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return
 d.call(this)},get:function(a){return 
null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var 
b=n.merge(this.constructor(),a);return 
b.prevObject=this,b.context=this.context,b},each:function(a,b){return 
n.each(this,a,b)},map:function(a){return 
this.pushStack(n.map(this,function(b,c){return 
a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(
 this,arguments))},first:function(){return this.eq(0)},last:function(){return 
this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return 
this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return 
this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var
 
a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof
 g&&(j=g,g=arguments[h]||{},h++),"object"==typeof 
g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b
 in 
a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void
 0!==d&&(g[b]=d));return 
g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw
 new 
Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return
 null!=a&&a===a.window},isNumeric:functi
 
on(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var
 b;for(b in a)return!1;return!0},type:function(a){return 
null==a?a+"":"object"==typeof a||"function"==typeof 
a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var 
b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use 
strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return
 a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return 
a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var
 
d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else
 for(e in a)if(d=b.apply(a[e],c),d===!1)break}else 
if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in 
a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a
 ){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var 
c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof 
a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return 
null==b?-1:g.