use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class ComponentManagerShutdownTest method testSkipAllComponentShutdown.
@Test
public void testSkipAllComponentShutdown() {
SofaRuntimeProperties.setSkipAllComponentShutdown(Thread.currentThread().getContextClassLoader(), true);
ComponentManager componentManager = initComponentManager();
ComponentInfo serviceComponentInfo = componentManager.getComponentInfosByType(SERVICE_COMPONENT_TYPE).stream().findFirst().get();
ComponentInfo springComponentInfo = componentManager.getComponentInfosByType(SPRING_COMPONENT_TYPE).stream().findFirst().get();
GenericApplicationContext applicationContext = (GenericApplicationContext) springComponentInfo.getImplementation().getTarget();
Assert.assertEquals(2, componentManager.size());
Assert.assertTrue(serviceComponentInfo.isActivated());
Assert.assertTrue(springComponentInfo.isActivated());
Assert.assertTrue(applicationContext.isActive());
componentManager.shutdown();
Assert.assertEquals(2, componentManager.size());
Assert.assertTrue(serviceComponentInfo.isActivated());
Assert.assertTrue(springComponentInfo.isActivated());
Assert.assertTrue(applicationContext.isActive());
SofaRuntimeProperties.setSkipAllComponentShutdown(Thread.currentThread().getContextClassLoader(), false);
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class ComponentManagerTest method testRegisterServiceDuplicated.
@Test
public void testRegisterServiceDuplicated() {
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
ComponentName componentName = ComponentNameFactory.createComponentName(SERVICE_COMPONENT_TYPE, SampleService.class, "");
ComponentInfo componentInfo = componentManager.getComponentInfo(componentName);
GenericApplicationContext applicationContext = new GenericApplicationContext();
applicationContext.setId("testModuleName");
componentInfo.setApplicationContext(applicationContext);
componentManager.register(componentInfo);
Assert.assertEquals("testModuleName", componentInfo.getApplicationContext().getId());
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class IsleSpringComponentTest method test.
@Test
public void test() {
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
ComponentName componentName1 = ComponentNameFactory.createComponentName(SpringContextComponent.SPRING_COMPONENT_TYPE, "com.alipay.sofa.isle.module1");
ComponentName componentName2 = ComponentNameFactory.createComponentName(SpringContextComponent.SPRING_COMPONENT_TYPE, "com.alipay.sofa.isle.module2");
Assert.assertNotNull(componentManager.getComponentInfo(componentName1));
Assert.assertNotNull(componentManager.getComponentInfo(componentName2));
Assert.assertEquals("com.alipay.sofa.isle.module1", componentManager.getComponentInfo(componentName1).getApplicationContext().getId());
Assert.assertEquals("com.alipay.sofa.isle.module2", componentManager.getComponentInfo(componentName2).getApplicationContext().getId());
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by sofastack.
the class SofaBootComponentsEndPoint method components.
@ReadOperation
public ApplicationComponents components() {
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
Map<String, Collection<ComponentDisplayInfo>> componentsInfoMap = new HashMap<>();
Collection<ComponentType> componentTypes = componentManager.getComponentTypes();
componentTypes.forEach(componentType -> {
Collection<ComponentInfo> componentInfos = componentManager.getComponentInfosByType(componentType);
Collection<ComponentDisplayInfo> componentDisplayInfos = componentInfos.stream().map(componentInfo -> new ComponentDisplayInfo(componentInfo.getName().getName(), componentInfo.getApplicationContext().getId())).collect(Collectors.toList());
componentsInfoMap.put(componentType.getName(), componentDisplayInfos);
});
return new ApplicationComponents(componentsInfoMap);
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by sofastack.
the class ExtensionPointComponent method deactivate.
@Override
public void deactivate() throws ServiceRuntimeException {
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
for (ComponentInfo componentInfo : componentManager.getComponents()) {
if (componentInfo.getType().equals(ExtensionComponent.EXTENSION_COMPONENT_TYPE)) {
ExtensionComponent extensionComponent = (ExtensionComponent) componentInfo;
if (extensionComponent.getExtension().getTargetComponentName().equals(componentName)) {
componentManager.unregister(componentInfo);
}
}
}
if (componentStatus != ComponentStatus.ACTIVATED) {
return;
}
// skip deactivate SpringImplementationImpl because it's already deactivated
if (this.implementation != null && !(implementation instanceof SpringImplementationImpl)) {
Object target = this.implementation.getTarget();
if (target instanceof ComponentLifeCycle) {
((ComponentLifeCycle) target).deactivate();
}
}
componentStatus = ComponentStatus.RESOLVED;
}
Aggregations