package com.fasterxml.jackson.databind.views; import java.util.*; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.jsonFormatVisitors.*; public class ViewsWithSchemaTest extends BaseMapTest { interface ViewBC { } interface ViewAB { } @JsonPropertyOrder({ "a", "b", "c" }) static class POJO { @JsonView({ ViewAB.class }) public int a; @JsonView({ ViewAB.class, ViewBC.class }) public int b; @JsonView({ ViewBC.class }) public int c; } static class ListingVisitor extends JsonFormatVisitorWrapper.Base { public final List<String> names = new ArrayList<String>(); @Override public JsonObjectFormatVisitor expectObjectFormat(JavaType type) { return new JsonObjectFormatVisitor.Base() { @Override public void optionalProperty(BeanProperty writer) { names.add(writer.getName()); } @Override public void optionalProperty(String name, JsonFormatVisitable handler, JavaType propertyTypeHint) { names.add(name); } }; } } /* /********************************************************** /* Test methods /********************************************************** */ private final ObjectMapper MAPPER = new ObjectMapper(); public void testSchemaWithViews() throws Exception { ListingVisitor v = new ListingVisitor(); MAPPER.writerWithView(ViewBC.class) .acceptJsonFormatVisitor(POJO.class, v); assertEquals(Arrays.asList("b", "c"), v.names); v = new ListingVisitor(); MAPPER.writerWithView(ViewAB.class) .acceptJsonFormatVisitor(POJO.class, v); assertEquals(Arrays.asList("a", "b"), v.names); } public void testSchemaWithoutViews() throws Exception { ListingVisitor v = new ListingVisitor(); MAPPER.acceptJsonFormatVisitor(POJO.class, v); assertEquals(Arrays.asList("a", "b", "c"), v.names); } }