Skip to content

Commit c3b85ae

Browse files
authored
Merge pull request #202 from lukaszlenart/limitable-extendable
WW-4909: Renames a constant and adds a test
2 parents 9bf89f8 + 355e4b5 commit c3b85ae

File tree

3 files changed

+54
-4
lines changed

3 files changed

+54
-4
lines changed

core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkListPropertyAccessor.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import ognl.ListPropertyAccessor;
2929
import ognl.OgnlException;
3030
import ognl.PropertyAccessor;
31+
import org.apache.struts2.StrutsConstants;
3132

3233
import java.util.Collection;
3334
import java.util.List;
@@ -49,12 +50,18 @@ public class XWorkListPropertyAccessor extends ListPropertyAccessor {
4950
private ObjectTypeDeterminer objectTypeDeterminer;
5051
private OgnlUtil ognlUtil;
5152
private int autoGrowCollectionLimit = 255;
52-
53+
54+
@Deprecated()
5355
@Inject(value = "xwork.autoGrowCollectionLimit", required = false)
54-
public void setAutoGrowCollectionLimit(String value) {
55-
this.autoGrowCollectionLimit = Integer.valueOf(value);
56-
}
56+
public void setDeprecatedAutoGrowCollectionLimit(String value) {
57+
this.autoGrowCollectionLimit = Integer.valueOf(value);
58+
}
5759

60+
@Inject(value = StrutsConstants.STRUTS_OGNL_AUTO_GROWTH_COLLECTION_LIMIT, required = false)
61+
public void setAutoGrowCollectionLimit(String value) {
62+
this.autoGrowCollectionLimit = Integer.parseInt(value);
63+
}
64+
5865
@Inject("java.util.Collection")
5966
public void setXWorkCollectionPropertyAccessor(PropertyAccessor acc) {
6067
this._sAcc = (XWorkCollectionPropertyAccessor) acc;

core/src/main/java/org/apache/struts2/StrutsConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,4 +328,6 @@ public final class StrutsConstants {
328328
public static final String STRUTS_LOCALIZED_TEXT_PROVIDER = "struts.localizedTextProvider";
329329

330330
public static final String STRUTS_DISALLOW_PROXY_MEMBER_ACCESS = "struts.disallowProxyMemberAccess";
331+
332+
public static final String STRUTS_OGNL_AUTO_GROWTH_COLLECTION_LIMIT = "struts.ognl.autoGrowthCollectionLimit";
331333
}

core/src/test/java/com/opensymphony/xwork2/ognl/accessor/XWorkListPropertyAccessorTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import com.opensymphony.xwork2.XWorkTestCase;
2323
import com.opensymphony.xwork2.util.ListHolder;
2424
import com.opensymphony.xwork2.util.ValueStack;
25+
import ognl.ListPropertyAccessor;
26+
import ognl.PropertyAccessor;
2527

2628
import java.util.ArrayList;
2729
import java.util.List;
@@ -61,4 +63,43 @@ public void testCanAccessListSizeProperty() {
6163
assertEquals(new Integer(myList.size()), vs.findValue("strings.size()"));
6264
assertEquals(new Integer(myList.size()), vs.findValue("strings.size"));
6365
}
66+
67+
public void testAutoGrowthCollectionLimit() {
68+
PropertyAccessor accessor = container.getInstance(PropertyAccessor.class, ArrayList.class.getName());
69+
((XWorkListPropertyAccessor) accessor).setAutoGrowCollectionLimit("2");
70+
71+
List<String> myList = new ArrayList<>();
72+
ListHolder listHolder = new ListHolder();
73+
listHolder.setStrings(myList);
74+
75+
ValueStack vs = ActionContext.getContext().getValueStack();
76+
vs.push(listHolder);
77+
78+
vs.setValue("strings[0]", "a");
79+
vs.setValue("strings[1]", "b");
80+
vs.setValue("strings[2]", "c");
81+
vs.setValue("strings[3]", "d");
82+
83+
assertEquals(3, vs.findValue("strings.size()"));
84+
}
85+
86+
public void testDeprecatedAutoGrowCollectionLimit() {
87+
PropertyAccessor accessor = container.getInstance(PropertyAccessor.class, ArrayList.class.getName());
88+
((XWorkListPropertyAccessor) accessor).setDeprecatedAutoGrowCollectionLimit("2");
89+
90+
List<String> myList = new ArrayList<>();
91+
ListHolder listHolder = new ListHolder();
92+
listHolder.setStrings(myList);
93+
94+
ValueStack vs = ActionContext.getContext().getValueStack();
95+
vs.push(listHolder);
96+
97+
vs.setValue("strings[0]", "a");
98+
vs.setValue("strings[1]", "b");
99+
vs.setValue("strings[2]", "c");
100+
vs.setValue("strings[3]", "d");
101+
102+
assertEquals(3, vs.findValue("strings.size()"));
103+
}
104+
64105
}

0 commit comments

Comments
 (0)