private RefModel toRefModel(String modelType) { if (RefProperty.class.isInstance(property)) { return (RefModel) PropertyBuilder.toModel(property); } ModelImpl modelImpl = new ModelImpl(); modelImpl.setType("object"); modelImpl.setName(name); modelImpl.addProperty(name, property); operationGenerator.getSwagger().addDefinition(modelType, modelImpl); RefModel refModel = new RefModel(); refModel.setReference("#/definitions/" + modelType); return refModel; } }
public Object clone() { RefModel cloned = new RefModel(); cloned.genericRef = this.genericRef; //GenericRef is an immutable class cloned.description = this.description; cloned.properties = this.properties; cloned.example = this.example; return cloned; }
public Model getReferenceToType(final String typeName) { RefModel _xblockexpression = null; { final RefModel ref = new RefModel(); ref.set$ref(("#/definitions/" + typeName)); _xblockexpression = ref; } return _xblockexpression; }
private Model refModel(ServiceDocument desc) { return new RefModel(modelForServiceDocument(desc).getName()); }
@Override public Model toModel(Property property) { if (property instanceof RefProperty) { final RefProperty resolved = (RefProperty) property; final RefModel model = new RefModel(resolved.getOriginalRef(), resolved.getRefFormat()); model.setDescription(resolved.getDescription()); return model; } return null; } },
public RefModel refModel(ObjectNode node, String location, ParseResult result) { RefModel output = new RefModel(); if(node.getNodeType().equals(JsonNodeType.OBJECT)) { String refValue = ((TextNode)node.get("$ref")).textValue(); output.set$ref(refValue); } else { result.invalidType(location, "$ref", "object", node); return null; } // extra keys Set<String> keys = getKeys(node); for(String key : keys) { if(!REF_MODEL_KEYS.contains(key)) { result.extra(location, key, node.get(key)); } } return output; }
private static Model getPropertyBoxModel(PropertySet<?> propertySet, Optional<ApiPropertySetModel> apiPropertySetModel) { final Function<Type, io.swagger.models.properties.Property> resolver = t -> io.swagger.converter.ModelConverters .getInstance().readAsProperty(t); final Model resolvedModel = SwaggerV2PropertyBoxModelConverter.buildPropertyBoxSchema(propertySet, resolver, true); // check API model return apiPropertySetModel.map(apiModel -> { final String name = apiModel.value().trim(); if (!definePropertySetModel(resolvedModel, name, AnnotationUtils.getStringValue(apiModel.description()))) { LOGGER.warn("Failed to define PropertySet Model named [" + name + "]: no Swagger instance available from resolution context."); } return (Model) new RefModel(name); }).orElse(resolvedModel); }
private Map<String, Path> getPaths() { Map<String, Path> paths = new HashMap<>(); Path path = new Path(); Operation post = new Operation(); post.setOperationId("configure"); post.setConsumes(Arrays.asList("application/json", "application/xml")); post.setProduces(Arrays.asList("application/json", "application/xml")); List<Parameter> parameters = new ArrayList<>(); Parameter in = new BodyParameter().schema(new RefModel("#/definitions/inputs")); in.setRequired(true); in.setName(INPUTS); parameters.add(in); post.setParameters(parameters); Map<String, Response> responses = new HashMap<>(); Response response = new Response().description("Success"); responses.put("200", response); Response failureResponse = new Response().description("Failure"); responses.put("400", failureResponse); post.setResponses(responses); path.setPost(post); paths.put("/operations/config-selfservice-api:configure", path); return paths; }
private BodyParameter paramBody(Class<?> type) { BodyParameter res = new BodyParameter(); res.setName(PARAM_NAME_BODY); res.setRequired(false); ModelImpl model = modelForPodo(type); res.setSchema(new RefModel(model.getName())); return res; }
private RefModel toRefModel(String modelType) { if (RefProperty.class.isInstance(property)) { return (RefModel) PropertyBuilder.toModel(property); } ModelImpl modelImpl = new ModelImpl(); modelImpl.setType("object"); modelImpl.setName(name); modelImpl.addProperty(name, property); operationGenerator.getSwagger().addDefinition(modelType, modelImpl); RefModel refModel = new RefModel(); refModel.setReference("#/definitions/" + modelType); return refModel; } }
/** * 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); }); }); }
RefModel refModel = new RefModel(); refModel.setReference(ConverterConstants.ATTR_REQUEST); messageParameter.setSchema(refModel);
/** * Build a {@link BodyParameter} Swagger object defined by {@link ApiImplicitParam} * to use for documentation. * * @param apiParam The annotation which documents the parameter. * @return The {@link BodyParameter} object to be used in {@link Swagger} */ public static BodyParameter bodyParameter(ApiImplicitParam apiParam) { BodyParameter bodyParameter = new BodyParameter() .name(apiParam.name()) .description(apiParam.value()) .schema(new RefModel().asDefault(apiParam.dataTypeClass().getSimpleName())); bodyParameter.setRequired(apiParam.required()); return bodyParameter; }
if (schemaRef != null) { if (schemaRef.getNodeType().equals(JsonNodeType.STRING)) { Model schemaProp = new RefModel(schemaRef.textValue()); output.responseSchema(schemaProp); } else {
bodyParameter.setSchema(new RefModel(model.getName()));
private Parameter buildPOSTBodyParameter(String resourceName, String resourceParentName, OperationEnum operationEnum) { BodyParameter bodyParameter = new BodyParameter(); bodyParameter.setRequired(true); switch (operationEnum) { case postCreate: case postSubresource: bodyParameter.setName("resource"); bodyParameter.setDescription("Resource to create"); break; case postUpdate: case postUpdateSubresouce: bodyParameter.setName("resource"); bodyParameter.setDescription("Resource properties to update"); } bodyParameter.schema(new RefModel(getSchemaRef(resourceName, resourceParentName, operationEnum))); return bodyParameter; }
@Override public Model mToModel(Framework.Mapping<?> mapping) { String refName = attach(mapping).refName(); if (!isEmpty(refName)) { return new RefModel(refName); } if (mapping.meta().targetType == List.class) { ArrayModel model = new ArrayModel() .description(attach(mapping).desc()) .items(items(mapping)); model.setExample(attach(mapping).example()); return model; } ModelImpl model = new ModelImpl() .type(targetType(mapping)) .format(format(mapping)) .description(attach(mapping).desc()) .example(attach(mapping).example()); if (mapping instanceof Framework.GroupMapping) { ((Framework.GroupMapping) mapping).fields().forEach(m -> { model.addProperty(m.getKey(), mToProperty(m.getValue())); if (required(m.getValue())) { model.required(m.getKey()); } }); } return model; }
protected Operation generateEntityCreateOperation(ModelImpl entityModel) { Operation operation = new Operation() .tag(entityModel.getName()) .produces(APPLICATION_JSON_VALUE) .summary("Creates new entity: " + entityModel.getName()) .description("The method expects a JSON with entity object in the request body. " + "The entity object may contain references to other entities.") .response(201, new Response() .description("Entity created. The created entity is returned in the response body.") .schema(new RefProperty(ENTITY_DEFINITION_PREFIX + entityModel.getName()))) .response(400, getErrorResponse("Bad request. For example, the entity may have a reference to the non-existing entity.")) .response(403, getErrorResponse("Forbidden. The user doesn't have permissions to create the entity.")) .response(404, getErrorResponse("Not found. MetaClass for the entity with the given name not found.")); BodyParameter entityParam = new BodyParameter() .name("entityJson") .description("JSON object with the entity") .schema(new RefModel(ENTITY_DEFINITION_PREFIX + entityModel.getName())); entityParam.setRequired(true); operation.parameter(entityParam); return operation; }
protected Operation generateEntityUpdateOperation(ModelImpl entityModel) { BodyParameter entityParam = new BodyParameter() .name("entityJson") .description("JSON object with the entity") .schema(new RefModel(ENTITY_DEFINITION_PREFIX + entityModel.getName())); entityParam.setRequired(true); PathParameter entityIdParam = new PathParameter() .name("entityId") .description("Entity identifier") .required(true) .property(new StringProperty().description("Entity identifier")); return new Operation() .tag(entityModel.getName()) .produces(APPLICATION_JSON_VALUE) .summary("Updates the entity: " + entityModel.getName()) .description("Updates the entity. Only fields that are passed in the JSON object " + "(the request body) are updated.") .parameter(entityIdParam) .parameter(entityParam) .response(200, new Response() .description("Success. The updated entity is returned in the response body.") .schema(new RefProperty(ENTITY_DEFINITION_PREFIX + entityModel.getName()))) .response(403, getErrorResponse("Forbidden. The user doesn't have permissions to update the entity.")) .response(404, getErrorResponse("Not found. MetaClass for the entity with the given name not found.")); }