Java源码示例:io.swagger.converter.ModelConverterContext

示例1
@Override
public Model resolve(JavaType type, ModelConverterContext context, Iterator<ModelConverter> next) {
  // property is not a model
  if (propertyCreatorMap.containsKey(type.getRawClass())) {
    return null;
  }

  Model model = super.resolve(type, context, next);
  if (model == null) {
    return null;
  }

  checkType(type);

  // 只有声明model的地方才需要标注类型
  if (model instanceof ModelImpl && !StringUtils.isEmpty(((ModelImpl) model).getName())) {
    setType(type, model.getVendorExtensions());
  }
  return model;
}
 
示例2
@Override
public Property resolveProperty(JavaType propType, ModelConverterContext context, Annotation[] annotations,
    Iterator<ModelConverter> next) {
  checkType(propType);

  PropertyCreator creator = propertyCreatorMap.get(propType.getRawClass());
  if (creator != null) {
    return creator.createProperty();
  }

  Property property = super.resolveProperty(propType, context, annotations, next);
  if (StringProperty.class.isInstance(property)) {
    if (StringPropertyConverter.isEnum((StringProperty) property)) {
      setType(propType, property.getVendorExtensions());
    }
  }
  return property;
}
 
示例3
@Override
public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations, Iterator<ModelConverter> chain) {
    Type delegateType = type;
    if (discardType.contains(type.getTypeName())) {
        return null; // break the chain => ignore type
    }
    if (type instanceof ParameterizedType) {
        ParameterizedType param = (ParameterizedType) type;
        if (delegateToFirstTypeArg.contains(param.getRawType().getTypeName())) {
            delegateType = param.getActualTypeArguments()[0];
        }
    }
    return chain.next().resolveProperty(delegateType, context, annotations, chain);
}
 
示例4
@Override
public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
    Type delegateType = type;
    if (discardType.contains(type.getTypeName())) {
        return null; // break the chain => ignore type
    }
    if (type instanceof ParameterizedType) {
        ParameterizedType param = (ParameterizedType) type;
        if (delegateToFirstTypeArg.contains(param.getRawType().getTypeName())) {
            delegateType = param.getActualTypeArguments()[0];
        }
    }
    return chain.next().resolve(delegateType, context, chain);
}
 
示例5
@Override
public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
    if (chain.hasNext()) {
        Class c = null;
        if (type instanceof SimpleType) {
            c = ((SimpleType) type).getRawClass();
        } else if (type instanceof Class) {
            c = (Class) type;
        }

        if (c != null) {
            // Process @JsonValue annotation on field first if we have any
            Optional<Field> optField = Arrays.stream(c.getFields())
                    .filter(f -> f.getAnnotation(JsonValue.class) != null)
                    .findAny();
            if (optField.isPresent()) {
                return resolve(optField.get().getGenericType(), context, chain);
            }

            // Process @JsonValue annotation on method first if we have any
            Optional<Method> optMethod = Arrays.stream(c.getMethods())
                    .filter(m -> m.getAnnotation(JsonValue.class) != null)
                    .findAny();
            if (optMethod.isPresent()) {
                return resolve(optMethod.get().getGenericReturnType(), context, chain);
            }

            // If we can find a cache/view object for this type, then use that for documentation,
            // because we can't annotate Sponge classes with @Swagger stuff
            Optional<Type> optClass = WebAPI.getSerializeService().getViewFor(c);
            if (optClass.isPresent()) {
                return resolve(optClass.get(), context, chain);
            }
        }
        return chain.next().resolve(type, context, chain);
    } else {
        return null;
    }
}
 
示例6
@Override
public Model resolve(final Type type,
                     final ModelConverterContext context,
                     final Iterator<ModelConverter> chain)
{
  if (!BANNED_TYPE_NAMES.contains(type.getTypeName()) && chain.hasNext()) {
    return chain.next().resolve(type, context, chain);
  }
  return null;
}
 
示例7
@Override
public Property resolveProperty(final Type type,
                                final ModelConverterContext context,
                                final Annotation[] annotations,
                                final Iterator<ModelConverter> chain)
{
  if (!BANNED_TYPE_NAMES.contains(type.getTypeName()) && chain.hasNext()) {
    return chain.next().resolveProperty(type, context, annotations, chain);
  }
  return null;
}
 
示例8
@Override
public Model resolve(java.lang.reflect.Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
  JavaType javaType = _mapper.constructType(type);
  Model model = super.resolve(type, context, chain);
  if (javaType.isTypeOrSubTypeOf(RBean.class)) {
    RBEAN_INTERNAL_FIELDS.forEach(model.getProperties()::remove);
  }
  return model;
}
 
示例9
@Override
public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations,
                                Iterator<ModelConverter> chain) {
    if (type instanceof Class<?>) {
        Class<?> cls = (Class<?>) type;
        if (paramClass.isAssignableFrom(cls)) {
            return propertySupplier.get();
        }
    }
    if (chain.hasNext()) {
        return chain.next().resolveProperty(type, context, annotations, chain);
    } else {
        return null;
    }
}
 
示例10
@Override
public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
    if (chain.hasNext()) {
        return chain.next().resolve(type, context, chain);
    } else {
        return null;
    }
}
 
示例11
@Override
public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations, Iterator<ModelConverter> chain) {
	// for method parameter types we get here Type but we need JavaType
	JavaType javaType = toJavaType(type);
    if (modelSubtitutes.containsKey(javaType)) {
        return super.resolveProperty(modelSubtitutes.get(javaType), context, annotations, chain);
    } else if (chain.hasNext()) {
        return chain.next().resolveProperty(type, context, annotations, chain);
    } else {
        return super.resolveProperty(type, context, annotations, chain);
    }

}
 
示例12
@Override
public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
	// for method parameter types we get here Type but we need JavaType
	JavaType javaType = toJavaType(type);
    if (modelSubtitutes.containsKey(javaType)) {
        return super.resolve(modelSubtitutes.get(javaType), context, chain);
    } else {
        return super.resolve(type, context, chain);
    }
}
 
示例13
@Override
public Property resolveProperty(Type type, ModelConverterContext modelConverterContext, Annotation[] annotations, Iterator<ModelConverter> iterator) {
    try {
        Type expectedType = _mapper.constructType(Class.forName("com.wordnik.sample.model.PetId"));
        if (type.equals(expectedType)) {
            return super.resolveProperty(_mapper.constructType(Class.forName("java.lang.String")), modelConverterContext, annotations, iterator);
        }
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    }
    return super.resolveProperty(type, modelConverterContext, annotations, iterator);
}
 
示例14
@Override
public Property resolveProperty(Type type, ModelConverterContext context,
                                Annotation[] annotations, Iterator<ModelConverter> chain) {
    if (chain.hasNext()) {
        Class c = null;
        if (type instanceof SimpleType) {
            c = ((SimpleType) type).getRawClass();
        } else if (type instanceof Class) {
            c = (Class) type;
        } else if (type instanceof ParameterizedType) {
            c = (Class) ((ParameterizedType)type).getRawType();
        }

        if (c != null) {
            // Process @JsonValue annotation on field first if we have any
            Optional<Field> optField = Arrays.stream(c.getFields())
                    .filter(f -> f.getAnnotation(JsonValue.class) != null)
                    .findAny();
            if (optField.isPresent()) {
                return resolveProperty(optField.get().getGenericType(), context, annotations, chain);
            }

            // Process @JsonValue annotation on method first if we have any
            Optional<Method> optMethod = Arrays.stream(c.getMethods())
                    .filter(m -> m.getAnnotation(JsonValue.class) != null)
                    .findAny();
            if (optMethod.isPresent()) {
                return resolveProperty(optMethod.get().getGenericReturnType(), context, annotations, chain);
            }

            // If we can find a cache/view object for this type, then use that for documentation,
            // because we can't annotate Sponge classes with @Swagger stuff
            Optional<Type> optClass = WebAPI.getSerializeService().getViewFor(c);
            if (optClass.isPresent()) {
                return resolveProperty(optClass.get(), context, annotations, chain);
            }
        }
        return chain.next().resolveProperty(type, context, annotations, chain);
    } else {
        return null;
    }
}
 
示例15
@Override
public Property resolveProperty(java.lang.reflect.Type type, ModelConverterContext context, Annotation[] annotations,
    Iterator<ModelConverter> chain) {
  final JavaType jType = _mapper.constructType(type);
  if (jType != null) {
    final Class<?> cls = jType.getRawClass();
    if (cls.equals(RString.class)) {
      return new StringProperty();
    } else if (cls.equals(RChar.class)) {
      return new StringProperty();
    } else if (cls.equals(RText.class)) {
      return new StringProperty();
    } else if (cls.equals(RDate.class)) {
      return new LongProperty();
    } else if (cls.equals(RDatetime.class)) {
      return new LongProperty();
    } else if (cls.equals(RTime.class)) {
      return new LongProperty();
    } else if (cls.equals(RLong.class)) {
      return new LongProperty();
    } else if (cls.equals(RBoolean.class)) {
      return new BooleanProperty();
    } else if(cls.equals(RDecimal.class)) {
      return new DecimalProperty();
    } else if(cls.equals(RDouble.class)) {
      return new DoubleProperty();
    } else if(cls.equals(REnum.class)) {
      Property property = new StringProperty();
      if (jType.containedTypeCount() > 0) {
        _addEnumProps(jType.containedType(0).getRawClass(), property);
      }
      return property;
    } else if (RBean.class.isAssignableFrom(cls)) {
      // complex type
      Model innerModel = context.resolve(jType);
      RBEAN_INTERNAL_FIELDS.forEach(innerModel.getProperties()::remove);
      if (innerModel instanceof ComposedModel) {
        innerModel = ((ComposedModel) innerModel).getChild();
      }
      if (innerModel instanceof ModelImpl) {
        ModelImpl mi = (ModelImpl) innerModel;
        return new RefProperty(StringUtils.isNotEmpty(mi.getReference()) ? mi.getReference() : mi.getName());
      }
    }
    return chain.next().resolveProperty(type, context, annotations, chain);
  } else {
    return null;
  }
}