Git Push Summary
Repository: struts Updated Branches: refs/heads/feature/exclude-object-class [deleted] 965428711
[12/12] git commit: Extends test to use the new attribute
Extends test to use the new attribute Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d67fce1f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d67fce1f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d67fce1f Branch: refs/heads/feature/WW-4295-localization Commit: d67fce1f2577229139938d4588bb970c3f869078 Parents: ed8a0b8 Author: Lukasz Lenart Authored: Fri Jun 27 12:56:01 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 12:56:01 2014 +0200 -- .../struts2/views/jsp/ui/OptGroupTest.java | 41 .../apache/struts2/views/jsp/ui/OptGroup-6.txt | 40 +++ 2 files changed, 81 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/d67fce1f/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java -- diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java index c11f511..038cb6a 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java @@ -23,6 +23,7 @@ package org.apache.struts2.views.jsp.ui; import java.util.LinkedHashMap; +import com.opensymphony.xwork2.Action; import org.apache.struts2.TestAction; import org.apache.struts2.views.jsp.AbstractUITagTest; @@ -190,4 +191,44 @@ public class OptGroupTest extends AbstractUITagTest { //System.out.println(writer.toString()); verify(SelectTag.class.getResource("OptGroup-5.txt")); } + +public void testOptGroupWithValueKey() throws Exception { +SelectTag selectTag = new SelectTag(); +selectTag.setName("mySelection"); +selectTag.setLabel("My Selection"); +selectTag.setList("%{#{'ONE':'one','TWO':'two','THREE':'three'}}"); +selectTag.setListValueKey("valueKey"); + +stack.push(new Action() { +public String execute() throws Exception { +return SUCCESS; +} + +public String getValueKey() { return "MyValue"; } +}); + +OptGroupTag optGroupTag1 = new OptGroupTag(); +optGroupTag1.setLabel("My Label 1"); +optGroupTag1.setList("%{#{'AAA':'aaa','BBB':'bbb','CCC':'ccc'}}"); + +OptGroupTag optGroupTag2 = new OptGroupTag(); +optGroupTag2.setLabel("My Label 2"); +optGroupTag2.setList("%{#{'DDD':'ddd','EEE':'eee','FFF':'fff'}}"); + +selectTag.setPageContext(pageContext); +selectTag.doStartTag(); +optGroupTag1.setPageContext(pageContext); +optGroupTag1.doStartTag(); +optGroupTag1.doEndTag(); +optGroupTag2.setPageContext(pageContext); +optGroupTag2.doStartTag(); +optGroupTag2.doEndTag(); +selectTag.doEndTag(); + + +//System.out.println(writer.toString()); +verify(SelectTag.class.getResource("OptGroup-6.txt")); +} + + } http://git-wip-us.apache.org/repos/asf/struts/blob/d67fce1f/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-6.txt -- diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-6.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-6.txt new file mode 100644 index 000..401ef44 --- /dev/null +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-6.txt @@ -0,0 +1,40 @@ + +My Selection: + + +MyValue +MyValue +MyValue + + + + aaa + + bbb + + ccc + + + + + ddd + + eee + + fff + + + + + + \ No newline at end of file
[02/12] git commit: Adds additional field to allow set label key used in I18N lookup
Adds additional field to allow set label key used in I18N lookup Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/90189362 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/90189362 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/90189362 Branch: refs/heads/feature/WW-4295-localization Commit: 901893628b31ee3b38b2fc9196045a097a0f4217 Parents: 7f586d3 Author: Lukasz Lenart Authored: Thu Mar 20 08:08:03 2014 +0100 Committer: Lukasz Lenart Committed: Thu Mar 20 08:08:03 2014 +0100 -- .../java/org/apache/struts2/components/ListUIBean.java | 11 +++ .../org/apache/struts2/views/jsp/ui/AbstractListTag.java | 6 ++ 2 files changed, 17 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/90189362/core/src/main/java/org/apache/struts2/components/ListUIBean.java -- diff --git a/core/src/main/java/org/apache/struts2/components/ListUIBean.java b/core/src/main/java/org/apache/struts2/components/ListUIBean.java index b1a4493..11e59aa 100644 --- a/core/src/main/java/org/apache/struts2/components/ListUIBean.java +++ b/core/src/main/java/org/apache/struts2/components/ListUIBean.java @@ -49,6 +49,7 @@ public abstract class ListUIBean extends UIBean { protected Object list; protected String listKey; protected String listValue; +protected String listLabelKey; protected String listCssClass; protected String listCssStyle; protected String listTitle; @@ -115,6 +116,11 @@ public abstract class ListUIBean extends UIBean { addParameter("listValue", "value"); } +if (listLabelKey != null) { +listLabelKey = stripExpressionIfAltSyntax(listLabelKey); +addParameter("listLabelKey", listLabelKey); +} + if (listCssClass != null && listCssClass.trim().length() > 0) { addParameter("listCssClass", listCssClass); } @@ -152,6 +158,11 @@ public abstract class ListUIBean extends UIBean { this.listValue = listValue; } +@StrutsTagAttribute(description = "Property of list objects to be used to lookup for localised version of field label") +public void setListLabelKey(String listLabelKey) { +this.listLabelKey = listLabelKey; +} + @StrutsTagAttribute(description = "Property of list objects to get css class from") public void setListCssClass(String listCssClass) { this.listCssClass = listCssClass; http://git-wip-us.apache.org/repos/asf/struts/blob/90189362/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java -- diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java index 1f2ebb4..4972ff0 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java @@ -29,6 +29,7 @@ public abstract class AbstractListTag extends AbstractUITag { protected String list; protected String listKey; protected String listValue; +protected String listLabelKey; protected String listCssClass; protected String listCssStyle; protected String listTitle; @@ -40,6 +41,7 @@ public abstract class AbstractListTag extends AbstractUITag { listUIBean.setList(list); listUIBean.setListKey(listKey); listUIBean.setListValue(listValue); +listUIBean.setListLabelKey(listLabelKey); listUIBean.setListCssClass(listCssClass); listUIBean.setListCssStyle(listCssStyle); listUIBean.setListTitle(listTitle); @@ -57,6 +59,10 @@ public abstract class AbstractListTag extends AbstractUITag { this.listValue = listValue; } +public void setListLabelKey(String listLabelKey) { +this.listLabelKey = listLabelKey; +} + public void setListCssClass(String listCssClass) { this.listCssClass = listCssClass; }
[10/12] git commit: Removes optional valueKey to keep backward compatibility
Removes optional valueKey to keep backward compatibility Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/a2791a83 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/a2791a83 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/a2791a83 Branch: refs/heads/feature/WW-4295-localization Commit: a2791a8305666859d6484098fb597f93c94908bc Parents: 13269fa Author: Lukasz Lenart Authored: Fri Jun 27 12:55:13 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 12:55:13 2014 +0200 -- core/src/main/java/org/apache/struts2/components/ListUIBean.java | 2 -- 1 file changed, 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/a2791a83/core/src/main/java/org/apache/struts2/components/ListUIBean.java -- diff --git a/core/src/main/java/org/apache/struts2/components/ListUIBean.java b/core/src/main/java/org/apache/struts2/components/ListUIBean.java index c9f704a..1adfc2e 100644 --- a/core/src/main/java/org/apache/struts2/components/ListUIBean.java +++ b/core/src/main/java/org/apache/struts2/components/ListUIBean.java @@ -113,8 +113,6 @@ public abstract class ListUIBean extends UIBean { if (listValueKey != null) { listValueKey = stripExpressionIfAltSyntax(listValueKey); addParameter("listValueKey", listValueKey); -} else if (value instanceof Map) { -addParameter("listValueKey", "valueKey"); } if (listValue != null) {
[07/12] git commit: Merge remote-tracking branch 'abrin/feature-WW-4295-localization' into feature/WW-4295-localization
Merge remote-tracking branch 'abrin/feature-WW-4295-localization' into feature/WW-4295-localization Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/23498a33 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/23498a33 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/23498a33 Branch: refs/heads/feature/WW-4295-localization Commit: 23498a332119486a043e852366dfb73495a510d9 Parents: b78349a 6def514 Author: Lukasz Lenart Authored: Fri Jun 27 08:40:49 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 08:40:49 2014 +0200 -- .../java/org/apache/struts2/components/ListUIBean.java | 13 + 1 file changed, 13 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/23498a33/core/src/main/java/org/apache/struts2/components/ListUIBean.java -- diff --cc core/src/main/java/org/apache/struts2/components/ListUIBean.java index 11e59aa,69deae4..c9f704a --- a/core/src/main/java/org/apache/struts2/components/ListUIBean.java +++ b/core/src/main/java/org/apache/struts2/components/ListUIBean.java @@@ -48,8 -48,8 +48,9 @@@ import java.util.Map public abstract class ListUIBean extends UIBean { protected Object list; protected String listKey; + protected String listValueKey; protected String listValue; +protected String listLabelKey; protected String listCssClass; protected String listCssStyle; protected String listTitle;
[05/12] git commit: Extends blank app to demonstrate the new possibilities
Extends blank app to demonstrate the new possibilities Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b78349ad Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b78349ad Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b78349ad Branch: refs/heads/feature/WW-4295-localization Commit: b78349ad5dade8a47fb335f6ef18c13a36101842 Parents: 7e98fe7 Author: Lukasz Lenart Authored: Thu Mar 20 08:12:13 2014 +0100 Committer: Lukasz Lenart Committed: Thu Mar 20 08:12:13 2014 +0100 -- apps/blank/src/main/java/example/HelloWorld.java | 7 +++ apps/blank/src/main/java/example/YesNo.java | 5 + apps/blank/src/main/resources/example/package.properties | 2 ++ apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp | 2 ++ 4 files changed, 16 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/b78349ad/apps/blank/src/main/java/example/HelloWorld.java -- diff --git a/apps/blank/src/main/java/example/HelloWorld.java b/apps/blank/src/main/java/example/HelloWorld.java index d5268ca..73a5221 100644 --- a/apps/blank/src/main/java/example/HelloWorld.java +++ b/apps/blank/src/main/java/example/HelloWorld.java @@ -21,6 +21,9 @@ package example; +import java.util.Arrays; +import java.util.List; + /** * Set welcome message. */ @@ -58,4 +61,8 @@ public class HelloWorld extends ExampleSupport { public void setMessage(String message) { this.message = message; } + +public List getValues() { +return Arrays.asList(YesNo.values()); +} } http://git-wip-us.apache.org/repos/asf/struts/blob/b78349ad/apps/blank/src/main/java/example/YesNo.java -- diff --git a/apps/blank/src/main/java/example/YesNo.java b/apps/blank/src/main/java/example/YesNo.java new file mode 100644 index 000..d27ed7c --- /dev/null +++ b/apps/blank/src/main/java/example/YesNo.java @@ -0,0 +1,5 @@ +package example; + +public enum YesNo { +YES, NO +} http://git-wip-us.apache.org/repos/asf/struts/blob/b78349ad/apps/blank/src/main/resources/example/package.properties -- diff --git a/apps/blank/src/main/resources/example/package.properties b/apps/blank/src/main/resources/example/package.properties index c1f4b33..1ac0e71 100644 --- a/apps/blank/src/main/resources/example/package.properties +++ b/apps/blank/src/main/resources/example/package.properties @@ -3,3 +3,5 @@ requiredstring = ${getText(fieldName)} is required. password = Password username = User Name Missing.message = This feature is under construction. Please try again in the next interation. +test-yes=Yo +test-no=Nein http://git-wip-us.apache.org/repos/asf/struts/blob/b78349ad/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp -- diff --git a/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp b/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp index 938c761..f10fc02 100644 --- a/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp +++ b/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp @@ -24,5 +24,7 @@ + +
[04/12] git commit: Adds autogenerated files
Adds autogenerated files Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/7e98fe7a Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/7e98fe7a Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/7e98fe7a Branch: refs/heads/feature/WW-4295-localization Commit: 7e98fe7a731b44bb85375f9363465838803a0a16 Parents: 69df870 Author: Lukasz Lenart Authored: Thu Mar 20 08:08:50 2014 +0100 Committer: Lukasz Lenart Committed: Thu Mar 20 08:08:50 2014 +0100 -- core/src/site/resources/tags/checkboxlist.html | 8 core/src/site/resources/tags/doubleselect.html | 8 core/src/site/resources/tags/inputtransferselect.html | 8 core/src/site/resources/tags/optiontransferselect.html | 8 core/src/site/resources/tags/radio.html| 8 core/src/site/resources/tags/select.html | 8 core/src/site/resources/tags/updownselect.html | 8 7 files changed, 56 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/7e98fe7a/core/src/site/resources/tags/checkboxlist.html -- diff --git a/core/src/site/resources/tags/checkboxlist.html b/core/src/site/resources/tags/checkboxlist.html index 0ad3225..95e2e97 100644 --- a/core/src/site/resources/tags/checkboxlist.html +++ b/core/src/site/resources/tags/checkboxlist.html @@ -170,6 +170,14 @@ Please do not edit it directly. Property of list objects to get field value from + listLabelKey + false + + false + String + Property of list objects to be used to lookup for localised version of field label + + listTitle false http://git-wip-us.apache.org/repos/asf/struts/blob/7e98fe7a/core/src/site/resources/tags/doubleselect.html -- diff --git a/core/src/site/resources/tags/doubleselect.html b/core/src/site/resources/tags/doubleselect.html index 00a1558..becaf8b 100644 --- a/core/src/site/resources/tags/doubleselect.html +++ b/core/src/site/resources/tags/doubleselect.html @@ -458,6 +458,14 @@ Please do not edit it directly. Property of list objects to get field value from + listLabelKey + false + + false + String + Property of list objects to be used to lookup for localised version of field label + + listTitle false http://git-wip-us.apache.org/repos/asf/struts/blob/7e98fe7a/core/src/site/resources/tags/inputtransferselect.html -- diff --git a/core/src/site/resources/tags/inputtransferselect.html b/core/src/site/resources/tags/inputtransferselect.html index 4c33f7c..9f1a1e1 100644 --- a/core/src/site/resources/tags/inputtransferselect.html +++ b/core/src/site/resources/tags/inputtransferselect.html @@ -242,6 +242,14 @@ Please do not edit it directly. Property of list objects to get field value from + listLabelKey + false + + false + String + Property of list objects to be used to lookup for localised version of field label + + listTitle false http://git-wip-us.apache.org/repos/asf/struts/blob/7e98fe7a/core/src/site/resources/tags/optiontransferselect.html -
[03/12] git commit: Extends template to use the new field to localise value's label
Extends template to use the new field to localise value's label Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/69df8704 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/69df8704 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/69df8704 Branch: refs/heads/feature/WW-4295-localization Commit: 69df87047ab2a72c339a0ee320459757ba439f40 Parents: 9018936 Author: Lukasz Lenart Authored: Thu Mar 20 08:08:27 2014 +0100 Committer: Lukasz Lenart Committed: Thu Mar 20 08:08:27 2014 +0100 -- core/src/main/resources/template/simple/checkboxlist.ftl | 10 -- 1 file changed, 4 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/69df8704/core/src/main/resources/template/simple/checkboxlist.ftl -- diff --git a/core/src/main/resources/template/simple/checkboxlist.ftl b/core/src/main/resources/template/simple/checkboxlist.ftl index 9662e42..e2e569c 100644 --- a/core/src/main/resources/template/simple/checkboxlist.ftl +++ b/core/src/main/resources/template/simple/checkboxlist.ftl @@ -29,16 +29,14 @@ <#else> <#assign itemKey = stack.findValue('top')/> - <#if parameters.listValueKey??> +<#if parameters.listLabelKey??> <#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale file for it's localized value. This is then used as a label --> -<#assign itemValue = stack.findString(parameters.listValueKey)/> -<#-- FIXME: find a better way to get the value than a call to @s.text --> -<#assign itemValue><@s.text name="${itemValue}"/> +<#assign itemValue = struts.getText(stack.findString(parameters.listLabelKey))/> <#elseif parameters.listValue??> <#assign itemValue = stack.findString(parameters.listValue)?default("")/> -<#else> -<#assign itemValue = stack.findString('top')/> +<#else> + <#assign itemValue = stack.findString('top')/> <#if parameters.listCssClass??> <#if stack.findString(parameters.listCssClass)??>
[09/12] git commit: Adds missing tag attribute field
Adds missing tag attribute field Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/13269fa1 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/13269fa1 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/13269fa1 Branch: refs/heads/feature/WW-4295-localization Commit: 13269fa15f02409732ca51545141a40ae2f4680c Parents: ca230ab Author: Lukasz Lenart Authored: Fri Jun 27 12:54:44 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 12:54:44 2014 +0200 -- .../java/org/apache/struts2/views/jsp/ui/AbstractListTag.java | 6 ++ 1 file changed, 6 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/13269fa1/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java -- diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java index 4972ff0..9b96f4a 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java @@ -29,6 +29,7 @@ public abstract class AbstractListTag extends AbstractUITag { protected String list; protected String listKey; protected String listValue; +protected String listValueKey; protected String listLabelKey; protected String listCssClass; protected String listCssStyle; @@ -41,6 +42,7 @@ public abstract class AbstractListTag extends AbstractUITag { listUIBean.setList(list); listUIBean.setListKey(listKey); listUIBean.setListValue(listValue); +listUIBean.setListValueKey(listValueKey); listUIBean.setListLabelKey(listLabelKey); listUIBean.setListCssClass(listCssClass); listUIBean.setListCssStyle(listCssStyle); @@ -59,6 +61,10 @@ public abstract class AbstractListTag extends AbstractUITag { this.listValue = listValue; } +public void setListValueKey(String listValueKey) { +this.listValueKey = listValueKey; +} + public void setListLabelKey(String listLabelKey) { this.listLabelKey = listLabelKey; }
[11/12] git commit: Checks is ListValueKey was defined and returns value
Checks is ListValueKey was defined and returns value Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ed8a0b87 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ed8a0b87 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ed8a0b87 Branch: refs/heads/feature/WW-4295-localization Commit: ed8a0b87b29114ac5c99838e7d4cfc819ad71e43 Parents: a2791a8 Author: Lukasz Lenart Authored: Fri Jun 27 12:55:43 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 12:55:43 2014 +0200 -- core/src/main/resources/template/simple/select.ftl | 9 ++--- 1 file changed, 6 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/ed8a0b87/core/src/main/resources/template/simple/select.ftl -- diff --git a/core/src/main/resources/template/simple/select.ftl b/core/src/main/resources/template/simple/select.ftl index f4f27bf..dcb4b97 100644 --- a/core/src/main/resources/template/simple/select.ftl +++ b/core/src/main/resources/template/simple/select.ftl @@ -72,9 +72,12 @@ <#if parameters.listValueKey??> <#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale file for it's localized value. This is then used as a label --> - <#assign itemValue = stack.findString(parameters.listValueKey)/> - <#-- FIXME: find a better way to get the value than a call to @s.text --> - <#assign itemValue><@s.text name="${itemValue}"/> + <#assign valueKey = stack.findString(parameters.listValueKey) /> + <#if valueKey??> + <#assign itemValue = struts.getText(valueKey) /> + <#else> + <#assign itemValue = parameters.listValueKey /> + <#elseif parameters.listValue??> <#if stack.findString(parameters.listValue)??> <#assign itemValue = stack.findString(parameters.listValue)/>
[06/12] git commit: updating ListUIBean
updating ListUIBean updating java-backed bean Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/6def5145 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/6def5145 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/6def5145 Branch: refs/heads/feature/WW-4295-localization Commit: 6def514524e81c4af188b47b6694384eea3a46c6 Parents: 7f586d3 Author: adam brin Authored: Mon Mar 24 07:31:54 2014 -0700 Committer: adam brin Committed: Mon Mar 24 07:31:54 2014 -0700 -- .../java/org/apache/struts2/components/ListUIBean.java | 13 + 1 file changed, 13 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/6def5145/core/src/main/java/org/apache/struts2/components/ListUIBean.java -- diff --git a/core/src/main/java/org/apache/struts2/components/ListUIBean.java b/core/src/main/java/org/apache/struts2/components/ListUIBean.java index b1a4493..69deae4 100644 --- a/core/src/main/java/org/apache/struts2/components/ListUIBean.java +++ b/core/src/main/java/org/apache/struts2/components/ListUIBean.java @@ -48,6 +48,7 @@ import java.util.Map; public abstract class ListUIBean extends UIBean { protected Object list; protected String listKey; +protected String listValueKey; protected String listValue; protected String listCssClass; protected String listCssStyle; @@ -108,6 +109,13 @@ public abstract class ListUIBean extends UIBean { addParameter("listKey", "key"); } +if (listValueKey != null) { +listValueKey = stripExpressionIfAltSyntax(listValueKey); +addParameter("listValueKey", listValueKey); +} else if (value instanceof Map) { +addParameter("listValueKey", "valueKey"); +} + if (listValue != null) { listValue = stripExpressionIfAltSyntax(listValue); addParameter("listValue", listValue); @@ -147,6 +155,11 @@ public abstract class ListUIBean extends UIBean { this.listKey = listKey; } +@StrutsTagAttribute(description = " Property of list objects to get field value label from") +public void setListValueKey(String listValueKey) { +this.listValueKey = listValueKey; +} + @StrutsTagAttribute(description = "Property of list objects to get field content from") public void setListValue(String listValue) { this.listValue = listValue;
[01/12] git commit: [PATCH] First attempt at enabling value-labels to be pulled from Locale Files. Adding listValueKey attribute to checkboxList, radioMap, and select tags.
Repository: struts Updated Branches: refs/heads/feature/WW-4295-localization [created] d67fce1f2 [PATCH] First attempt at enabling value-labels to be pulled from Locale Files. Adding listValueKey attribute to checkboxList, radioMap, and select tags. Issues: This implementation uses the <@s.text> tag to handle the localization with an assignment. I presume this is less than idea, but I lack the knowledge of the Struts2 tag model that would suggest where to check for this on the valueStack or elsewhere. Example: public enum yesno { YES, NO; } <@s.radio name="yes no" list="#{yesno.values()}" valueKey="name()" /> +<#assign itemValue = stack.findString(parameters.listValueKey)/> +<#-- FIXME: find a better way to get the value than a call to @s.text --> +<#assign itemValue><@s.text name="${itemValue}"/> +<#elseif parameters.listValue??> <#assign itemValue = stack.findString(parameters.listValue)?default("")/> <#else> <#assign itemValue = stack.findString('top')/> http://git-wip-us.apache.org/repos/asf/struts/blob/7f586d39/core/src/main/resources/template/simple/radiomap.ftl -- diff --git a/core/src/main/resources/template/simple/radiomap.ftl b/core/src/main/resources/template/simple/radiomap.ftl index ab6d42c..183fd57 100644 --- a/core/src/main/resources/template/simple/radiomap.ftl +++ b/core/src/main/resources/template/simple/radiomap.ftl @@ -27,7 +27,13 @@ <#assign itemKey = stack.findValue('top')/> <#assign itemKeyStr = itemKey.toString() /> -<#if parameters.listValue??> +<#if parameters.listValueKey??> +<#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale + file for it's localized value. This is then used as a label --> +<#assign itemValue = stack.findString(parameters.listValueKey)/> +<#-- FIXME: find a better way to get the value than a call to @s.text --> +<#assign itemValue><@s.text name="${itemValue}"/> +<#elseif parameters.listValue??> <#assign itemValue = stack.findString(parameters.listValue)/> <#else> <#assign itemValue = stack.findString('top')/> http://git-wip-us.apache.org/repos/asf/struts/blob/7f586d39/core/src/main/resources/template/simple/select.ftl -- diff --git a/core/src/main/resources/template/simple/select.ftl b/core/src/main/resources/template/simple/select.ftl index 74277e6..f4f27bf 100644 --- a/core/src/main/resources/template/simple/select.ftl +++ b/core/src/main/resources/template/simple/select.ftl @@ -69,7 +69,13 @@ <#assign itemKey = stack.findValue('top')/> <#assign itemKeyStr = stack.findString('top')> -<#if parameters.listValue??> +<#if parameters.listValueKey??> + <#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale file for it's + localized value. This is then used as a label --> + <#assign itemValue = stack.findString(parameters.listValueKey)/> + <#-- FIXME: find a better way to get the value than a call to @s.text --> + <#assign itemValue><@s.text name="${itemValue}"/> +<#elseif parameters.listValue??> <#if stack.findString(parameters.listValue)??> <#assign itemValue = stack.findString(parameters.listValue)/> <#else>
[08/12] git commit: Adds auto-generated tags' info
Adds auto-generated tags' info Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ca230ab3 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ca230ab3 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ca230ab3 Branch: refs/heads/feature/WW-4295-localization Commit: ca230ab30fde249d8af17cc5f2ba83ebe142d364 Parents: 23498a3 Author: Lukasz Lenart Authored: Fri Jun 27 12:54:26 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 12:54:26 2014 +0200 -- core/src/site/resources/tags/checkboxlist.html | 8 core/src/site/resources/tags/doubleselect.html | 8 core/src/site/resources/tags/inputtransferselect.html | 8 core/src/site/resources/tags/optiontransferselect.html | 8 core/src/site/resources/tags/radio.html| 8 core/src/site/resources/tags/select.html | 8 core/src/site/resources/tags/updownselect.html | 8 7 files changed, 56 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/ca230ab3/core/src/site/resources/tags/checkboxlist.html -- diff --git a/core/src/site/resources/tags/checkboxlist.html b/core/src/site/resources/tags/checkboxlist.html index 95e2e97..1bcb2ea 100644 --- a/core/src/site/resources/tags/checkboxlist.html +++ b/core/src/site/resources/tags/checkboxlist.html @@ -194,6 +194,14 @@ Please do not edit it directly. Property of list objects to get field content from + listValueKey + false + + false + String +Property of list objects to get field value label from + + name false http://git-wip-us.apache.org/repos/asf/struts/blob/ca230ab3/core/src/site/resources/tags/doubleselect.html -- diff --git a/core/src/site/resources/tags/doubleselect.html b/core/src/site/resources/tags/doubleselect.html index becaf8b..674ecc2 100644 --- a/core/src/site/resources/tags/doubleselect.html +++ b/core/src/site/resources/tags/doubleselect.html @@ -482,6 +482,14 @@ Please do not edit it directly. Property of list objects to get field content from + listValueKey + false + + false + String +Property of list objects to get field value label from + + multiple false http://git-wip-us.apache.org/repos/asf/struts/blob/ca230ab3/core/src/site/resources/tags/inputtransferselect.html -- diff --git a/core/src/site/resources/tags/inputtransferselect.html b/core/src/site/resources/tags/inputtransferselect.html index 9f1a1e1..176e915 100644 --- a/core/src/site/resources/tags/inputtransferselect.html +++ b/core/src/site/resources/tags/inputtransferselect.html @@ -266,6 +266,14 @@ Please do not edit it directly. Property of list objects to get field content from + listValueKey + false + + false + String +Property of list objects to get field value label from + + multiple false http://git-wip-us.apache.org/repos/asf/struts/blob/ca230ab3/core/src/site/resources/tags/optiontransferselect.html -- diff --git a/core/src/site/resources/tags/optiontransferselect.html b/co
[30/50] git commit: Adds additional methods needed by ParametersInterceptor
Adds additional methods needed by ParametersInterceptor Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/3d77c348 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/3d77c348 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/3d77c348 Branch: refs/heads/feature/WW-4295-localization Commit: 3d77c348b15f438c5dcab9790daacfd4d43cd02b Parents: e8e5b51 Author: Lukasz Lenart Authored: Wed May 14 08:25:22 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 14 08:25:22 2014 +0200 -- .../xwork2/DefaultExcludedPatternsChecker.java | 19 +++ .../xwork2/ExcludedPatternsChecker.java | 35 2 files changed, 39 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/3d77c348/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java index 3860e57..eabd621 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java @@ -46,29 +46,14 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker { } } -/** - * Allows add additional excluded patterns during runtime - * - * @param commaDelimitedPatterns comma delimited string with patterns - */ public void addExcludedPatterns(String commaDelimitedPatterns) { addExcludedPatterns(TextParseUtil.commaDelimitedStringToSet(commaDelimitedPatterns)); } -/** - * Allows add additional excluded patterns during runtime - * - * @param additionalPatterns array of additional excluded patterns - */ public void addExcludedPatterns(String[] additionalPatterns) { addExcludedPatterns(new HashSet(Arrays.asList(additionalPatterns))); } -/** - * Allows add additional excluded patterns during runtime - * - * @param additionalPatterns set of additional patterns - */ public void addExcludedPatterns(Set additionalPatterns) { if (LOG.isTraceEnabled()) { LOG.trace("Adding additional excluded patterns [#0]", additionalPatterns); @@ -90,4 +75,8 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker { return IsExcluded.no(); } +public Set getExcludedPatterns() { +return excludedPatterns; +} + } http://git-wip-us.apache.org/repos/asf/struts/blob/3d77c348/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java index c4730ea..ac0ff6e 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java @@ -1,5 +1,6 @@ package com.opensymphony.xwork2; +import java.util.Set; import java.util.regex.Pattern; /** @@ -7,8 +8,42 @@ import java.util.regex.Pattern; */ public interface ExcludedPatternsChecker { +/** + * Checks if value matches any of patterns on exclude list + * + * @param value to check + * @return object containing result of matched pattern and pattern itself + */ public IsExcluded isExcluded(String value); +/** + * Allows add additional excluded patterns during runtime + * + * @param commaDelimitedPatterns comma delimited string with patterns + */ +public void addExcludedPatterns(String commaDelimitedPatterns); + +/** + * Allows add additional excluded patterns during runtime + * + * @param additionalPatterns array of additional excluded patterns + */ +public void addExcludedPatterns(String[] additionalPatterns); + +/** + * Allows add additional excluded patterns during runtime + * + * @param additionalPatterns set of additional patterns + */ +public void addExcludedPatterns(Set additionalPatterns); + +/** + * Allow access list of all defined excluded patterns + * + * @return set of excluded patterns + */ +public Set getExcludedPatterns(); + public final static class IsExcluded { private final boolean excluded;
[39/50] git commit: Adds ability to exclude whole packages based on regex
Adds ability to exclude whole packages based on regex Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/dba9da3a Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/dba9da3a Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/dba9da3a Branch: refs/heads/feature/WW-4295-localization Commit: dba9da3abf1b5e6f59251b5a6d948c5bc502c9af Parents: 8a93df1 Author: Lukasz Lenart Authored: Fri May 23 09:20:07 2014 +0200 Committer: Lukasz Lenart Committed: Fri May 23 09:20:07 2014 +0200 -- .../xwork2/ognl/SecurityMemberAccess.java | 20 .../xwork2/ognl/SecurityMemberAccessTest.java | 19 +++ 2 files changed, 39 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/dba9da3a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index c14d8b9..39f882a 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -40,6 +40,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess { private Set excludeProperties = Collections.emptySet(); private Set acceptProperties = Collections.emptySet(); private Set> excludedClasses = Collections.emptySet(); +private Set excludedPackageNamePatterns = Collections.emptySet(); public SecurityMemberAccess(boolean method) { super(false); @@ -52,6 +53,13 @@ public class SecurityMemberAccess extends DefaultMemberAccess { @Override public boolean isAccessible(Map context, Object target, Member member, String propertyName) { +if (isPackageExcluded(target.getClass().getPackage(), member.getDeclaringClass().getPackage())) { +if (LOG.isDebugEnabled()) { +LOG.debug("Target package [#0] and member package [#1] are excluded!", target, member); +} +return false; +} + if (isClassExcluded(target.getClass(), member.getDeclaringClass())) { if (LOG.isDebugEnabled()) { LOG.debug("Target class [#0] and member type [#1] are excluded!", target, member); @@ -84,6 +92,15 @@ public class SecurityMemberAccess extends DefaultMemberAccess { return isAcceptableProperty(propertyName); } +protected boolean isPackageExcluded(Package targetPackage, Package memberPackage) { +for (Pattern pattern : excludedPackageNamePatterns) { +if (pattern.matcher(targetPackage.getName()).matches() || pattern.matcher(memberPackage.getName()).matches()) { +return true; +} +} +return false; +} + protected boolean isClassExcluded(Class targetClass, Class declaringClass) { if (targetClass == Object.class || declaringClass == Object.class) { return true; @@ -141,4 +158,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess { this.excludedClasses = excludedClasses; } +public void setExcludedPackageNamePatterns(Set excludedPackageNamePatterns) { +this.excludedPackageNamePatterns = excludedPackageNamePatterns; +} } http://git-wip-us.apache.org/repos/asf/struts/blob/dba9da3a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java index 1c14cb2..748d5a9 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java @@ -7,6 +7,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.regex.Pattern; public class SecurityMemberAccessTest extends TestCase { @@ -171,6 +172,24 @@ public class SecurityMemberAccessTest extends TestCase { assertFalse("barLogic() from BarInterface is accessible!!!", accessible); } +public void testPackageExclusion() throws Exception { +// given +SecurityMemberAccess sma = new SecurityMemberAccess(false); + +Set excluded = new HashSet(); +excluded.add(Pattern.compile("^" + FooBar.class.getPackage().getName().replaceAll("\\.", ".") + ".*")); +sma.setExcludedPackageNamePatterns(excluded); + +
[36/50] git commit: Cleans up after moving to package
Cleans up after moving to package Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/97ef7b50 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/97ef7b50 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/97ef7b50 Branch: refs/heads/feature/WW-4295-localization Commit: 97ef7b50bbf12dcc3e4127c71487ec37f5b7132d Parents: ec98c8a Author: Lukasz Lenart Authored: Mon May 19 10:58:45 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 19 10:58:45 2014 +0200 -- .../org/apache/struts2/config/DefaultBeanSelectionProvider.java | 2 +- .../java/org/apache/struts2/interceptor/CookieInterceptor.java| 3 +-- core/src/main/resources/struts-default.xml| 2 +- .../test/java/org/apache/struts2/TestConfigurationProvider.java | 2 +- .../src/main/java/com/opensymphony/xwork2/XWorkConstants.java | 2 ++ .../xwork2/config/providers/XWorkConfigurationProvider.java | 2 +- .../opensymphony/xwork2/interceptor/ParametersInterceptor.java| 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/97ef7b50/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index 5c29e78..be4fa82 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -22,7 +22,7 @@ package org.apache.struts2.config; import com.opensymphony.xwork2.ActionProxyFactory; -import com.opensymphony.xwork2.ExcludedPatternsChecker; +import com.opensymphony.xwork2.security.ExcludedPatternsChecker; import com.opensymphony.xwork2.FileManager; import com.opensymphony.xwork2.FileManagerFactory; import com.opensymphony.xwork2.LocaleProvider; http://git-wip-us.apache.org/repos/asf/struts/blob/97ef7b50/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java -- diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java index dbe47ce..ca195fa 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java @@ -25,13 +25,12 @@ import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import com.opensymphony.xwork2.ExcludedPatternsChecker; +import com.opensymphony.xwork2.security.ExcludedPatternsChecker; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsConstants; import javax.servlet.http.Cookie; import java.util.Collections; http://git-wip-us.apache.org/repos/asf/struts/blob/97ef7b50/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index ecfa5cf..2fc16c9 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -144,7 +144,7 @@ - + http://git-wip-us.apache.org/repos/asf/struts/blob/97ef7b50/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java -- diff --git a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java index d9da6c4..f9eb4c7 100644 --- a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java +++ b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java @@ -25,7 +25,7 @@ import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.DefaultActionProxyFactory; import com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker; -import com.opensymphony.xwork2.ExcludedPatternsChecker; +import com.opensymphony.xwork2.security.ExcludedPatternsChecker; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony
[16/50] git commit: Adds logging of excluded classes
Adds logging of excluded classes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/62ee6b10 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/62ee6b10 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/62ee6b10 Branch: refs/heads/feature/WW-4295-localization Commit: 62ee6b104ae871807ff073eb206b5f3ec549a302 Parents: a5946d0 Author: Lukasz Lenart Authored: Mon May 5 21:33:16 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 5 21:33:16 2014 +0200 -- .../com/opensymphony/xwork2/ognl/SecurityMemberAccess.java | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/62ee6b10/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index a35f68b..c14d8b9 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -15,13 +15,14 @@ */ package com.opensymphony.xwork2.ognl; +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; import ognl.DefaultMemberAccess; import java.lang.reflect.Member; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Collections; -import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -33,6 +34,8 @@ import java.util.regex.Pattern; */ public class SecurityMemberAccess extends DefaultMemberAccess { +private static final Logger LOG = LoggerFactory.getLogger(SecurityMemberAccess.class); + private final boolean allowStaticMethodAccess; private Set excludeProperties = Collections.emptySet(); private Set acceptProperties = Collections.emptySet(); @@ -50,6 +53,9 @@ public class SecurityMemberAccess extends DefaultMemberAccess { @Override public boolean isAccessible(Map context, Object target, Member member, String propertyName) { if (isClassExcluded(target.getClass(), member.getDeclaringClass())) { +if (LOG.isDebugEnabled()) { +LOG.debug("Target class [#0] and member type [#1] are excluded!", target, member); +} return false; }
[20/50] git commit: Merge branch 'master' into develop
Merge branch 'master' into develop Conflicts: apps/blank/pom.xml apps/jboss-blank/pom.xml apps/mailreader/pom.xml apps/pom.xml apps/portlet/pom.xml apps/rest-showcase/pom.xml apps/showcase/pom.xml archetypes/pom.xml archetypes/struts2-archetype-angularjs/pom.xml archetypes/struts2-archetype-blank/pom.xml archetypes/struts2-archetype-convention/pom.xml archetypes/struts2-archetype-dbportlet/pom.xml archetypes/struts2-archetype-plugin/pom.xml archetypes/struts2-archetype-portlet/pom.xml archetypes/struts2-archetype-starter/pom.xml assembly/pom.xml bundles/admin/pom.xml bundles/demo/pom.xml bundles/pom.xml core/pom.xml plugins/cdi/pom.xml plugins/codebehind/pom.xml plugins/config-browser/pom.xml plugins/convention/pom.xml plugins/dojo/pom.xml plugins/dwr/pom.xml plugins/embeddedjsp/pom.xml plugins/gxp/pom.xml plugins/jasperreports/pom.xml plugins/javatemplates/pom.xml plugins/jfreechart/pom.xml plugins/jsf/pom.xml plugins/json/pom.xml plugins/junit/pom.xml plugins/osgi/pom.xml plugins/oval/pom.xml plugins/pell-multipart/pom.xml plugins/plexus/pom.xml plugins/pom.xml plugins/portlet-tiles/pom.xml plugins/portlet/pom.xml plugins/rest/pom.xml plugins/sitegraph/pom.xml plugins/sitemesh/pom.xml plugins/spring/pom.xml plugins/struts1/pom.xml plugins/testng/pom.xml plugins/tiles/pom.xml plugins/tiles3/pom.xml pom.xml xwork-core/pom.xml Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/63897e83 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/63897e83 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/63897e83 Branch: refs/heads/feature/WW-4295-localization Commit: 63897e83d98b4844982c2d96c3d20b4216ece28a Parents: 086c0a0 d2663ce Author: Lukasz Lenart Authored: Thu May 8 22:06:00 2014 +0200 Committer: Lukasz Lenart Committed: Thu May 8 22:06:00 2014 +0200 -- .../struts2/interceptor/CookieInterceptor.java | 45 +++-- .../interceptor/CookieInterceptorTest.java | 53 2 files changed, 82 insertions(+), 16 deletions(-) --
[24/50] git commit: Cleans up imports
Cleans up imports Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/9884c49f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/9884c49f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/9884c49f Branch: refs/heads/feature/WW-4295-localization Commit: 9884c49fd0d4683d3376070bc75d88a4afcb6a25 Parents: 4577e5e Author: Lukasz Lenart Authored: Mon May 12 08:26:50 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 12 08:26:50 2014 +0200 -- .../xwork2/interceptor/ParametersInterceptorTest.java | 3 --- 1 file changed, 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/9884c49f/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java index 359618f..a2aa92b 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java @@ -18,7 +18,6 @@ package com.opensymphony.xwork2.interceptor; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.ExcludedPatterns; import com.opensymphony.xwork2.ModelDrivenAction; import com.opensymphony.xwork2.SimpleAction; import com.opensymphony.xwork2.TestBean; @@ -47,12 +46,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.regex.Pattern; /**
[22/50] git commit: Converts class with patterns into Struts bean
Converts class with patterns into Struts bean Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/65c023b6 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/65c023b6 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/65c023b6 Branch: refs/heads/feature/WW-4295-localization Commit: 65c023b6f3e848fae13135ee90c101a0d0e2f262 Parents: 08b44fd Author: Lukasz Lenart Authored: Mon May 12 08:26:12 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 12 08:26:12 2014 +0200 -- core/src/main/resources/struts-default.xml | 4 + .../opensymphony/xwork2/ExcludedPatterns.java | 22 --- .../xwork2/ExcludedPatternsChecker.java | 135 +++ 3 files changed, 139 insertions(+), 22 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/65c023b6/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 1f37ea2..554a8ba 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -144,6 +144,10 @@ + + + + http://git-wip-us.apache.org/repos/asf/struts/blob/65c023b6/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatterns.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatterns.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatterns.java deleted file mode 100644 index b618a52..000 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatterns.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.opensymphony.xwork2; - -/** - * ExcludedPatterns contains hard-coded patterns that must be rejected by {@link com.opensymphony.xwork2.interceptor.ParametersInterceptor} - * and partially in CookInterceptor - */ -public class ExcludedPatterns { - -public static final String CLASS_ACCESS_PATTERN = "(.*\\.|^|.*|\\[('|\"))class(\\.|('|\")]|\\[).*"; - -public static final String[] EXCLUDED_PATTERNS = { -CLASS_ACCESS_PATTERN, -"^dojo\\..*", -"^struts\\..*", -"^session\\..*", -"^request\\..*", -"^application\\..*", -"^servlet(Request|Response)\\..*", -"^parameters\\..*" -}; - -} http://git-wip-us.apache.org/repos/asf/struts/blob/65c023b6/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java new file mode 100644 index 000..ee3eea6 --- /dev/null +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java @@ -0,0 +1,135 @@ +package com.opensymphony.xwork2; + +import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.TextParseUtil; +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Pattern; + +/** + * Used across different interceptors to check if given string matches one of the excluded patterns. + * User has two options to change its behaviour: + * - define new set of patterns with + * - override this class and use then extension point + * to inject it in appropriated places + */ +public class ExcludedPatternsChecker { + +private static final Logger LOG = LoggerFactory.getLogger(ExcludedPatternsChecker.class); + +public static final String[] EXCLUDED_PATTERNS = { +"(.*\\.|^|.*|\\[('|\"))class(\\.|('|\")]|\\[).*", +"^dojo\\..*", +"^struts\\..*", +"^session\\..*", +"^request\\..*", +"^application\\..*", +"^servlet(Request|Response)\\..*", +"^parameters\\..*" +}; + +private Set excludedPatterns; + +public ExcludedPatternsChecker() { +excludedPatterns = new HashSet(); +for (String pattern : EXCLUDED_PATTERNS) { +excludedPatterns.add(Pattern.compile(pattern)); +} +} + +@Inject(value = XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS, required = false) +public void setOverrideExcludePatterns(String excludePatterns) { +if (LOG.isWarnEnabled()) { +LOG.warn("Overriding [#0] with [#1], be aware that this can affect safety of your application!", +XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS, excludePatterns); +
[34/50] git commit: Moves security related classes to security package
Moves security related classes to security package Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/7faf91ab Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/7faf91ab Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/7faf91ab Branch: refs/heads/feature/WW-4295-localization Commit: 7faf91abe1987aa812655860b4e7ef1ad2f93644 Parents: 83b76b0 Author: Lukasz Lenart Authored: Mon May 19 09:59:23 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 19 09:59:23 2014 +0200 -- core/src/main/resources/struts-default.xml | 2 +- .../struts2/TestConfigurationProvider.java | 2 +- .../interceptor/CookieInterceptorTest.java | 2 +- .../xwork2/DefaultExcludedPatternsChecker.java | 82 --- .../providers/XWorkConfigurationProvider.java | 2 +- .../DefaultExcludedPatternsChecker.java | 83 .../security/ExcludedPatternsChecker.java | 82 +++ 7 files changed, 169 insertions(+), 86 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/7faf91ab/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 2d74b4f..ecfa5cf 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -144,7 +144,7 @@ - + http://git-wip-us.apache.org/repos/asf/struts/blob/7faf91ab/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java -- diff --git a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java index 9323f02..d9da6c4 100644 --- a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java +++ b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java @@ -24,7 +24,7 @@ package org.apache.struts2; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.DefaultActionProxyFactory; -import com.opensymphony.xwork2.DefaultExcludedPatternsChecker; +import com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker; import com.opensymphony.xwork2.ExcludedPatternsChecker; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.Configuration; http://git-wip-us.apache.org/repos/asf/struts/blob/7faf91ab/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java -- diff --git a/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java index 1f642f5..a531a69 100644 --- a/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java @@ -27,7 +27,7 @@ import java.util.Map; import javax.servlet.http.Cookie; -import com.opensymphony.xwork2.DefaultExcludedPatternsChecker; +import com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker; import com.opensymphony.xwork2.mock.MockActionInvocation; import org.easymock.MockControl; import org.springframework.mock.web.MockHttpServletRequest; http://git-wip-us.apache.org/repos/asf/struts/blob/7faf91ab/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java deleted file mode 100644 index eabd621..000 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultExcludedPatternsChecker.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.opensymphony.xwork2; - -import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.util.TextParseUtil; -import com.opensymphony.xwork2.util.logging.Logger; -import com.opensymphony.xwork2.util.logging.LoggerFactory; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; -import java.util.regex.Pattern; - -public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker { - -private static final Logger LOG = LoggerFactory.getLogger(DefaultExcludedPatternsChecker.class); - -public static final String[] EXCLUDED_PATTERNS = { -"(.*\\.|^|.*|\\[('|\"))class(\\.|('|\")]|\\[).*", -"^dojo\\..*", -"^struts\\..*", -"^session\\..*", -
[13/50] git commit: Adds more use cases
Adds more use cases Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ba0ac0df Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ba0ac0df Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ba0ac0df Branch: refs/heads/feature/WW-4295-localization Commit: ba0ac0dfd47c768661fcd5fa12bb00af851eb548 Parents: b3ca9ea Author: Lukasz Lenart Authored: Sun May 4 11:58:08 2014 +0200 Committer: Lukasz Lenart Committed: Sun May 4 11:58:08 2014 +0200 -- .../xwork2/ognl/SecurityMemberAccess.java | 4 +- .../xwork2/ognl/SecurityMemberAccessTest.java | 84 +++- 2 files changed, 83 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/ba0ac0df/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index 7fe77c3..a35f68b 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -49,10 +49,10 @@ public class SecurityMemberAccess extends DefaultMemberAccess { @Override public boolean isAccessible(Map context, Object target, Member member, String propertyName) { - if (isClassExcluded(target.getClass(), member.getDeclaringClass())) { return false; } + boolean allow = true; int modifiers = member.getModifiers(); if (Modifier.isStatic(modifiers)) { @@ -83,7 +83,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess { return true; } for (Class excludedClass : excludedClasses) { -if (excludedClass.isAssignableFrom(targetClass) || declaringClass.isAssignableFrom(excludedClass)) { +if (targetClass.isAssignableFrom(excludedClass) || declaringClass.isAssignableFrom(excludedClass)) { return true; } } http://git-wip-us.apache.org/repos/asf/struts/blob/ba0ac0df/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java index 4ccc831..1c14cb2 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java @@ -84,7 +84,7 @@ public class SecurityMemberAccessTest extends TestCase { SecurityMemberAccess sma = new SecurityMemberAccess(false); String propertyName = "barLogic"; -Member member = FooBar.class.getMethod("barLogic"); +Member member = BarInterface.class.getMethod(propertyName); Set> excluded = new HashSet>(); excluded.add(BarInterface.class); @@ -97,9 +97,83 @@ public class SecurityMemberAccessTest extends TestCase { assertFalse("barLogic() from BarInterface is accessible!!!", accessible); } +public void testMiddleOfInheritanceExclusion1() throws Exception { +// given +SecurityMemberAccess sma = new SecurityMemberAccess(false); + +String propertyName = "fooLogic"; +Member member = FooBar.class.getMethod(propertyName); + +Set> excluded = new HashSet>(); +excluded.add(BarInterface.class); +sma.setExcludedClasses(excluded); + +// when +boolean accessible = sma.isAccessible(context, target, member, propertyName); + +// then +assertTrue("fooLogic() from FooInterface isn't accessible!!!", accessible); +} + +public void testMiddleOfInheritanceExclusion2() throws Exception { +// given +SecurityMemberAccess sma = new SecurityMemberAccess(false); + +String propertyName = "barLogic"; +Member member = BarInterface.class.getMethod(propertyName); + +Set> excluded = new HashSet>(); +excluded.add(BarInterface.class); +sma.setExcludedClasses(excluded); + +// when +boolean accessible = sma.isAccessible(context, target, member, propertyName); + +// then +assertFalse("barLogic() from BarInterface is accessible!!!", accessible); +} + +public void testMiddleOfInheritanceExclusion3() throws Exception { +// given +SecurityMemberAccess sma = new SecurityMemberAccess(false); + +String propertyName = "barLogic"; +Me
[27/50] git commit: Extracts interface to simplify implementation by users
Extracts interface to simplify implementation by users Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/bfbc4c04 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/bfbc4c04 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/bfbc4c04 Branch: refs/heads/feature/WW-4295-localization Commit: bfbc4c04e007393986f374a02dfb7ded23bc9a05 Parents: ba1850a Author: Lukasz Lenart Authored: Tue May 13 20:29:21 2014 +0200 Committer: Lukasz Lenart Committed: Tue May 13 20:29:21 2014 +0200 -- core/src/main/resources/struts-default.xml | 2 +- .../interceptor/CookieInterceptorTest.java | 20 ++--- .../xwork2/DefaultExcludedPatternsChecker.java | 93 .../xwork2/ExcludedPatternsChecker.java | 92 +-- 4 files changed, 106 insertions(+), 101 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/bfbc4c04/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 554a8ba..f2fb922 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -144,7 +144,7 @@ - + http://git-wip-us.apache.org/repos/asf/struts/blob/bfbc4c04/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java -- diff --git a/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java index 2bbaef9..1f642f5 100644 --- a/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java @@ -27,7 +27,7 @@ import java.util.Map; import javax.servlet.http.Cookie; -import com.opensymphony.xwork2.ExcludedPatternsChecker; +import com.opensymphony.xwork2.DefaultExcludedPatternsChecker; import com.opensymphony.xwork2.mock.MockActionInvocation; import org.easymock.MockControl; import org.springframework.mock.web.MockHttpServletRequest; @@ -66,7 +66,7 @@ public class CookieInterceptorTest extends StrutsInternalTestCase { // by default the interceptor doesn't accept any cookies CookieInterceptor interceptor = new CookieInterceptor(); -interceptor.setExcludedPatternsChecker(new ExcludedPatternsChecker()); +interceptor.setExcludedPatternsChecker(new DefaultExcludedPatternsChecker()); interceptor.intercept(invocation); @@ -102,7 +102,7 @@ public class CookieInterceptorTest extends StrutsInternalTestCase { actionInvocationControl.replay(); CookieInterceptor interceptor = new CookieInterceptor(); -interceptor.setExcludedPatternsChecker(new ExcludedPatternsChecker()); +interceptor.setExcludedPatternsChecker(new DefaultExcludedPatternsChecker()); interceptor.setCookiesName("*"); interceptor.setCookiesValue("*"); interceptor.intercept(invocation); @@ -144,7 +144,7 @@ public class CookieInterceptorTest extends StrutsInternalTestCase { actionInvocationControl.replay(); CookieInterceptor interceptor = new CookieInterceptor(); -interceptor.setExcludedPatternsChecker(new ExcludedPatternsChecker()); +interceptor.setExcludedPatternsChecker(new DefaultExcludedPatternsChecker()); interceptor.setCookiesName("cookie1, cookie2, cookie3"); interceptor.setCookiesValue("cookie1value, cookie2value, cookie3value"); interceptor.intercept(invocation); @@ -185,7 +185,7 @@ public class CookieInterceptorTest extends StrutsInternalTestCase { actionInvocationControl.replay(); CookieInterceptor interceptor = new CookieInterceptor(); -interceptor.setExcludedPatternsChecker(new ExcludedPatternsChecker()); +interceptor.setExcludedPatternsChecker(new DefaultExcludedPatternsChecker()); interceptor.setCookiesName("cookie1, cookie3"); interceptor.setCookiesValue("cookie1value, cookie2value, cookie3value"); interceptor.intercept(invocation); @@ -226,7 +226,7 @@ public class CookieInterceptorTest extends StrutsInternalTestCase { actionInvocationControl.replay(); CookieInterceptor interceptor = new CookieInterceptor(); -interceptor.setExcludedPatternsChecker(new ExcludedPatternsChecker()); +interceptor.setExcludedPatternsChecker(new DefaultExcludedPatternsChecker()); interceptor.setCookiesName("cookie1, cookie3"); interceptor.setCookiesValue("*"); interceptor.intercept(invocation); @@ -267,7 +267,7
[04/50] git commit: Renames excluded properties to excluded classes
Renames excluded properties to excluded classes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d5bd607c Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d5bd607c Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d5bd607c Branch: refs/heads/feature/WW-4295-localization Commit: d5bd607c6fd0cbbf12e75492e7333439758446ea Parents: c778297 Author: Lukasz Lenart Authored: Sat May 3 20:13:10 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:13:10 2014 +0200 -- .../src/main/java/com/opensymphony/xwork2/XWorkConstants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/d5bd607c/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java index 1894372..dfbf6d5 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java @@ -17,6 +17,6 @@ public final class XWorkConstants { public static final String RELOAD_XML_CONFIGURATION = "reloadXmlConfiguration"; public static final String ALLOW_STATIC_METHOD_ACCESS = "allowStaticMethodAccess"; public static final String XWORK_LOGGER_FACTORY = "xwork.loggerFactory"; -public static final String OGNL_EXCLUDED_PROPERTIES = "ognlExcludedProperties"; +public static final String OGNL_EXCLUDED_CLASSES = "ognlExcludedClasses"; }
[40/50] git commit: Ties excluding packages into Struts DI mechanism
Ties excluding packages into Struts DI mechanism Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4ee18f96 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4ee18f96 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4ee18f96 Branch: refs/heads/feature/WW-4295-localization Commit: 4ee18f96bc2d401f9007c5fd458c47b7ae4ff35d Parents: dba9da3 Author: Lukasz Lenart Authored: Fri May 23 09:58:33 2014 +0200 Committer: Lukasz Lenart Committed: Fri May 23 09:58:33 2014 +0200 -- .../java/org/apache/struts2/StrutsConstants.java | 3 ++- .../config/DefaultBeanSelectionProvider.java | 3 +++ core/src/main/resources/struts-default.xml | 2 ++ .../com/opensymphony/xwork2/XWorkConstants.java| 2 ++ .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 17 - .../opensymphony/xwork2/ognl/OgnlValueStack.java | 1 + 6 files changed, 26 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/4ee18f96/core/src/main/java/org/apache/struts2/StrutsConstants.java -- diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index 8c0c5ce..dd08993 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -282,8 +282,9 @@ public final class StrutsConstants { /** Allows override default DispatcherErrorHandler **/ public static final String STRUTS_DISPATCHER_ERROR_HANDLER = "struts.dispatcher.errorHandler"; -/** Comma delimited set of excluded classes which cannot be accessed via expressions **/ +/** Comma delimited set of excluded classes and package names which cannot be accessed via expressions **/ public static final String STRUTS_EXCLUDED_CLASSES = "struts.excludedClasses"; +public static final String STRUTS_EXCLUDED_PACKAGE_NAME_PATTERNS = "struts.excludedPackageNamePatterns"; /** Dedicated services to check if passed string is excluded/accepted **/ public static final String STRUTS_EXCLUDED_PATTERNS_CHECKER = "struts.excludedPatterns.checker"; http://git-wip-us.apache.org/repos/asf/struts/blob/4ee18f96/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index 4334d3c..a671133 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -403,7 +403,10 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider convertIfExist(props, StrutsConstants.STRUTS_ENABLE_OGNL_EVAL_EXPRESSION, XWorkConstants.ENABLE_OGNL_EVAL_EXPRESSION); convertIfExist(props, StrutsConstants.STRUTS_ALLOW_STATIC_METHOD_ACCESS, XWorkConstants.ALLOW_STATIC_METHOD_ACCESS); convertIfExist(props, StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, XWorkConstants.RELOAD_XML_CONFIGURATION); + convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_CLASSES, XWorkConstants.OGNL_EXCLUDED_CLASSES); +convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_PACKAGE_NAME_PATTERNS, XWorkConstants.OGNL_EXCLUDED_PACKAGE_NAME_PATTERNS); + convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_EXCLUDED_PATTERNS, XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS); convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_ACCEPTED_PATTERNS, XWorkConstants.OVERRIDE_ACCEPTED_PATTERNS); http://git-wip-us.apache.org/repos/asf/struts/blob/4ee18f96/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index a1aa63f..0275a48 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -39,6 +39,8 @@ + + http://git-wip-us.apache.org/repos/asf/struts/blob/4ee18f96/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java index b846ac0..830df78 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstant
[41/50] git commit: Uses WARN to report if package or class is excluded
Uses WARN to report if package or class is excluded Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5a5af1b5 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5a5af1b5 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5a5af1b5 Branch: refs/heads/feature/WW-4295-localization Commit: 5a5af1b5879a9865aca03c70ae5bd6f7a3473f7b Parents: 4ee18f9 Author: Lukasz Lenart Authored: Fri May 23 09:58:52 2014 +0200 Committer: Lukasz Lenart Committed: Fri May 23 09:58:52 2014 +0200 -- .../com/opensymphony/xwork2/ognl/SecurityMemberAccess.java | 8 1 file changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/5a5af1b5/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index 39f882a..d0862e7 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -54,15 +54,15 @@ public class SecurityMemberAccess extends DefaultMemberAccess { @Override public boolean isAccessible(Map context, Object target, Member member, String propertyName) { if (isPackageExcluded(target.getClass().getPackage(), member.getDeclaringClass().getPackage())) { -if (LOG.isDebugEnabled()) { -LOG.debug("Target package [#0] and member package [#1] are excluded!", target, member); +if (LOG.isWarnEnabled()) { +LOG.warn("Package of target [#0] or package of member [#1] are excluded!", target, member); } return false; } if (isClassExcluded(target.getClass(), member.getDeclaringClass())) { -if (LOG.isDebugEnabled()) { -LOG.debug("Target class [#0] and member type [#1] are excluded!", target, member); +if (LOG.isWarnEnabled()) { +LOG.warn("Target class [#0] or declaring class of member type [#1] are excluded!", target, member); } return false; }
[15/50] git commit: Merge branch 'develop' into feature/exclude-object-class
Merge branch 'develop' into feature/exclude-object-class Conflicts: xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/a5946d08 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/a5946d08 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/a5946d08 Branch: refs/heads/feature/WW-4295-localization Commit: a5946d0814b6245f1e83e4ff8e5f337b045991ae Parents: ba0ac0d 086c0a0 Author: Lukasz Lenart Authored: Mon May 5 06:43:31 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 5 06:43:31 2014 +0200 -- .../struts2/interceptor/CookieInterceptor.java | 74 +++- core/src/main/resources/struts-default.xml | 8 +-- .../interceptor/CookieInterceptorTest.java | 66 + plugins/rest/pom.xml| 2 +- pom.xml | 3 +- src/site/resources/archetype-catalog.xml| 12 ++-- .../opensymphony/xwork2/ExcludedPatterns.java | 22 ++ .../interceptor/ParametersInterceptor.java | 2 +- .../opensymphony/xwork2/mock/MockResult.java| 2 + .../interceptor/ParametersInterceptorTest.java | 68 ++ 10 files changed, 242 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/a5946d08/core/src/main/resources/struts-default.xml -- http://git-wip-us.apache.org/repos/asf/struts/blob/a5946d08/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java -- diff --cc xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index e09ab54,c73b057..6de6aad --- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@@ -485,9 -507,8 +485,9 @@@ public class ParametersInterceptor exte public void setExcludeParams(String commaDelim) { Collection excludePatterns = ArrayUtils.asCollection(commaDelim); if (excludePatterns != null) { +excludeParams = new HashSet(); for (String pattern : excludePatterns) { - excludeParams.add(Pattern.compile(pattern)); + excludeParams.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE)); } } } http://git-wip-us.apache.org/repos/asf/struts/blob/a5946d08/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java --
[32/50] git commit: Adds new dependency to allow tests pass
Adds new dependency to allow tests pass Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d1d81f8a Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d1d81f8a Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d1d81f8a Branch: refs/heads/feature/WW-4295-localization Commit: d1d81f8a77e05ade18d67571816510d6655cee1e Parents: 5ec47b1 Author: Lukasz Lenart Authored: Wed May 14 08:26:27 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 14 08:26:27 2014 +0200 -- .../xwork2/config/providers/XWorkConfigurationProvider.java | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/d1d81f8a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java index 0d48999..c341d98 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java @@ -2,9 +2,11 @@ package com.opensymphony.xwork2.config.providers; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.DefaultActionProxyFactory; +import com.opensymphony.xwork2.DefaultExcludedPatternsChecker; import com.opensymphony.xwork2.DefaultLocaleProvider; import com.opensymphony.xwork2.DefaultTextProvider; import com.opensymphony.xwork2.DefaultUnknownHandlerManager; +import com.opensymphony.xwork2.ExcludedPatternsChecker; import com.opensymphony.xwork2.FileManager; import com.opensymphony.xwork2.FileManagerFactory; import com.opensymphony.xwork2.LocaleProvider; @@ -168,7 +170,11 @@ public class XWorkConfigurationProvider implements ConfigurationProvider { .factory(ArrayConverter.class, Scope.SINGLETON) .factory(DateConverter.class, Scope.SINGLETON) .factory(NumberConverter.class, Scope.SINGLETON) -.factory(StringConverter.class, Scope.SINGLETON); +.factory(StringConverter.class, Scope.SINGLETON) + +.factory(ExcludedPatternsChecker.class, DefaultExcludedPatternsChecker.class, Scope.DEFAULT) +; + props.setProperty(XWorkConstants.DEV_MODE, Boolean.FALSE.toString()); props.setProperty(XWorkConstants.LOG_MISSING_PROPERTIES, Boolean.FALSE.toString()); props.setProperty(XWorkConstants.ENABLE_OGNL_EXPRESSION_CACHE, Boolean.TRUE.toString());
[10/50] git commit: Defines excluded classes
Defines excluded classes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/f84efa5f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/f84efa5f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/f84efa5f Branch: refs/heads/feature/WW-4295-localization Commit: f84efa5f42a31ecbcbe3eba28653a57829e598b8 Parents: cdfb94d Author: Lukasz Lenart Authored: Sat May 3 20:18:44 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:18:44 2014 +0200 -- core/src/main/resources/struts-default.xml | 2 +- xwork-core/src/test/resources/xwork-param-test.xml | 2 +- xwork-core/src/test/resources/xwork-test-beans.xml | 8 3 files changed, 6 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/f84efa5f/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 7cb687e..0e4c419 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -38,7 +38,7 @@ - + http://git-wip-us.apache.org/repos/asf/struts/blob/f84efa5f/xwork-core/src/test/resources/xwork-param-test.xml -- diff --git a/xwork-core/src/test/resources/xwork-param-test.xml b/xwork-core/src/test/resources/xwork-param-test.xml index 3ca616a..01787f7 100644 --- a/xwork-core/src/test/resources/xwork-param-test.xml +++ b/xwork-core/src/test/resources/xwork-param-test.xml @@ -4,5 +4,5 @@ - + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts/blob/f84efa5f/xwork-core/src/test/resources/xwork-test-beans.xml -- diff --git a/xwork-core/src/test/resources/xwork-test-beans.xml b/xwork-core/src/test/resources/xwork-test-beans.xml index 3fa5b28..7268ef7 100644 --- a/xwork-core/src/test/resources/xwork-test-beans.xml +++ b/xwork-core/src/test/resources/xwork-test-beans.xml @@ -3,11 +3,11 @@ "http://struts.apache.org/dtds/xwork-2.0.dtd";> - -
[25/50] git commit: Uses newly defined Struts bean instead duplicating logic
Uses newly defined Struts bean instead duplicating logic Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/735fd961 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/735fd961 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/735fd961 Branch: refs/heads/feature/WW-4295-localization Commit: 735fd96114413181defb17cd49aa75da232a7040 Parents: 9884c49 Author: Lukasz Lenart Authored: Mon May 12 08:27:30 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 12 08:27:30 2014 +0200 -- .../struts2/interceptor/CookieInterceptor.java | 49 .../interceptor/CookieInterceptorTest.java | 11 + 2 files changed, 30 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/735fd961/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java -- diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java index 340b57f..8998c5c 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java @@ -23,17 +23,18 @@ package org.apache.struts2.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import com.opensymphony.xwork2.ExcludedPatterns; +import com.opensymphony.xwork2.ExcludedPatternsChecker; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.struts2.ServletActionContext; +import org.apache.struts2.StrutsConstants; import javax.servlet.http.Cookie; import java.util.Collections; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; @@ -176,12 +177,12 @@ public class CookieInterceptor extends AbstractInterceptor { // Allowed names of cookies private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PATTERN, Pattern.CASE_INSENSITIVE); -private Set excludedPatterns = new HashSet(); -public CookieInterceptor() { -for (String pattern : ExcludedPatterns.EXCLUDED_PATTERNS) { -excludedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE)); -} +private ExcludedPatternsChecker excludedPatternsChecker; + +@Inject(StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER) +public void setExcludedPatternsChecker(ExcludedPatternsChecker excludedPatternsChecker) { +this.excludedPatternsChecker = excludedPatternsChecker; } /** @@ -260,16 +261,7 @@ public class CookieInterceptor extends AbstractInterceptor { * @return true|false */ protected boolean isAcceptableValue(String value) { -for (Pattern excludedPattern : excludedPatterns) { -boolean matches = !excludedPattern.matcher(value).matches(); -if (!matches) { -if (LOG.isTraceEnabled()) { -LOG.trace("Cookie value [#0] matches excludedPattern [#1]", value, excludedPattern.toString()); -} -return false; -} -} -return true; +return !isExcluded(value) && isAccepted(value); } /** @@ -283,7 +275,7 @@ public class CookieInterceptor extends AbstractInterceptor { } /** - * Checks if name of Cookie match {@link #acceptedPattern} + * Checks if name/value of Cookie is acceptable * * @param name of Cookie * @return true|false @@ -303,24 +295,21 @@ public class CookieInterceptor extends AbstractInterceptor { } /** - * Checks if name of Cookie match {@link #excludedPatterns} + * Checks if name/value of Cookie is excluded * * @param name of Cookie * @return true|false */ protected boolean isExcluded(String name) { -for (Pattern excludedPattern : excludedPatterns) { -boolean matches = excludedPattern.matcher(name).matches(); -if (matches) { -if (LOG.isTraceEnabled()) { -LOG.trace("Cookie [#0] matches excludedPattern [#1]", name, excludedPattern.toString()); -} -return true; -} else { -if (LOG.isTraceEnabled()) { -LOG.trace("Cookie [#0] doesn't match excludedPattern [#1]", name, excludedPattern.toString()); -} +ExcludedPatternsChecker.IsExcl
[12/50] git commit: Adds special treatment of Object class and unit test
Adds special treatment of Object class and unit test Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b3ca9ea5 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b3ca9ea5 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b3ca9ea5 Branch: refs/heads/feature/WW-4295-localization Commit: b3ca9ea5e31fc9b6c0a5e644e833874bb7cc62fa Parents: cb59074 Author: Lukasz Lenart Authored: Sun May 4 11:18:00 2014 +0200 Committer: Lukasz Lenart Committed: Sun May 4 11:18:00 2014 +0200 -- .../xwork2/ognl/SecurityMemberAccess.java | 11 +- .../xwork2/ognl/SecurityMemberAccessTest.java | 139 +++ 2 files changed, 146 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/b3ca9ea5/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index 9d84702..7fe77c3 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -21,6 +21,7 @@ import java.lang.reflect.Member; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Collections; +import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -47,8 +48,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess { } @Override -public boolean isAccessible(Map context, Object target, Member member, -String propertyName) { +public boolean isAccessible(Map context, Object target, Member member, String propertyName) { if (isClassExcluded(target.getClass(), member.getDeclaringClass())) { return false; @@ -79,8 +79,11 @@ public class SecurityMemberAccess extends DefaultMemberAccess { } protected boolean isClassExcluded(Class targetClass, Class declaringClass) { -for (Class excludedClass : excludedClasses) { -if (targetClass.isAssignableFrom(excludedClass) || declaringClass.isAssignableFrom(excludedClass)) { +if (targetClass == Object.class || declaringClass == Object.class) { +return true; +} +for (Class excludedClass : excludedClasses) { +if (excludedClass.isAssignableFrom(targetClass) || declaringClass.isAssignableFrom(excludedClass)) { return true; } } http://git-wip-us.apache.org/repos/asf/struts/blob/b3ca9ea5/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java new file mode 100644 index 000..4ccc831 --- /dev/null +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/SecurityMemberAccessTest.java @@ -0,0 +1,139 @@ +package com.opensymphony.xwork2.ognl; + +import junit.framework.TestCase; + +import java.lang.reflect.Member; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class SecurityMemberAccessTest extends TestCase { + +private Map context; +private FooBar target; + +@Override +public void setUp() throws Exception { +context = new HashMap(); +target = new FooBar(); +} + +public void testWithoutClassExclusion() throws Exception { +// given +SecurityMemberAccess sma = new SecurityMemberAccess(false); + +String propertyName = "stringField"; +Member member = FooBar.class.getMethod("get" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1)); + +// when +boolean accessible = sma.isAccessible(context, target, member, propertyName); + +// then +assertTrue(accessible); +} + +public void testClassExclusion() throws Exception { +// given +SecurityMemberAccess sma = new SecurityMemberAccess(false); + +String propertyName = "stringField"; +Member member = FooBar.class.getDeclaredMethod("get" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1)); + +Set> excluded = new HashSet>(); +excluded.add(FooBar.class); +sma.setExcludedClasses(excluded); + +// when +boolean accessible = sma.isAccessible(context, target, member, propertyName); + +// then +asser
[01/50] git commit: [maven-release-plugin] prepare release STRUTS_2_3_16_3
Repository: struts Updated Branches: refs/heads/feature/WW-4295-localization d67fce1f2 -> d20c2f10b [maven-release-plugin] prepare release STRUTS_2_3_16_3 Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e03ff728 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e03ff728 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e03ff728 Branch: refs/heads/feature/WW-4295-localization Commit: e03ff728618f5bf551083fc3a52d43c07434bbc9 Parents: 0761909 Author: Lukasz Lenart Authored: Fri May 2 17:10:41 2014 +0200 Committer: Lukasz Lenart Committed: Fri May 2 17:10:41 2014 +0200 -- apps/blank/pom.xml | 2 +- apps/jboss-blank/pom.xml| 2 +- apps/mailreader/pom.xml | 2 +- apps/pom.xml| 2 +- apps/portlet/pom.xml| 2 +- apps/rest-showcase/pom.xml | 4 ++-- apps/showcase/pom.xml | 2 +- archetypes/pom.xml | 2 +- archetypes/struts2-archetype-angularjs/pom.xml | 4 ++-- archetypes/struts2-archetype-blank/pom.xml | 4 ++-- archetypes/struts2-archetype-convention/pom.xml | 4 ++-- archetypes/struts2-archetype-dbportlet/pom.xml | 4 ++-- archetypes/struts2-archetype-plugin/pom.xml | 4 ++-- archetypes/struts2-archetype-portlet/pom.xml| 4 ++-- archetypes/struts2-archetype-starter/pom.xml| 4 ++-- assembly/pom.xml| 2 +- bundles/admin/pom.xml | 2 +- bundles/demo/pom.xml| 2 +- bundles/pom.xml | 2 +- core/pom.xml| 2 +- plugins/cdi/pom.xml | 2 +- plugins/codebehind/pom.xml | 2 +- plugins/config-browser/pom.xml | 2 +- plugins/convention/pom.xml | 2 +- plugins/dojo/pom.xml| 2 +- plugins/dwr/pom.xml | 2 +- plugins/embeddedjsp/pom.xml | 2 +- plugins/gxp/pom.xml | 2 +- plugins/jasperreports/pom.xml | 2 +- plugins/javatemplates/pom.xml | 2 +- plugins/jfreechart/pom.xml | 2 +- plugins/jsf/pom.xml | 2 +- plugins/json/pom.xml| 2 +- plugins/junit/pom.xml | 2 +- plugins/osgi/pom.xml| 2 +- plugins/oval/pom.xml| 2 +- plugins/pell-multipart/pom.xml | 2 +- plugins/plexus/pom.xml | 2 +- plugins/pom.xml | 2 +- plugins/portlet-tiles/pom.xml | 2 +- plugins/portlet/pom.xml | 2 +- plugins/rest/pom.xml| 4 ++-- plugins/sitegraph/pom.xml | 2 +- plugins/sitemesh/pom.xml| 2 +- plugins/spring/pom.xml | 2 +- plugins/struts1/pom.xml | 2 +- plugins/testng/pom.xml | 2 +- plugins/tiles/pom.xml | 2 +- plugins/tiles3/pom.xml | 2 +- pom.xml | 4 ++-- xwork-core/pom.xml | 2 +- 51 files changed, 61 insertions(+), 61 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/e03ff728/apps/blank/pom.xml -- diff --git a/apps/blank/pom.xml b/apps/blank/pom.xml index 81a88d5..b7343c6 100644 --- a/apps/blank/pom.xml +++ b/apps/blank/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps -2.3.16.3-SNAPSHOT +2.3.16.3 struts2-blank http://git-wip-us.apache.org/repos/asf/struts/blob/e03ff728/apps/jboss-blank/pom.xml -- diff --git a/apps/jboss-blank/pom.xml b/apps/jboss-blank/pom.xml index b77c977..62c6803 100644 --- a/apps/jboss-blank/pom.xml +++ b/apps/jboss-blank/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps -2.3.16.3-SNAPSHOT +2.3.16.3 struts2-jboss-blank http://git-wip-us.apache.org/repos/asf/struts/blob/e03ff728/apps/mailreader/pom.xml -- diff --git a/apps/mailreader/pom.xml b/apps/mailreader/pom.xml index bb7ae7c..c41bb76 100644 --- a/apps/mailreader/pom.xml +++ b/apps/mailreader/pom.xml @@ -26,7 +26,7 @@ org.apache.struts
[18/50] git commit: Merge branch 'hotfix/2.3.16.3'
Merge branch 'hotfix/2.3.16.3' Conflicts: apps/rest-showcase/pom.xml archetypes/struts2-archetype-angularjs/pom.xml archetypes/struts2-archetype-blank/pom.xml archetypes/struts2-archetype-convention/pom.xml archetypes/struts2-archetype-dbportlet/pom.xml archetypes/struts2-archetype-plugin/pom.xml archetypes/struts2-archetype-portlet/pom.xml archetypes/struts2-archetype-starter/pom.xml assembly/src/main/assembly/docs.xml Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/38a3f8bf Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/38a3f8bf Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/38a3f8bf Branch: refs/heads/feature/WW-4295-localization Commit: 38a3f8bfb6b226db3adb44a8fc4ad0850feee54f Parents: c9fd44f bcffc25 Author: Lukasz Lenart Authored: Thu May 8 21:55:35 2014 +0200 Committer: Lukasz Lenart Committed: Thu May 8 21:55:35 2014 +0200 -- apps/blank/pom.xml | 2 +- apps/jboss-blank/pom.xml| 2 +- apps/mailreader/pom.xml | 2 +- apps/pom.xml| 2 +- apps/portlet/pom.xml| 2 +- apps/rest-showcase/pom.xml | 4 +- apps/showcase/pom.xml | 2 +- archetypes/pom.xml | 2 +- archetypes/struts2-archetype-angularjs/pom.xml | 3 +- archetypes/struts2-archetype-blank/pom.xml | 3 +- archetypes/struts2-archetype-convention/pom.xml | 3 +- archetypes/struts2-archetype-dbportlet/pom.xml | 3 +- archetypes/struts2-archetype-plugin/pom.xml | 3 +- archetypes/struts2-archetype-portlet/pom.xml| 3 +- archetypes/struts2-archetype-starter/pom.xml| 3 +- assembly/pom.xml| 2 +- bundles/admin/pom.xml | 2 +- bundles/demo/pom.xml| 2 +- bundles/pom.xml | 2 +- core/pom.xml| 2 +- .../struts2/interceptor/CookieInterceptor.java | 45 +++-- .../interceptor/CookieInterceptorTest.java | 53 plugins/cdi/pom.xml | 2 +- plugins/codebehind/pom.xml | 2 +- plugins/config-browser/pom.xml | 2 +- plugins/convention/pom.xml | 2 +- plugins/dojo/pom.xml| 2 +- plugins/dwr/pom.xml | 2 +- plugins/embeddedjsp/pom.xml | 2 +- plugins/gxp/pom.xml | 2 +- plugins/jasperreports/pom.xml | 2 +- plugins/javatemplates/pom.xml | 2 +- plugins/jfreechart/pom.xml | 2 +- plugins/jsf/pom.xml | 2 +- plugins/json/pom.xml| 2 +- plugins/junit/pom.xml | 2 +- plugins/osgi/pom.xml| 2 +- plugins/oval/pom.xml| 2 +- plugins/pell-multipart/pom.xml | 2 +- plugins/plexus/pom.xml | 2 +- plugins/pom.xml | 2 +- plugins/portlet-tiles/pom.xml | 2 +- plugins/portlet/pom.xml | 2 +- plugins/rest/pom.xml| 4 +- plugins/sitegraph/pom.xml | 2 +- plugins/sitemesh/pom.xml| 2 +- plugins/spring/pom.xml | 2 +- plugins/struts1/pom.xml | 2 +- plugins/testng/pom.xml | 2 +- plugins/tiles/pom.xml | 2 +- plugins/tiles3/pom.xml | 2 +- pom.xml | 2 +- xwork-core/pom.xml | 2 +- 53 files changed, 142 insertions(+), 69 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/38a3f8bf/apps/blank/pom.xml -- http://git-wip-us.apache.org/repos/asf/struts/blob/38a3f8bf/apps/jboss-blank/pom.xml -- http://git-wip-us.apache.org/repos/asf/struts/blob/38a3f8bf/apps/mailreader/pom.xml -- http://git-wip-us.apache.org/repos/asf/struts/blob/38a3f8bf/apps/pom.xml -- diff --cc apps/pom.xml index ac06753,d0a24d0..5860c18 --- a/apps/pom.xml +++ b/apps/pom.xml @@@ -26,11 -26,12 +26,11 @@@
[26/50] git commit: Adds description about new extension point
Adds description about new extension point Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ba1850a1 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ba1850a1 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ba1850a1 Branch: refs/heads/feature/WW-4295-localization Commit: ba1850a1382765eb51c58103a8c5ee7c0d9417f4 Parents: 735fd96 Author: Lukasz Lenart Authored: Tue May 13 20:28:26 2014 +0200 Committer: Lukasz Lenart Committed: Tue May 13 20:28:26 2014 +0200 -- .../apache/struts2/config/DefaultBeanSelectionProvider.java| 6 ++ 1 file changed, 6 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/ba1850a1/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index 5304910..5296b41 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -313,6 +313,12 @@ import java.util.StringTokenizer; * Used to parse expressions like ${foo.bar} or %{bar.foo} but it is up tp the TextParser's * implementation what kind of opening char to use (#, $, %, etc) * + * + * com.opensymphony.xwork2.ExcludedPatternsChecker + * struts.excludedPatterns.checker + * request + * Used across different interceptors to check if given string matches one of the excluded patterns + * * * *
[06/50] git commit: Sets excluded classes during injecting OgnlUtil
Sets excluded classes during injecting OgnlUtil Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/2180b06f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/2180b06f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/2180b06f Branch: refs/heads/feature/WW-4295-localization Commit: 2180b06f7d1d38e7701e72123e57208feb4cb444 Parents: 2798057 Author: Lukasz Lenart Authored: Sat May 3 20:16:33 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:16:33 2014 +0200 -- .../main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java| 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/2180b06f/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java index 76f0d3f..83be3ed 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java @@ -79,6 +79,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS @Inject public void setOgnlUtil(OgnlUtil ognlUtil) { this.ognlUtil = ognlUtil; +securityMemberAccess.setExcludedClasses(ognlUtil.getExcludedClasses()); } protected void setRoot(XWorkConverter xworkConverter, CompoundRootAccessor accessor, CompoundRoot compoundRoot, @@ -446,7 +447,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS XWorkConverter xworkConverter = cont.getInstance(XWorkConverter.class); CompoundRootAccessor accessor = (CompoundRootAccessor) cont.getInstance(PropertyAccessor.class, CompoundRoot.class.getName()); TextProvider prov = cont.getInstance(TextProvider.class, "system"); -boolean allow = "true".equals(cont.getInstance(String.class, "allowStaticMethodAccess")); +boolean allow = "true".equals(cont.getInstance(String.class, XWorkConstants.ALLOW_STATIC_METHOD_ACCESS)); OgnlValueStack aStack = new OgnlValueStack(xworkConverter, accessor, prov, allow); aStack.setOgnlUtil(cont.getInstance(OgnlUtil.class)); aStack.setRoot(xworkConverter, accessor, this.root, allow);
[33/50] git commit: Updates tests to match new requirements
Updates tests to match new requirements Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/83b76b0f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/83b76b0f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/83b76b0f Branch: refs/heads/feature/WW-4295-localization Commit: 83b76b0fe83411d93dc2c534c8c47dc53f0dca82 Parents: d1d81f8 Author: Lukasz Lenart Authored: Wed May 14 08:26:43 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 14 08:26:43 2014 +0200 -- .../org/apache/struts2/TestConfigurationProvider.java| 5 + xwork-core/src/test/resources/xwork-class-param-test.xml | 11 +++ 2 files changed, 16 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/83b76b0f/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java -- diff --git a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java index cd42ed5..9323f02 100644 --- a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java +++ b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java @@ -24,6 +24,8 @@ package org.apache.struts2; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.DefaultActionProxyFactory; +import com.opensymphony.xwork2.DefaultExcludedPatternsChecker; +import com.opensymphony.xwork2.ExcludedPatternsChecker; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; @@ -164,5 +166,8 @@ public class TestConfigurationProvider implements ConfigurationProvider { if (!builder.contains(ActionProxyFactory.class)) { builder.factory(ActionProxyFactory.class, DefaultActionProxyFactory.class); } +if (!builder.contains(ExcludedPatternsChecker.class)) { +builder.factory(ExcludedPatternsChecker.class, DefaultExcludedPatternsChecker.class); +} } } http://git-wip-us.apache.org/repos/asf/struts/blob/83b76b0f/xwork-core/src/test/resources/xwork-class-param-test.xml -- diff --git a/xwork-core/src/test/resources/xwork-class-param-test.xml b/xwork-core/src/test/resources/xwork-class-param-test.xml new file mode 100644 index 000..f12c083 --- /dev/null +++ b/xwork-core/src/test/resources/xwork-class-param-test.xml @@ -0,0 +1,11 @@ +http://struts.apache.org/dtds/xwork-2.0.dtd";> + + + + + + + + \ No newline at end of file
[17/50] git commit: Removes override which isn't used anymore
Removes override which isn't used anymore Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/7857b869 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/7857b869 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/7857b869 Branch: refs/heads/feature/WW-4295-localization Commit: 7857b869a05b12779e35bfe8751828dfbf328fff Parents: 62ee6b1 Author: Lukasz Lenart Authored: Mon May 5 21:33:44 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 5 21:33:44 2014 +0200 -- .../xwork2/interceptor/ParametersInterceptorTest.java | 14 -- 1 file changed, 14 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/7857b869/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java index 6ffb3ff..359618f 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java @@ -187,10 +187,6 @@ public class ParametersInterceptorTest extends XWorkTestCase { return result; } -@Override -protected void initializeHardCodedExcludePatterns() { -excludeParams = new HashSet(); -} }; container.inject(pi); @@ -307,11 +303,6 @@ public class ParametersInterceptorTest extends XWorkTestCase { ParametersInterceptor pi = new ParametersInterceptor() { @Override -protected void initializeHardCodedExcludePatterns() { -this.excludeParams = new HashSet(); -} - -@Override protected boolean isExcluded(String paramName) { boolean result = super.isExcluded(paramName); excluded.put(paramName, result); @@ -744,11 +735,6 @@ public class ParametersInterceptorTest extends XWorkTestCase { assertEquals(expected, actual); } -public void testExcludedPatternsGetInitialized() throws Exception { -ParametersInterceptor parametersInterceptor = new ParametersInterceptor(); -assertEquals(ExcludedPatterns.EXCLUDED_PATTERNS.length, parametersInterceptor.excludeParams.size()); -} - private ValueStack injectValueStack(Map actual) { ValueStack stack = createStubValueStack(actual); container.inject(stack);
[37/50] git commit: Defines new service to check accepted patterns
Defines new service to check accepted patterns Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b140faad Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b140faad Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b140faad Branch: refs/heads/feature/WW-4295-localization Commit: b140faad2813809c132ef75e4459f6dbbee664b8 Parents: 97ef7b5 Author: Lukasz Lenart Authored: Wed May 21 09:03:30 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 21 09:03:30 2014 +0200 -- .../security/AcceptedPatternsChecker.java | 82 ++ .../DefaultAcceptedPatternsChecker.java | 88 2 files changed, 170 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/b140faad/xwork-core/src/main/java/com/opensymphony/xwork2/security/AcceptedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/AcceptedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/AcceptedPatternsChecker.java new file mode 100644 index 000..6ea9ec9 --- /dev/null +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/AcceptedPatternsChecker.java @@ -0,0 +1,82 @@ +package com.opensymphony.xwork2.security; + +import java.util.Set; +import java.util.regex.Pattern; + +/** + * Used across different interceptors to check if given string matches one of the excluded patterns. + */ +public interface AcceptedPatternsChecker { + +/** + * Checks if value matches any of patterns on exclude list + * + * @param value to check + * @return object containing result of matched pattern and pattern itself + */ +public IsAccepted isAccepted(String value); + +/** + * Allows add additional excluded patterns during runtime + * + * @param commaDelimitedPatterns comma delimited string with patterns + */ +public void addAcceptedPatterns(String commaDelimitedPatterns); + +/** + * Allows add additional excluded patterns during runtime + * + * @param additionalPatterns array of additional excluded patterns + */ +public void addAcceptedPatterns(String[] additionalPatterns); + +/** + * Allows add additional excluded patterns during runtime + * + * @param additionalPatterns set of additional patterns + */ +public void addAcceptedPatterns(Set additionalPatterns); + +/** + * Allow access list of all defined excluded patterns + * + * @return set of excluded patterns + */ +public Set getAcceptedPatterns(); + +public final static class IsAccepted { + +private final boolean accepted; +private final Pattern acceptedPattern; + +public static IsAccepted yes(Pattern acceptedPattern) { +return new IsAccepted(true, acceptedPattern); +} + +public static IsAccepted no() { +return new IsAccepted(false, null); +} + +private IsAccepted(boolean accepted, Pattern acceptedPattern) { +this.accepted = accepted; +this.acceptedPattern = acceptedPattern; +} + +public boolean isAccepted() { +return accepted; +} + +public Pattern getAcceptedPattern() { +return acceptedPattern; +} + +@Override +public String toString() { +return "IsAccepted {" + +"accepted=" + accepted + +", acceptedPattern=" + acceptedPattern + +" }"; +} +} + +} http://git-wip-us.apache.org/repos/asf/struts/blob/b140faad/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java new file mode 100644 index 000..fa1b8e1 --- /dev/null +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java @@ -0,0 +1,88 @@ +package com.opensymphony.xwork2.security; + +import com.opensymphony.xwork2.XWorkConstants; +import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.TextParseUtil; +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Pattern; + +public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker { + +private static final Logger LOG = LoggerFactory.getLogger(DefaultAcceptedP
[19/50] git commit: Sets correct version in poms to match actually released version
Sets correct version in poms to match actually released version Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d2663ced Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d2663ced Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d2663ced Branch: refs/heads/feature/WW-4295-localization Commit: d2663cedd264a5b26bc1b12035aff7b32e138f78 Parents: 38a3f8b Author: Lukasz Lenart Authored: Thu May 8 21:57:25 2014 +0200 Committer: Lukasz Lenart Committed: Thu May 8 21:57:25 2014 +0200 -- apps/blank/pom.xml | 2 +- apps/jboss-blank/pom.xml| 2 +- apps/mailreader/pom.xml | 2 +- apps/pom.xml| 2 +- apps/portlet/pom.xml| 2 +- apps/rest-showcase/pom.xml | 4 ++-- apps/showcase/pom.xml | 2 +- archetypes/pom.xml | 2 +- archetypes/struts2-archetype-angularjs/pom.xml | 4 ++-- archetypes/struts2-archetype-blank/pom.xml | 4 ++-- archetypes/struts2-archetype-convention/pom.xml | 4 ++-- archetypes/struts2-archetype-dbportlet/pom.xml | 4 ++-- archetypes/struts2-archetype-plugin/pom.xml | 4 ++-- archetypes/struts2-archetype-portlet/pom.xml| 4 ++-- archetypes/struts2-archetype-starter/pom.xml| 4 ++-- assembly/pom.xml| 2 +- bundles/admin/pom.xml | 2 +- bundles/demo/pom.xml| 2 +- bundles/pom.xml | 2 +- core/pom.xml| 2 +- plugins/cdi/pom.xml | 2 +- plugins/codebehind/pom.xml | 2 +- plugins/config-browser/pom.xml | 2 +- plugins/convention/pom.xml | 2 +- plugins/dojo/pom.xml| 2 +- plugins/dwr/pom.xml | 2 +- plugins/embeddedjsp/pom.xml | 2 +- plugins/gxp/pom.xml | 2 +- plugins/jasperreports/pom.xml | 2 +- plugins/javatemplates/pom.xml | 2 +- plugins/jfreechart/pom.xml | 2 +- plugins/jsf/pom.xml | 2 +- plugins/json/pom.xml| 2 +- plugins/junit/pom.xml | 2 +- plugins/osgi/pom.xml| 2 +- plugins/oval/pom.xml| 2 +- plugins/pell-multipart/pom.xml | 2 +- plugins/plexus/pom.xml | 2 +- plugins/pom.xml | 2 +- plugins/portlet-tiles/pom.xml | 2 +- plugins/portlet/pom.xml | 2 +- plugins/rest/pom.xml| 4 ++-- plugins/sitegraph/pom.xml | 2 +- plugins/sitemesh/pom.xml| 2 +- plugins/spring/pom.xml | 2 +- plugins/struts1/pom.xml | 2 +- plugins/testng/pom.xml | 2 +- plugins/tiles/pom.xml | 2 +- plugins/tiles3/pom.xml | 2 +- pom.xml | 2 +- xwork-core/pom.xml | 2 +- 51 files changed, 60 insertions(+), 60 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/d2663ced/apps/blank/pom.xml -- diff --git a/apps/blank/pom.xml b/apps/blank/pom.xml index 99de588..f56bf90 100644 --- a/apps/blank/pom.xml +++ b/apps/blank/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps -2.3.16.4-SNAPSHOT +2.3.16.3 struts2-blank http://git-wip-us.apache.org/repos/asf/struts/blob/d2663ced/apps/jboss-blank/pom.xml -- diff --git a/apps/jboss-blank/pom.xml b/apps/jboss-blank/pom.xml index 283ccb4..f9e0b8c 100644 --- a/apps/jboss-blank/pom.xml +++ b/apps/jboss-blank/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps -2.3.16.4-SNAPSHOT +2.3.16.3 struts2-jboss-blank http://git-wip-us.apache.org/repos/asf/struts/blob/d2663ced/apps/mailreader/pom.xml -- diff --git a/apps/mailreader/pom.xml b/apps/mailreader/pom.xml index fc1307a..b6281b1 100644 --- a/apps/mailreader/pom.xml +++ b/apps/mailreader/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps - 2.3.16.4-SNAPSHOT + 2.3.16.3 struts2-mailreader http://gi
[44/50] git commit: Adds additional method to check if value of param isn't excluded
Adds additional method to check if value of param isn't excluded Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5ebc0643 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5ebc0643 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5ebc0643 Branch: refs/heads/feature/WW-4295-localization Commit: 5ebc0643b55d728a6713a82559a594d875452cd8 Parents: 89cbe13 Author: Lukasz Lenart Authored: Sun Jun 1 10:49:20 2014 +0200 Committer: Lukasz Lenart Committed: Sun Jun 1 10:49:20 2014 +0200 -- .../interceptor/ParametersInterceptor.java | 30 +++- 1 file changed, 29 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/5ebc0643/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index c1b2f3d..d95c2a7 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@ -273,7 +273,8 @@ public class ParametersInterceptor extends MethodFilterInterceptor { for (Map.Entry entry : params.entrySet()) { String name = entry.getKey(); -if (isAcceptableParameter(name, action)) { +Object value = entry.getValue(); +if (isAcceptableParameter(name, action) && isAcceptableValue(value)) { acceptableParameters.put(name, entry.getValue()); } } @@ -349,6 +350,33 @@ public class ParametersInterceptor extends MethodFilterInterceptor { } /** + * Checks if given value doesn't match global excluded patterns to avoid passing malicious code + * + * @param value incoming parameter's value + * @return true if value is safe + * + * FIXME: can be removed when parameters won't be represented as simple Strings + */ +protected boolean isAcceptableValue(Object value) { +if (value == null) { +return true; +} +Object[] values; +if (value.getClass().isArray()) { +values = (Object[]) value; +} else { +values = new Object[] { value }; +} +boolean result = true; +for (Object obj : values) { +if (isExcluded(obj.toString())) { +result = false; +} +} +return result; +} + +/** * Gets an instance of the comparator to use for the ordered sorting. Override this * method to customize the ordering of the parameters as they are set to the * action.
[03/50] git commit: Extends SecurityMemberAccess to included excluded classes
Extends SecurityMemberAccess to included excluded classes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/c778297e Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/c778297e Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/c778297e Branch: refs/heads/feature/WW-4295-localization Commit: c778297e80e19c7e16389e5c5bb3487512695c0a Parents: ee3c8d5 Author: Lukasz Lenart Authored: Sat May 3 20:12:14 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:12:14 2014 +0200 -- .../xwork2/ognl/SecurityMemberAccess.java | 17 + 1 file changed, 17 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/c778297e/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index 7bbcbda..9d84702 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -35,6 +35,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess { private final boolean allowStaticMethodAccess; private Set excludeProperties = Collections.emptySet(); private Set acceptProperties = Collections.emptySet(); +private Set> excludedClasses = Collections.emptySet(); public SecurityMemberAccess(boolean method) { super(false); @@ -49,6 +50,9 @@ public class SecurityMemberAccess extends DefaultMemberAccess { public boolean isAccessible(Map context, Object target, Member member, String propertyName) { +if (isClassExcluded(target.getClass(), member.getDeclaringClass())) { +return false; +} boolean allow = true; int modifiers = member.getModifiers(); if (Modifier.isStatic(modifiers)) { @@ -74,6 +78,15 @@ public class SecurityMemberAccess extends DefaultMemberAccess { return isAcceptableProperty(propertyName); } +protected boolean isClassExcluded(Class targetClass, Class declaringClass) { +for (Class excludedClass : excludedClasses) { +if (targetClass.isAssignableFrom(excludedClass) || declaringClass.isAssignableFrom(excludedClass)) { +return true; +} +} +return false; +} + protected boolean isAcceptableProperty(String name) { return name == null || ((!isExcluded(name)) && isAccepted(name)); } @@ -115,4 +128,8 @@ public class SecurityMemberAccess extends DefaultMemberAccess { this.acceptProperties = acceptedProperties; } +public void setExcludedClasses(Set> excludedClasses) { +this.excludedClasses = excludedClasses; +} + }
[29/50] git commit: Cleans up new extension point
Cleans up new extension point Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e8e5b51b Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e8e5b51b Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e8e5b51b Branch: refs/heads/feature/WW-4295-localization Commit: e8e5b51bc64e71cc7645c1083b33e1942bf4a03d Parents: 833a07e Author: Lukasz Lenart Authored: Wed May 14 08:25:00 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 14 08:25:00 2014 +0200 -- .../org/apache/struts2/config/DefaultBeanSelectionProvider.java | 4 ++-- .../java/org/apache/struts2/interceptor/CookieInterceptor.java | 2 +- core/src/main/resources/struts-default.xml | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/e8e5b51b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index 5296b41..5c29e78 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -390,8 +390,8 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider alias(DispatcherErrorHandler.class, StrutsConstants.STRUTS_DISPATCHER_ERROR_HANDLER, builder, props); -/** Checker is used mostly in interceptors, so there be one instance of checker per interceptor with Scope.REQUEST **/ -alias(ExcludedPatternsChecker.class, StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER, builder, props, Scope.REQUEST); +/** Checker is used mostly in interceptors, so there be one instance of checker per interceptor with Scope.DEFAULT **/ +alias(ExcludedPatternsChecker.class, StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER, builder, props, Scope.DEFAULT); switchDevMode(props); http://git-wip-us.apache.org/repos/asf/struts/blob/e8e5b51b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java -- diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java index 8998c5c..dbe47ce 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java @@ -180,7 +180,7 @@ public class CookieInterceptor extends AbstractInterceptor { private ExcludedPatternsChecker excludedPatternsChecker; -@Inject(StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER) +@Inject public void setExcludedPatternsChecker(ExcludedPatternsChecker excludedPatternsChecker) { this.excludedPatternsChecker = excludedPatternsChecker; } http://git-wip-us.apache.org/repos/asf/struts/blob/e8e5b51b/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index f2fb922..2d74b4f 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -144,9 +144,7 @@ - - - +
[48/50] git commit: Merge branch 'feature/exclude-object-class' into develop This adds new security mechanism to prevent access particular classes and packages
Merge branch 'feature/exclude-object-class' into develop This adds new security mechanism to prevent access particular classes and packages Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/21ef4e34 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/21ef4e34 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/21ef4e34 Branch: refs/heads/feature/WW-4295-localization Commit: 21ef4e3487f5dbf46f9b6bdff7eceb057da28bdd Parents: 63897e8 9654287 Author: Lukasz Lenart Authored: Wed Jun 18 08:48:22 2014 +0200 Committer: Lukasz Lenart Committed: Wed Jun 18 08:48:22 2014 +0200 -- .../org/apache/struts2/StrutsConstants.java | 16 ++ .../config/DefaultBeanSelectionProvider.java| 22 +- .../struts2/interceptor/CookieInterceptor.java | 48 ++-- core/src/main/resources/struts-default.xml | 20 ++ .../struts2/TestConfigurationProvider.java | 5 + .../interceptor/CookieInterceptorTest.java | 11 + .../ExecuteAndWaitInterceptorTest.java | 2 + .../struts2/views/jsp/PropertyTagTest.java | 30 ++- .../apache/struts2/views/jsp/ui/SelectTest.java | 2 +- .../struts2/rest/RestActionInvocationTest.java | 2 + .../xwork2/DefaultActionInvocation.java | 54 ++--- .../opensymphony/xwork2/ExcludedPatterns.java | 22 -- .../com/opensymphony/xwork2/XWorkConstants.java | 10 + .../providers/XWorkConfigurationProvider.java | 11 +- .../interceptor/ParametersInterceptor.java | 138 +-- .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 77 +- .../xwork2/ognl/OgnlValueStack.java | 6 +- .../xwork2/ognl/SecurityMemberAccess.java | 50 +++- .../security/AcceptedPatternsChecker.java | 82 +++ .../DefaultAcceptedPatternsChecker.java | 86 +++ .../DefaultExcludedPatternsChecker.java | 95 .../security/ExcludedPatternsChecker.java | 82 +++ .../xwork2/DefaultActionInvocationTest.java | 8 + .../impl/AnnotationXWorkConverterTest.java | 10 +- .../interceptor/ParametersInterceptorTest.java | 47 ++-- .../opensymphony/xwork2/ognl/OgnlUtilTest.java | 164 +++-- .../xwork2/ognl/OgnlValueStackTest.java | 1 + .../xwork2/ognl/SecurityMemberAccessTest.java | 236 +++ .../DefaultAcceptedPatternsCheckerTest.java | 56 + .../DefaultExcludedPatternsCheckerTest.java | 60 + .../test/resources/xwork-class-param-test.xml | 11 + .../src/test/resources/xwork-param-test.xml | 1 + .../src/test/resources/xwork-test-beans.xml | 24 +- 33 files changed, 1226 insertions(+), 263 deletions(-) --
[46/50] git commit: Excludes ActionContext from Ognl evaluation
Excludes ActionContext from Ognl evaluation Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/bbcc6014 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/bbcc6014 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/bbcc6014 Branch: refs/heads/feature/WW-4295-localization Commit: bbcc6014f61e4d751114051605e8041474e5b496 Parents: eb8aae8 Author: Lukasz Lenart Authored: Thu Jun 5 08:25:44 2014 +0200 Committer: Lukasz Lenart Committed: Thu Jun 5 08:25:44 2014 +0200 -- core/src/main/resources/struts-default.xml | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/bbcc6014/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 0fe8e68..49eba90 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -38,7 +38,15 @@ - +
[42/50] git commit: Adds javax.* to excluded packages
Adds javax.* to excluded packages Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/2df72b94 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/2df72b94 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/2df72b94 Branch: refs/heads/feature/WW-4295-localization Commit: 2df72b941186b9c0a2a7fdc84cbf6d3001ec30e9 Parents: 5a5af1b Author: Lukasz Lenart Authored: Fri May 23 17:36:45 2014 +0200 Committer: Lukasz Lenart Committed: Fri May 23 17:36:45 2014 +0200 -- core/src/main/resources/struts-default.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/2df72b94/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 0275a48..0fe8e68 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -40,7 +40,7 @@ - +
[49/50] git commit: WW-4146 caches only valid OGNL expressions, closes #12
WW-4146 caches only valid OGNL expressions, closes #12 Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/63de7730 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/63de7730 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/63de7730 Branch: refs/heads/feature/WW-4295-localization Commit: 63de7730ee2be146e90227ed067ed108f4a2a534 Parents: 21ef4e3 Author: Lukasz Lenart Authored: Wed Jun 18 10:33:21 2014 +0200 Committer: Lukasz Lenart Committed: Wed Jun 18 10:33:21 2014 +0200 -- .../src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/63de7730/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java index b0345fc..63c45fe 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java @@ -331,17 +331,17 @@ public class OgnlUtil { if (tree == null) { tree = Ognl.parseExpression(expression); checkEnableEvalExpression(tree, context); -expressions.putIfAbsent(expression, tree); } } else { tree = Ognl.parseExpression(expression); checkEnableEvalExpression(tree, context); } - final T exec = task.execute(tree); -if(enableExpressionCache) +// if cache is enabled and it's a valid expression, puts it in +if(enableExpressionCache) { expressions.putIfAbsent(expression, tree); +} return exec; }
[09/50] git commit: Updates test to use new excluded classes
Updates test to use new excluded classes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/cdfb94d7 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/cdfb94d7 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/cdfb94d7 Branch: refs/heads/feature/WW-4295-localization Commit: cdfb94d712e2b71bcf42f87f6c1b7d02d784dd87 Parents: afb5af1 Author: Lukasz Lenart Authored: Sat May 3 20:17:19 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:17:19 2014 +0200 -- .../impl/AnnotationXWorkConverterTest.java | 10 +- .../opensymphony/xwork2/ognl/OgnlUtilTest.java | 115 --- .../xwork2/ognl/OgnlValueStackTest.java | 1 + 3 files changed, 54 insertions(+), 72 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/cdfb94d7/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java index 4a7f517..14d9be1 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java @@ -374,8 +374,8 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase { stack.setValue("genericMap[456.12]", "42"); assertEquals(2, gb.getGenericMap().size()); -assertEquals(Integer.class, stack.findValue("genericMap.get(123.12).class")); -assertEquals(Integer.class, stack.findValue("genericMap.get(456.12).class")); +assertEquals("66", stack.findValue("genericMap.get(123.12).toString()")); +assertEquals("42", stack.findValue("genericMap.get(456.12).toString()")); assertEquals(66, stack.findValue("genericMap.get(123.12)")); assertEquals(42, stack.findValue("genericMap.get(456.12)")); assertEquals(true, stack.findValue("genericMap.containsValue(66)")); @@ -393,8 +393,8 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase { stack.setValue("genericMap[456.12]", "42"); assertEquals(2, gb.getGenericMap().size()); -assertEquals(Integer.class, stack.findValue("genericMap.get(123.12).class")); -assertEquals(Integer.class, stack.findValue("genericMap.get(456.12).class")); +assertEquals("66", stack.findValue("genericMap.get(123.12).toString()")); +assertEquals("42", stack.findValue("genericMap.get(456.12).toString()")); assertEquals(66, stack.findValue("genericMap.get(123.12)")); assertEquals(42, stack.findValue("genericMap.get(456.12)")); assertEquals(true, stack.findValue("genericMap.containsValue(66)")); @@ -409,7 +409,7 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase { stack.push(gb); assertEquals(1, gb.getGetterList().size()); -assertEquals(Double.class, stack.findValue("getterList.get(0).class")); +assertEquals("42.42", stack.findValue("getterList.get(0).toString()")); assertEquals(new Double(42.42), stack.findValue("getterList.get(0)")); assertEquals(new Double(42.42), gb.getGetterList().get(0)); http://git-wip-us.apache.org/repos/asf/struts/blob/cdfb94d7/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java index 98ff671..e8733d6 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java @@ -82,7 +82,7 @@ public class OgnlUtilTest extends XWorkTestCase { }); Owner owner = new Owner(); -Map context = Ognl.createDefaultContext(owner); +Map context = ognlUtil.createDefaultContext(owner); Map props = new HashMap(); props.put("dog.name", dogName); @@ -107,7 +107,7 @@ public class OgnlUtilTest extends XWorkTestCase { public void testCanSetDependentObjectArray() { EmailAction action = new EmailAction(); -Map context = Ognl.createDefaultContext(action); +Map context = ognlUtil.createDefaultContext(action); Map props = new HashMap(); props.put("email[0].address", "addr1"); @@ -125,7 +125,7 @@ public class OgnlUtilTest extends XWorkTestCase { Foo foo1 = new Foo(); Foo foo2 = new Foo();
[45/50] git commit: Adds additional default exclude patterns to avoid access to #context
Adds additional default exclude patterns to avoid access to #context Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/eb8aae87 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/eb8aae87 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/eb8aae87 Branch: refs/heads/feature/WW-4295-localization Commit: eb8aae87521e627d3cd333e4dc351390bf1e80dc Parents: 5ebc064 Author: Lukasz Lenart Authored: Thu Jun 5 08:25:24 2014 +0200 Committer: Lukasz Lenart Committed: Thu Jun 5 08:25:24 2014 +0200 -- .../xwork2/security/DefaultExcludedPatternsChecker.java| 4 +++- .../xwork2/interceptor/ParametersInterceptorTest.java | 6 ++ .../xwork2/security/DefaultExcludedPatternsCheckerTest.java| 4 3 files changed, 9 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/eb8aae87/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java index f0a3d62..983ce63 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java @@ -23,7 +23,9 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker { "(^|.*#)request(\\.|\\[).*", "(^|.*#)application(\\.|\\[).*", "(^|.*#)servlet(Request|Response)(\\.|\\[).*", -"(^|.*#)parameters(\\.|\\[).*" +"(^|.*#)parameters(\\.|\\[).*", +"(^|.*#)context(\\.|\\[).*", +"(^|.*#)_memberAccess(\\.|\\[).*" }; private Set excludedPatterns; http://git-wip-us.apache.org/repos/asf/struts/blob/eb8aae87/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java index ce86051..d6fc7c5 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java @@ -110,13 +110,11 @@ public class ParametersInterceptorTest extends XWorkTestCase { pi.setParameters(action, vs, params); // then -assertEquals(2, action.getActionMessages().size()); +assertEquals(1, action.getActionMessages().size()); String msg1 = action.getActionMessage(0); -String msg2 = action.getActionMessage(1); -assertTrue(msg1.contains("Error setting expression 'name' with value '(#context[\"xwork.MethodAccessor.denyMethodExecution\"]= new java.lang.Boolean(false), #_memberAccess[\"allowStaticMethodAccess\"]= new java.lang.Boolean(true), @java.lang.Runtime@getRuntime().exec('mkdir /tmp/PWNAGE'))(meh)'")); -assertTrue(msg2.contains("Error setting expression 'top['name'](0)' with value 'true'")); +assertTrue(msg1.contains("Error setting expression 'top['name'](0)' with value 'true'")); assertNull(action.getName()); } http://git-wip-us.apache.org/repos/asf/struts/blob/eb8aae87/xwork-core/src/test/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsCheckerTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsCheckerTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsCheckerTest.java index 32121b9..6125521 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsCheckerTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsCheckerTest.java @@ -39,6 +39,10 @@ public class DefaultExcludedPatternsCheckerTest extends XWorkTestCase { add("%{#parameters.test}"); add("%{#Parameters['test']}"); add("%{#Parameters.test}"); + add("#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse')"); + add("%{#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse')}"); +add("#_memberAccess[\"allowStaticMethodAccess\"]= new java.lang.Boolean(true)"); +add("%{#_memberAccess[\"allowStaticMethodAccess\"
[14/50] git commit: Adds default param to reduce noise in the logs during building
Adds default param to reduce noise in the logs during building Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/086c0a0d Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/086c0a0d Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/086c0a0d Branch: refs/heads/feature/WW-4295-localization Commit: 086c0a0d5200acb04fe62eb86f5462d23d5891ba Parents: d35072c Author: Lukasz Lenart Authored: Mon May 5 06:41:07 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 5 06:41:07 2014 +0200 -- .../src/main/java/com/opensymphony/xwork2/mock/MockResult.java | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/struts/blob/086c0a0d/xwork-core/src/main/java/com/opensymphony/xwork2/mock/MockResult.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/mock/MockResult.java b/xwork-core/src/main/java/com/opensymphony/xwork2/mock/MockResult.java index 53eac63..d988df5 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/mock/MockResult.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/mock/MockResult.java @@ -26,6 +26,8 @@ import com.opensymphony.xwork2.Result; */ public class MockResult implements Result { +public static final String DEFAULT_PARAM = null; + @Override public boolean equals(Object o) { if (this == o) {
[28/50] git commit: Extends logging with more information
Extends logging with more information Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/833a07e7 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/833a07e7 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/833a07e7 Branch: refs/heads/feature/WW-4295-localization Commit: 833a07e7fa1143f2a09786d561da70f144954c60 Parents: bfbc4c0 Author: Lukasz Lenart Authored: Wed May 14 08:24:03 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 14 08:24:03 2014 +0200 -- .../src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/833a07e7/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java index 83be3ed..1e4a576 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java @@ -198,7 +198,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS throw new XWorkException(message, re); } else { if (LOG.isWarnEnabled()) { -LOG.warn("Error setting value", re); +LOG.warn("Error setting value [#0] with expression [#1]", re, value.toString(), expr); } } }
[50/50] git commit: Merge branch 'develop' into feature/WW-4295-localization
Merge branch 'develop' into feature/WW-4295-localization Conflicts: core/src/site/resources/tags/checkboxlist.html Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d20c2f10 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d20c2f10 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d20c2f10 Branch: refs/heads/feature/WW-4295-localization Commit: d20c2f10b7ccb2830eb255062b45941684b55336 Parents: d67fce1 63de773 Author: Lukasz Lenart Authored: Fri Jun 27 13:15:10 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 13:15:10 2014 +0200 -- apps/blank/pom.xml | 2 +- apps/jboss-blank/pom.xml| 2 +- apps/mailreader/pom.xml | 2 +- apps/pom.xml| 2 +- apps/portlet/pom.xml| 2 +- apps/rest-showcase/pom.xml | 4 +- apps/showcase/pom.xml | 2 +- archetypes/pom.xml | 2 +- archetypes/struts2-archetype-angularjs/pom.xml | 2 +- archetypes/struts2-archetype-blank/pom.xml | 2 +- .../src/main/resources/example.xml | 6 +- .../main/webapp/WEB-INF/example/HelloWorld.jsp | 28 ++ .../src/main/webapp/WEB-INF/example/Login.jsp | 15 + .../src/main/webapp/WEB-INF/example/Menu.jsp| 3 + .../src/main/webapp/WEB-INF/example/Missing.jsp | 11 + .../main/webapp/WEB-INF/example/Register.jsp| 3 + .../src/main/webapp/WEB-INF/example/Welcome.jsp | 18 + .../src/main/webapp/example/HelloWorld.jsp | 28 -- .../src/main/webapp/example/Login.jsp | 15 - .../src/main/webapp/example/Menu.jsp| 3 - .../src/main/webapp/example/Missing.jsp | 11 - .../src/main/webapp/example/Register.jsp| 3 - .../src/main/webapp/example/Welcome.jsp | 18 - archetypes/struts2-archetype-convention/pom.xml | 2 +- archetypes/struts2-archetype-dbportlet/pom.xml | 2 +- archetypes/struts2-archetype-plugin/pom.xml | 2 +- archetypes/struts2-archetype-portlet/pom.xml| 2 +- archetypes/struts2-archetype-starter/pom.xml| 2 +- .../src/main/resources/struts.xml | 4 +- .../src/main/webapp/WEB-INF/jsp/helloWorld.jsp | 16 + .../src/main/webapp/WEB-INF/jsp/index.jsp | 20 + .../src/main/webapp/jsp/helloWorld.jsp | 16 - .../src/main/webapp/jsp/index.jsp | 20 - assembly/pom.xml| 88 ++--- assembly/src/main/assembly/all.xml | 12 +- assembly/src/main/assembly/docs.xml | 2 +- bundles/admin/pom.xml | 2 +- bundles/demo/pom.xml| 2 +- bundles/pom.xml | 2 +- core/pom.xml| 2 +- .../org/apache/struts2/StrutsConstants.java | 16 + .../struts2/components/DateTextField.java | 51 +++ .../struts2/components/GenericUIBean.java | 5 +- .../org/apache/struts2/components/UIBean.java | 9 +- .../config/DefaultBeanSelectionProvider.java| 22 +- .../dispatcher/ServletRedirectResult.java | 48 ++- .../struts2/dispatcher/StrutsResultSupport.java | 75 +++- .../struts2/interceptor/CookieInterceptor.java | 75 +++- .../interceptor/DateTextFieldInterceptor.java | 128 +++ .../views/freemarker/FreemarkerResult.java | 18 +- .../struts2/views/jsp/ui/DateTextFieldTag.java | 35 ++ .../org/apache/struts2/default.properties | 6 +- .../struts2/interceptor/debugging/browser.ftl | 21 +- .../struts2/interceptor/debugging/console.ftl | 4 +- .../interceptor/debugging/webconsole.html | 30 +- .../struts2/interceptor/debugging/webconsole.js | 99 +++-- core/src/main/resources/struts-default.xml | 32 +- .../resources/template/css_xhtml/checkbox.ftl | 17 +- .../template/css_xhtml/controlfooter.ftl| 7 +- .../template/css_xhtml/controlheader-core.ftl | 9 +- .../template/css_xhtml/controlheader.ftl| 7 +- .../main/resources/template/css_xhtml/reset.ftl | 9 +- .../template/css_xhtml/submit-close.ftl | 7 +- .../resources/template/css_xhtml/submit.ftl | 7 +- .../resources/template/simple/checkboxlist.ftl | 14 +- .../main/resources/template/simple/radiomap.ftl | 8 - .../main/resources/template/xhtml/checkbox.ftl | 15 +- .../template/xhtml/controlheader-core.ftl | 9 +- core/src/site/resources/tags/datetextfield.html | 376 +++ .../struts2/TestConfigurationProvider.java | 5 + .../dispatcher/ServletRedirectResultTest.java | 109 -- .../dispatcher/StrutsResultSupportTest.java | 31 ++ .../interceptor/CookieInterceptorTest.java | 130 +++ .../DateTextFieldInterc
[35/50] git commit: Cleans up after moving to package
Cleans up after moving to package Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ec98c8a9 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ec98c8a9 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ec98c8a9 Branch: refs/heads/feature/WW-4295-localization Commit: ec98c8a95beb58fface26371b5ae3829493259f5 Parents: 7faf91a Author: Lukasz Lenart Authored: Mon May 19 10:08:30 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 19 10:08:30 2014 +0200 -- .../xwork2/ExcludedPatternsChecker.java | 82 .../DefaultExcludedPatternsChecker.java | 2 +- 2 files changed, 1 insertion(+), 83 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/ec98c8a9/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java deleted file mode 100644 index ac0ff6e..000 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ExcludedPatternsChecker.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.opensymphony.xwork2; - -import java.util.Set; -import java.util.regex.Pattern; - -/** - * Used across different interceptors to check if given string matches one of the excluded patterns. - */ -public interface ExcludedPatternsChecker { - -/** - * Checks if value matches any of patterns on exclude list - * - * @param value to check - * @return object containing result of matched pattern and pattern itself - */ -public IsExcluded isExcluded(String value); - -/** - * Allows add additional excluded patterns during runtime - * - * @param commaDelimitedPatterns comma delimited string with patterns - */ -public void addExcludedPatterns(String commaDelimitedPatterns); - -/** - * Allows add additional excluded patterns during runtime - * - * @param additionalPatterns array of additional excluded patterns - */ -public void addExcludedPatterns(String[] additionalPatterns); - -/** - * Allows add additional excluded patterns during runtime - * - * @param additionalPatterns set of additional patterns - */ -public void addExcludedPatterns(Set additionalPatterns); - -/** - * Allow access list of all defined excluded patterns - * - * @return set of excluded patterns - */ -public Set getExcludedPatterns(); - -public final static class IsExcluded { - -private final boolean excluded; -private final Pattern excludedPattern; - -public static IsExcluded yes(Pattern excludedPattern) { -return new IsExcluded(true, excludedPattern); -} - -public static IsExcluded no() { -return new IsExcluded(false, null); -} - -private IsExcluded(boolean excluded, Pattern excludedPattern) { -this.excluded = excluded; -this.excludedPattern = excludedPattern; -} - -public boolean isExcluded() { -return excluded; -} - -public Pattern getExcludedPattern() { -return excludedPattern; -} - -@Override -public String toString() { -return "IsExcluded { " + -"excluded=" + excluded + -", excludedPattern=" + excludedPattern + -" }"; -} -} - -} http://git-wip-us.apache.org/repos/asf/struts/blob/ec98c8a9/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java index f2abed6..53854d3 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java @@ -11,7 +11,7 @@ import java.util.HashSet; import java.util.Set; import java.util.regex.Pattern; -public class DefaultExcludedPatternsChecker implements com.opensymphony.xwork2.ExcludedPatternsChecker { +public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker { private static final Logger LOG = LoggerFactory.getLogger(DefaultExcludedPatternsChecker.class);
[38/50] git commit: Uses new service to check if param matches accepted patterns
Uses new service to check if param matches accepted patterns Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/8a93df10 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/8a93df10 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/8a93df10 Branch: refs/heads/feature/WW-4295-localization Commit: 8a93df10c4f5f3f22f1837c47b4ca9b4facc4f94 Parents: b140faa Author: Lukasz Lenart Authored: Wed May 21 09:03:51 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 21 09:03:51 2014 +0200 -- .../org/apache/struts2/StrutsConstants.java | 4 +- .../config/DefaultBeanSelectionProvider.java| 3 ++ core/src/main/resources/struts-default.xml | 1 + .../providers/XWorkConfigurationProvider.java | 3 ++ .../interceptor/ParametersInterceptor.java | 56 +--- .../interceptor/ParametersInterceptorTest.java | 11 +--- 6 files changed, 37 insertions(+), 41 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/8a93df10/core/src/main/java/org/apache/struts2/StrutsConstants.java -- diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index d173add..8c0c5ce 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -285,10 +285,12 @@ public final class StrutsConstants { /** Comma delimited set of excluded classes which cannot be accessed via expressions **/ public static final String STRUTS_EXCLUDED_CLASSES = "struts.excludedClasses"; -/** Dedicated service to check if passed string is excluded or not **/ +/** Dedicated services to check if passed string is excluded/accepted **/ public static final String STRUTS_EXCLUDED_PATTERNS_CHECKER = "struts.excludedPatterns.checker"; +public static final String STRUTS_ACCEPTED_PATTERNS_CHECKER = "struts.acceptedPatterns.checker"; /** Constant is used to override framework's default excluded patterns **/ public static final String STRUTS_OVERRIDE_EXCLUDED_PATTERNS = "struts.override.excludedPatterns"; +public static final String STRUTS_OVERRIDE_ACCEPTED_PATTERNS = "struts.override.acceptedPatterns"; } http://git-wip-us.apache.org/repos/asf/struts/blob/8a93df10/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index be4fa82..4334d3c 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -22,6 +22,7 @@ package org.apache.struts2.config; import com.opensymphony.xwork2.ActionProxyFactory; +import com.opensymphony.xwork2.security.AcceptedPatternsChecker; import com.opensymphony.xwork2.security.ExcludedPatternsChecker; import com.opensymphony.xwork2.FileManager; import com.opensymphony.xwork2.FileManagerFactory; @@ -392,6 +393,7 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider /** Checker is used mostly in interceptors, so there be one instance of checker per interceptor with Scope.DEFAULT **/ alias(ExcludedPatternsChecker.class, StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER, builder, props, Scope.DEFAULT); +alias(AcceptedPatternsChecker.class, StrutsConstants.STRUTS_ACCEPTED_PATTERNS_CHECKER, builder, props, Scope.DEFAULT); switchDevMode(props); @@ -403,6 +405,7 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider convertIfExist(props, StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, XWorkConstants.RELOAD_XML_CONFIGURATION); convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_CLASSES, XWorkConstants.OGNL_EXCLUDED_CLASSES); convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_EXCLUDED_PATTERNS, XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS); +convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_ACCEPTED_PATTERNS, XWorkConstants.OVERRIDE_ACCEPTED_PATTERNS); LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages"); loadCustomResourceBundles(props); http://git-wip-us.apache.org/repos/asf/struts/blob/8a93df10/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 2fc16c9..a1aa63f 1006
[02/50] git commit: [maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare for next development iteration Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/bcffc256 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/bcffc256 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/bcffc256 Branch: refs/heads/feature/WW-4295-localization Commit: bcffc256fa27506588628a4df51977677c8d24aa Parents: e03ff72 Author: Lukasz Lenart Authored: Fri May 2 17:10:54 2014 +0200 Committer: Lukasz Lenart Committed: Fri May 2 17:10:54 2014 +0200 -- apps/blank/pom.xml | 2 +- apps/jboss-blank/pom.xml| 2 +- apps/mailreader/pom.xml | 2 +- apps/pom.xml| 2 +- apps/portlet/pom.xml| 2 +- apps/rest-showcase/pom.xml | 4 ++-- apps/showcase/pom.xml | 2 +- archetypes/pom.xml | 2 +- archetypes/struts2-archetype-angularjs/pom.xml | 4 ++-- archetypes/struts2-archetype-blank/pom.xml | 4 ++-- archetypes/struts2-archetype-convention/pom.xml | 4 ++-- archetypes/struts2-archetype-dbportlet/pom.xml | 4 ++-- archetypes/struts2-archetype-plugin/pom.xml | 4 ++-- archetypes/struts2-archetype-portlet/pom.xml| 4 ++-- archetypes/struts2-archetype-starter/pom.xml| 4 ++-- assembly/pom.xml| 2 +- bundles/admin/pom.xml | 2 +- bundles/demo/pom.xml| 2 +- bundles/pom.xml | 2 +- core/pom.xml| 2 +- plugins/cdi/pom.xml | 2 +- plugins/codebehind/pom.xml | 2 +- plugins/config-browser/pom.xml | 2 +- plugins/convention/pom.xml | 2 +- plugins/dojo/pom.xml| 2 +- plugins/dwr/pom.xml | 2 +- plugins/embeddedjsp/pom.xml | 2 +- plugins/gxp/pom.xml | 2 +- plugins/jasperreports/pom.xml | 2 +- plugins/javatemplates/pom.xml | 2 +- plugins/jfreechart/pom.xml | 2 +- plugins/jsf/pom.xml | 2 +- plugins/json/pom.xml| 2 +- plugins/junit/pom.xml | 2 +- plugins/osgi/pom.xml| 2 +- plugins/oval/pom.xml| 2 +- plugins/pell-multipart/pom.xml | 2 +- plugins/plexus/pom.xml | 2 +- plugins/pom.xml | 2 +- plugins/portlet-tiles/pom.xml | 2 +- plugins/portlet/pom.xml | 2 +- plugins/rest/pom.xml| 4 ++-- plugins/sitegraph/pom.xml | 2 +- plugins/sitemesh/pom.xml| 2 +- plugins/spring/pom.xml | 2 +- plugins/struts1/pom.xml | 2 +- plugins/testng/pom.xml | 2 +- plugins/tiles/pom.xml | 2 +- plugins/tiles3/pom.xml | 2 +- pom.xml | 4 ++-- xwork-core/pom.xml | 2 +- 51 files changed, 61 insertions(+), 61 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/bcffc256/apps/blank/pom.xml -- diff --git a/apps/blank/pom.xml b/apps/blank/pom.xml index b7343c6..317a2b4 100644 --- a/apps/blank/pom.xml +++ b/apps/blank/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps -2.3.16.3 +2.3.16.4-SNAPSHOT struts2-blank http://git-wip-us.apache.org/repos/asf/struts/blob/bcffc256/apps/jboss-blank/pom.xml -- diff --git a/apps/jboss-blank/pom.xml b/apps/jboss-blank/pom.xml index 62c6803..1454f7b 100644 --- a/apps/jboss-blank/pom.xml +++ b/apps/jboss-blank/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps -2.3.16.3 +2.3.16.4-SNAPSHOT struts2-jboss-blank http://git-wip-us.apache.org/repos/asf/struts/blob/bcffc256/apps/mailreader/pom.xml -- diff --git a/apps/mailreader/pom.xml b/apps/mailreader/pom.xml index c41bb76..7814520 100644 --- a/apps/mailreader/pom.xml +++ b/apps/mailreader/pom.xml @@ -26,7 +26,7 @@ org.apache.struts struts2-apps - 2.3.16.3 + 2.3.16.4-SNAPSHOT struts2-mailreader http://gi
[47/50] git commit: Adds additional classes to be excluded
Adds additional classes to be excluded Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/96542871 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/96542871 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/96542871 Branch: refs/heads/feature/WW-4295-localization Commit: 965428711572ad52d3713b3432ff38e1dd3e9dae Parents: bbcc601 Author: Lukasz Lenart Authored: Wed Jun 18 08:45:56 2014 +0200 Committer: Lukasz Lenart Committed: Wed Jun 18 08:45:56 2014 +0200 -- core/src/main/resources/struts-default.xml | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/96542871/core/src/main/resources/struts-default.xml -- diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 49eba90..ea2a631 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -42,13 +42,17 @@ value=" java.lang.Object, java.lang.Runtime, +java.lang.System, +java.lang.Class, +java.lang.ClassLoader, +java.lang.Shutdown, ognl.OgnlContext, ognl.MemberAccess, ognl.ClassResolver, ognl.TypeConverter, com.opensymphony.xwork2.ActionContext" /> - +
[43/50] git commit: Adds option to define additional accepted/excluded patterns Also all patterns are by default case insensitive
Adds option to define additional accepted/excluded patterns Also all patterns are by default case insensitive Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/89cbe138 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/89cbe138 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/89cbe138 Branch: refs/heads/feature/WW-4295-localization Commit: 89cbe13853a849340d740d45685e6fd14da93d9b Parents: 2df72b9 Author: Lukasz Lenart Authored: Sun Jun 1 10:33:39 2014 +0200 Committer: Lukasz Lenart Committed: Sun Jun 1 10:33:39 2014 +0200 -- .../org/apache/struts2/StrutsConstants.java | 3 ++ .../config/DefaultBeanSelectionProvider.java| 2 + .../com/opensymphony/xwork2/XWorkConstants.java | 3 ++ .../DefaultAcceptedPatternsChecker.java | 18 +++ .../DefaultExcludedPatternsChecker.java | 28 ++ .../DefaultAcceptedPatternsCheckerTest.java | 56 .../DefaultExcludedPatternsCheckerTest.java | 56 7 files changed, 147 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/89cbe138/core/src/main/java/org/apache/struts2/StrutsConstants.java -- diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index dd08993..918f91b 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -294,4 +294,7 @@ public final class StrutsConstants { public static final String STRUTS_OVERRIDE_EXCLUDED_PATTERNS = "struts.override.excludedPatterns"; public static final String STRUTS_OVERRIDE_ACCEPTED_PATTERNS = "struts.override.acceptedPatterns"; +public static final String STRUTS_ADDITIONAL_EXCLUDED_PATTERNS = "struts.additional.excludedPatterns"; +public static final String STRUTS_ADDITIONAL_ACCEPTED_PATTERNS = "struts.additional.acceptedPatterns"; + } http://git-wip-us.apache.org/repos/asf/struts/blob/89cbe138/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index a671133..06b7302 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -407,6 +407,8 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_CLASSES, XWorkConstants.OGNL_EXCLUDED_CLASSES); convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_PACKAGE_NAME_PATTERNS, XWorkConstants.OGNL_EXCLUDED_PACKAGE_NAME_PATTERNS); +convertIfExist(props, StrutsConstants.STRUTS_ADDITIONAL_EXCLUDED_PATTERNS, XWorkConstants.ADDITIONAL_EXCLUDED_PATTERNS); +convertIfExist(props, StrutsConstants.STRUTS_ADDITIONAL_ACCEPTED_PATTERNS, XWorkConstants.ADDITIONAL_ACCEPTED_PATTERNS); convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_EXCLUDED_PATTERNS, XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS); convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_ACCEPTED_PATTERNS, XWorkConstants.OVERRIDE_ACCEPTED_PATTERNS); http://git-wip-us.apache.org/repos/asf/struts/blob/89cbe138/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java index 830df78..433b005 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java @@ -21,6 +21,9 @@ public final class XWorkConstants { public static final String OGNL_EXCLUDED_CLASSES = "ognlExcludedClasses"; public static final String OGNL_EXCLUDED_PACKAGE_NAME_PATTERNS = "ognlExcludedPackageNamePatterns"; +public static final String ADDITIONAL_EXCLUDED_PATTERNS = "additionalExcludedPatterns"; +public static final String ADDITIONAL_ACCEPTED_PATTERNS = "additionalAcceptedPatterns"; + public static final String OVERRIDE_EXCLUDED_PATTERNS = "overrideExcludedPatterns"; public static final String OVERRIDE_ACCEPTED_PATTERNS = "overrideAcceptedPatterns"; http://git-wip-us.apache.org/repos/asf/struts/blob/89cbe138/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsC
[08/50] git commit: Uses excluded classes to
Uses excluded classes to Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/afb5af1c Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/afb5af1c Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/afb5af1c Branch: refs/heads/feature/WW-4295-localization Commit: afb5af1cc45aed1ee0404541279cb7f7853fc98b Parents: f0799fd Author: Lukasz Lenart Authored: Sat May 3 20:17:05 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:17:05 2014 +0200 -- core/src/main/java/org/apache/struts2/StrutsConstants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/afb5af1c/core/src/main/java/org/apache/struts2/StrutsConstants.java -- diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index 6be58ad..d508373 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -282,7 +282,7 @@ public final class StrutsConstants { /** Allows override default DispatcherErrorHandler **/ public static final String STRUTS_DISPATCHER_ERROR_HANDLER = "struts.dispatcher.errorHandler"; -/** Comma delimited set of excluded properties which cannot be accessed via expressions **/ -public static final String STRUTS_EXCLUDED_PROPERTIES = "struts.excludedProperties"; +/** Comma delimited set of excluded classes which cannot be accessed via expressions **/ +public static final String STRUTS_EXCLUDED_CLASSES = "struts.excludedClasses"; }
[31/50] git commit: Uses checker instead set of patterns to check if param is excluded
Uses checker instead set of patterns to check if param is excluded Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5ec47b1e Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5ec47b1e Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5ec47b1e Branch: refs/heads/feature/WW-4295-localization Commit: 5ec47b1e6df6c59ff3fa466d20f28fda46b60254 Parents: 3d77c34 Author: Lukasz Lenart Authored: Wed May 14 08:25:50 2014 +0200 Committer: Lukasz Lenart Committed: Wed May 14 08:25:50 2014 +0200 -- .../interceptor/ParametersInterceptor.java | 43 +++- .../interceptor/ParametersInterceptorTest.java | 4 +- 2 files changed, 16 insertions(+), 31 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/5ec47b1e/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index 6de6aad..460aae2 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@ -17,6 +17,7 @@ package com.opensymphony.xwork2.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.ExcludedPatternsChecker; import com.opensymphony.xwork2.ValidationAware; import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler; @@ -143,12 +144,13 @@ public class ParametersInterceptor extends MethodFilterInterceptor { protected static final int PARAM_NAME_MAX_LENGTH = 100; +private ExcludedPatternsChecker excludedPatterns; + private int paramNameMaxLength = PARAM_NAME_MAX_LENGTH; private boolean devMode = false; protected boolean ordered = false; -protected Set excludeParams = Collections.emptySet(); protected Set acceptParams = Collections.emptySet(); private ValueStackFactory valueStackFactory; @@ -163,7 +165,12 @@ public class ParametersInterceptor extends MethodFilterInterceptor { devMode = "true".equalsIgnoreCase(mode); } - /** +@Inject +public void setExcludedPatterns(ExcludedPatternsChecker excludedPatterns) { +this.excludedPatterns = excludedPatterns; +} + +/** * Sets a comma-delimited list of regular expressions to match * parameters that are allowed in the parameter map (aka whitelist). * @@ -306,7 +313,7 @@ public class ParametersInterceptor extends MethodFilterInterceptor { //see WW-2761 for more details MemberAccessValueStack accessValueStack = (MemberAccessValueStack) newStack; accessValueStack.setAcceptProperties(acceptParams); -accessValueStack.setExcludeProperties(excludeParams); + accessValueStack.setExcludeProperties(excludedPatterns.getExcludedPatterns()); } for (Map.Entry entry : acceptableParameters.entrySet()) { @@ -426,14 +433,10 @@ public class ParametersInterceptor extends MethodFilterInterceptor { } protected boolean isExcluded(String paramName) { -if (!this.excludeParams.isEmpty()) { -for (Pattern pattern : excludeParams) { -Matcher matcher = pattern.matcher(paramName); -if (matcher.matches()) { -notifyDeveloper("Parameter [#0] is on the excludeParams list of patterns!", paramName); -return true; -} -} +ExcludedPatternsChecker.IsExcluded result = excludedPatterns.isExcluded(paramName); +if (result.isExcluded()) { +notifyDeveloper("Parameter [#0] is on the excludeParams list of patterns!", paramName); +return true; } return false; } @@ -467,29 +470,13 @@ public class ParametersInterceptor extends MethodFilterInterceptor { } /** - * Gets a set of regular expressions of parameters to remove - * from the parameter map - * - * @return A set of compiled regular expression patterns - */ -protected Set getExcludeParamsSet() { -return excludeParams; -} - -/** * Sets a comma-delimited list of regular expressions to match * parameters that should be removed from the parameter map. * * @param commaDelim A comma-delimited list of regular expressions */ public void setExcludeParams(String commaDelim) { -Collection excludePatterns
[07/50] git commit: Adds mapping of excluded classes key
Adds mapping of excluded classes key Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/f0799fd9 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/f0799fd9 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/f0799fd9 Branch: refs/heads/feature/WW-4295-localization Commit: f0799fd99bff78f0c984922ac358d7cf3eede0ba Parents: 2180b06 Author: Lukasz Lenart Authored: Sat May 3 20:16:58 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:16:58 2014 +0200 -- .../org/apache/struts2/config/DefaultBeanSelectionProvider.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/f0799fd9/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index 4cc2d61..dedbce5 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -391,7 +391,7 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider convertIfExist(props, StrutsConstants.STRUTS_ENABLE_OGNL_EVAL_EXPRESSION, XWorkConstants.ENABLE_OGNL_EVAL_EXPRESSION); convertIfExist(props, StrutsConstants.STRUTS_ALLOW_STATIC_METHOD_ACCESS, XWorkConstants.ALLOW_STATIC_METHOD_ACCESS); convertIfExist(props, StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, XWorkConstants.RELOAD_XML_CONFIGURATION); -convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_PROPERTIES, XWorkConstants.OGNL_EXCLUDED_PROPERTIES); +convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_CLASSES, XWorkConstants.OGNL_EXCLUDED_CLASSES); LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages"); loadCustomResourceBundles(props);
[23/50] git commit: Defines new extension point
Defines new extension point Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4577e5ee Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4577e5ee Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4577e5ee Branch: refs/heads/feature/WW-4295-localization Commit: 4577e5eefb057e80bbdd740b0c56120c15469827 Parents: 65c023b Author: Lukasz Lenart Authored: Mon May 12 08:26:33 2014 +0200 Committer: Lukasz Lenart Committed: Mon May 12 08:26:33 2014 +0200 -- core/src/main/java/org/apache/struts2/StrutsConstants.java| 6 ++ .../apache/struts2/config/DefaultBeanSelectionProvider.java | 7 ++- .../src/main/java/com/opensymphony/xwork2/XWorkConstants.java | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/4577e5ee/core/src/main/java/org/apache/struts2/StrutsConstants.java -- diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index d508373..d173add 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -285,4 +285,10 @@ public final class StrutsConstants { /** Comma delimited set of excluded classes which cannot be accessed via expressions **/ public static final String STRUTS_EXCLUDED_CLASSES = "struts.excludedClasses"; +/** Dedicated service to check if passed string is excluded or not **/ +public static final String STRUTS_EXCLUDED_PATTERNS_CHECKER = "struts.excludedPatterns.checker"; + +/** Constant is used to override framework's default excluded patterns **/ +public static final String STRUTS_OVERRIDE_EXCLUDED_PATTERNS = "struts.override.excludedPatterns"; + } http://git-wip-us.apache.org/repos/asf/struts/blob/4577e5ee/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java -- diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index dedbce5..5304910 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -22,6 +22,7 @@ package org.apache.struts2.config; import com.opensymphony.xwork2.ActionProxyFactory; +import com.opensymphony.xwork2.ExcludedPatternsChecker; import com.opensymphony.xwork2.FileManager; import com.opensymphony.xwork2.FileManagerFactory; import com.opensymphony.xwork2.LocaleProvider; @@ -343,7 +344,7 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider alias(ResultFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY_RESULTFACTORY, builder, props); alias(ConverterFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY_CONVERTERFACTORY, builder, props); alias(InterceptorFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY_INTERCEPTORFACTORY, builder, props); -alias(ValidatorFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY_INTERCEPTORFACTORY, builder, props); +alias(ValidatorFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY_VALIDATORFACTORY, builder, props); alias(FileManagerFactory.class, StrutsConstants.STRUTS_FILE_MANAGER_FACTORY, builder, props, Scope.SINGLETON); @@ -383,6 +384,9 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider alias(DispatcherErrorHandler.class, StrutsConstants.STRUTS_DISPATCHER_ERROR_HANDLER, builder, props); +/** Checker is used mostly in interceptors, so there be one instance of checker per interceptor with Scope.REQUEST **/ +alias(ExcludedPatternsChecker.class, StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER, builder, props, Scope.REQUEST); + switchDevMode(props); // Convert Struts properties into XWork properties @@ -392,6 +396,7 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider convertIfExist(props, StrutsConstants.STRUTS_ALLOW_STATIC_METHOD_ACCESS, XWorkConstants.ALLOW_STATIC_METHOD_ACCESS); convertIfExist(props, StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, XWorkConstants.RELOAD_XML_CONFIGURATION); convertIfExist(props, StrutsConstants.STRUTS_EXCLUDED_CLASSES, XWorkConstants.OGNL_EXCLUDED_CLASSES); +convertIfExist(props, StrutsConstants.STRUTS_OVERRIDE_EXCLUDED_PATTERNS, XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS); LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages"); l
[21/50] git commit: Merge branch 'develop' into feature/exclude-object-class
Merge branch 'develop' into feature/exclude-object-class Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/08b44fda Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/08b44fda Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/08b44fda Branch: refs/heads/feature/WW-4295-localization Commit: 08b44fdad666c78e4a7a96c57bbe896eff896829 Parents: 7857b86 63897e8 Author: Lukasz Lenart Authored: Thu May 8 22:07:22 2014 +0200 Committer: Lukasz Lenart Committed: Thu May 8 22:07:22 2014 +0200 -- .../struts2/interceptor/CookieInterceptor.java | 45 +++-- .../interceptor/CookieInterceptorTest.java | 53 2 files changed, 82 insertions(+), 16 deletions(-) --
[05/50] git commit: Creates default context with excluded classes
Creates default context with excluded classes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/27980572 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/27980572 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/27980572 Branch: refs/heads/feature/WW-4295-localization Commit: 279805721d6223673b5cb93e29fa91a4bbe0ea90 Parents: d5bd607 Author: Lukasz Lenart Authored: Sat May 3 20:15:53 2014 +0200 Committer: Lukasz Lenart Committed: Sat May 3 20:15:53 2014 +0200 -- .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 78 +--- 1 file changed, 51 insertions(+), 27 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/27980572/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java index 5e06977..1c17eca 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java @@ -16,13 +16,18 @@ package com.opensymphony.xwork2.ognl; import com.opensymphony.xwork2.XWorkConstants; +import com.opensymphony.xwork2.XWorkException; +import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.conversion.impl.XWorkConverter; +import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor; import com.opensymphony.xwork2.util.CompoundRoot; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import com.opensymphony.xwork2.util.reflection.ReflectionException; +import ognl.ClassResolver; import ognl.Ognl; import ognl.OgnlContext; import ognl.OgnlException; @@ -61,7 +66,9 @@ public class OgnlUtil { private boolean enableExpressionCache = true; private boolean enableEvalExpression; -private Set excludedProperties = new HashSet(); +private Set> excludedClasses = new HashSet>(); +private Container container; +private boolean allowStaticMethodAccess; @Inject public void setXWorkConverter(XWorkConverter conv) { @@ -87,15 +94,32 @@ public class OgnlUtil { } } -@Inject(value = XWorkConstants.OGNL_EXCLUDED_PROPERTIES, required = false) -public void setExcludedProperties(String commaDelimitedProperties) { -Set props = TextParseUtil.commaDelimitedStringToSet(commaDelimitedProperties); -for (String prop : props) { -excludedProperties.add(prop); -excludedProperties.add(prop + "()"); +@Inject(value = XWorkConstants.OGNL_EXCLUDED_CLASSES, required = false) +public void setExcludedClasses(String commaDelimitedClasses) { +Set classes = TextParseUtil.commaDelimitedStringToSet(commaDelimitedClasses); +for (String className : classes) { +try { +excludedClasses.add(Class.forName(className)); +} catch (ClassNotFoundException e) { +throw new ConfigurationException("Cannot load excluded class: " + className, e); +} } } +public Set> getExcludedClasses() { +return excludedClasses; +} + +@Inject +public void setContainer(Container container) { +this.container = container; +} + +@Inject(value = XWorkConstants.ALLOW_STATIC_METHOD_ACCESS, required = false) +public void setAllowStaticMethodAccess(String allowStaticMethodAccess) { +this.allowStaticMethodAccess = Boolean.parseBoolean(allowStaticMethodAccess); +} + /** * Sets the object's properties using the default type converter, defaulting to not throw * exceptions for problems setting the properties. @@ -155,7 +179,7 @@ public class OgnlUtil { *problems setting the properties */ public void setProperties(Map properties, Object o, boolean throwPropertyExceptions) { -Map context = Ognl.createDefaultContext(o); +Map context = createDefaultContext(o, null); setProperties(properties, o, context, throwPropertyExceptions); } @@ -293,13 +317,11 @@ public class OgnlUtil { if (tree == null) { tree = Ognl.parseExpression(expression); checkEnableEvalExpression(tree, context); -checkExcludedPropertiesAccess(tree, null); expressions.putIfAbsent(expression, tree); } } else { tree = Ognl.parseExpression(expression);
[11/50] git commit: Removes hardcoded excluded params
Removes hardcoded excluded params Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/cb590742 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/cb590742 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/cb590742 Branch: refs/heads/feature/WW-4295-localization Commit: cb590742892c39dc6abb84f6a85d87235d555f32 Parents: f84efa5 Author: Lukasz Lenart Authored: Sun May 4 10:48:09 2014 +0200 Committer: Lukasz Lenart Committed: Sun May 4 10:48:09 2014 +0200 -- .../interceptor/ParametersInterceptor.java | 16 +++--- .../interceptor/ParametersInterceptorTest.java | 16 ++ .../src/test/resources/xwork-test-beans.xml | 22 ++-- 3 files changed, 17 insertions(+), 37 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/cb590742/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index cb38d57..e09ab54 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@ -141,21 +141,16 @@ public class ParametersInterceptor extends MethodFilterInterceptor { private static final Logger LOG = LoggerFactory.getLogger(ParametersInterceptor.class); -public static final String ACCEPTED_PARAM_NAMES = "\\w+((\\.\\w+)|(\\[\\d+\\])|(\\(\\d+\\))|(\\['(\\w|[\\u4e00-\\u9fa5])+'\\])|(\\('(\\w|[\\u4e00-\\u9fa5])+'\\)))*"; - protected static final int PARAM_NAME_MAX_LENGTH = 100; private int paramNameMaxLength = PARAM_NAME_MAX_LENGTH; +private boolean devMode = false; protected boolean ordered = false; + protected Set excludeParams = Collections.emptySet(); protected Set acceptParams = Collections.emptySet(); -private boolean devMode = false; - -// Allowed names of parameters -private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PARAM_NAMES); - private ValueStackFactory valueStackFactory; @Inject @@ -426,13 +421,8 @@ public class ParametersInterceptor extends MethodFilterInterceptor { } notifyDeveloper("Parameter [#0] didn't match acceptParams list of patterns!", paramName); return false; -} else { -boolean matches = acceptedPattern.matcher(paramName).matches(); -if (!matches) { -notifyDeveloper("Parameter [#0] didn't match acceptedPattern pattern!", paramName); -} -return matches; } +return true; } protected boolean isExcluded(String paramName) { http://git-wip-us.apache.org/repos/asf/struts/blob/cb590742/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java index f0adf02..79f46e6 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java @@ -32,11 +32,13 @@ import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.mock.MockActionInvocation; import com.opensymphony.xwork2.ognl.OgnlValueStack; import com.opensymphony.xwork2.ognl.OgnlValueStackFactory; +import com.opensymphony.xwork2.ognl.SecurityMemberAccess; import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor; import com.opensymphony.xwork2.util.CompoundRoot; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; import junit.framework.Assert; +import ognl.OgnlContext; import ognl.PropertyAccessor; import java.io.File; @@ -293,9 +295,8 @@ public class ParametersInterceptorTest extends XWorkTestCase { //then assertEquals("This is blah", ((SimpleAction) proxy.getAction()).getBlah()); -Object allowMethodAccess = stack.findValue("\u0023_memberAccess['allowStaticMethodAccess']"); -assertNotNull(allowMethodAccess); -assertEquals(Boolean.FALSE, allowMethodAccess); +boolean allowMethodAccess = ((SecurityMemberAccess) ((OgnlContext) stack.getContext()).getMemberAccess()).getAllowStaticMethodAccess(); +assertFalse(allowMethodAccess); } p
[1/3] git commit: get correct full field name in visitor field validator
Repository: struts Updated Branches: refs/heads/develop 63de7730e -> 3a07c3177 get correct full field name in visitor field validator Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/2b8a805e Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/2b8a805e Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/2b8a805e Branch: refs/heads/develop Commit: 2b8a805eb0794abd5c804c0bc9059e56b72c985f Parents: 63897e8 Author: Aleksandr Mashchenko Authored: Wed May 14 20:22:29 2014 +0300 Committer: Aleksandr Mashchenko Committed: Wed May 14 20:22:29 2014 +0300 -- .../AnnotationActionValidatorManager.java | 42 + .../DefaultActionValidatorManager.java | 49 +--- .../validators/VisitorFieldValidator.java | 13 -- 3 files changed, 10 insertions(+), 94 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/2b8a805e/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java index 6f1d548..9b6beb3 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java @@ -154,7 +154,7 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager if (validator instanceof FieldValidator) { fValidator = (FieldValidator) validator; -fullFieldName = new InternalValidatorContextWrapper(fValidator.getValidatorContext()).getFullFieldName(fValidator.getFieldName()); +fullFieldName = fValidator.getValidatorContext().getFullFieldName(fValidator.getFieldName()); if ((shortcircuitedFields != null) && shortcircuitedFields.contains(fullFieldName)) { if (LOG.isDebugEnabled()) { @@ -412,44 +412,4 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager return retList; } - - -/** - * An {@link com.opensymphony.xwork2.validator.ValidatorContext} wrapper that - * returns the full field name - * {@link AnnotationActionValidatorManager.InternalValidatorContextWrapper#getFullFieldName(String)} - * by consulting it's parent if its an {@link com.opensymphony.xwork2.validator.validators.VisitorFieldValidator.AppendingValidatorContext}. - * - * Eg. if we have nested Visitor - * AddressVisitor nested inside PersonVisitor, when using the normal #getFullFieldName, we will get - * "address.somefield", we lost the parent, with this wrapper, we will get "person.address.somefield". - * This is so that the key is used to register errors, so that we don't screw up short-curcuit feature - * when using nested visitor. See XW-571 (nested visitor validators break short-circuit functionality) - * at http://jira.opensymphony.com/browse/XW-571 - */ -protected class InternalValidatorContextWrapper { -private ValidatorContext validatorContext = null; - -InternalValidatorContextWrapper(ValidatorContext validatorContext) { -this.validatorContext = validatorContext; -} - -/** - * Get the full field name by consulting the parent, so that when we are using nested visitors ( - * visitor nested inside visitor etc.) we still get the full field name including its parents. - * See XW-571 for more details. - * - * @param field - * @return String - */ -public String getFullFieldName(String field) { -if (validatorContext instanceof VisitorFieldValidator.AppendingValidatorContext) { -VisitorFieldValidator.AppendingValidatorContext appendingValidatorContext = -(VisitorFieldValidator.AppendingValidatorContext) validatorContext; -return appendingValidatorContext.getFullFieldNameFromParent(field); -} -return validatorContext.getFullFieldName(field); -} - -} } http://git-wip-us.apache.org/repos/asf/struts/blob/2b8a805e/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidator
[2/3] git commit: tests for AppendingValidatorContext and nested visitor conversion validation
tests for AppendingValidatorContext and nested visitor conversion validation Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/46f7f6c7 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/46f7f6c7 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/46f7f6c7 Branch: refs/heads/develop Commit: 46f7f6c7a87cbf70e89c5d30e1155e897f759b09 Parents: 2b8a805 Author: Aleksandr Mashchenko Authored: Fri May 16 23:57:29 2014 +0300 Committer: Aleksandr Mashchenko Committed: Fri May 16 23:57:29 2014 +0300 -- .../validator/VisitorFieldValidatorTest.java| 27 ++- .../AppendingValidatorContextTest.java | 47 .../xwork2/TestChildBean-validation.xml | 21 + 3 files changed, 86 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/46f7f6c7/xwork-core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java index 3c47725..ad5c1b6 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java @@ -179,7 +179,32 @@ public class VisitorFieldValidatorTest extends XWorkTestCase { //the error from the action should be there too assertTrue(fieldErrors.containsKey("context")); } - + +public void testVisitorChildConversionValidation() throws Exception { +//add conversion error +Map conversionErrors = new HashMap(); +conversionErrors.put("bean.child.count", "bar"); +ActionContext.getContext().setConversionErrors(conversionErrors); + +validate("visitorChildValidation"); +assertTrue(action.hasFieldErrors()); + +Map> fieldErrors = action.getFieldErrors(); +assertEquals(6, fieldErrors.size()); +assertTrue(!fieldErrors.containsKey("bean.count")); +assertTrue(fieldErrors.containsKey("bean.name")); +assertTrue(fieldErrors.containsKey("bean.birth")); + +assertTrue(fieldErrors.containsKey("bean.child.name")); +assertTrue(fieldErrors.containsKey("bean.child.birth")); + +//the error from the action should be there too +assertTrue(fieldErrors.containsKey("context")); + +//nested visitor conversion error +assertTrue(fieldErrors.containsKey("bean.child.count")); +} + @Override protected void tearDown() throws Exception { super.tearDown(); http://git-wip-us.apache.org/repos/asf/struts/blob/46f7f6c7/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/AppendingValidatorContextTest.java -- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/AppendingValidatorContextTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/AppendingValidatorContextTest.java new file mode 100644 index 000..8ce3fb8 --- /dev/null +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/AppendingValidatorContextTest.java @@ -0,0 +1,47 @@ +package com.opensymphony.xwork2.validator.validators; + +import java.util.List; +import java.util.Map; + +import com.opensymphony.xwork2.XWorkTestCase; +import com.opensymphony.xwork2.validator.DelegatingValidatorContext; +import com.opensymphony.xwork2.validator.ValidatorContext; +import com.opensymphony.xwork2.validator.VisitorValidatorTestAction; +import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator.AppendingValidatorContext; + +public class AppendingValidatorContextTest extends XWorkTestCase { + +private static final String FIRST_NAME = "first"; +private static final String SECOND_NAME = "second"; +private static final String FIELD_NAME = "fieldName"; +private static final String FULL_FIELD_NAME = FIRST_NAME + "." + SECOND_NAME + "." + FIELD_NAME; + +private VisitorValidatorTestAction action; +private VisitorFieldValidator.AppendingValidatorContext validatorContext; + +@Override +protected void setUp() throws Exception { +super.setUp(); + +action = new VisitorValidatorTestAction(); +ValidatorContext vc1 = new DelegatingValidatorContext(action); + +VisitorFieldValidator.AppendingValidatorContext vc2 = new AppendingValidatorContext( +vc1, "value", FIRST_NAME, ""); +validatorContext = new AppendingValidatorContext(vc2, "value", SECOND_NAME, ""); +
[3/3] git commit: WW-4346 Solves problem with nested visitor validator returns wrong full field name
WW-4346 Solves problem with nested visitor validator returns wrong full field name Closes #13 Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/3a07c317 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/3a07c317 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/3a07c317 Branch: refs/heads/develop Commit: 3a07c317724c1f8017be93f0e1bae23392c08fc6 Parents: 63de773 46f7f6c Author: Lukasz Lenart Authored: Fri Jun 27 13:39:25 2014 +0200 Committer: Lukasz Lenart Committed: Fri Jun 27 13:39:25 2014 +0200 -- .../AnnotationActionValidatorManager.java | 42 + .../DefaultActionValidatorManager.java | 49 +--- .../validators/VisitorFieldValidator.java | 13 -- .../validator/VisitorFieldValidatorTest.java| 27 ++- .../AppendingValidatorContextTest.java | 47 +++ .../xwork2/TestChildBean-validation.xml | 21 + 6 files changed, 96 insertions(+), 103 deletions(-) --
[CONF] Confluence Changes in the last 24 hours
Confluence Changes in the last 24 hours Apache BookKeeper Pages Page: Metrics created by Matthieu Morel [03:43 PM] Page: Building documentation edited by Ivan Kelly [03:24 PM] (View Changes) Apache Camel Pages Page: Camel 2.14.0 Release edited by Claus Ibsen [04:00 PM] (View Changes) Page: Component List edited by Claus Ibsen [03:58 PM] (View Changes) Page: Spark created by Claus Ibsen [03:56 PM] Page: JMS edited by Bilgin Ibryam [11:48 AM] (View Changes) Apache Cloudstack Pages Page: Baremetal Advanced Networking Support edited by frank.zhang [10:35 PM] (View Changes) Page: Brocade Network Plugin to Orchestrate Brocade VDX Switches edited by Ritu Sabharwal [07:10 PM] (View Changes) Page: API changes edited by Demetrius Tsitrelis [05:58 PM] (View Changes) Page: Granular Global Configuration Parameters edited by prashant kumar mishra [04:56 AM] (View Changes) Page: Dynamic compute offering edited by prashant kumar mishra [04:53 AM] (View Changes) Page: Configurable setting to use linked clones or full clones on VMware edited by prashant kumar mishra [04:46 AM] (View Changes) Page: Scaling up CPU and RAM for running VMs edited by prashant kumar mishra [04:42 AM] (View Changes) Page: Bind and PowerDNS integration by Globo DNSAPI edited by Silvano Buback [01:02 AM] (View Changes) Drill Wiki Pages Page: Connecting Apache Drill to Data Sources edited by Bridget Bevens [11:33 PM] (View Changes) Apache Hive Pages Home page: Home edited by Lefty Leverenz [11:42 PM] (View Changes) Page: DeveloperDocs created by Lefty Leverenz [11:38 PM] Page: Parquet edited by Lefty Leverenz [07:06 AM] (View Changes) Page: Configuration Properties edited by Lefty Leverenz [06:25 AM] (View Changes) Page: LanguageManual Select edited by Lefty Leverenz [05:37 AM] (View Changes) Apache Mesos