Repository: johnzon Updated Branches: refs/heads/master 9330cea8c -> d858d3dd4
JOHNZON-150 add support for EnumSets Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/d858d3dd Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/d858d3dd Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/d858d3dd Branch: refs/heads/master Commit: d858d3dd461bc1b4dc98b789366a1a68673733b0 Parents: 9330cea Author: Mark Struberg <[email protected]> Authored: Mon Feb 26 14:46:25 2018 +0100 Committer: Mark Struberg <[email protected]> Committed: Mon Feb 26 14:46:25 2018 +0100 ---------------------------------------------------------------------- .../org/apache/johnzon/mapper/Mappings.java | 3 ++ .../org/apache/johnzon/mapper/EnumTest.java | 30 +++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/d858d3dd/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java ---------------------------------------------------------------------- diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java index a722602..b3dea58 100644 --- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java +++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java @@ -38,6 +38,7 @@ import java.util.Collection; import java.util.Comparator; import java.util.Date; import java.util.Deque; +import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -284,6 +285,8 @@ public class Mappings { collectionType = List.class; } else if (SortedSet.class.isAssignableFrom(r)) { collectionType = SortedSet.class; + } else if (EnumSet.class.isAssignableFrom(r)) { + collectionType = EnumSet.class; } else if (Set.class.isAssignableFrom(r)) { collectionType = Set.class; } else if (Deque.class.isAssignableFrom(r)) { http://git-wip-us.apache.org/repos/asf/johnzon/blob/d858d3dd/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/EnumTest.java ---------------------------------------------------------------------- diff --git a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/EnumTest.java b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/EnumTest.java index 841e4ec..f69ea3b 100644 --- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/EnumTest.java +++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/EnumTest.java @@ -23,6 +23,7 @@ import org.junit.Test; import java.util.Arrays; import java.util.Comparator; +import java.util.EnumSet; import java.util.List; public class EnumTest { @@ -89,6 +90,21 @@ public class EnumTest { .build()); } + @Test + public void testEnumSet() { + EnumSetObject eso = new EnumSetObject(); + eso.setEnumset(EnumSet.of(AdvancedEnum.VALUE_1, AdvancedEnum.VALUE_2)); + + String json = newTestMapperBuilder().build().writeObjectAsString(eso); + + EnumSetObject eso2 = newTestMapperBuilder().build().readObject(json, EnumSetObject.class); + Assert.assertNotNull(eso2); + Assert.assertNotNull(eso2.getEnumset()); + Assert.assertEquals(2, eso2.getEnumset().size()); + Assert.assertTrue(eso2.getEnumset().contains(AdvancedEnum.VALUE_1)); + Assert.assertTrue(eso2.getEnumset().contains(AdvancedEnum.VALUE_2)); + } + private void testAdvancedEnum(Mapper mapper) { AdvancedEnumObject object = new AdvancedEnumObject(AdvancedEnum.VALUE_1, Arrays.asList(AdvancedEnum.VALUE_2, AdvancedEnum.VALUE_1, @@ -146,10 +162,22 @@ public class EnumTest { } } + public static class EnumSetObject { + private EnumSet<AdvancedEnum> enumset; + + public EnumSet<AdvancedEnum> getEnumset() { + return enumset; + } + + public void setEnumset(EnumSet<AdvancedEnum> enumset) { + this.enumset = enumset; + } + } public enum AdvancedEnum { VALUE_1("one", 1), - VALUE_2("two", 2); + VALUE_2("two", 2), + VALUE_3("three", 3); private String string; private int i;
