disneystreaming / smithy4s

https://disneystreaming.github.io/smithy4s/
Other
343 stars 69 forks source link

Use smithy-trait-codegen for Java Trait representations #1536

Open kubukoz opened 3 months ago

kubukoz commented 3 months ago

https://github.com/smithy-lang/smithy/blob/1805e515bc3877a02aa8351da1a7ea62e92a2c8f/smithy-trait-codegen/src/main/java/software/amazon/smithy/traitcodegen/TraitCodegen.java

Doing this is likely to cause bincompat breakage in the protocol module, but it'll save us some boilerplate.

Should probably be attempted in Alloy first.

Baccata commented 3 months ago

The protocol module should not be considered "library code", so bin breakage is okay.

Assuming we went ahead, what would the set-up even look like ?

kubukoz commented 3 months ago

The trait codegen can be set up as a source generator in the build tool. The trait classes are generated with builders and getters, and your validators / services can use those. I can't exactly share a snippet but we've done this at work so it's doable