private static boolean definePropertySetModel(Model model, String name, String description) { return SwaggerResolutionContext.getSwagger().map(swagger -> { // check already defined if (!hasSchema(swagger, name)) { // build and define model.setTitle(name); if (description != null) { model.setDescription(description); } // add schema to include SwaggerResolutionContext.getModels().ifPresent(schemas -> { if (!schemas.containsKey(name)) { schemas.put(name, model); } }); } return true; }).orElse(false); }
/** * Get the {@link PropertyBox} type Schema from given type, if a {@link PropertySet} is available using a * {@link PropertySetRef} annotation. * @param type The type to resolve * @param context Converter context * @return Optional {@link PropertyBox} type Schema */ private static Optional<Model> getPropertyBoxSchema(Type type, ModelConverterContext context) { return getPropertySet(type).map(ref -> PropertySetRefIntrospector.get().getPropertySet(ref)) .map(propertySet -> { final Function<Type, io.swagger.models.properties.Property> resolver = t -> context .resolveProperty(t, new Annotation[0]); // check API model return getPropertySetModel(type).map(apiModel -> { final String name = apiModel.value().trim(); // define model Model schema = buildPropertyBoxSchema(propertySet, resolver, false); schema.setTitle(name); if (AnnotationUtils.getStringValue(apiModel.description()) != null) { schema.setDescription(apiModel.description()); } context.defineModel(name, schema); // return as ref RefModel model = new RefModel(name); return (Model) model; }).orElseGet(() -> { return buildPropertyBoxSchema(propertySet, resolver, false); }); }); }
model.setTitle(value);