use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class ComponentManagerShutdownTest method testSkipCommonComponentShutdown.
@Test
public void testSkipCommonComponentShutdown() {
SofaRuntimeProperties.setSkipCommonComponentShutdown(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(1, componentManager.size());
Assert.assertTrue(serviceComponentInfo.isActivated());
Assert.assertFalse(springComponentInfo.isActivated());
Assert.assertFalse(applicationContext.isActive());
SofaRuntimeProperties.setSkipCommonComponentShutdown(Thread.currentThread().getContextClassLoader(), false);
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class ComponentManagerShutdownTest method initComponentManager.
private ComponentManager initComponentManager() {
AnnotationConfigApplicationContext rootContext = new AnnotationConfigApplicationContext(ComponentManagerTestConfiguration.class);
SofaRuntimeContext sofaRuntimeContext = rootContext.getBean(SofaRuntimeContext.class);
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
ComponentName serviceComponentName = ComponentNameFactory.createComponentName(SERVICE_COMPONENT_TYPE, SampleService.class, "");
ComponentInfo serviceComponentInfo = componentManager.getComponentInfo(serviceComponentName);
componentManager.register(serviceComponentInfo);
GenericApplicationContext applicationContext = new GenericApplicationContext();
ComponentName springComponentName = ComponentNameFactory.createComponentName(SPRING_COMPONENT_TYPE, "testModule");
ComponentInfo springComponentInfo = new SpringContextComponent(springComponentName, new SpringContextImplementation(applicationContext), sofaRuntimeContext);
applicationContext.refresh();
componentManager.register(springComponentInfo);
return componentManager;
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class SofaBindingTest method testReferenceBinding.
@Test
public void testReferenceBinding() {
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
ReferenceComponent serializeTrueViaAnnotation = null;
ReferenceComponent defaultSerializeFalseViaAnnotation = null;
ReferenceComponent defaultElement = null;
ReferenceComponent element = null;
ReferenceComponent noneUniqueId = null;
Collection<ComponentInfo> componentInfos = componentManager.getComponentInfosByType(ReferenceComponent.REFERENCE_COMPONENT_TYPE);
for (ComponentInfo componentInfo : componentInfos) {
String rawName = componentInfo.getName().getRawName();
if (rawName.contains(ComponentNameUtil.getReferenceComponentName(SampleService.class, "serializeTrueViaAnnotation").getRawName())) {
serializeTrueViaAnnotation = (ReferenceComponent) componentInfo;
} else if (rawName.contains(ComponentNameUtil.getReferenceComponentName(SampleService.class, "defaultSerializeFalseViaAnnotation").getRawName())) {
defaultSerializeFalseViaAnnotation = (ReferenceComponent) componentInfo;
} else if (rawName.contains(ComponentNameUtil.getReferenceComponentName(SampleService.class, "default-element").getRawName())) {
defaultElement = (ReferenceComponent) componentInfo;
} else if (componentInfo.getName().getRawName().contains(ComponentNameUtil.getReferenceComponentName(SampleService.class, "element").getRawName())) {
element = (ReferenceComponent) componentInfo;
} else if (rawName.contains(":#") && rawName.contains(ComponentNameUtil.getReferenceComponentName(SampleService.class, "").getRawName())) {
noneUniqueId = (ReferenceComponent) componentInfo;
}
}
Assert.assertNotNull(serializeTrueViaAnnotation);
Assert.assertNotNull(defaultSerializeFalseViaAnnotation);
Assert.assertNotNull(defaultElement);
Assert.assertNotNull(element);
Assert.assertNotNull(noneUniqueId);
JvmBinding jvmBinding;
jvmBinding = (JvmBinding) serializeTrueViaAnnotation.getReference().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) defaultSerializeFalseViaAnnotation.getReference().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) defaultElement.getReference().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) element.getReference().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) noneUniqueId.getReference().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class SofaFrameworkInitializer method addSofaRuntimeManager.
private static void addSofaRuntimeManager(String appName, ConfigurableApplicationContext applicationContext) {
if (!SofaFrameworkHolder.containsSofaFramework()) {
SofaFrameworkHolder.setSofaFramework(new SofaFrameworkImpl());
}
SofaFrameworkImpl sofaFramework = (SofaFrameworkImpl) SofaFrameworkHolder.getSofaFramework();
AppConfiguration applicationConfiguration = createAppConfigurationImpl(applicationContext);
ClientFactoryInternal clientFactoryInternal = new ClientFactoryImpl();
SofaRuntimeManager sofaRuntimeManager = new StandardSofaRuntimeManager(appName, SofaFrameworkInitializer.class.getClassLoader(), applicationConfiguration, clientFactoryInternal);
ComponentManager componentManager = sofaRuntimeManager.getComponentManager();
// register service client & reference client
componentManager.registerComponentClient(ServiceClient.class, new ServiceClientImpl(sofaRuntimeManager.getSofaRuntimeContext()));
componentManager.registerComponentClient(ReferenceClient.class, new ReferenceClientImpl(sofaRuntimeManager.getSofaRuntimeContext()));
sofaFramework.registerSofaRuntimeManager(sofaRuntimeManager);
}
use of com.alipay.sofa.runtime.spi.component.ComponentManager in project sofa-boot by alipay.
the class SofaBindingTest method testServiceBinding.
@Test
public void testServiceBinding() {
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
ServiceComponent serializeFalseViaAnnotation = (ServiceComponent) componentManager.getComponentInfo(ComponentNameUtil.getServiceComponentName(SampleService.class, "serializeFalseViaAnnotation"));
ServiceComponent defaultSerializeTrueViaAnnotation = (ServiceComponent) componentManager.getComponentInfo(ComponentNameUtil.getServiceComponentName(SampleService.class, "defaultSerializeTrueViaAnnotation"));
ServiceComponent defaultElement = (ServiceComponent) componentManager.getComponentInfo(ComponentNameUtil.getServiceComponentName(SampleService.class, "default-element"));
ServiceComponent element = (ServiceComponent) componentManager.getComponentInfo(ComponentNameUtil.getServiceComponentName(SampleService.class, "element"));
ServiceComponent noneUniqueId = (ServiceComponent) componentManager.getComponentInfo(ComponentNameUtil.getServiceComponentName(SampleService.class, ""));
Assert.assertNotNull(serializeFalseViaAnnotation);
Assert.assertNotNull(defaultSerializeTrueViaAnnotation);
Assert.assertNotNull(defaultElement);
Assert.assertNotNull(element);
Assert.assertNotNull(noneUniqueId);
JvmBinding jvmBinding;
jvmBinding = (JvmBinding) serializeFalseViaAnnotation.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) defaultSerializeTrueViaAnnotation.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) defaultElement.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) element.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
jvmBinding = (JvmBinding) noneUniqueId.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
}
Aggregations