org.openapitools.codegen.CodegenParameter Java Examples

The following examples show how to use org.openapitools.codegen.CodegenParameter. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JavaCXFExtServerCodegen.java    From openapi-generator with Apache License 2.0 6 votes vote down vote up
private CodegenVariable(CodegenVariable parent, CodegenParameter param, String testDataPath,
                        Map<String, CodegenModel> models) {

    name = param.paramName;
    dataFormat = param.dataFormat;
    dataType = param.dataType;
    enumName = param.enumName;
    allowableValues = param.allowableValues;
    isContainer = param.isContainer;
    isListContainer = param.isListContainer;
    isMapContainer = param.isMapContainer;
    isPrimitiveType = param.isPrimitiveType;
    minItems = param.minItems;
    minimum = param.minimum;
    maximum = param.maximum;
    exclusiveMinimum = param.exclusiveMinimum;
    exclusiveMaximum = param.exclusiveMaximum;
    minLength = param.minLength;
    maxLength = param.maxLength;
    pattern = param.pattern;
    setter = null;
    varVendorExtensions = param.vendorExtensions;
    init(parent, testDataPath, models);

    items = param.items == null ? null : new CodegenVariable(this, param.items, null, models);
}
 
Example #2
Source File: BashTest.java    From openapi-generator with Apache License 2.0 6 votes vote down vote up
@Test(description = "test basic petstore operation with example body")
public void petstoreParameterExampleTest() {

    final OpenAPI openAPI
        = TestUtils.parseFlattenSpec("src/test/resources/2_0/petstore-bash.json");
    final DefaultCodegen codegen = new BashClientCodegen();
    codegen.setOpenAPI(openAPI);
    final Operation addPetOperation
        = openAPI.getPaths().get("/pet").getPost();

    final CodegenOperation op
        = codegen.fromOperation(
            "/pet",
            "POST",
            addPetOperation,
            null);

    Assert.assertEquals(op.bodyParams.size(), 1);

    CodegenParameter p = op.bodyParams.get(0);

    Assert.assertTrue(p.vendorExtensions
                        .containsKey("x-codegen-body-example"));
    Assert.assertEquals(p.description, "Pet object that needs to be added to the store");

}
 
Example #3
Source File: GoServerCodegen.java    From openapi-generator with Apache License 2.0 5 votes vote down vote up
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
    objs = super.postProcessOperationsWithModels(objs, allModels);
    @SuppressWarnings("unchecked")
    Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
    @SuppressWarnings("unchecked")
    List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");

    List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
    if (imports == null)
        return objs;

    // override imports to only include packages for interface parameters
    imports.clear();

    boolean addedOptionalImport = false;
    boolean addedTimeImport = false;
    boolean addedOSImport = false;
    boolean addedReflectImport = false;
    for (CodegenOperation operation : operations) {
        for (CodegenParameter param : operation.allParams) {
            // import "os" if the operation uses files
            if (!addedOSImport && "*os.File".equals(param.dataType)) {
                imports.add(createMapping("import", "os"));
                addedOSImport = true;
            }

            // import "time" if the operation has a required time parameter.
            if (param.required) {
                if (!addedTimeImport && "time.Time".equals(param.dataType)) {
                    imports.add(createMapping("import", "time"));
                    addedTimeImport = true;
                }
            }
        }
    }

    return objs;
}
 
Example #4
Source File: KotlinClientCodegen.java    From openapi-generator with Apache License 2.0 5 votes vote down vote up
@Override
@SuppressWarnings("unchecked")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
    super.postProcessOperationsWithModels(objs, allModels);
    Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
    if (operations != null) {
        List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
        for (CodegenOperation operation : ops) {

            if (JVM_RETROFIT2.equals(getLibrary()) && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) {
                operation.path = operation.path.substring(1);
            }

            // set multipart against all relevant operations
            if (operation.hasConsumes == Boolean.TRUE) {
                if (isMultipartType(operation.consumes)) {
                    operation.isMultipart = Boolean.TRUE;
                }
            }

            if (usesRetrofit2Library() && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) {
                operation.path = operation.path.substring(1);
            }

            // modify the data type of binary form parameters to a more friendly type for multiplatform builds
            if (MULTIPLATFORM.equals(getLibrary()) && operation.allParams != null) {
                for (CodegenParameter param : operation.allParams) {
                    if (param.dataFormat != null && param.dataFormat.equals("binary")) {
                        param.baseType = param.dataType = "io.ktor.client.request.forms.InputProvider";
                    }
                }
            }
        }
    }
    return operations;
}
 
