diff --git a/generators/src/main/java/com/algolia/codegen/utils/GenericPropagator.java b/generators/src/main/java/com/algolia/codegen/utils/GenericPropagator.java index fa2ca74f1cc..464855b9eaf 100644 --- a/generators/src/main/java/com/algolia/codegen/utils/GenericPropagator.java +++ b/generators/src/main/java/com/algolia/codegen/utils/GenericPropagator.java @@ -21,9 +21,19 @@ private static void setVendorExtension(IJsonSchemaValidationProperties property, model.vendorExtensions.put(key, value); } else if (property instanceof CodegenProperty prop) { prop.vendorExtensions.put(key, value); + } else if (property instanceof CodegenParameter param) { + param.vendorExtensions.put(key, value); + } else if (property instanceof CodegenOperation ope) { + ope.vendorExtensions.put(key, value); + } else { + throw new IllegalArgumentException("Unsupported type for vendor extension: " + property.getClass()); } } + private static boolean getBooleanValue(Map vendorExtensions, String key) { + return (boolean) vendorExtensions.getOrDefault(key, false); + } + /** * Add the property x-propagated-generic to a model or property, meaning it should be replaced * with T directly @@ -41,19 +51,21 @@ private static void setHasChildGeneric(IJsonSchemaValidationProperties property) } /** - * @return true if the vendor extensions of the property contains either x-propagated-generic or - * x-has-child-generic + * @return true if the vendor extensions of the property contains either x-propagated-generic, + * x-has-child-generic, or x-is-generic */ private static boolean hasGeneric(IJsonSchemaValidationProperties property) { - if (property instanceof CodegenModel) { + if (property instanceof CodegenModel model) { return ( - (boolean) ((CodegenModel) property).vendorExtensions.getOrDefault("x-propagated-generic", false) || - (boolean) ((CodegenModel) property).vendorExtensions.getOrDefault("x-has-child-generic", false) + getBooleanValue(model.vendorExtensions, "x-propagated-generic") || + getBooleanValue(model.vendorExtensions, "x-has-child-generic") || + getBooleanValue(model.vendorExtensions, "x-is-generic") ); - } else if (property instanceof CodegenProperty) { + } else if (property instanceof CodegenProperty prop) { return ( - (boolean) ((CodegenProperty) property).vendorExtensions.getOrDefault("x-propagated-generic", false) || - (boolean) ((CodegenProperty) property).vendorExtensions.getOrDefault("x-has-child-generic", false) + getBooleanValue(prop.vendorExtensions, "x-propagated-generic") || + getBooleanValue(prop.vendorExtensions, "x-has-child-generic") || + getBooleanValue(prop.vendorExtensions, "x-is-generic") ); } return false; @@ -189,21 +201,53 @@ public static void propagateGenericsToModels(Map modelsMap, b } } - /** Mark operations with a generic return type with x-is-generic */ + private static void setOperationGeneric(CodegenOperation ope, boolean returnIsGeneric) { + ope.vendorExtensions.put("x-is-generic", true); + ope.vendorExtensions.put("x-return-is-generic", returnIsGeneric); + // we use {{#optionalParams.0}} to check for optionalParams, so we loose the + // vendorExtensions at the operation level in the java generator + if (!ope.optionalParams.isEmpty()) { + ope.optionalParams.get(0).vendorExtensions.put("x-is-generic", true); + ope.optionalParams.get(0).vendorExtensions.put("x-return-is-generic", returnIsGeneric); + } + } + + /** Mark operations with a generic parameters or return type with x-is-generic */ public static void propagateGenericsToOperations(OperationsMap operations, List allModels) { Map models = convertToMap(allModels); for (CodegenOperation ope : operations.getOperations().getOperation()) { + // apply the value to all sets of params + for (CodegenParameter param : ope.requiredParams) { + CodegenModel paramType = models.get(param.dataType); + if (hasGeneric(paramType)) { + setHasChildGeneric(param); + break; + } + } + + for (CodegenParameter param : ope.optionalParams) { + CodegenModel paramType = models.get(param.dataType); + if (hasGeneric(paramType)) { + setHasChildGeneric(param); + break; + } + } + + for (CodegenParameter param : ope.allParams) { + CodegenModel paramType = models.get(param.dataType); + if (hasGeneric(paramType)) { + setOperationGeneric(ope, false); + break; + } + } + + // also check for the return type if (ope.returnType == null) { continue; } CodegenModel returnType = models.get(ope.returnType); - if (returnType != null && hasGeneric(returnType)) { - ope.vendorExtensions.put("x-is-generic", true); - // we use {{#optionalParams.0}} to check for optionalParams, so we loose the - // vendorExtensions at the operation level - if (!ope.optionalParams.isEmpty()) { - ope.optionalParams.get(0).vendorExtensions.put("x-is-generic", true); - } + if (hasGeneric(returnType)) { + setOperationGeneric(ope, true); } } } diff --git a/specs/search/paths/objects/batch.yml b/specs/search/paths/objects/batch.yml index f17a9e703e9..1d8ee9a11a5 100644 --- a/specs/search/paths/objects/batch.yml +++ b/specs/search/paths/objects/batch.yml @@ -33,6 +33,7 @@ post: $ref: 'common/schemas.yml#/action' body: type: object + x-is-generic: true description: Operation arguments (varies with specified `action`). example: name: Betty Jane McCamey diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 72d0ce48dab..d9ea59467c1 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -118,11 +118,11 @@ public class {{classname}} extends ApiClient { /** * {{{notes}}}{{#allParams}} * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}} - {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + {{#vendorExtensions.x-return-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. {{> api_javadoc}} - public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}} {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}{{#hasParams}}, {{/hasParams}}RequestOptions requestOptions) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}LaunderThrowable.await({{operationId}}Async({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions)); + public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}} {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions.x-return-is-generic}}, Class innerType{{/vendorExtensions.x-return-is-generic}}{{#hasParams}}, {{/hasParams}}RequestOptions requestOptions) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}LaunderThrowable.await({{operationId}}Async({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}requestOptions)); {{^returnType}}return ;{{/returnType}} } @@ -130,10 +130,10 @@ public class {{classname}} extends ApiClient { /** * {{{notes}}}{{#allParams}} * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}} - {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + {{#vendorExtensions.x-return-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} {{> api_javadoc}} - public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}this.{{operationId}}({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions.x-return-is-generic}}, Class innerType{{/vendorExtensions.x-return-is-generic}}) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}this.{{operationId}}({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}null); } {{! This case sets `requiredParams` + `requestOptions` }} @@ -141,11 +141,11 @@ public class {{classname}} extends ApiClient { /** * {{{notes}}}{{#requiredParams}} * @param {{paramName}} {{{description}}} (required){{/requiredParams}} - {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + {{#vendorExtensions.x-return-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. {{> api_javadoc}} - public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}}RequestOptions requestOptions) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}this.{{operationId}}({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions); + public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions.x-return-is-generic}}Class innerType, {{/vendorExtensions.x-return-is-generic}}RequestOptions requestOptions) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}this.{{operationId}}({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}requestOptions); } {{/optionalParams.0}} @@ -154,21 +154,21 @@ public class {{classname}} extends ApiClient { /** * {{{notes}}}{{#requiredParams}} * @param {{paramName}} {{{description}}} (required){{/requiredParams}} - {{#vendorExtensions}}{{#x-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + {{#vendorExtensions.x-return-is-generic}}* @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} {{> api_javadoc}} - public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { - {{#returnType}}return {{/returnType}}this.{{operationId}}({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + public {{> return_type}} {{operationId}}({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions.x-return-is-generic}}, Class innerType{{/vendorExtensions.x-return-is-generic}}) throws AlgoliaRuntimeException { + {{#returnType}}return {{/returnType}}this.{{operationId}}({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}null); } {{/optionalParams.0}} /** * (asynchronously) * {{{notes}}}{{#allParams}} - * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}}{{#vendorExtensions}}{{#x-is-generic}} - * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}}{{#vendorExtensions.x-return-is-generic}} + * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. {{> api_javadoc}} - public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}},{{/requiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}, {{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}}RequestOptions requestOptions) throws AlgoliaRuntimeException { + public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}},{{/requiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}, {{/optionalParams}}{{#vendorExtensions.x-return-is-generic}}Class innerType, {{/vendorExtensions.x-return-is-generic}}RequestOptions requestOptions) throws AlgoliaRuntimeException { {{#allParams}}{{#required}} Parameters.requireNonNull({{paramName}}, "Parameter `{{paramName}}` is required when calling `{{operationId}}`."); {{/required}}{{/allParams}} @@ -181,18 +181,18 @@ public class {{classname}} extends ApiClient { {{#headerParams}}.addHeader("{{baseName}}", {{paramName}}){{/headerParams}} {{#vendorExtensions}}{{#queryParams}}{{^x-is-custom-request}}.addQueryParameter("{{baseName}}", {{paramName}}){{/x-is-custom-request}}{{#x-is-custom-request}}.addQueryParameters(parameters){{/x-is-custom-request}}{{/queryParams}}{{/vendorExtensions}} .build(); - return executeAsync(request, requestOptions, {{#vendorExtensions}}{{#x-is-generic}}{{{returnType}}}.class, innerType{{/x-is-generic}}{{/vendorExtensions}}{{^vendorExtensions.x-is-generic}}{{^returnType}}null{{/returnType}}{{#returnType}}new TypeReference<{{{.}}}>(){}{{/returnType}}{{/vendorExtensions.x-is-generic}}); + return executeAsync(request, requestOptions, {{#vendorExtensions}}{{#x-return-is-generic}}{{{returnType}}}.class, innerType{{/x-return-is-generic}}{{^x-return-is-generic}}{{^returnType}}null{{/returnType}}{{#returnType}}new TypeReference<{{{.}}}>(){}{{/returnType}}{{/x-return-is-generic}}{{/vendorExtensions}}); } {{! This case only sets `requestOptions` as optional }} /** * (asynchronously) * {{{notes}}}{{#allParams}} - * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}}{{#vendorExtensions}}{{#x-is-generic}} - * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + * @param {{paramName}} {{{description}}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}){{/required}}{{/allParams}}{{#vendorExtensions.x-return-is-generic}} + * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} {{> api_javadoc}} - public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { - return this.{{operationId}}Async({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#hasRequiredParams}}{{#hasOptionalParams}},{{/hasOptionalParams}}{{/hasRequiredParams}}{{#optionalParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/optionalParams}}{{#vendorExtensions.x-return-is-generic}}, Class innerType{{/vendorExtensions.x-return-is-generic}}) throws AlgoliaRuntimeException { + return this.{{operationId}}Async({{#allParams}}{{paramName}}, {{/allParams}}{{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}null); } {{! This case sets `requiredParams` + `requestOptions` }} @@ -200,12 +200,12 @@ public class {{classname}} extends ApiClient { /** * (asynchronously) * {{{notes}}}{{#requiredParams}} - * @param {{paramName}} {{{description}}} (required){{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}} - * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + * @param {{paramName}} {{{description}}} (required){{/requiredParams}}{{#vendorExtensions.x-return-is-generic}} + * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} * @param requestOptions The requestOptions to send along with the query, they will be merged with the transporter requestOptions. {{> api_javadoc}} - public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}Class innerType, {{/x-is-generic}}{{/vendorExtensions}}RequestOptions requestOptions) throws AlgoliaRuntimeException { - return this.{{operationId}}Async({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}requestOptions); + public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}, {{/requiredParams}}{{#vendorExtensions.x-return-is-generic}}Class innerType, {{/vendorExtensions.x-return-is-generic}}RequestOptions requestOptions) throws AlgoliaRuntimeException { + return this.{{operationId}}Async({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}requestOptions); } {{/optionalParams.0}} @@ -214,11 +214,11 @@ public class {{classname}} extends ApiClient { /** * (asynchronously) * {{{notes}}}{{#requiredParams}} - * @param {{paramName}} {{{description}}} (required){{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}} - * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/x-is-generic}}{{/vendorExtensions}} + * @param {{paramName}} {{{description}}} (required){{/requiredParams}}{{#vendorExtensions.x-return-is-generic}} + * @param innerType The class held by the index, could be your custom class or {@link Object}.{{/vendorExtensions.x-return-is-generic}} {{> api_javadoc}} - public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions}}{{#x-is-generic}}, Class innerType{{/x-is-generic}}{{/vendorExtensions}}) throws AlgoliaRuntimeException { - return this.{{operationId}}Async({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions}}{{#x-is-generic}}innerType, {{/x-is-generic}}{{/vendorExtensions}}null); + public {{> return_type_async}} {{operationId}}Async({{#requiredParams}}@Nonnull {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}{{/vendorExtensions.x-has-child-generic}} {{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#vendorExtensions.x-return-is-generic}}, Class innerType{{/vendorExtensions.x-return-is-generic}}) throws AlgoliaRuntimeException { + return this.{{operationId}}Async({{#requiredParams}}{{paramName}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#requiredParams.0}},{{/requiredParams.0}}{{#optionalParams}}null{{^-last}},{{/-last}}{{/optionalParams}}, {{#vendorExtensions.x-return-is-generic}}innerType, {{/vendorExtensions.x-return-is-generic}}null); } {{/optionalParams.0}} {{/operation}} diff --git a/templates/java/generic_param.mustache b/templates/java/generic_param.mustache deleted file mode 100644 index 62139b7629b..00000000000 --- a/templates/java/generic_param.mustache +++ /dev/null @@ -1 +0,0 @@ -{{#vendorExtensions.x-is-generic}}, Class innerType{{/vendorExtensions.x-is-generic}} diff --git a/templates/java/pojo.mustache b/templates/java/pojo.mustache index aaa12d04614..ca219200ca4 100644 --- a/templates/java/pojo.mustache +++ b/templates/java/pojo.mustache @@ -23,12 +23,7 @@ public class {{classname}}{{#vendorExtensions.x-has-child-generic}}{{/vendorE {{/isContainer}} {{/isEnum}} @JsonProperty("{{baseName}}") - {{#isContainer}} - private {{> generic_type}} {{name}}{{#required}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}{{/required}}; - {{/isContainer}} - {{^isContainer}} - {{#isDiscriminator}}protected{{/isDiscriminator}}{{^isDiscriminator}}private{{/isDiscriminator}} {{{datatypeWithEnum}}} {{name}}; - {{/isContainer}} + private {{> generic_type}} {{name}}{{#isContainer}}{{#required}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}{{/required}}{{/isContainer}}; {{/vars}} {{#parent}} diff --git a/templates/java/return_type.mustache b/templates/java/return_type.mustache index 67ba987cc5c..3ef9d34fefd 100644 --- a/templates/java/return_type.mustache +++ b/templates/java/return_type.mustache @@ -1 +1 @@ -{{#returnType}}{{#vendorExtensions.x-is-generic}} {{{.}}}{{/vendorExtensions.x-is-generic}}{{^vendorExtensions.x-is-generic}}{{{.}}}{{/vendorExtensions.x-is-generic}} {{/returnType}}{{^returnType}}void {{/returnType}} +{{#returnType}}{{#vendorExtensions.x-is-generic}} {{{.}}}{{#vendorExtensions.x-return-is-generic}}{{/vendorExtensions.x-return-is-generic}}{{/vendorExtensions.x-is-generic}}{{^vendorExtensions.x-is-generic}}{{{.}}}{{/vendorExtensions.x-is-generic}} {{/returnType}}{{^returnType}}void {{/returnType}} \ No newline at end of file diff --git a/templates/java/return_type_async.mustache b/templates/java/return_type_async.mustache index cff6cd0feeb..e21f279c13b 100644 --- a/templates/java/return_type_async.mustache +++ b/templates/java/return_type_async.mustache @@ -1 +1 @@ -{{#returnType}}{{#vendorExtensions.x-is-generic}} CompletableFuture<{{{.}}}>{{/vendorExtensions.x-is-generic}}{{^vendorExtensions.x-is-generic}}CompletableFuture<{{{.}}}>{{/vendorExtensions.x-is-generic}} {{/returnType}}{{^returnType}}CompletableFuture {{/returnType}} \ No newline at end of file +{{#returnType}}{{#vendorExtensions.x-is-generic}} CompletableFuture<{{{.}}}{{#vendorExtensions.x-return-is-generic}}{{/vendorExtensions.x-return-is-generic}}>{{/vendorExtensions.x-is-generic}}{{^vendorExtensions.x-is-generic}}CompletableFuture<{{{.}}}>{{/vendorExtensions.x-is-generic}} {{/returnType}}{{^returnType}}CompletableFuture {{/returnType}} \ No newline at end of file