-
Notifications
You must be signed in to change notification settings - Fork 594
Description
Codegen is currently (successfully) used across Helidon, though we discovered a few things that may require redesign/improvement.
A few steps needed for this to be feasible
- Codegen should be marked as
InternalAPI, as we need to change it to suit our needs (in 4.x) - In the next major release, we keep it as internal and this task should be started so we plan the changes
- In the major relase after that, we should implement these changes
This task is to gather the requirements, and possibly do partial/bigger redesign
Related topics (all for discussion and analysis):
-
TypeInfodoes not seem to fit tocommon-types, it should be either itcodegenorcodegen-apt -
Builder codegen (any maybe other that require Javadoc to be useful) do not need to be abstracted from annotation processing; it would benefit if we could use APT APIs (such as Trees, DocTree etc.)
This would require a change in dependency structure, and maybe abandoning full abstraction of the underlying environment - i.e. maybe we could have codegen with hard dependency on APT, and resolve our Maven plugin (and possible other class graph and reflection use cases) without dependency on codegen. -
Class model has public
Annotationtype, as we have incommon-types- we should only use the one from common types (same forTypeandTypeName); theAnnotationandTypeinclass-modelshould be an implementation detail hidden from users, and all APIs should work withcommon-types(