protected Parameter readImplicitParam(ApiImplicitParam param, Class<?> apiClass) { Parameter parameter; if (param.paramType().equalsIgnoreCase("path")) { parameter = new PathParameter(); } else if (param.paramType().equalsIgnoreCase("query")) { parameter = new QueryParameter(); } else if (param.paramType().equalsIgnoreCase("form") || param.paramType().equalsIgnoreCase("formData")) { parameter = new FormParameter(); } else if (param.paramType().equalsIgnoreCase("body")) { parameter = new BodyParameter(); } else if (param.paramType().equalsIgnoreCase("header")) { parameter = new HeaderParameter(); } else { return null; } return ParameterProcessor.applyAnnotations(swagger, parameter, apiClass, Arrays.asList(new Annotation[]{param})); }
private static Parameter createParameterInstance(ApiImplicitParam paramAnnotation) { switch (paramAnnotation.paramType()) { case "path": return new PathParameter(); case "query": return new QueryParameter(); case "body": return new BodyParameter(); case "header": return new HeaderParameter(); case "form": return new FormParameter(); case "cookie": return new CookieParameter(); default: throw new Error("not support paramType " + paramAnnotation.paramType()); } }
public static BodyParameter createBodyParameter(Swagger swagger, String paramName, Type paramType) { addDefinitions(swagger, paramType); Property property = ModelConverters.getInstance().readAsProperty(paramType); Model model = PropertyBuilder.toModel(property); if (model instanceof ModelImpl && property instanceof StringProperty) { ((ModelImpl) model).setEnum(((StringProperty) property).getEnum()); } BodyParameter bodyParameter = new BodyParameter(); bodyParameter.setName(paramName); bodyParameter.setSchema(model); return bodyParameter; }
protected Parameter create() { return new BodyParameter(); } };
protected Parameter generateQueryPostOpParam(List<RestQueriesConfiguration.QueryParamInfo> params) { Map<String, Property> modelProps = params.stream() .collect(Collectors.toMap( RestQueriesConfiguration.QueryParamInfo::getName, p -> getPropertyFromJavaType(p.getType()))); ModelImpl parameterModel = new ModelImpl(); parameterModel.setProperties(modelProps); BodyParameter parameter = new BodyParameter() .name("paramsObject"); parameter.setRequired(true); return parameter.schema(parameterModel); }
protected Parameter generateServicePostOpParam(List<RestMethodParamInfo> params) { Map<String, Property> modelProps = params.stream() .collect(Collectors.toMap( RestMethodParamInfo::getName, p -> getPropertyFromJavaType(p.getType()))); ModelImpl parameterModel = new ModelImpl(); parameterModel.setProperties(modelProps); BodyParameter parameter = new BodyParameter() .name("paramsObject") .schema(parameterModel); parameter.setRequired(true); return parameter; }
private BodyParameter paramBody(ServiceDocument desc) { BodyParameter res = new BodyParameter(); res.setName(PARAM_NAME_BODY); res.setRequired(false); res.setSchema(refModel(desc)); return res; }
private BodyParameter getDefaultBodyParameter() { BodyParameter bodyParameter = new BodyParameter(); bodyParameter.setName("Payload"); bodyParameter.setDescription("Request Body"); bodyParameter.setRequired(false); Model model = new ModelImpl(); Map<String, Property> properties = new HashMap<>(); Property property = new StringProperty(); properties.put("payload", property); model.setProperties(properties); bodyParameter.setSchema(model); return bodyParameter; }
private BodyParameter getDefaultBodyParameter() { BodyParameter bodyParameter = new BodyParameter(); bodyParameter.setName("Payload"); bodyParameter.setDescription("Request Body"); bodyParameter.setRequired(false); Model model = new ModelImpl(); Map<String, Property> properties = new HashMap<>(); Property property = new StringProperty(); properties.put("payload", property); model.setProperties(properties); bodyParameter.setSchema(model); return bodyParameter; }
@Override public List<Parameter> mToParameters(String name, Framework.Mapping<?> mapping) { if ("body".equalsIgnoreCase( attach(mapping).in() )) { return Arrays.asList(new BodyParameter() .schema(mToModel(mapping)) .name(name) .description(attach(mapping).desc())); } if (isEmpty( attach(mapping).in() ) && mapping instanceof Framework.GroupMapping) { return ((Framework.GroupMapping) mapping).fields().stream().flatMap(m -> { if (isEmpty(attach(m.getValue()).in())) throw new IllegalArgumentException("in is required!!!"); return mToParameters(concatName(name, m.getKey()), m.getValue()).stream(); }).collect(Collectors.toList()); } if (isEmpty(attach(mapping).in())) throw new IllegalArgumentException("in is required!!!"); if (mapping instanceof Framework.GroupMapping) { return ((Framework.GroupMapping) mapping).fields().stream().flatMap(m -> { Framework.Mapping<?> fMapping = mergeAttach(m.getValue(), attach(mapping)); return mToParameters(concatName(name, m.getKey()), fMapping).stream(); }).collect(Collectors.toList()); } else { if (!isPrimitive(mapping)) throw new IllegalArgumentException("must be primitives or primitive list!!!"); return Arrays.asList(mToParameter(name, mapping)); } }
private Parameter readParam(Swagger swagger, Type type,Class<?> cls, ApiParam param) { PrimitiveType fromType = PrimitiveType.fromType(type); final Parameter para = null == fromType ? new BodyParameter() : new QueryParameter(); Parameter parameter = ParameterProcessor.applyAnnotations(swagger, para, type == null ? String.class : type, null == param ? new ArrayList<Annotation>() : Collections.<Annotation> singletonList(param)); if (parameter instanceof AbstractSerializableParameter) { final AbstractSerializableParameter<?> p = (AbstractSerializableParameter<?>) parameter; if (p.getType() == null) p.setType(null == fromType ? "string" : fromType.getCommonName()); p.setRequired(p.getRequired() == true ? true : cls.isPrimitive()); }else{ //hack: Get the from data model paramter from BodyParameter BodyParameter bp = (BodyParameter)parameter; bp.setIn("formData"); } return parameter; }
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 static Parameter createParameterInstance(ApiImplicitParam paramAnnotation) { switch (paramAnnotation.paramType()) { case "path": return new PathParameter(); case "query": return new QueryParameter(); case "body": return new BodyParameter(); case "header": return new HeaderParameter(); case "form": return new FormParameter(); case "cookie": return new CookieParameter(); default: throw new Error("not support paramType " + paramAnnotation.paramType()); } }
public static BodyParameter createBodyParameter(Swagger swagger, String paramName, Type paramType) { addDefinitions(swagger, paramType); Property property = ModelConverters.getInstance().readAsProperty(paramType); Model model = PropertyBuilder.toModel(property); if (model instanceof ModelImpl && property instanceof StringProperty) { ((ModelImpl) model).setEnum(((StringProperty) property).getEnum()); } BodyParameter bodyParameter = new BodyParameter(); bodyParameter.setName(paramName); bodyParameter.setSchema(model); return bodyParameter; }
/** * 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; }
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 Parameter mToParameter(String name, Framework.Mapping<?> mapping) { if (isEmpty( attach(mapping).in() )) throw new IllegalArgumentException("in is required!!!"); if ("body".equalsIgnoreCase(attach(mapping).in())) { return new BodyParameter() .schema(mToModel(mapping)) .name(name) .description(attach(mapping).desc()); } if (isEmpty(name)) throw new IllegalArgumentException("name is required!!!"); if (!isPrimitive(mapping)) throw new IllegalArgumentException("must be primitives or primitive list!!!"); if ("form".equalsIgnoreCase( attach(mapping).in() ) || "formData".equalsIgnoreCase( attach(mapping).in() )) { return fillParameter(new FormParameter(), mapping).name(name); } if ("path".equalsIgnoreCase( attach(mapping).in() )) { return fillParameter(new PathParameter(), mapping).name(name).required(true); } if ("query".equalsIgnoreCase( attach(mapping).in() )) { return fillParameter(new QueryParameter(), mapping).name(name); } if ("cookie".equalsIgnoreCase( attach(mapping).in())) { return fillParameter(new CookieParameter(), mapping).name(name); } if ("header".equalsIgnoreCase( attach(mapping).in() )) { return fillParameter(new HeaderParameter(), mapping).name(name); } throw new IllegalArgumentException("Unsupported in type: '" + attach(mapping).in() + "'!!!"); }
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.")); }