package serializers.jackson; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.introspect.Annotated; import com.fasterxml.jackson.databind.introspect.AnnotatedClass; import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; /** * Helper class used to force conditional "as-array" serialization * without requiring value classes to be annotated. */ class AsArrayIntrospector extends JacksonAnnotationIntrospector { private static final long serialVersionUID = 1L; @Override public JsonFormat.Value findFormat(Annotated ann) { // 2.4 frowns upon trying to use this for Enums, so avoid those // also, limit to just claiming classes (POJOs) require it, not properties if (ann instanceof AnnotatedClass) { AnnotatedClass ac = (AnnotatedClass) ann; if (ac.getAnnotated().isEnum()) { return null; } return new JsonFormat.Value("", JsonFormat.Shape.ARRAY, "", "", JsonFormat.Features.empty()); } return null; } }