This bytecode rewriter intercepts calls to generate made in the CGLIB framework and allows us to record what generator is called
to create the proxy for some type.
This ClassAdapter will visit a class and within the constructors it will add a call to the specified method (assumed static)
just before each constructor returns.
Configure (if not already done) this TypeRegistry by locating springloaded.properties (through a findResources call) then
loading it then processing any directives within it.
Encapsulates configurable elements - these are set (to values other than the defaults) in TypeRegistry when the system property
springloaded configuration is processed.
Plugins that implement this interface are allowed to modify types as they are loaded - this can be necessary sometimes to ensure,
for example, that a particular field is accessible later when a reload event occurs or that some factory method returns a wrapper
rather than the original object it intended to.
Minimal support for logging messages, avoids all dependencies it can because it will be loaded very early by the VM and
we don't want to introduce unnecessarily complex classloading.
Log() -
Constructor for class org.springsource.loaded.Log
log(String) -
Static method in class org.springsource.loaded.Log
To manage the complexity of the different cases created by a variety of different types of contexts where we can do 'method
lookup' we need an abstraction to represent them all.
This ClassAdapter will visit a class and within the constructors it will add a call to the specified method (assumed static)
just before each constructor returns.
This is not a 'default' plugin, it must be registered by specifying the following on the springloaded option:
"plugins=org.springsource.loaded.SystemPropertyConfiguredIsReloadableTypePlugin".
Encapsulates what has changed between two versions of a type - it is used to determine if a reload is possible and also passed on
events related to reloading so that the plugins can tailor their actions based on what prevented reloading.
Called when a type cannot be reloaded, due to a change being made that is not supported by the agent, for example when the
set of interfaces for a type is changed.
When a reload is attempted, if this is true it will be checked to confirm it is allowed and does not violate the supported
reloadable changes that can be made to a type.
Interface implemented by all dispatchers so code can be generated to call the dynamic executor regardless of the dispatcher
instance the code is actually working with.