Swagger-codegen: [JAVA Spring] ГСнСрация ΠΊΠΎΠ΄Π° с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ логичСскими ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½Π΅ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ null

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 8 Ρ„Π΅Π²Ρ€. 2018  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: swagger-api/swagger-codegen

ОписаниС ΠΈ шаги ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ

ΠŸΡ€ΠΈ создании ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ swagger-codegen логичСскиС значСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² классы-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. НапримСр, логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ foo Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ логичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ.

НапримСр, Ρ„Π°ΠΉΠ» swagger:

swagger: "2.0"
info:
  title: "Test"
  version: "2"
host: "petstore.swagger.io"
basePath: "/v2"
schemes:
- "http"
paths:
  /test:
    post:
      tags:
      - "pet"
      summary: "Test"
      parameters:
      - in: "body"
        name: "body"
        description: "Pet object that needs to be added to the store"
        required: true
        schema:
          $ref: "#/definitions/test"
      responses:
        200:
          description: ""
definitions:
  test:
    type: "boolean"

сгСнСрируСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ модСль:

/**
 * TestModel
 */
<strong i="11">@Validated</strong>
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2018-02-08T10:30:55.500+01:00")

public class TestModel   {
  @JsonProperty("someBoolean")
  private Boolean someBoolean = null;

  public TestModel someBoolean(Boolean someBoolean) {
    this.someBoolean = someBoolean;
    return this;
  }

  /**
   * Get someBoolean
   * <strong i="12">@return</strong> someBoolean
  **/
  @ApiModelProperty(value = "")


  public Boolean isSomeBoolean() {
    return someBoolean;
  }

  public void setSomeBoolean(Boolean someBoolean) {
    this.someBoolean = someBoolean;
  }

 //equals, hashocde and toString here
}

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² этом ΠΎΡ‚Π²Π΅Ρ‚Π΅, Ссли логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠΌ, Hibernator Validator провСряСт Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ называСтся Β«getSomeBooleanΒ», Π° Π½Π΅ Β«isSomeBooleanΒ», Ρ‡Ρ‚ΠΎ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ соглашСниСм с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Hibernate ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ это.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с логичСскими значСниями, логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ игнорируСтся для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Β«nullΒ» ΠΈΠ»ΠΈ пропуск ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΎΠ²Π°Π»Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

ВСрсия Swagger-codegen

2.3.1

Командная строка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ

Π― Π½Π΅ совсСм ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° CLI, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π΅ Ρ‡Π΅Ρ€Π΅Π· [gradle] https://github.com/thebignet/swagger-codegen-gradle-plugin-example), Π½ΠΎ наша Π·Π°Π΄Π°Ρ‡Π° gradle ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ :

task generateApi {
    inputs.file(swaggerInput)
    outputs.dir(generatedSourcesPath)
    doLast {
        def config = new CodegenConfigurator()
        config.setInputSpec(swaggerInput.path)
        config.setOutputDir(generatedSourcesPath.path)
        config.setLang('spring')
        //The documentation for the properties below can be found by downloading swagger-codegen-cli.jar
        //and running java -jar swagger-codegen-cli.jar config-help -l spring
        config.setAdditionalProperties([
                'invokerPackage': 'com.stibosystems.ziggy.mainbackend.api',
                'modelPackage': 'com.stibosystems.ziggy.mainbackend.api.model',
                'apiPackage': 'com.stibosystems.ziggy.mainbackend.api',
                'sourceFolder': '.', //This is relative to the output dir
                //We don't care about the timestamp, but need the <strong i="22">@Generated</strong> annotation so error prone knows not to check generated files
                'hideGenerationTimestamp': false,
                'dateLibrary': 'java8',
                'java8': true,
                'interfaceOnly': true,
                'useBeanValidation': true,
                'withXml': false,
                'useTags': true
        ])
        new DefaultGenerator().opts(config.toClientOptInput()).generate()
ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚Π΅ исправлСниС / ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅

Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π° ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ старого.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° исправлСна ​​или всС Π΅Ρ‰Π΅ сущСствуСт?

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@GeeWee Π²Ρ‹ мСняСтС соглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, настраивая шаблон. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ:

https://github.com/swagger-api/swagger-codegen/pull/7344
https://github.com/swagger-api/swagger-codegen/issues/7261

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° исправлСна ​​или всС Π΅Ρ‰Π΅ сущСствуСт?

Как этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ?

  • ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ логичСскоС ΠΏΠΎΠ»Π΅ гСнСрируСтся Π² ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ для логичСского ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ?

Или ΠΊΠ°ΠΊ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ получСния логичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ getSomeBool вмСсто isSomeBool?
@ wing328, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ связали с PR https://github.com/swagger-api/swagger-codegen/pull/7344, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ is / get / has для Boolean.
НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ привСсти ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° самом Π΄Π΅Π»Π΅? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°Ρ‚ΡŒ ссылку Π½Π° Ρ‚Π°ΠΊΠΎΠΉ шаблон ΠΈΠ»ΠΈ Π΄Π°Ρ‚ΡŒ нСсколько совСтов?

Π Π•Π”ΠΠšΠ’Π˜Π ΠžΠ’ΠΠ’Π¬:
Бпасибо @ wing328 , Π² этом ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΠ³ ваш ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² PR, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» {{#isBoolean}} get {{/ isBoolean}} Π² pojo.mustache.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ½Π΅ просто Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡƒΡ‚Π΅ΠΌ рСдактирования шаблонов:https://github.com/swagger-api/swagger-codegen/issues/7980 , https://github.com/swagger-api/swagger-codegen/issues/8001 , https://github.com/swagger- api / swagger-codegen / issues / 8044 ~~Π Π•Π”ΠΠšΠ’Π˜Π ΠžΠ’ΠΠ’Π¬:ВсС исправлСно спасибо

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