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

Fix UUID support #1746

Merged
merged 2 commits into from
Dec 26, 2018
Merged

Conversation

ackintosh
Copy link
Contributor

@ackintosh ackintosh commented Dec 23, 2018

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: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

This PR fixes #1733


Sample spec

Sample spec
openapi: 3.0.0
info:
  description: >-
    This spec is mainly for testing Petstore server and contains fake endpoints,
    models. Please do not use this for any other purpose. Special characters: "
    \
  version: 1.0.0
  title: OpenAPI Petstore
  license:
    name: Apache-2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
paths:
  /foo:
    get:
      parameters:
        - $ref: '#/components/parameters/TestQuery'
      responses:
        default:
          description: response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Foo'
servers:
  - url: http://localhost:8080/
    description: The local server
components:
  parameters:
    TestQuery:
        name: testQuery
        description: test query
        in: query
        schema:
          $ref: '#/components/schemas/Bar'
  schemas:
    Foo:
      type: object
      properties:
        bar:
          $ref: '#/components/schemas/Bar'
    Bar:
      type: string
      format: uuid

Sample code using a generated codes from the spec

fun main(args: Array<String>) {
    val api = DefaultApi()
    println(api.fooGet(UUID.randomUUID()))
}

Before

Exception in thread "main" java.lang.IllegalArgumentException: Platform class java.util.UUID annotated [] requires explicit JsonAdapter to be registered
	at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:51)
	at com.squareup.moshi.Moshi.adapter(Moshi.java:100)
	at com.squareup.moshi.KotlinJsonAdapterFactory.create(KotlinJsonAdapter.kt:184)
	at com.squareup.moshi.Moshi.adapter(Moshi.java:100)
	at com.squareup.moshi.Moshi.adapter(Moshi.java:62)
	at org.openapitools.client.apis.DefaultApi.fooGet(DefaultApi.kt:173)
	at org.openapitools.client.MainKt.main(Main.kt:8)

After

Foo(bar=ce5b8513-fd5b-4b25-98e2-c40dc1b3c7c4)

@ackintosh ackintosh force-pushed the fix-uuid-serialization branch from 52f5821 to 3a2e0d2 Compare December 23, 2018 14:05
./bin/kotlin-client-threetenbp.sh
./bin/kotlin-client-string.sh
./bin/kotlin-client-petstore.sh
@wing328 wing328 added this to the 4.0.0 milestone Dec 23, 2018
@wing328
Copy link
Member

wing328 commented Dec 23, 2018

cc @jimschubert (2017/09) @dr4ke616 (2018/08)

Copy link
Member

@jimschubert jimschubert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. I haven't run any tests on it, but I don't see any issues with implementation.

@ackintosh ackintosh merged commit 5d98fc6 into OpenAPITools:master Dec 26, 2018
@ackintosh ackintosh deleted the fix-uuid-serialization branch December 27, 2018 00:00
jimschubert added a commit to jimschubert/openapi-generator that referenced this pull request Dec 31, 2018
* master: (26 commits)
  Delete unused method (OpenAPITools#1744)
  Use JsonNullable wrapper on nullable/x-nullable fields (OpenAPITools#1762)
  Add an option to use reflection in equals, hashCode (Java client) (OpenAPITools#1767)
  [Slim] Encode path to support non-latin characters (OpenAPITools#1687)
  [elm] Add support for sending headers (OpenAPITools#1704)
  Add test case for InlineModelResolver: inline array response (OpenAPITools#1778)
  fix group parameter logic (OpenAPITools#1779)
  Add test case for InlineModelResolver: inline array request body (OpenAPITools#1777)
  Add test case for InlineModelResolver: inline array schema (OpenAPITools#1772)
  Fix type inference error (OpenAPITools#1773)
  skip default value for contaier in spring (OpenAPITools#1725)
  [Slim] Add PHP CodeSniffer config template (OpenAPITools#1764)
  Use CompareNetObject for object comparison in C# client (refactor) (OpenAPITools#1765)
  Add test case for InlineModelResolver (OpenAPITools#1771)
  Add online gen tests (OpenAPITools#1759)
  Resolve inline models before preprocess (OpenAPITools#1761)
  better handling of allOf (composition) (OpenAPITools#1757)
  Fix UUID support (OpenAPITools#1746)
  Use appInfo.version for podspec (OpenAPITools#1760)
  [Swift 4] Add `createURLRequest` method (OpenAPITools#1727)
  ...
A-Joshi pushed a commit to ihsmarkitoss/openapi-generator that referenced this pull request Feb 27, 2019
* Add custom type adapter to deserialize UUID

* Update samples

./bin/kotlin-client-threetenbp.sh
./bin/kotlin-client-string.sh
./bin/kotlin-client-petstore.sh
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.

[BUG][Kotlin] Generated Serializer for ApiClient does not support UUID
3 participants