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

[Ada] Add Ada support for server code generator #7256

Merged
merged 36 commits into from
Jan 7, 2018

Conversation

stcarrez
Copy link
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh and ./bin/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: 3.0.0 branch for changes related to OpenAPI spec 3.0. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

The pull request adds support for the Ada server code generator (#6680).

  1. Refactoring of AdaCodegen and AbstractCodegen so that the later shares almost all model operations to deal with the Ada client and server code generator.
  2. New language 'ada-server' and language generator AdaServerCodegen for the Ada server code generator (inherits from AbstractCodegen).
  3. Added support for Ada nullable types to represent optional parameter and values (necessary for Ada server side). Updated the Ada client to take into account the Ada nullable types.
  4. New mustache templates for the Ada server specific files. The Ada server generator shares several mustache templates with the Ada client code generator so all the templates are in the same resource directory 'resources/Ada'.
  5. Updated the Ada client petstore samples.

I will submit the Ada server petstore samples as a separate PR and pull request.

- Add script to generate Ada client support with swagger-codegen
- Add files to build the Ada sample
- Add main program to use the generated client samples API
  and connect to the server to perform some operations
- Update postProcessOperations to scan each path parameter and emit a x-path-index
  vendor attribute to tell the index of the path parameter
- fix declaration of operations
- generate a generic package that must be instantiated with the target server implementation
  and which provides the skeleton (deserialization and serialization of data)
- extract body, query parameters, path parameters
- serialize the result
- register operations to the server according to the path/routes
- collect the security scopes in postProcessAuthMethod() method and make sure
  these scopes have unique identifiers.  Some scopes correspond to URLs
  but others correspond to pseudo identifiers.
- Change the server generated code to pass a Context_Type object
  to allow the server implementation to get/set headers in the request/response
  and control what is put in some responses
- Generate the security permissions based on the scopes that have been collected
- Fix generation of GNAT project
- Generate the intermediate Ada packages if necessary
- Generate the server main
- Add support to generate server permission verification
- Fix the GNAT project definition
- Templates for Ada intermediate packages
- separate the Ada client and Ada server code generators
- register the Ada server code generator under the name 'ada-server'
  keep 'ada' for the client Ada code generator
- moved the common Ada code operation supports to the AbstractAdaCodegen
- new template for the client main program
- fix the GNAT project template for client or server programs
- remove unused options to better use the --model-package option
@wing328 wing328 added this to the v2.4.0 milestone Dec 27, 2017
@wing328 wing328 merged commit 362625b into swagger-api:master Jan 7, 2018
@wing328 wing328 modified the milestones: v2.4.0, v2.3.1 Jan 7, 2018
@wing328
Copy link
Contributor

wing328 commented Jan 7, 2018

@stcarrez thanks for the PR, which has been merged into master (2.3.1)

I should have merged it into 2.4.0 instead but it should be fine to include it in the patch release 2.3.1

jimschubert added a commit to jimschubert/swagger-codegen that referenced this pull request Jan 10, 2018
* master: (26 commits)
  [Scala] Fix async helper methods when body is optional (swagger-api#7274)
  [Rust] Recommend style based on 'rustfmt' defaults (swagger-api#7335)
  [Java:vertx] Initialize router in init method and re-use router member to create S… (swagger-api#7234)
  [Scala] Fix missing json4s import (swagger-api#7271)
  deploy snapshot version 2.3.1
  [Ada] Add Ada support for server code generator swagger-api#6680 (swagger-api#7256)
  add shijinkui to scala technical committee
  Generate swagger yaml for go client (swagger-api#7281)
  use openjdk7 in travis to ensure it works with jdk7
  docs(readme): update link to contributing guid (swagger-api#7332)
  Fix a regression bug that was introduce in a recent commit. Removed the tabs that were causing error in Play Framework (swagger-api#7241)
  Fix issue swagger-api#7262 with the parameter name in the path. The problem was that camelCase naming was forced only in this part of the code when everywhere else it is configurable. (swagger-api#7313)
  Java8 fix (swagger-api#7260)
  update to 2.3.1-SNAPSHOT
  fix typo, update 2017 to 2018
  [Doc] add huawei cloud to companies list swagger-api#7308 (swagger-api#7309)
  Adding Peatio opensource as reference project (swagger-api#7267)
  Update README.md (swagger-api#7298)
  Update README.md (swagger-api#7299)
  [all] sys props in CodegenConstants
  ...
@wing328 wing328 changed the title [Ada] Add Ada support for server code generator #6680 [Ada] Add Ada support for server code generator Jan 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants