Compile-Time generation of gson adapters
Go to file
JFronny d1d9707add
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Default to safe file writing (write-then-move) and fix AdapterAdapter not importing
2023-01-22 15:21:54 +01:00
gson-compile-annotations @With annotation instead of legacy code for @JsonAdapter 2023-01-22 14:59:43 +01:00
gson-compile-core Support JPMS. 2023-01-21 15:01:54 +01:00
gson-compile-example @With annotation instead of legacy code for @JsonAdapter 2023-01-22 14:59:43 +01:00
gson-compile-example-manifold Support JPMS. 2023-01-21 15:01:54 +01:00
gson-compile-processor Default to safe file writing (write-then-move) and fix AdapterAdapter not importing 2023-01-22 15:21:54 +01:00
gson-compile-processor-core Support JPMS. 2023-01-21 15:01:54 +01:00
.gitignore Support for 1d classes of primitives 2022-10-31 20:52:48 +01:00
.woodpecker.yml Attempt maven publish 2022-11-01 18:09:26 +01:00
build.gradle.kts Support JPMS. 2023-01-21 15:01:54 +01:00
LICENSE.md License 2022-11-01 10:15:29 +01:00
README.md Only generate @Extension once 2022-11-24 19:44:20 +01:00
settings.gradle.kts Update deps 2023-01-21 11:29:08 +01:00

Gson-Compile

A java annotation processor implementing automated type adapter generation for gson-comments. The goal of this AP is to

  • Support common features such as getters, setters, fields, constructors
  • Support modern language features such as records
  • Support json5 through gson-comments
  • Be compile-time where possible (ideally compatible with proguard)

Supported types

  • Primitives (and boxes)
  • Records
  • Nested serializable types
  • Arrays
  • Collections (Sets, Lists, Queues, Deques)
  • java.util.Date as iso8601
  • Enums
  • Maps with string, primitive, enum or UUID keys

Used properties

Use @GPrefer to choose one construction method if multiple are available

  • Builders (referenced in @GSerializable)
  • Factory functions
  • Constructors
  • Getters/Setters
  • Direct fields (public non-static only)

Additional features

  • Support for generating Gson adapters to hook into the gson system
  • Optional, strict no-reflection enforcement via -AgsonCompileNoReflect
  • Comments via @GComment
  • Several utility methods in the generated class for reading from/writing to various sources
  • Support for generating extension methods if manifold is present

TODO

  • Support for nested types from libraries
  • Static classes (for configs)

Credit