Class ClassPathBeanDefinitionScannerAgent
- java.lang.Object
-
- org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent
-
public class ClassPathBeanDefinitionScannerAgent extends java.lang.ObjectRegisters- Author:
- Jiri Bubnik
-
-
Field Summary
Fields Modifier and Type Field Description static booleanreloadFlagFlag to check reload status.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddefineBean(org.springframework.beans.factory.config.BeanDefinition candidate)Resolve candidate to a bean definition and (re)load in Spring.static ClassPathBeanDefinitionScannerAgentgetInstance(java.lang.String basePackage)Find scanner agent by base package.static ClassPathBeanDefinitionScannerAgentgetInstance(org.springframework.context.annotation.ClassPathBeanDefinitionScanner scanner)Return an agent instance for a scanner.static voidrefreshClass(java.lang.String basePackage, byte[] classDefinition)Called by a reflection command from SpringPlugin transformer.voidregisterBasePackage(java.lang.String basePackage)Initialize base package from ClassPathBeanDefinitionScanner.scan() (hooked by a Transformer)org.springframework.beans.factory.config.BeanDefinitionresolveBeanDefinition(byte[] bytes)Resolve bean definition from class definition if applicable.
-
-
-
Method Detail
-
getInstance
public static ClassPathBeanDefinitionScannerAgent getInstance(org.springframework.context.annotation.ClassPathBeanDefinitionScanner scanner)
Return an agent instance for a scanner. If the instance does not exists yet, it is created.- Parameters:
scanner- the scanner- Returns:
- agent instance
-
getInstance
public static ClassPathBeanDefinitionScannerAgent getInstance(java.lang.String basePackage)
Find scanner agent by base package.- Parameters:
basePackage- the scanner agent or null if no such agent exists- Returns:
- the agent
-
registerBasePackage
public void registerBasePackage(java.lang.String basePackage)
Initialize base package from ClassPathBeanDefinitionScanner.scan() (hooked by a Transformer)- Parameters:
basePackage- package that Spring will scan
-
refreshClass
public static void refreshClass(java.lang.String basePackage, byte[] classDefinition) throws java.io.IOExceptionCalled by a reflection command from SpringPlugin transformer.- Parameters:
basePackage- base package on witch the transformer was registered, used to obtain associated scanner.classDefinition- new class definition- Throws:
java.io.IOException- error working with classDefinition
-
defineBean
public void defineBean(org.springframework.beans.factory.config.BeanDefinition candidate)
Resolve candidate to a bean definition and (re)load in Spring. Synchronize to avoid parallel bean definition - usually on reload the beans are interrelated and parallel load will cause concurrent modification exception.- Parameters:
candidate- the candidate to reload
-
resolveBeanDefinition
public org.springframework.beans.factory.config.BeanDefinition resolveBeanDefinition(byte[] bytes) throws java.io.IOExceptionResolve bean definition from class definition if applicable.- Parameters:
bytes- class definition.- Returns:
- the definition or null if not a spring bean
- Throws:
java.io.IOException
-
-