From 459cb61ca4f2cf8cc1aa9db118a3bc9716586583 Mon Sep 17 00:00:00 2001 From: Jarek Lipski Date: Sat, 12 May 2018 17:06:38 +0200 Subject: [PATCH] Adds deque and queue support JSON plugin --- .../apache/struts2/json/JSONPopulator.java | 2 ++ .../struts2/json/JSONPopulatorTest.java | 10 ++++++++++ .../apache/struts2/json/WrapperClassBean.java | 20 +++++++++++++++++++ .../org/apache/struts2/json/json-7.txt | 4 +++- 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java index 52ab35884..ef1ac77bd 100644 --- a/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java +++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java @@ -207,6 +207,8 @@ public class JSONPopulator { newCollection = new TreeSet(); } else if (Set.class.isAssignableFrom(clazz)) { newCollection = new HashSet(); + } else if (Queue.class.isAssignableFrom(clazz)) { + newCollection = new ArrayDeque(); } else { newCollection = new ArrayList(); } diff --git a/plugins/json/src/test/java/org/apache/struts2/json/JSONPopulatorTest.java b/plugins/json/src/test/java/org/apache/struts2/json/JSONPopulatorTest.java index a5ee9ddd5..b2101c656 100644 --- a/plugins/json/src/test/java/org/apache/struts2/json/JSONPopulatorTest.java +++ b/plugins/json/src/test/java/org/apache/struts2/json/JSONPopulatorTest.java @@ -127,6 +127,16 @@ public class JSONPopulatorTest extends TestCase { assertEquals("A", bean.getNavigableSetField().first()); assertEquals(true, bean.getNavigableSetField().contains("B")); assertEquals("C", bean.getNavigableSetField().last()); + + assertEquals(3, bean.getQueueField().size()); + assertEquals("A", bean.getQueueField().poll()); + assertEquals("B", bean.getQueueField().poll()); + assertEquals("C", bean.getQueueField().poll()); + + assertEquals(3, bean.getDequeField().size()); + assertEquals("A", bean.getDequeField().pollFirst()); + assertEquals("B", bean.getDequeField().pollFirst()); + assertEquals("C", bean.getDequeField().pollFirst()); } public void testObjectBeanWithStrings() throws Exception { diff --git a/plugins/json/src/test/java/org/apache/struts2/json/WrapperClassBean.java b/plugins/json/src/test/java/org/apache/struts2/json/WrapperClassBean.java index 96e2fce3b..92f45e1dd 100644 --- a/plugins/json/src/test/java/org/apache/struts2/json/WrapperClassBean.java +++ b/plugins/json/src/test/java/org/apache/struts2/json/WrapperClassBean.java @@ -18,9 +18,11 @@ */ package org.apache.struts2.json; +import java.util.Deque; import java.util.List; import java.util.Map; import java.util.NavigableSet; +import java.util.Queue; import java.util.Set; import java.util.SortedSet; @@ -46,6 +48,8 @@ public class WrapperClassBean { private Set setField; private SortedSet sortedSetField; private NavigableSet navigableSetField; + private Queue queueField; + private Deque dequeField; public List getListField() { return listField; @@ -103,6 +107,22 @@ public class WrapperClassBean { this.navigableSetField = navigableSetField; } + public Queue getQueueField() { + return queueField; + } + + public void setQueueField(Queue queueField) { + this.queueField = queueField; + } + + public Deque getDequeField() { + return dequeField; + } + + public void setDequeField(Deque dequeField) { + this.dequeField = dequeField; + } + public Boolean getBooleanField() { return booleanField; } diff --git a/plugins/json/src/test/resources/org/apache/struts2/json/json-7.txt b/plugins/json/src/test/resources/org/apache/struts2/json/json-7.txt index 7d51fda66..58cf448e6 100644 --- a/plugins/json/src/test/resources/org/apache/struts2/json/json-7.txt +++ b/plugins/json/src/test/resources/org/apache/struts2/json/json-7.txt @@ -19,5 +19,7 @@ "arrayMapField": [{"id1":2073501,"id2":3}], "setField": ["A", "C", "B"], "sortedSetField": ["A", "C", "B"], - "navigableSetField": ["A", "B", "C"] + "navigableSetField": ["A", "B", "C"], + "queueField": ["A", "B", "C"], + "dequeField": ["A", "B", "C"] }