Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.nytimes.sartre.resource.command.swagger;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.nytimes.sartre.json.JSONRequestCommand;
- import com.wordnik.swagger.converter.ModelConverter;
- import com.wordnik.swagger.converter.ModelConverterContext;
- import com.wordnik.swagger.jackson.AbstractModelConverter;
- import com.wordnik.swagger.models.Model;
- import com.wordnik.swagger.models.ModelImpl;
- import com.wordnik.swagger.models.properties.ObjectProperty;
- import com.wordnik.swagger.models.properties.Property;
- import com.wordnik.swagger.util.Json;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import java.lang.annotation.Annotation;
- import java.lang.reflect.Field;
- import java.lang.reflect.Type;
- import java.util.*;
- public class JsonRequestCommandSwaggerModelConverter extends AbstractModelConverter {
- private static final Logger LOG = LoggerFactory.getLogger(JsonRequestCommandSwaggerModelConverter.class);
- public JsonRequestCommandSwaggerModelConverter() {
- super(Json.mapper());
- }
- // @Autowired(required = false)
- // private GsonBuilder gsonBuilder;
- @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> chain) {
- if(type instanceof Class<?>){
- Class<?> cls = (Class<?>) type;
- if(JSONRequestCommand.class.isAssignableFrom(cls)){
- ModelImpl impl = new ModelImpl();
- impl.setName(cls.getSimpleName());
- // Gson gson = gsonBuilder.create();
- // String dataJson = gson.toJson(cls);
- // ObjectProperty dataProperty = new ObjectProperty();
- // dataProperty.setDefault("{\"msg\": \"This is an object\"");
- // dataProperty.setFormat("{\"msg\": \"This is a format\"");
- // dataProperty.setType("{\"msg\": \"This is a type\"");
- // dataProperty.setDescription("{\"msg\": \"This is a description\"");
- // dataProperty.setExample("{\"msg\": \"This is an example\"");
- impl.addProperty("data", context.resolveProperty(type, null));
- try {
- Field metaField = cls.getField("meta");
- impl.addProperty("meta", context.resolveProperty(metaField.getType(), null));
- } catch (NoSuchFieldException e) {
- }
- context.defineModel(impl.getName(), impl);
- return impl;
- }
- }
- if(chain.hasNext()) {
- return chain.next().resolve(type, context, chain);
- } else {
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement