diff --git a/Templates/v2/Java/api.stencil b/Templates/v2/Java/api.stencil index 527bdf9..882557a 100644 --- a/Templates/v2/Java/api.stencil +++ b/Templates/v2/Java/api.stencil @@ -7,19 +7,26 @@ import org.springframework.web.bind.annotation.*; @Tag(name = "{{ service.name }} API") public interface {{ service.name }}Api { - {%for path in service.paths%} - {%for operation in path.operations%} - @Operation(summary = "{{ operation.summary }}") - {%if operation.httpMethod|lowercase == "delete"%} - @ResponseStatus(HttpStatus.NO_CONTENT) - {%endif%} + +{%- paths: for path in service.paths %}{% operations: for operation in path.operations %} + @Operation(summary = "{{ operation.summary }}") +{%- if operation.httpMethod|lowercase == "delete" %} + @ResponseStatus(HttpStatus.NO_CONTENT) +{%- endif %} @{{ operation.httpMethod|capitalizeFirstLetter }}Mapping("{{ path.path }}") - {%if operation.httpMethod|lowercase == "delete"%}void{%else%}ResponseEntity<{{ operation.responseGenerationModel.value.typeNames|join }}>{%endif%} {{operation.id}}({%for parameter in operation.pathParameters%} - @PathVariable("{{ parameter.name }}") {{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.headerParameters%} - @RequestHeader(name = "{{ parameter.name }}", required={{ parameter.isRequired }}) String {{ parameter.schema.type|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.queryParameters%}@RequestParam(name = "{{ parameter.name }}", required={{ parameter.isRequired }}) {{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for requestModelName in operation.requestGenerationModel.typeNames%}@Valid @RequestBody {{ requestModelName|capitalizeFirstLetter }} {{ requestModelName|snakeCaseToCamelCase }}{%endfor%}); - {%endfor%} - {%endfor%} +{%- if operation.httpMethod|lowercase == "delete" %} + void{% else %} + ResponseEntity<{{ operation.responseGenerationModel.value.typeNames|join }}> + {%- endif %} {{operation.id}}( + {%- for parameter in operation.pathParameters %}@PathVariable("{{ parameter.name }}") {{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.headerParameters or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.headerParameters %}@RequestHeader(name = "{{ parameter.name }}", required={{ parameter.isRequired }}) {{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.queryParameters%}@RequestParam(name = "{{ parameter.name }}", required={{ parameter.isRequired }}) {{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for requestModelName in operation.requestGenerationModel.typeNames %}@Valid @RequestBody {{ requestModelName|capitalizeFirstLetter }} {{ requestModelName|snakeCaseToCamelCase }} + {%- if not forloop.last%}, {% endif -%}{% endfor -%}); + {%- if not forloop.paths.last or not forloop.operations.last %} + {% endif -%} +{% endfor %}{% endfor %} } \ No newline at end of file diff --git a/Templates/v2/Java/controller.stencil b/Templates/v2/Java/controller.stencil index cf99748..8d509da 100644 --- a/Templates/v2/Java/controller.stencil +++ b/Templates/v2/Java/controller.stencil @@ -11,35 +11,50 @@ import org.springframework.web.bind.annotation.*; public class {{ service.name }}Controller implements {{ service.name }}Api { private final {{ service.name }}Service {{ service.name|lowercaseFirstLetter }}Service; - {%for path in service.paths%} - {%for operation in path.operations%} + {%- for path in service.paths -%} + {%- for operation in path.operations%} + @Override - public {%if operation.responseGenerationModel.key == "204"%}void{%else%}ResponseEntity<{{ operation.responseGenerationModel.value.typeNames|join }}>{%endif%} {{ operation.id }}( - {%for parameter in operation.pathParameters%}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.headerParameters%}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.queryParameters%}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for requestModelName in operation.requestGenerationModel.typeNames%} {{ requestModelName|capitalizeFirstLetter }} {{ requestModelName|snakeCaseToCamelCase }}{%endfor%}) { - {%if operation.responseGenerationModel.key == "204"%} + public {% if operation.responseGenerationModel.key == "204" %}void{% else %}ResponseEntity<{{ operation.responseGenerationModel.value.typeNames|join }}>{% endif %} {{ operation.id }}( + {%- for parameter in operation.pathParameters %}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.headerParameters or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.headerParameters %}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.queryParameters %}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for requestModelName in operation.requestGenerationModel.typeNames -%}{{ requestModelName|capitalizeFirstLetter }} {{ requestModelName|snakeCaseToCamelCase }} + {%- if not forloop.last%}, {% endif -%}{% endfor -%}) { + {%- if operation.responseGenerationModel.key == "204" %} {{ service.name|lowercaseFirstLetter }}Service.{{ operation.id }}( - {%for parameter in operation.pathParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.headerParameters%}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.queryParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for requestModelName in operation.requestGenerationModel.typeNames%}{{ requestModelName|snakeCaseToCamelCase }}{%endfor%}); - {%else%} - return {%if operation.responseGenerationModel.key == "201"%}new ResponseEntity<>({{ service.name|lowercaseFirstLetter }}Service.{{ operation.id }}( - {%for parameter in operation.pathParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.queryParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.headerParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for requestModelName in operation.requestGenerationModel.typeNames%}{{ requestModelName|snakeCaseToCamelCase }}{%endfor%}), HttpStatus.CREATED); - {%else%} + {%- for parameter in operation.pathParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.headerParameters or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {%- for parameter in operation.headerParameters %}{{ parameter.typeModel.name|capitalizeFirstLetter }} {{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {%- for parameter in operation.queryParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {%- for requestModelName in operation.requestGenerationModel.typeNames %}{{ requestModelName|snakeCaseToCamelCase }} + {%- if not forloop.last%}, {% endif -%}{% endfor -%}); + {%- else %} + return {% if operation.responseGenerationModel.key == "201" %}new ResponseEntity<>({{ service.name|lowercaseFirstLetter }}Service.{{ operation.id }}( + {%- for parameter in operation.pathParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.headerParameters or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.queryParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.headerParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for requestModelName in operation.requestGenerationModel.typeNames %}{{ requestModelName|snakeCaseToCamelCase }} + {%- if not forloop.last%}, {% endif -%}{% endfor -%}), HttpStatus.CREATED); + {%- else -%} ResponseEntity.ok({{ service.name|lowercaseFirstLetter }}Service.{{ operation.id }}( - {%for parameter in operation.pathParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.queryParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for parameter in operation.headerParameters%}{{ parameter.name|snakeCaseToCamelCase }}{%endfor%} - {%for requestModelName in operation.requestGenerationModel.typeNames%}{{ requestModelName|snakeCaseToCamelCase }}{%endfor%})); - {%endif%} - {%endif%} - } - {%endfor%} - {%endfor%} + {%- for parameter in operation.pathParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.headerParameters or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.queryParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.queryParameters or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for parameter in operation.headerParameters %}{{ parameter.name|snakeCaseToCamelCase }} + {%- if not forloop.last or operation.requestGenerationModel.typeNames%}, {% endif -%}{% endfor -%} + {% for requestModelName in operation.requestGenerationModel.typeNames %}{{ requestModelName|snakeCaseToCamelCase }} + {%- if not forloop.last%}, {% endif -%}{% endfor -%})); + {%- endif -%} + {%- endif %} + }{% endfor %}{% endfor %} } \ No newline at end of file diff --git a/Templates/v2/Java/dto.stencil b/Templates/v2/Java/dto.stencil index fd3f4ce..396293d 100644 --- a/Templates/v2/Java/dto.stencil +++ b/Templates/v2/Java/dto.stencil @@ -11,8 +11,9 @@ import java.time.LocalDateTime; @Data @NoArgsConstructor public class {{ model.name }} { - {% for property in model.properties %} - @Schema( description = "{{ property.description }}"{% if property.example %}, example = "{{ property.example }}"{% else %}){% endif %}{% if not property.isNullable %} + {%- for property in model.properties %} + @Schema(description = "{{ property.description }}"{% if property.example %}, example = "{{ property.example }}"{% else %}){% endif %}{% if property.pattern %} + @Pattern(regexp = "{{ property.pattern|withEscapedCharacters }}"){% endif %}{% if not property.isNullable %} @NotNull{% if property.typeModel.name == "string" %} @NotBlank{% endif %}{% elif property.isNullable %} @Nullable{% endif %}{% if property.typeModel.name == "string" %}{% if property.minLength or property.maxLength %} @@ -20,5 +21,7 @@ public class {{ model.name }} { @Min({{ property.minimum}}) @Max({{ property.maximum }}){% endif %}{% endif %} private {% if property.typeModel.isArray %}List<{{ property.typeModel.name|capitalizeFirstLetter }}>{% else %}{% if property.typeModel.name == "integer" %}{% if property.format == "int64" %}Long{% else %}Integer{% endif %}{% elif property.typeModel.name == "number" %}Double{% elif property.typeModel.name == "string" %}{% if property.format == "date-time" %}LocalDateTime{% elif property.format == "date" %}LocalDate{% else %}String{% endif %}{% else %}{{ property.typeModel.name|capitalizeFirstLetter }}{% endif %}{% endif %} {{ property.name|snakeCaseToCamelCase }}; + {%- if not forloop.last %} + {% endif -%} {% endfor %} } \ No newline at end of file diff --git a/Templates/v2/Java/enum.stencil b/Templates/v2/Java/enum.stencil index 4ffdb74..c9a74b3 100644 --- a/Templates/v2/Java/enum.stencil +++ b/Templates/v2/Java/enum.stencil @@ -4,7 +4,7 @@ {% endif %}public enum {{ enum.name }} { {% for caseValue in enum.cases %}{# #}{{ caseValue|uppercase }}("{{ caseValue }}"){% if not forloop.last %},{% else %};{% endif %} - {% endfor %} + {%- endfor %} private final String value;