Advertisement
Guest User

Untitled

a guest
May 25th, 2015
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. package com.nytimes.sartre.resource.command.swagger;
  2.  
  3. import com.google.gson.Gson;
  4. import com.google.gson.GsonBuilder;
  5. import com.nytimes.sartre.json.JSONRequestCommand;
  6. import com.wordnik.swagger.converter.ModelConverter;
  7. import com.wordnik.swagger.converter.ModelConverterContext;
  8. import com.wordnik.swagger.jackson.AbstractModelConverter;
  9. import com.wordnik.swagger.models.Model;
  10. import com.wordnik.swagger.models.ModelImpl;
  11. import com.wordnik.swagger.models.properties.ObjectProperty;
  12. import com.wordnik.swagger.models.properties.Property;
  13. import com.wordnik.swagger.util.Json;
  14.  
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18.  
  19. import java.lang.annotation.Annotation;
  20. import java.lang.reflect.Field;
  21. import java.lang.reflect.Type;
  22. import java.util.*;
  23.  
  24. public class JsonRequestCommandSwaggerModelConverter extends AbstractModelConverter {
  25.  
  26. private static final Logger LOG = LoggerFactory.getLogger(JsonRequestCommandSwaggerModelConverter.class);
  27.  
  28. public JsonRequestCommandSwaggerModelConverter() {
  29. super(Json.mapper());
  30. }
  31.  
  32. // @Autowired(required = false)
  33. // private GsonBuilder gsonBuilder;
  34.  
  35. @Override
  36. public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations, Iterator<ModelConverter> chain) {
  37. return chain.next().resolveProperty(type, context, annotations, chain);
  38. }
  39.  
  40. @Override
  41. public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
  42. if(type instanceof Class<?>){
  43. Class<?> cls = (Class<?>) type;
  44. if(JSONRequestCommand.class.isAssignableFrom(cls)){
  45. ModelImpl impl = new ModelImpl();
  46. impl.setName(cls.getSimpleName());
  47.  
  48. // Gson gson = gsonBuilder.create();
  49. // String dataJson = gson.toJson(cls);
  50.  
  51. // ObjectProperty dataProperty = new ObjectProperty();
  52. // dataProperty.setDefault("{\"msg\": \"This is an object\"");
  53. // dataProperty.setFormat("{\"msg\": \"This is a format\"");
  54. // dataProperty.setType("{\"msg\": \"This is a type\"");
  55. // dataProperty.setDescription("{\"msg\": \"This is a description\"");
  56. // dataProperty.setExample("{\"msg\": \"This is an example\"");
  57. impl.addProperty("data", context.resolveProperty(type, null));
  58.  
  59.  
  60. try {
  61. Field metaField = cls.getField("meta");
  62. impl.addProperty("meta", context.resolveProperty(metaField.getType(), null));
  63. } catch (NoSuchFieldException e) {
  64.  
  65. }
  66.  
  67. context.defineModel(impl.getName(), impl);
  68. return impl;
  69. }
  70. }
  71.  
  72. if(chain.hasNext()) {
  73. return chain.next().resolve(type, context, chain);
  74. } else {
  75. return null;
  76. }
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement