1
votes

I'm trying to generate java client code using the following command

java -jar swagger-codegen-cli-3.0.2.jar generate -v  \
        -i swagger.json \
        -l java

but I get the following error

java.util.NoSuchElementException: No value present
    at java.util.Optional.get(Optional.java:135)
    at io.swagger.codegen.v3.generators.DefaultCodegenConfig.configureDataForTestTemplate(DefaultCodegenConfig.java:3766)
    at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromOperation(DefaultCodegenConfig.java:2107)
    at io.swagger.codegen.v3.generators.java.AbstractJavaCodegen.fromOperation(AbstractJavaCodegen.java:1089)
    at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:847)
    at io.swagger.codegen.v3.DefaultGenerator.processPaths(DefaultGenerator.java:771)
    at io.swagger.codegen.v3.DefaultGenerator.generateApis(DefaultGenerator.java:419)
    at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:722)
    at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:342)
    at java.lang.Thread.run(Thread.java:748)
Exception in thread "Thread-1" java.lang.RuntimeException: Could not process operation:
    Tag: class Tag {
    name: DIMSE-RS
    description: Invoke DIMSE Service on remote AE
    externalDocs: null
    }
Operation: SearchForStudySeriesInstancesExternal
Resource: get /aets/{aet}/dimse/{externalAET}/studies/{StudyInstanceUID}/series/{SeriesInstanceUID}/instances
Exception: No value present
    at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:872)
    at io.swagger.codegen.v3.DefaultGenerator.processPaths(DefaultGenerator.java:771)
    at io.swagger.codegen.v3.DefaultGenerator.generateApis(DefaultGenerator.java:419)
    at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:722)
    at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:342)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.NoSuchElementException: No value present
    at java.util.Optional.get(Optional.java:135)
    at io.swagger.codegen.v3.generators.DefaultCodegenConfig.configureDataForTestTemplate(DefaultCodegenConfig.java:3766)
    at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromOperation(DefaultCodegenConfig.java:2107)
    at io.swagger.codegen.v3.generators.java.AbstractJavaCodegen.fromOperation(AbstractJavaCodegen.java:1089)
    at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:847)
    ... 5 more

for the following section of swagger.json file

"/aets/{aet}/dimse/{externalAET}/studies/{StudyInstanceUID}/series/{SeriesInstanceUID}/instances": {
  "get": {
    "tags": [
      "DIMSE-RS"
    ],
    "summary": "Search for Instances of Series of Study external",
    "operationId": "SearchForStudySeriesInstancesExternal",
    "produces": [
      "application/dicom+json",
      "application/json"
    ],
    "parameters": [
      {
        "name": "aet",
        "in": "path",
        "description": "Archive AE Title used as Calling AET for querying for Instances",
        "required": true,
        "type": "string"
      },
      {
        "name": "externalAET",
        "in": "path",
        "description": "AE Title of C-FIND SCP to query for Instances",
        "required": true,
        "type": "string"
      },
      {
        "name": "SeriesInstanceUID",
        "in": "path",
        "description": "Series Instance UID for a single Series",
        "required": true,
        "type": "string"
      },
      {
        "name": "priority",
        "in": "query",
        "description": "requested priority: 0=NORMAL, 1=HIGH, 2=LOW",
        "type": "integer",
        "enum": [ 0, 1, 2 ],
        "default": 0
      },
      {
        "name": "{attributeID}",
        "in": "query",
        "description": "{attributeID}={value}; {attributeID} = {dicomTag} | {dicomKeyword} | {dicomTag}.{attributeID} | {dicomKeyword}.{attributeID}",
        "type": "array",
        "items": {
          "type": "string"
        },
        "collectionFormat": "multi"
      },
      {
        "name": "fuzzymatching",
        "in": "query",
        "description": "fuzzy semantic matching of person names",
        "type": "boolean",
        "default": false
      },
      {
        "name": "offset",
        "in": "query",
        "description": "offset={skippedResults}",
        "type": "integer",
        "default": 0
      },
      {
        "name": "limit",
        "in": "query",
        "description": "limit={maximumResults}",
        "type": "integer"
      }
    ],
    "responses": {
      "200": {
        "description": "successful operation",
        "schema": {
          "type": "file"
        }
      },
      "204": {
        "description": "no matching instances found"
      },
      "404": {
        "description": "External AE Title not found"
      },
      "default": {
        "description": "unexpected error"
      }
    }
  }
},

Full swagger file is available here

https://github.com/dcm4che/dcm4chee-arc-light/blob/master/dcm4chee-arc-ui2/src/swagger/swagger.json

or here

http://petstore.swagger.io/index.html?url=https://raw.githubusercontent.com/dcm4che/dcm4chee-arc-light/master/dcm4chee-arc-ui2/src/swagger/swagger-dicom.json

Any idea what is the issue ?

1
Your Swagger file has some syntax errors which you can see if you paste it into editor.swagger.io. I'd suggest fixing the errors first before running the codegen. - Helen

1 Answers

2
votes

I fixed few errors in swagger file:

  1. Path parameters not listed in the parameters collection (this was the root cause for above issue)
  2. Parameters with invalid names (contains ! at the end or enclosed in {}) (this didn't cause an error at generation time but caused a compilation error)