Infinite Technology ∞ Carburetor 🌀
Parameterized Groovy AST method Transformer
Carburetoris a device that mixes air and fuel for internal combustion engines in the proper air–fuel ratio for combustion.
@Carburetor-based annotations are mixing the auto-generated “infrastructural” code with the user code - thus its name.
|CI Build status|
|Library (Maven)||oss.jfrog.org snapshot|
Carburetoris not an end-user solution. It is a basis for other end-user solutions (such as Blackbox) providing compile-time code transformation implementation and a runtime API.
Carburetor provides a foundation for other libraries to automatically generate Groovy Semantic handling code based on Carburetor configuration and inject it into User code during the Compilation stage resulting in a possibility to intercept and interact with application run-time events including their corresponding compile-time metadata (class name, method name, line start, line end, column start, column end, ASTNode class name):
- Method/constructor Start
- Method Result return
- Method/constructor End
- Method/constructor Exception
- Statement Start
- Statement Start
- Statement End
- Control Statements (return, break, continue, throw)
- Expression evaluation Start
- Expression evaluation Result
- Expression evaluation Exception
- Expression evaluation End
Carburetor-based annotations inject a lot of implementation-specific infrastructure code (such as logging, profiling, security, etc) without affecting the user program logic.
Granularity of injected code can be defined by the user (programmer) up to:
- Method Exceptions handling (exception and causing method arguments are handled)
- Method invocation handling (method arguments and result are handled)
- Statement-level handling
- Expression-level handling