From f34ca3bafd45d23aeaa34ef81c4754cb0a8b7071 Mon Sep 17 00:00:00 2001 From: Michael Mortensen Date: Fri, 6 Dec 2013 12:52:53 +0100 Subject: [PATCH] Added a test exposing a bug in the generated serializers for enums implementing interfaces with @JsonSubTypes. Issue #164 --- .../client/codec/EncoderDecoderTestGwt.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/restygwt/src/test/java/org/fusesource/restygwt/client/codec/EncoderDecoderTestGwt.java b/restygwt/src/test/java/org/fusesource/restygwt/client/codec/EncoderDecoderTestGwt.java index 93316c69..b9d508c5 100644 --- a/restygwt/src/test/java/org/fusesource/restygwt/client/codec/EncoderDecoderTestGwt.java +++ b/restygwt/src/test/java/org/fusesource/restygwt/client/codec/EncoderDecoderTestGwt.java @@ -1053,4 +1053,26 @@ public void testJsonSubTypesWithAnInterface() { assertEquals(value, o1.getValue()); assertEquals(o1.getValue(), o2.getValue()); } + + + @JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property = "@class") + @JsonSubTypes({ @Type(EnumOfSubTypeInterface.class) }) + interface JsonSubTypesWithAnInterfaceForUseWithAnEnum { + @JsonProperty("name") + String name(); + } + + enum EnumOfSubTypeInterface implements JsonSubTypesWithAnInterfaceForUseWithAnEnum { + HELLO, + WORLD + } + + static interface JsonSubTypesWithAnInterfaceForUseWithAnEnumCodec extends JsonEncoderDecoder {} + + public void testJsonSubTypesWithAnInterfaceImplementedByAnEnum() { + JsonSubTypesWithAnInterfaceForUseWithAnEnumCodec codec = GWT.create(JsonSubTypesWithAnInterfaceForUseWithAnEnumCodec.class); + JSONValue json = codec.encode(EnumOfSubTypeInterface.HELLO); + JsonSubTypesWithAnInterfaceForUseWithAnEnum useWithAnEnum = codec.decode(json); + assertEquals(useWithAnEnum.name(), EnumOfSubTypeInterface.HELLO.name()); + } }