struts git commit: WW-4628: avoid double encoding of url parameters, e.g. when spaces are present in parameter values
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)
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
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¶m1=value1¶m2=value2¶m3%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
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
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¶m1=value1¶m2=value2¶m3%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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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'
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
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
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)
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.
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
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
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
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
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.
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
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
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
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
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
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
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[]
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
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()
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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()
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
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'
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
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
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
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
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
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
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
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
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
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
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...
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
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.