|
|
|
@ -1,5 +1,7 @@ |
|
|
|
package org.springframework.config.java.support; |
|
|
|
package org.springframework.config.java.support; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static org.springframework.util.StringUtils.*; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.config.BeanDefinition; |
|
|
|
import org.springframework.beans.factory.config.BeanDefinition; |
|
|
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
|
|
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
|
|
|
import org.springframework.config.java.ConfigurationModel; |
|
|
|
import org.springframework.config.java.ConfigurationModel; |
|
|
|
@ -7,6 +9,8 @@ import org.springframework.config.java.internal.parsing.ConfigurationParser; |
|
|
|
|
|
|
|
|
|
|
|
public abstract class AbstractConfigurationClassProcessor { |
|
|
|
public abstract class AbstractConfigurationClassProcessor { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static String CGLIB_PACKAGE = "net.sf.cglib.proxy"; |
|
|
|
|
|
|
|
|
|
|
|
protected abstract BeanDefinitionRegistry getConfigurationBeanDefinitions(boolean includeAbstractBeanDefs); |
|
|
|
protected abstract BeanDefinitionRegistry getConfigurationBeanDefinitions(boolean includeAbstractBeanDefs); |
|
|
|
|
|
|
|
|
|
|
|
protected abstract ConfigurationParser createConfigurationParser(); |
|
|
|
protected abstract ConfigurationParser createConfigurationParser(); |
|
|
|
@ -19,13 +23,21 @@ public abstract class AbstractConfigurationClassProcessor { |
|
|
|
if(configBeanDefs.getBeanDefinitionCount() == 0) |
|
|
|
if(configBeanDefs.getBeanDefinitionCount() == 0) |
|
|
|
return configBeanDefs; // nothing to do - don't waste any more cycles
|
|
|
|
return configBeanDefs; // nothing to do - don't waste any more cycles
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: the location of this cglib check is temporary, pending removal of the
|
|
|
|
|
|
|
|
// @FactoryMethod meta-annotation indirection
|
|
|
|
|
|
|
|
if(Package.getPackage(CGLIB_PACKAGE) == null) |
|
|
|
|
|
|
|
throw new RuntimeException("CGLIB is required to process @Configuration classes. " + |
|
|
|
|
|
|
|
"Either add CGLIB v2.2.3 to the classpath or remove the following " + |
|
|
|
|
|
|
|
"@Configuration bean definitions: [" |
|
|
|
|
|
|
|
+ arrayToCommaDelimitedString(configBeanDefs.getBeanDefinitionNames()) + "]"); |
|
|
|
|
|
|
|
|
|
|
|
ConfigurationModel configModel = createConfigurationModelFor(configBeanDefs); |
|
|
|
ConfigurationModel configModel = createConfigurationModelFor(configBeanDefs); |
|
|
|
|
|
|
|
|
|
|
|
validateModel(configModel); |
|
|
|
validateModel(configModel); |
|
|
|
|
|
|
|
|
|
|
|
return renderModelAsBeanDefinitions(configModel); |
|
|
|
return renderModelAsBeanDefinitions(configModel); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private ConfigurationModel createConfigurationModelFor(BeanDefinitionRegistry configBeanDefinitions) { |
|
|
|
private ConfigurationModel createConfigurationModelFor(BeanDefinitionRegistry configBeanDefinitions) { |
|
|
|
|
|
|
|
|
|
|
|
ConfigurationParser parser = createConfigurationParser(); |
|
|
|
ConfigurationParser parser = createConfigurationParser(); |
|
|
|
|