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;

Reply via email to