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

java generator, support non-string expandable enum for TypeSpec #4492

Merged
merged 24 commits into from
Oct 10, 2024

Conversation

XiaofeiCao
Copy link
Member

@XiaofeiCao XiaofeiCao commented Sep 23, 2024

Previous non-string expandable enum implementation

  • Branded
    • Swagger(ExpandableStringEnum, serialization having trouble)
    • TypeSpec(ExpandableStringEnum, serialization having trouble)
  • Unbranded
    • ExpandableEnum interface

After this PR

  • Branded
    • Swagger(ExpandableEnum interface implementation, with serialization/deserialization supported)
    • TypeSpec(ExpandableEnum interface implementation, with serialization/deserialization supported)
  • Unbranded(untouched, supported)

Limitations

About this PR's commits

@microsoft-github-policy-service microsoft-github-policy-service bot added the emitter:client:java Issue for the Java client emitter: @typespec/http-client-java label Sep 23, 2024
@XiaofeiCao XiaofeiCao changed the title tsp, support non-string expandable enum java generator, support non-string expandable enum for TypeSpec Sep 23, 2024
@azure-sdk
Copy link
Collaborator

No changes needing a change description found.

@azure-sdk
Copy link
Collaborator

You can try these changes here

🛝 Playground 🌐 Website 📚 Next docs

@weidongxu-microsoft
Copy link
Contributor

I am not sure about Swagger non-string expansive enum. I am kind of inclined for them to use ExpandableEnum as well. But I don't know what they really are in service backend.

@XiaofeiCao
Copy link
Member Author

I am not sure about Swagger non-string expansive enum. I am kind of inclined for them to use ExpandableEnum as well. But I don't know what they really are in service backend.

Yes, it depends on backend.
Current monitor and cdn already have such enum. For Swagger, if we decide to serialize them to elementType, guess we could do defaultValueExpression for the string value of the ExpandableStringEnum to convert string back to the elementType.

Let me do a summary and bring this up on thursday's meeting.

@XiaofeiCao XiaofeiCao marked this pull request as ready for review September 29, 2024 08:14
@XiaofeiCao XiaofeiCao requested a review from srnagar as a code owner September 29, 2024 08:14
@XiaofeiCao XiaofeiCao added this pull request to the merge queue Oct 10, 2024
Merged via the queue into microsoft:main with commit d4e4179 Oct 10, 2024
25 checks passed
@XiaofeiCao XiaofeiCao deleted the tsp_expandable_enum branch October 10, 2024 09:33
swatkatz pushed a commit to swatkatz/typespec that referenced this pull request Nov 5, 2024
…osoft#4492)

## Previous non-string expandable enum implementation
- Branded
  - Swagger(ExpandableStringEnum, serialization having trouble)
  - TypeSpec(ExpandableStringEnum, serialization having trouble)
- Unbranded
  - ExpandableEnum interface

## After this PR
- Branded
- Swagger(ExpandableEnum interface implementation, with
serialization/deserialization supported)
- TypeSpec(ExpandableEnum interface implementation, with
serialization/deserialization supported)
- Unbranded(untouched, supported)

## Limitations
- Only supports string and number extensible enums.
- Current TypeSpec doesn't support extensible boolean enum:
Azure/typespec-azure#1162
- Current TypeSpec doesn't seem to have literals other than string,
number and boolean(I can't make object literals work):
microsoft#2359

## About this PR's commits
- **TypeSpec code(main purpose)**:
29841a7
- TypeSpec test case in d37d396
- Swagger test case in autorest.java
Azure/autorest.java#2953
- Swagger serialization fix: e8454cf
- script change for build: 54af0f1
- A minor mapper bug fix: 41673da

---------

Co-authored-by: Weidong Xu <weidxu@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
emitter:client:java Issue for the Java client emitter: @typespec/http-client-java
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants