package com.github.kongchen.swagger.docgen.reader; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.SimpleType; import org.testng.Assert; import org.testng.annotations.Test; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import io.swagger.annotations.ApiModelProperty; import io.swagger.converter.ModelConverter; import io.swagger.converter.ModelConverterContext; import io.swagger.converter.ModelConverterContextImpl; import io.swagger.models.ArrayModel; import io.swagger.models.Model; import io.swagger.models.properties.Property; import io.swagger.models.properties.StringProperty; /** * Created by mkosiorek on 25.04.17. */ public class ModelModifierTest { @Test public void testProcessFieldInParentClass() throws Exception { ModelModifier modelModifier = new ModelModifier(new ObjectMapper()); modelModifier.setApiModelPropertyAccessExclusions(Arrays.asList("public")); JavaType type = SimpleType.constructUnsafe(B.class); ModelConverterContext context = new ModelConverterContextImpl(new ModelConverter() { @Override public Property resolveProperty(Type type, ModelConverterContext modelConverterContext, Annotation[] annotations, Iterator<ModelConverter> iterator) { return null; } @Override public Model resolve(Type type, ModelConverterContext modelConverterContext, Iterator<ModelConverter> iterator) { ArrayModel model = new ArrayModel(); Map<String, Property> properties = new HashMap<String, Property>(); properties.put("sample1", new StringProperty()); properties.put("sample2", new StringProperty()); model.setProperties(properties); return model; } }); Iterator<ModelConverter> chain = null; Model model = modelModifier.resolve(type, context, chain); Assert.assertFalse(model.getProperties().containsKey("sample1")); Assert.assertTrue(model.getProperties().containsKey("sample2")); } static class A { @ApiModelProperty(name = "sample1", access = "public") private String sample1; @ApiModelProperty(name = "sample2", access = "other") private String sample2; } static class B extends A { } }