From 455e7e91aeee49b206da427685ade656a55144c3 Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Sun, 21 Jan 2024 10:39:49 +0100 Subject: [PATCH] WW-5360 Introduces additional countStr & indexStr to allow to ignore conversion --- .../struts2/views/jsp/IteratorStatus.java | 20 +- .../com/opensymphony/xwork2/test/User.java | 6 + .../java/org/apache/struts2/TestAction.java | 9 + .../components/IteratorComponentTest.java | 199 +++++++++++++++++- .../struts2/views/jsp/IteratorTagTest.java | 173 ++++++--------- 5 files changed, 293 insertions(+), 114 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/views/jsp/IteratorStatus.java b/core/src/main/java/org/apache/struts2/views/jsp/IteratorStatus.java index 13022f856a..fedef363e6 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/IteratorStatus.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/IteratorStatus.java @@ -26,23 +26,29 @@ *
  • count: iterations so far, starts on 1. count is always index + 1
  • *
  • first: true if index == 0
  • *
  • even: true if (index + 1) % 2 == 0
  • - *
  • last: true if current iteration is the last iteration
  • + *
  • last: true if current iteration is the last iteration
  • *
  • odd: true if (index + 1) % 2 == 1
  • * *

    Example

    *
      *   <s:iterator status="status" value='{0, 1}'>
      *      Index: <s:property value="%{#status.index}" /> <br />
    - *      Count: <s:property value="%{#status.count}" /> <br />  
    + *      Index Str: <s:property value="%{#status.indexStr}" /> <br />
    + *      Count: <s:property value="%{#status.count}" /> <br />
    + *      Count Str: <s:property value="%{#status.countStr}" /> <br />
      *   </s:iterator>
      * 
    - * + * *

    will print

    *
      *      Index: 0
    + *      Index Str: 0
      *      Count: 1
    + *      Count Str: 1
      *      Index: 1
    + *      Index Str: 1
      *      Count: 2
    + *      Count Str: 2
      * 
    */ public class IteratorStatus { @@ -56,6 +62,10 @@ public int getCount() { return state.index + 1; } + public String getCountStr() { + return String.valueOf(state.index + 1); + } + public boolean isEven() { return ((state.index + 1) % 2) == 0; } @@ -68,6 +78,10 @@ public int getIndex() { return state.index; } + public String getIndexStr() { + return String.valueOf(state.index); + } + public boolean isLast() { return state.last; } diff --git a/core/src/test/java/com/opensymphony/xwork2/test/User.java b/core/src/test/java/com/opensymphony/xwork2/test/User.java index d377fe0189..e6c5d2af49 100644 --- a/core/src/test/java/com/opensymphony/xwork2/test/User.java +++ b/core/src/test/java/com/opensymphony/xwork2/test/User.java @@ -37,6 +37,12 @@ public class User implements UserMarker { private String email2; private String name; + public User() { + } + + public User(String name) { + this.name = name; + } public void setCollection(Collection collection) { this.collection = collection; diff --git a/core/src/test/java/org/apache/struts2/TestAction.java b/core/src/test/java/org/apache/struts2/TestAction.java index 77f784a618..b9595de11b 100644 --- a/core/src/test/java/org/apache/struts2/TestAction.java +++ b/core/src/test/java/org/apache/struts2/TestAction.java @@ -45,6 +45,7 @@ public class TestAction extends ActionSupport { private String result; private User user; private String[] array; + private Object[] objectArray; private String[][] list; private List list2; private List list3; @@ -135,6 +136,14 @@ public void setArray(String[] array) { this.array = array; } + public Object[] getObjectArray() { + return objectArray; + } + + public void setObjectArray(Object[] arrayObject) { + this.objectArray = arrayObject; + } + public String[][] getList() { return list; } diff --git a/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java b/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java index d6cc5305de..78dd5536a4 100644 --- a/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java +++ b/core/src/test/java/org/apache/struts2/components/IteratorComponentTest.java @@ -19,16 +19,20 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.test.User; import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.StrutsInternalTestCase; +import org.apache.struts2.TestAction; import java.io.StringWriter; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; public class IteratorComponentTest extends StrutsInternalTestCase { - public void testIterator() throws Exception { + public void testIterator() { // given final ValueStack stack = ActionContext.getContext().getValueStack(); stack.push(new FooAction()); @@ -62,7 +66,50 @@ public void testIterator() throws Exception { assertEquals("item1 item2 item3 item4 ", out.getBuffer().toString()); } - public void testIteratorWithBegin() throws Exception { + public void testSimpleIterator() { + // given + final ValueStack stack = ActionContext.getContext().getValueStack(); + stack.push(new FooAction()); + + StringWriter out = new StringWriter(); + + IteratorComponent ic = new IteratorComponent(stack); + ic.setBegin("1"); + ic.setEnd("8"); + ic.setStep("2"); + ic.setStatus("status"); + + Property prop = new Property(stack); + Property status = new Property(stack); + status.setValue("#status.index"); + + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + + String body = " "; + + // when + assertTrue(ic.start(out)); + + for (int i = 0; i < 4; i++) { + status.start(out); + status.end(out, body); + prop.start(out); + prop.end(out, body); + ic.end(out, null); + } + + // then + assertEquals("0 1 1 3 2 5 3 7 ", out.getBuffer().toString()); + } + + public void testIteratorWithBegin() { // given final ValueStack stack = ActionContext.getContext().getValueStack(); stack.push(new FooAction()); @@ -94,13 +141,13 @@ public void testIteratorWithBegin() throws Exception { assertEquals("item2 item3 item4 ", out.getBuffer().toString()); } - public void testIteratorWithNulls() throws Exception { + public void testIteratorWithNulls() { // given final ValueStack stack = ActionContext.getContext().getValueStack(); stack.push(new FooAction() { - private List items = Arrays.asList("1", "2", null, "4"); + private final List items = Arrays.asList("1", "2", null, "4"); - public List getItems() { + public List getItems() { return items; } }); @@ -132,15 +179,153 @@ public List getItems() { assertEquals("1, 2, , 4, ", out.getBuffer().toString()); } + public void testIteratorWithDifferentLocale() { + // given + ActionContext.getContext().withLocale(new Locale("fa_IR")); + final ValueStack stack = ActionContext.getContext().getValueStack(); + stack.push(new FooAction()); + + StringWriter out = new StringWriter(); + + IteratorComponent ic = new IteratorComponent(stack); + ic.setBegin("1"); + ic.setEnd("3"); + ic.setStatus("status"); + + Property prop = new Property(stack); + Property status = new Property(stack); + status.setValue("#status.count"); + + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + + String body = ","; + + // when + assertTrue(ic.start(out)); + + for (int i = 0; i < 3; i++) { + status.start(out); + status.end(out, body); + + prop.start(out); + prop.end(out, body); + ic.end(out, null); + } + + // then + assertEquals("1,1,2,2,3,3,", out.getBuffer().toString()); + } + + public void testListOfBeansIterator() { + // given + final ValueStack stack = ActionContext.getContext().getValueStack(); + TestAction action = new TestAction(); + action.setList2(new ArrayList() {{ + add(new User("Anton")); + add(new User("Tym")); + add(new User("Luk")); + }}); + stack.push(action); + + StringWriter out = new StringWriter(); + + IteratorComponent ic = new IteratorComponent(stack); + ic.setValue("list2"); + ic.setStatus("status"); + + Property prop = new Property(stack); + prop.setValue("name"); + Property status = new Property(stack); + status.setValue("#status.indexStr"); + + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + + String body = ","; + + // when + assertTrue(ic.start(out)); + + for (int i = 0; i < 3; i++) { + status.start(out); + status.end(out, body); + + prop.start(out); + prop.end(out, body); + + ic.end(out, null); + } + + // then + assertEquals("0,Anton,1,Tym,2,Luk,", out.getBuffer().toString()); + } + + public void testArrayOfBeansIterator() { + // given + final ValueStack stack = ActionContext.getContext().getValueStack(); + TestAction action = new TestAction(); + action.setObjectArray(new ArrayList() {{ + add(new User("Anton")); + add(new User("Tym")); + add(new User("Luk")); + }}.toArray()); + stack.push(action); + + StringWriter out = new StringWriter(); + + IteratorComponent ic = new IteratorComponent(stack); + ic.setValue("objectArray"); + ic.setStatus("status"); + + Property prop = new Property(stack); + prop.setValue("name"); + Property status = new Property(stack); + status.setValue("#status.countStr"); + + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + ic.getComponentStack().push(status); + ic.getComponentStack().push(prop); + + String body = " "; + + // when + assertTrue(ic.start(out)); + + for (int i = 0; i < 3; i++) { + status.start(out); + status.end(out, body); + + prop.start(out); + prop.end(out, body); + + ic.end(out, null); + } + + // then + assertEquals("1 Anton 2 Tym 3 Luk ", out.getBuffer().toString()); + } + static class FooAction { - private List items; + private final List items; public FooAction() { items = Arrays.asList("item1", "item2", "item3", "item4"); } - public List getItems() { + public List getItems() { return items; } } diff --git a/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java index df5022c0ad..ca6ec2a9ee 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java @@ -31,18 +31,12 @@ import java.util.List; import java.util.Map; - -/** - * Test Case for Iterator Tag - * - */ public class IteratorTagTest extends AbstractUITagTest { - IteratorTag tag; - + private IteratorTag tag; public void testIteratingWithIdSpecified() throws Exception { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add("one"); list.add("two"); list.add("three"); @@ -104,12 +98,12 @@ public void testIteratingWithIdSpecified() throws Exception { IteratorTag freshTag = new IteratorTag(); freshTag.setPageContext(pageContext); assertFalse("Tag state after doEndTag() under default tag clear state is equal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } public void testIteratingWithIdSpecified_clearTagStateSet() throws Exception { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add("one"); list.add("two"); list.add("three"); @@ -174,12 +168,12 @@ public void testIteratingWithIdSpecified_clearTagStateSet() throws Exception { freshTag.setPerformClearTagStateForTagPoolingServers(true); freshTag.setPageContext(pageContext); assertTrue("Tag state after doEndTag() and explicit tag state clearing is inequal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } public void testIteratingWithIdSpecifiedAndNullElementOnCollection() throws Exception { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add("one"); list.add(null); list.add("three"); @@ -224,12 +218,12 @@ public void testIteratingWithIdSpecifiedAndNullElementOnCollection() throws Exce IteratorTag freshTag = new IteratorTag(); freshTag.setPageContext(pageContext); assertFalse("Tag state after doEndTag() under default tag clear state is equal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } public void testIteratingWithIdSpecifiedAndNullElementOnCollection_clearTagStateSet() throws Exception { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add("one"); list.add(null); list.add("three"); @@ -277,7 +271,7 @@ public void testIteratingWithIdSpecifiedAndNullElementOnCollection_clearTagState freshTag.setPerformClearTagStateForTagPoolingServers(true); freshTag.setPageContext(pageContext); assertTrue("Tag state after doEndTag() and explicit tag state clearing is inequal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } @@ -294,7 +288,7 @@ public void testArrayIterator() { public void testCollectionIterator() { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + List list = new ArrayList<>(); list.add("test1"); list.add("test2"); list.add("test3"); @@ -314,7 +308,7 @@ public void testIteratorWithDefaultValue() { public void testMapIterator() { Foo foo = new Foo(); - HashMap map = new HashMap(); + HashMap map = new HashMap<>(); map.put("test1", "123"); map.put("test2", "456"); map.put("test3", "789"); @@ -329,8 +323,7 @@ public void testMapIterator() { try { result = tag.doStartTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_INCLUDE, result); @@ -340,8 +333,7 @@ public void testMapIterator() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -351,8 +343,7 @@ public void testMapIterator() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -362,8 +353,7 @@ public void testMapIterator() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.SKIP_BODY, result); @@ -372,8 +362,7 @@ public void testMapIterator() { try { result = tag.doEndTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_PAGE, result); @@ -382,13 +371,13 @@ public void testMapIterator() { IteratorTag freshTag = new IteratorTag(); freshTag.setPageContext(pageContext); assertFalse("Tag state after doEndTag() under default tag clear state is equal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } public void testMapIterator_clearTagStateSet() { Foo foo = new Foo(); - HashMap map = new HashMap(); + HashMap map = new HashMap<>(); map.put("test1", "123"); map.put("test2", "456"); map.put("test3", "789"); @@ -405,8 +394,7 @@ public void testMapIterator_clearTagStateSet() { result = tag.doStartTag(); setComponentTagClearTagState(tag, true); // Ensure component tag state clearing is set true (to match tag). } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_INCLUDE, result); @@ -416,8 +404,7 @@ public void testMapIterator_clearTagStateSet() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -427,8 +414,7 @@ public void testMapIterator_clearTagStateSet() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -438,8 +424,7 @@ public void testMapIterator_clearTagStateSet() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.SKIP_BODY, result); @@ -448,8 +433,7 @@ public void testMapIterator_clearTagStateSet() { try { result = tag.doEndTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_PAGE, result); @@ -459,7 +443,7 @@ public void testMapIterator_clearTagStateSet() { freshTag.setPerformClearTagStateForTagPoolingServers(true); freshTag.setPageContext(pageContext); assertTrue("Tag state after doEndTag() and explicit tag state clearing is inequal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } @@ -477,8 +461,7 @@ public void testStatus() { try { result = tag.doStartTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_INCLUDE, result); @@ -490,15 +473,16 @@ public void testStatus() { assertFalse(status.isLast()); assertTrue(status.isFirst()); assertEquals(0, status.getIndex()); + assertEquals("0", status.getIndexStr()); assertEquals(1, status.getCount()); + assertEquals("1", status.getCountStr()); assertTrue(status.isOdd()); assertFalse(status.isEven()); try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -517,8 +501,7 @@ public void testStatus() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -537,8 +520,7 @@ public void testStatus() { try { result = tag.doEndTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_PAGE, result); @@ -547,7 +529,7 @@ public void testStatus() { IteratorTag freshTag = new IteratorTag(); freshTag.setPageContext(pageContext); assertFalse("Tag state after doEndTag() under default tag clear state is equal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } @@ -567,8 +549,7 @@ public void testStatus_clearTagStateSet() { result = tag.doStartTag(); setComponentTagClearTagState(tag, true); // Ensure component tag state clearing is set true (to match tag). } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_INCLUDE, result); @@ -587,8 +568,7 @@ public void testStatus_clearTagStateSet() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -607,8 +587,7 @@ public void testStatus_clearTagStateSet() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -627,8 +606,7 @@ public void testStatus_clearTagStateSet() { try { result = tag.doEndTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_PAGE, result); @@ -638,7 +616,7 @@ public void testStatus_clearTagStateSet() { freshTag.setPerformClearTagStateForTagPoolingServers(true); freshTag.setPageContext(pageContext); assertTrue("Tag state after doEndTag() and explicit tag state clearing is inequal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } @@ -666,7 +644,7 @@ public void testNullArray() { public void testEmptyCollection() { Foo foo = new Foo(); - foo.setList(new ArrayList()); + foo.setList(new ArrayList<>()); stack.push(foo); @@ -692,7 +670,7 @@ public void testCounter() throws JspException { validateCounter(new Integer[]{0, 1, 2, 3, 4, 5}); } - public void testCounterWithStackValues() throws JspException { + public void testCounterWithStackValues() throws JspException { stack.getContext().put("begin", 0); stack.getContext().put("end", 5); tag.setBegin("%{#begin}"); @@ -702,7 +680,7 @@ public void testCounterWithStackValues() throws JspException { public void testCounterWithList() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -720,7 +698,6 @@ public void testCounterWithList() throws JspException { public void testCounterWithArray() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); foo.setArray(new String[]{"a", "b", "c", "d"}); stack.push(foo); @@ -735,7 +712,7 @@ public void testCounterWithArray() throws JspException { public void testCounterWithListNoEnd() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -752,7 +729,6 @@ public void testCounterWithListNoEnd() throws JspException { public void testCounterWithArrayNoEnd() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); foo.setArray(new String[]{"a", "b", "c", "d"}); stack.push(foo); @@ -765,7 +741,7 @@ public void testCounterWithArrayNoEnd() throws JspException { public void testCounterWithList2() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -783,7 +759,6 @@ public void testCounterWithList2() throws JspException { public void testCounterWithArray2() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); foo.setArray(new String[]{"a", "b", "c", "d"}); stack.push(foo); @@ -797,7 +772,7 @@ public void testCounterWithArray2() throws JspException { public void testCounterWithListNoEnd2() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -812,9 +787,8 @@ public void testCounterWithListNoEnd2() throws JspException { validateCounter(new String[]{"c", "d"}); } - public void testCounterWithArrayNoEnd2() throws JspException { + public void testCounterWithArrayNoEnd2() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); foo.setArray(new String[]{"a", "b", "c", "d"}); stack.push(foo); @@ -838,9 +812,9 @@ public void testCounterWithStep() throws JspException { validateCounter(new Integer[]{0, 2, 4}); } - public void testCounterWithListAndStep() throws JspException { + public void testCounterWithListAndStep() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -858,9 +832,8 @@ public void testCounterWithListAndStep() throws JspException { validateCounter(new String[]{"a", "c"}); } - public void testCounterWithArrayAndStep() throws JspException { + public void testCounterWithArrayAndStep() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); foo.setArray(new String[]{"a", "b", "c", "d"}); stack.push(foo); @@ -876,7 +849,7 @@ public void testCounterWithArrayAndStep() throws JspException { public void testCounterWithListAndStepNoEnd() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -895,7 +868,6 @@ public void testCounterWithListAndStepNoEnd() throws JspException { public void testCounterWithArrayAndStepNoEnd() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); foo.setArray(new String[]{"a", "b", "c", "d"}); stack.push(foo); @@ -917,7 +889,7 @@ public void testCounterWithNegativeStep() throws JspException { public void testCounterWithListAndNegativeStep() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -937,7 +909,7 @@ public void testCounterWithListAndNegativeStep() throws JspException { public void testCounterWithListAndNegativeStepNoEnd() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -954,9 +926,9 @@ public void testCounterWithListAndNegativeStepNoEnd() throws JspException { validateCounter(new String[]{"d", "c", "b", "a"}); } - public void testCounterWithArrayAndNegativeStep() throws JspException { + public void testCounterWithArrayAndNegativeStep() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -976,7 +948,7 @@ public void testCounterWithArrayAndNegativeStep() throws JspException { public void testCounterWithArrayAndNegativeStepNoEnd() throws JspException { Foo foo = new Foo(); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); @@ -994,14 +966,13 @@ public void testCounterWithArrayAndNegativeStepNoEnd() throws JspException { } protected void validateCounter(Object[] expectedValues) throws JspException { - List values = new ArrayList(); + ArrayList values = new ArrayList<>(); try { int result = tag.doStartTag(); assertEquals(TagSupport.EVAL_BODY_INCLUDE, result); values.add(stack.getRoot().peek()); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } while (tag.doAfterBody() == TagSupport.EVAL_BODY_AGAIN) { @@ -1033,8 +1004,7 @@ private void iterateThreeStrings() { try { result = tag.doStartTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_INCLUDE, result); @@ -1044,8 +1014,7 @@ private void iterateThreeStrings() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -1055,8 +1024,7 @@ private void iterateThreeStrings() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_BODY_AGAIN, result); @@ -1066,8 +1034,7 @@ private void iterateThreeStrings() { try { result = tag.doAfterBody(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.SKIP_BODY, result); @@ -1080,16 +1047,14 @@ private void validateSkipBody() { try { result = tag.doStartTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.SKIP_BODY, result); try { result = tag.doEndTag(); } catch (JspException e) { - e.printStackTrace(); - fail(); + fail(e.getMessage()); } assertEquals(TagSupport.EVAL_PAGE, result); @@ -1098,13 +1063,13 @@ private void validateSkipBody() { IteratorTag freshTag = new IteratorTag(); freshTag.setPageContext(pageContext); assertFalse("Tag state after doEndTag() under default tag clear state is equal to new Tag with pageContext/parent set. " + - "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", + "May indicate that clearTagStateForTagPoolingServers() calls are not working properly.", strutsBodyTagsAreReflectionEqual(tag, freshTag)); } - class Foo { - private Collection list; - private Map map; + static class Foo { + private Collection list; + private Map map; private String[] array; public void setArray(String[] array) { @@ -1115,24 +1080,24 @@ public String[] getArray() { return array; } - public void setList(Collection list) { + public void setList(Collection list) { this.list = list; } - public Collection getList() { + public Collection getList() { return list; } - public void setMap(Map map) { + public void setMap(Map map) { this.map = map; } - public Map getMap() { + public Map getMap() { return map; } } - class TestMockBodyContent extends MockBodyContent { + static class TestMockBodyContent extends MockBodyContent { public String getString() { return ".-."; }