package io.swagger.model.override; import io.swagger.converter.ModelConverter; import io.swagger.converter.ModelConverterContext; import io.swagger.jackson.AbstractModelConverter; import io.swagger.models.Model; import io.swagger.models.ModelImpl; import io.swagger.models.properties.Property; import io.swagger.util.Json; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Iterator; import java.util.Map.Entry; public class GericModelConverter extends AbstractModelConverter { protected GericModelConverter() { super(Json.mapper()); } @Override public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations, Iterator<ModelConverter> chain) { return chain.next().resolveProperty(type, context, annotations, chain); } @Override public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> next) { if (type instanceof Class<?>) { Class<?> cls = (Class<?>) type; if (GenericModel.class.isAssignableFrom(cls)) { ModelImpl impl = new ModelImpl(); impl.setName(cls.getSimpleName()); for (Entry<String, Class<?>> entry : GenericModel.getDeclaredProperties().entrySet()) { impl.addProperty(entry.getKey(), context.resolveProperty(entry.getValue(), null)); } context.defineModel(impl.getName(), impl); return impl; } } return null; } }