public class GrailsApiRuntimeHints extends java.lang.Object implements RuntimeHintsRegistrar
Registers the interfaces a plugin reaches through dynamically: the framework's own, and the Spring ones it is handed.
A plugin descriptor is Groovy, and much of it is written without static compilation -- so reading a configuration value, asking the application for its artefacts, or asking the plugin manager about a plugin are all calls resolved where they are written rather than when the descriptor is compiled. Each is therefore made reflectively.
An image keeps a method for that only when something has asked it to, and an application never
names these itself: they are the framework's, called from the framework's own descriptors. The
image refuses the call where it is made, and what it reports is a method of an interface that
appears nowhere in the application -- the last of them stopping a context from starting on
ConfigMap.getProperty, which is how nearly every plugin reads its settings.
The Spring interfaces are here for the same reason rather than a different one: a descriptor is given the environment and the context and calls them the same dynamic way, and an application does not name them either. Reading a setting from the environment stopped a Hibernate application from starting in exactly the way reading one from the configuration stopped every application.
Only the interfaces are named. What implements them is reached through them, and registering the implementations would be registering most of the framework.
| Type Params | Return Type | Name and description |
|---|---|---|
|
public void |
registerHints(RuntimeHints hints, java.lang.ClassLoader classLoader) |
| Methods inherited from class | Name |
|---|---|
class java.lang.Object |
java.lang.Object#equals(java.lang.Object), java.lang.Object#getClass(), java.lang.Object#hashCode(), java.lang.Object#notify(), java.lang.Object#notifyAll(), java.lang.Object#toString(), java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int) |