Example #5
Source File: BashTest.java    From openapi-generator with Apache License 2.0 5 votes vote down vote up
@Test(description = "test basic petstore operation with Bash extensions")
public void petstoreOperationTest() {

    final OpenAPI openAPI
        = TestUtils.parseFlattenSpec("src/test/resources/2_0/petstore-bash.json");
    final DefaultCodegen codegen = new BashClientCodegen();
    codegen.setOpenAPI(openAPI);
    final Operation findPetsByStatusOperation
        = openAPI.getPaths().get("/pet/findByStatus").getGet();

    final CodegenOperation op
        = codegen.fromOperation(
            "/pet/findByStatus",
            "GET",
            findPetsByStatusOperation,
            null);

    Assert.assertTrue(
        op.vendorExtensions.containsKey("x-code-samples"));

    Assert.assertEquals(
        op.vendorExtensions.get("x-bash-codegen-description"),
        "Multiple status 'values' can be provided with comma separated strings");

    Assert.assertEquals(op.allParams.size(), 1);
    CodegenParameter p = op.allParams.get(0);
    Assert.assertEquals(p.description, "Status values that need to be considered for filter");
}
 
Example #6
Source File: GoClientCodegenTest.java    From openapi-generator with Apache License 2.0 5 votes vote down vote up
@Test(description = "test example value for body parameter")
public void bodyParameterTest() {
    final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml");
    final GoClientCodegen codegen = new GoClientCodegen();
    codegen.setOpenAPI(openAPI);
    final String path = "/fake";
    final Operation p = openAPI.getPaths().get(path).getGet();
    final CodegenOperation op = codegen.fromOperation(path, "post", p, null);
    Assert.assertEquals(op.formParams.size(), 2);
    CodegenParameter bp = op.formParams.get(0);
    Assert.assertFalse(bp.isPrimitiveType);
}
 
Example #7
Source File: PhpClientExampleTest.java    From openapi-generator with Apache License 2.0 5 votes vote down vote up
@Test(description = "sets example value")
public void exampleValueTest() {
    PhpClientCodegen clientCodegen = new PhpClientCodegen();
    CodegenParameter p = new CodegenParameter();
    p.baseType = "object";

    clientCodegen.setParameterExampleValue(p);
    Assert.assertEquals(p.example, "new \\stdClass");
}
 
Example #8
Source File: AgServerCodegen.java    From agrest with Apache License 2.0 5 votes vote down vote up
@Override
public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
    Map<String, Object> objsResult = super.postProcessOperations(objs);

    Map<String, Object> operations = (Map<String, Object>) objsResult.get("operations");

    if (operations != null && !models.isEmpty()) {
        @SuppressWarnings("unchecked")
        List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
        List<AgCodegenOperation> newOps = new ArrayList<AgCodegenOperation>();
        for (CodegenOperation operation : ops) {
            if (models.get(operation.baseName) == null) {
                continue;
            }

            // Removes container from response
            operation.returnType = operation.baseName;
            AgCodegenOperation newOperation = new AgCodegenOperation(operation);
            // Stores model properties to use them as constraints
            populateModelAttributes(newOperation);
            // Stores model relations to use them as constraints
            for (final CodegenProperty prop : models.get(newOperation.baseName)) {
                if (prop.complexType != null && models.keySet().contains(prop.complexType)) {
                    AgCodegenOperation relation = new AgCodegenOperation();
                    relation.returnType = relation.baseName = prop.complexType;
                    relation.bodyParam = new CodegenParameter();
                    relation.bodyParam.paramName = prop.baseName;

                    populateModelAttributes(relation);
                    populateRelations(newOperation, relation);
                }
            }
            newOps.add(newOperation);
        }
        operations.put("operation", newOps);
    }

    return objsResult;
}
 
