Skip to content

Commit

Permalink
Merge pull request #219 from loomchild/add-sortedset-support
Browse files Browse the repository at this point in the history
WW-4937 Add SortedSet support to JSON plugin
  • Loading branch information
yasserzamani committed May 14, 2018
2 parents 57901ab + 459cb61 commit dcadfeb
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,12 @@ else if (value instanceof List) {
newCollection = (Collection) clazz.newInstance();
} catch (InstantiationException ex) {
// fallback if clazz represents an interface or abstract class
if (Set.class.isAssignableFrom(clazz)) {
if (SortedSet.class.isAssignableFrom(clazz)) {
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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,31 @@ public void testObjectBean() throws Exception {
assertEquals(2, bean.getArrayMapField()[0].size());
assertEquals(new Long(2073501), bean.getArrayMapField()[0].get("id1"));
assertEquals(new Long(3), bean.getArrayMapField()[0].get("id2"));

assertEquals(3, bean.getSetField().size());
assertEquals(true, bean.getSetField().contains("A"));
assertEquals(true, bean.getSetField().contains("B"));
assertEquals(true, bean.getSetField().contains("C"));

assertEquals(3, bean.getSortedSetField().size());
assertEquals("A", bean.getSortedSetField().first());
assertEquals(true, bean.getSortedSetField().contains("B"));
assertEquals("C", bean.getSortedSetField().last());

assertEquals(3, bean.getNavigableSetField().size());
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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,13 @@
*/
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;

public class WrapperClassBean {

Expand All @@ -40,6 +45,11 @@ public class WrapperClassBean {
private List<Map<String, Long>> listMapField;
private Map<String, List<Long>> mapListField;
private Map<String, Long>[] arrayMapField;
private Set<String> setField;
private SortedSet<String> sortedSetField;
private NavigableSet<String> navigableSetField;
private Queue<String> queueField;
private Deque<String> dequeField;

public List<SimpleValue> getListField() {
return listField;
Expand Down Expand Up @@ -73,6 +83,46 @@ public void setArrayMapField(Map<String, Long>[] arrayMapField) {
this.arrayMapField = arrayMapField;
}

public Set<String> getSetField() {
return setField;
}

public void setSetField(Set<String> setField) {
this.setField = setField;
}

public SortedSet<String> getSortedSetField() {
return sortedSetField;
}

public void setSortedSetField(SortedSet<String> sortedSetField) {
this.sortedSetField = sortedSetField;
}

public NavigableSet<String> getNavigableSetField() {
return navigableSetField;
}

public void setNavigableSetField(NavigableSet<String> navigableSetField) {
this.navigableSetField = navigableSetField;
}

public Queue<String> getQueueField() {
return queueField;
}

public void setQueueField(Queue<String> queueField) {
this.queueField = queueField;
}

public Deque<String> getDequeField() {
return dequeField;
}

public void setDequeField(Deque<String> dequeField) {
this.dequeField = dequeField;
}

public Boolean getBooleanField() {
return booleanField;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,10 @@
"listField": [{"value":"1"},{"value":"2"}],
"listMapField": [{"id1":2073501,"id2":3}],
"mapListField": {"id1":[1,2,3],"id2":[4,3,2,1]},
"arrayMapField": [{"id1":2073501,"id2":3}]
"arrayMapField": [{"id1":2073501,"id2":3}],
"setField": ["A", "C", "B"],
"sortedSetField": ["A", "C", "B"],
"navigableSetField": ["A", "B", "C"],
"queueField": ["A", "B", "C"],
"dequeField": ["A", "B", "C"]
}

0 comments on commit dcadfeb

Please sign in to comment.