Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when UI is generated for two sources #166

Open
sharmasourabh opened this issue Mar 30, 2019 · 2 comments
Open

Error when UI is generated for two sources #166

sharmasourabh opened this issue Mar 30, 2019 · 2 comments
Labels

Comments

@sharmasourabh
Copy link

Describe the bug

Gives following error when two or more sources are used under swaggerSources while generating UI. It works well for single source.

Caused by:
org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method copy() for arguments [build_f1ze0druuyrt748fg165ca1g2$_run_closure2$_closure18$_closure24$_closure25$_closure26@511a0d5d] on task ':generateSwaggerUISource2' of type org.hidetake.gradle.swagger.generator.GenerateSwaggerUI.

To Reproduce:

Use following code, then generate UI

swaggerSources {
  source1 {
    inputFile = file(<Yaml full path>)
    code {
      language = 'spring'
      configFile = file(<config full path>)
      components = ['models', 'apis']
      dependsOn validation
    }
    ui {
      doLast {
        copy {
          from "index.html"
          into outputDir
        }
      }
    }
  } 
  source2 {
    inputFile = file(<Yaml2 fullpath>)
    code {
      language = 'spring'
      configFile = file(<config2 full path>)
      components = ['apis']
      dependsOn validation
    }
    ui {
      doLast {
        copy {
          from "index.html"
          into outputDir
        }
      }
    }
  }
}

Expected behavior:

Should generate working UI for both sources.

Environment

Plugin version:
2.10.0 (tested with latest 2.18.1 also)
Swagger Codegen version: 2.3.1
Gradle version: 4.5.1
Java version: 1.8
OS: Windows 10

@sharmasourabh
Copy link
Author

Any workaround to resolve it?

@AlexGustafsson
Copy link

This seems stale to say the least, but for people coming here from Google, I took the direction of combining multiple files to one before using this plugin.

I opened an issue to suggest the implementation of a $include field which would allow for arbitrary includes of other YAML files.

For now, the workaround I use is an added task to compile the YAML files before using the plugin:

task compileSwaggerSchema(type: Exec) {
  inputs.files 'api.yml', 'index.yml', 'models.yml'
  outputs.file 'documentation/api/schemas/v1/schema.yml'
  workingDir 'documentation/api/schemas/v1'
  commandLine 'bash', '-c', 'npx swagger-cli bundle --outfile schema.yml --type yaml index.yml'
}
generateSwaggerUI.dependsOn compileSwaggerSchema

Example index.yml:

openapi: 3.0.0
paths:
  $ref: "./api.yml"
components:
  schemas:
    $ref: "./models.yml"
# api.yml
/:
  get:
    responses:
      '200':
        description: The authentication process was started successfully.
        content:
          application/json:
            schema:
              $ref: './models.yml#/Response'
     
# models.yml
Response:
  type: object
  properties:
    foo:
      type: string

The workaround requires node and npm. It uses https://github.com/APIDevTools/swagger-cli.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants