use of com.alipay.sofa.isle.spring.config.SofaModuleProperties in project sofa-boot by alipay.
the class BeanHierarchyTest method refreshApplication.
private void refreshApplication(ApplicationRuntimeModel application) throws Exception {
DefaultListableBeanFactory rootBeanFactory = new DefaultListableBeanFactory();
ConfigurableApplicationContext rootApplicationContext = new GenericApplicationContext(rootBeanFactory);
rootApplicationContext.refresh();
SofaModuleProperties sofaModuleProperties = new SofaModuleProperties();
sofaModuleProperties.setBeanLoadCost(1);
rootBeanFactory.registerSingleton("sofaModuleProperties", sofaModuleProperties);
rootBeanFactory.registerSingleton(SofaBootConstants.PROCESSORS_OF_ROOT_APPLICATION_CONTEXT, new HashMap<>());
SpringContextLoader springContextLoader = new DynamicSpringContextLoader(rootApplicationContext);
for (DeploymentDescriptor dd : application.getResolvedDeployments()) {
if (dd.isSpringPowered()) {
springContextLoader.loadSpringContext(dd, application);
ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) dd.getApplicationContext();
dd.startDeploy();
ctx.refresh();
dd.deployFinish();
}
}
}
use of com.alipay.sofa.isle.spring.config.SofaModuleProperties in project sofa-boot by alipay.
the class DynamicSpringContextLoader method loadSpringContext.
@Override
public void loadSpringContext(DeploymentDescriptor deployment, ApplicationRuntimeModel application) throws Exception {
SofaModuleProperties sofaModuleProperties = rootApplicationContext.getBean(SofaModuleProperties.class);
BeanLoadCostBeanFactory beanFactory = new BeanLoadCostBeanFactory(sofaModuleProperties.getBeanLoadCost(), deployment.getModuleName());
beanFactory.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
GenericApplicationContext ctx = sofaModuleProperties.isPublishEventToParent() ? new GenericApplicationContext(beanFactory) : new SofaModuleApplicationContext(beanFactory);
ctx.setId(deployment.getModuleName());
String activeProfiles = sofaModuleProperties.getActiveProfiles();
if (StringUtils.hasText(activeProfiles)) {
String[] profiles = activeProfiles.split(SofaBootConstants.PROFILE_SEPARATOR);
ctx.getEnvironment().setActiveProfiles(profiles);
}
setUpParentSpringContext(ctx, deployment, application);
final ClassLoader moduleClassLoader = deployment.getClassLoader();
ctx.setClassLoader(moduleClassLoader);
CachedIntrospectionResults.acceptClassLoader(moduleClassLoader);
// set allowBeanDefinitionOverriding
ctx.setAllowBeanDefinitionOverriding(sofaModuleProperties.isAllowBeanDefinitionOverriding());
ctx.getBeanFactory().setBeanClassLoader(moduleClassLoader);
ctx.getBeanFactory().addPropertyEditorRegistrar(new PropertyEditorRegistrar() {
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Class.class, new ClassEditor(moduleClassLoader));
registry.registerCustomEditor(Class[].class, new ClassArrayEditor(moduleClassLoader));
}
});
deployment.setApplicationContext(ctx);
XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(ctx);
beanDefinitionReader.setValidating(true);
beanDefinitionReader.setNamespaceAware(true);
beanDefinitionReader.setBeanClassLoader(deployment.getApplicationContext().getClassLoader());
beanDefinitionReader.setResourceLoader(ctx);
loadBeanDefinitions(deployment, beanDefinitionReader);
addPostProcessors(beanFactory);
}
use of com.alipay.sofa.isle.spring.config.SofaModuleProperties in project sofa-boot by alipay.
the class DeploymentExceptionTest method test.
@Test(expected = DeploymentException.class)
public void test() throws Exception {
// create ApplicationRuntimeModel with dependency problem
ApplicationRuntimeModel application = new ApplicationRuntimeModel();
application.setAppName("testCase");
application.setModuleDeploymentValidator(new DefaultModuleDeploymentValidator());
DeploymentDescriptorConfiguration deploymentDescriptorConfiguration = new DeploymentDescriptorConfiguration(Collections.singletonList(SofaBootConstants.MODULE_NAME), Collections.singletonList(SofaBootConstants.REQUIRE_MODULE));
Properties props = new Properties();
props.setProperty(SofaBootConstants.MODULE_NAME, "com.alipay.test");
props.setProperty(SofaBootConstants.REQUIRE_MODULE, "com.alipay.dependency");
URL fileUrl = new URL("file:/demo/path/isle-module.config");
application.addDeployment(DeploymentBuilder.build(fileUrl, props, deploymentDescriptorConfiguration, ApplicationRuntimeModelTest.class.getClassLoader()));
// mock ApplicationContext
AbstractApplicationContext applicationContext = mock(AbstractApplicationContext.class);
when(applicationContext.getBean(SofaBootConstants.APPLICATION, ApplicationRuntimeModel.class)).thenReturn(application);
ConfigurableEnvironment environment = mock(ConfigurableEnvironment.class);
when(applicationContext.getEnvironment()).thenReturn(environment);
when(environment.getProperty(SofaBootConstants.APP_NAME_KEY)).thenReturn("testCase");
new SpringContextInstallStage(applicationContext, new SofaModuleProperties()).process();
}
use of com.alipay.sofa.isle.spring.config.SofaModuleProperties in project sofa-boot by sofastack.
the class DynamicSpringContextLoader method loadSpringContext.
@Override
public void loadSpringContext(DeploymentDescriptor deployment, ApplicationRuntimeModel application) throws Exception {
SofaModuleProperties sofaModuleProperties = rootApplicationContext.getBean(SofaModuleProperties.class);
BeanLoadCostBeanFactory beanFactory = new BeanLoadCostBeanFactory(sofaModuleProperties.getBeanLoadCost(), deployment.getModuleName());
beanFactory.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
GenericApplicationContext ctx = sofaModuleProperties.isPublishEventToParent() ? new GenericApplicationContext(beanFactory) : new SofaModuleApplicationContext(beanFactory);
ctx.setId(deployment.getModuleName());
String activeProfiles = sofaModuleProperties.getActiveProfiles();
if (StringUtils.hasText(activeProfiles)) {
String[] profiles = activeProfiles.split(SofaBootConstants.PROFILE_SEPARATOR);
ctx.getEnvironment().setActiveProfiles(profiles);
}
setUpParentSpringContext(ctx, deployment, application);
final ClassLoader moduleClassLoader = deployment.getClassLoader();
ctx.setClassLoader(moduleClassLoader);
CachedIntrospectionResults.acceptClassLoader(moduleClassLoader);
// set allowBeanDefinitionOverriding
ctx.setAllowBeanDefinitionOverriding(sofaModuleProperties.isAllowBeanDefinitionOverriding());
ctx.getBeanFactory().setBeanClassLoader(moduleClassLoader);
ctx.getBeanFactory().addPropertyEditorRegistrar(new PropertyEditorRegistrar() {
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Class.class, new ClassEditor(moduleClassLoader));
registry.registerCustomEditor(Class[].class, new ClassArrayEditor(moduleClassLoader));
}
});
deployment.setApplicationContext(ctx);
XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(ctx);
beanDefinitionReader.setValidating(true);
beanDefinitionReader.setNamespaceAware(true);
beanDefinitionReader.setBeanClassLoader(deployment.getApplicationContext().getClassLoader());
beanDefinitionReader.setResourceLoader(ctx);
loadBeanDefinitions(deployment, beanDefinitionReader);
addPostProcessors(beanFactory);
}
use of com.alipay.sofa.isle.spring.config.SofaModuleProperties in project sofa-boot by sofastack.
the class BeanHierarchyTest method refreshApplication.
private void refreshApplication(ApplicationRuntimeModel application) throws Exception {
DefaultListableBeanFactory rootBeanFactory = new DefaultListableBeanFactory();
ConfigurableApplicationContext rootApplicationContext = new GenericApplicationContext(rootBeanFactory);
rootApplicationContext.refresh();
SofaModuleProperties sofaModuleProperties = new SofaModuleProperties();
sofaModuleProperties.setBeanLoadCost(1);
rootBeanFactory.registerSingleton("sofaModuleProperties", sofaModuleProperties);
rootBeanFactory.registerSingleton(SofaBootConstants.PROCESSORS_OF_ROOT_APPLICATION_CONTEXT, new HashMap<>());
SpringContextLoader springContextLoader = new DynamicSpringContextLoader(rootApplicationContext);
for (DeploymentDescriptor dd : application.getResolvedDeployments()) {
if (dd.isSpringPowered()) {
springContextLoader.loadSpringContext(dd, application);
ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) dd.getApplicationContext();
dd.startDeploy();
ctx.refresh();
dd.deployFinish();
}
}
}
Aggregations