Example #9
Source File: AgServerCodegen.java    From agrest with Apache License 2.0 5 votes vote down vote up
private void populateModelAttributes(AgCodegenOperation operation) {
    if (models.get(operation.baseName) != null) {
        for (CodegenProperty prop : models.get(operation.baseName)) {
            // Selects plain attributes only
            if ((prop.complexType == null || !models.keySet().contains(prop.complexType))
                    && !"id".equalsIgnoreCase(prop.baseName)) {
                CodegenParameter codegenParam = new CodegenParameter();
                codegenParam.paramName = prop.baseName;
                codegenParam.hasMore = true;
                // checks if there is queryParam with the same name as model attribute
                if (operation.queryParams.stream().anyMatch(p -> codegenParam.paramName.equalsIgnoreCase(p.paramName))) {
                    operation.hasCompoundId = codegenParam.isQueryParam = true;
                    // removes model attribute related to queryParam from params list
                    operation.queryParams
                            = operation.queryParams
                            .stream()
                            .filter(p -> !p.paramName.equalsIgnoreCase(codegenParam.paramName))
                            .collect(Collectors.toList());
                }
                operation.modelAttributes.add(codegenParam);
            }
        }
        if (!operation.modelAttributes.isEmpty()) {
            operation.modelAttributes.get(operation.modelAttributes.size() - 1).hasMore = false;
        }
    }
}
 
Example #10
Source File: QueryParamExtensions.java    From agrest with Apache License 2.0 5 votes vote down vote up
public static List<CodegenParameter> extend(List<CodegenParameter> parameters) {

        // TODO: does it ever happen?
        if (parameters == null) {
            return null;
        }

        CodegenParameter sort = null;
        CodegenParameter dir = null;

        for (CodegenParameter p : parameters) {

            if ("dir".equals(p.baseName)) {
                // do not add "dir" value to the builder directly... track it here and combine with "sort" later
                dir = p;
            } else {

                if ("sort".equals(p.baseName)) {
                    sort = p;
                }

                p.vendorExtensions.put(PARAM_ADD_TO_REQUEST_METHOD, addToRequestMethods.getOrDefault(p.baseName, p.baseName));
            }
        }

        // combine sort and dir
        if (sort != null && dir != null) {
            sort.vendorExtensions.put(PARAM_REQUEST_METHOD_SECOND_ARG, ", dir");
        }

        return parameters;
    }
 
Example #11
Source File: TypeScriptAngularJsClientCodegen.java    From openapi-generator with Apache License 2.0 4 votes vote down vote up
@Override
public void postProcessParameter(CodegenParameter parameter) {
    super.postProcessParameter(parameter);
    // parameter.dataType = addModelPrefix(parameter.dataType);
}
 
Example #12
Source File: DartDioClientCodegen.java    From openapi-generator with Apache License 2.0 4 votes vote down vote up
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
    objs = super.postProcessOperationsWithModels(objs, allModels);
    Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
    List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

    Set<String> modelImports = new HashSet<>();
    Set<String> fullImports = new HashSet<>();

    for (CodegenOperation op : operationList) {
        op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
        boolean isJson = true; //default to JSON
        boolean isForm = false;
        boolean isMultipart = false;
        if (op.consumes != null) {
            for (Map<String, String> consume : op.consumes) {
                if (consume.containsKey("mediaType")) {
                    String type = consume.get("mediaType");
                    isJson = type.equalsIgnoreCase("application/json");
                    isForm = type.equalsIgnoreCase("application/x-www-form-urlencoded");
                    isMultipart = type.equalsIgnoreCase("multipart/form-data");
                    break;
                }
            }
        }

        for (CodegenParameter param : op.bodyParams) {
            if (param.baseType != null && param.baseType.equalsIgnoreCase("Uint8List") && isMultipart) {
                param.baseType = "MultipartFile";
                param.dataType = "MultipartFile";
            }
        }

        op.vendorExtensions.put("x-is-json", isJson);
        op.vendorExtensions.put("x-is-form", isForm);
        op.vendorExtensions.put("x-is-multipart", isMultipart);

        if (op.getHasFormParams()) {
            fullImports.add("package:" + pubName + "/api_util.dart");
        }

        Set<String> imports = new HashSet<>();
        for (String item : op.imports) {
            if (!modelToIgnore.contains(item.toLowerCase(Locale.ROOT))) {
                imports.add(underscore(item));
            } else if (item.equalsIgnoreCase("Uint8List")) {
                fullImports.add("dart:typed_data");
            }
        }
        modelImports.addAll(imports);
        op.imports = imports;

    }

    objs.put("modelImports", modelImports);
    objs.put("fullImports", fullImports);

    return objs;
}