From dcf692cbdb43d804aa01d6e3342d088d6f63c1b2 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Tue, 11 Aug 2015 21:17:20 +0200 Subject: [PATCH] #375 - Fixed is-empty evaluation for TrueOnlyBooleanSerializer on Jackson 2.6. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added missing override for isEmpty(…) that gets used by Jackson 2.6+ to prevent { templated : false } get rendered in HAL link representations. Polished Javadoc on the way. --- .../hateoas/hal/Jackson2HalModule.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java b/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java index 17730b47..4fe4a058 100644 --- a/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java +++ b/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java @@ -675,22 +675,47 @@ public class Jackson2HalModule extends SimpleModule { super(Boolean.class); } + /* + * (non-Javadoc) + * @see com.fasterxml.jackson.databind.JsonSerializer#isEmpty(java.lang.Object) + */ @Override public boolean isEmpty(Boolean value) { + return isEmpty(null, value); + } + + /* + * (non-Javadoc) + * @see com.fasterxml.jackson.databind.JsonSerializer#isEmpty(com.fasterxml.jackson.databind.SerializerProvider, java.lang.Object) + */ + @Override + public boolean isEmpty(SerializerProvider provider, Boolean value) { return value == null || Boolean.FALSE.equals(value); } + /* + * (non-Javadoc) + * @see com.fasterxml.jackson.databind.ser.std.StdSerializer#serialize(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider) + */ @Override - public void serialize(Boolean value, JsonGenerator jgen, SerializerProvider provider) throws IOException, - JsonGenerationException { + public void serialize(Boolean value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonGenerationException { jgen.writeBoolean(value.booleanValue()); } + /* + * (non-Javadoc) + * @see com.fasterxml.jackson.databind.ser.std.StdScalarSerializer#getSchema(com.fasterxml.jackson.databind.SerializerProvider, java.lang.reflect.Type) + */ @Override public JsonNode getSchema(SerializerProvider provider, Type typeHint) { return createSchemaNode("boolean", true); } + /* + * (non-Javadoc) + * @see com.fasterxml.jackson.databind.ser.std.StdScalarSerializer#acceptJsonFormatVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper, com.fasterxml.jackson.databind.JavaType) + */ @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException {