Adds sorted and navigable set support JSON plugin

See WW-4937 for more details.
This commit is contained in:
Jarek Lipski
2018-05-10 12:46:57 +02:00
parent 57901aba50
commit 73cace0cbb
4 changed files with 52 additions and 2 deletions
@@ -203,7 +203,9 @@ public class JSONPopulator {
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 {
newCollection = new ArrayList();
@@ -112,6 +112,21 @@ public class JSONPopulatorTest extends TestCase {
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());
}
public void testObjectBeanWithStrings() throws Exception {
@@ -20,6 +20,9 @@ package org.apache.struts2.json;
import java.util.List;
import java.util.Map;
import java.util.NavigableSet;
import java.util.Set;
import java.util.SortedSet;
public class WrapperClassBean {
@@ -40,6 +43,9 @@ 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;
public List<SimpleValue> getListField() {
return listField;
@@ -73,6 +79,30 @@ public class WrapperClassBean {
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 Boolean getBooleanField() {
return booleanField;
}
@@ -16,5 +16,8 @@
"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"]
}