use of com.alipay.sofa.ark.container.registry.ContainerServiceProvider in project sofa-ark by alipay.
the class RegisterServiceStage method registryDefaultService.
/**
* Registry some default service
*/
private void registryDefaultService() {
/**
* some basic container service is not allowed to be override, they are only published
* to be referenced by plugin and biz, even depended by other container service.
*/
registryService.publishService(BizManagerService.class, ArkServiceContainerHolder.getContainer().getService(BizManagerService.class), new ContainerServiceProvider(PriorityOrdered.HIGHEST_PRECEDENCE));
registryService.publishService(BizFactoryService.class, ArkServiceContainerHolder.getContainer().getService(BizFactoryService.class), new ContainerServiceProvider(PriorityOrdered.HIGHEST_PRECEDENCE));
registryService.publishService(PluginManagerService.class, ArkServiceContainerHolder.getContainer().getService(PluginManagerService.class), new ContainerServiceProvider(PriorityOrdered.HIGHEST_PRECEDENCE));
registryService.publishService(PluginFactoryService.class, ArkServiceContainerHolder.getContainer().getService(PluginFactoryService.class), new ContainerServiceProvider(PriorityOrdered.HIGHEST_PRECEDENCE));
registryService.publishService(EventAdminService.class, ArkServiceContainerHolder.getContainer().getService(EventAdminService.class), new ContainerServiceProvider(PriorityOrdered.HIGHEST_PRECEDENCE));
registryService.publishService(RegistryService.class, ArkServiceContainerHolder.getContainer().getService(RegistryService.class), new ContainerServiceProvider(PriorityOrdered.HIGHEST_PRECEDENCE));
/**
* some container service which may depends on other basic container service.
*/
registryService.publishService(BizDeployer.class, new DefaultBizDeployer(), new ContainerServiceProvider());
registryService.publishService(CommandProvider.class, new PluginCommandProvider(), PLUGIN_COMMAND_UNIQUE_ID, new ContainerServiceProvider());
registryService.publishService(CommandProvider.class, new BizCommandProvider(), BIZ_COMMAND_UNIQUE_ID, new ContainerServiceProvider());
}
use of com.alipay.sofa.ark.container.registry.ContainerServiceProvider in project sofa-ark by alipay.
the class InjectionServiceTest method test.
@Test
public void test() {
RegistryService registryService = ArkServiceContainerHolder.getContainer().getService(RegistryService.class);
PluginMockService pluginMockService = new PluginMockService();
registryService.publishService(PluginMockService.class, pluginMockService, new ContainerServiceProvider());
Assert.assertNotNull(pluginMockService.getBizFactoryService());
Assert.assertNotNull(pluginMockService.getBizManagerService());
Assert.assertNull(pluginMockService.getClassLoaderService());
}
use of com.alipay.sofa.ark.container.registry.ContainerServiceProvider in project sofa-ark by alipay.
the class CommandHandlerTest method test.
@Test
public void test() {
ArkCommandHandler arkCommandHandler = new ArkCommandHandler();
RegistryService registryService = ArkServiceContainerHolder.getContainer().getService(RegistryService.class);
registryService.publishService(CommandProvider.class, new MockCommandProvider(), new ContainerServiceProvider());
Assert.assertTrue(arkCommandHandler.handleCommand("any").contains("mock help"));
Assert.assertTrue("mock command provider".equals(arkCommandHandler.handleCommand("mock")));
}
use of com.alipay.sofa.ark.container.registry.ContainerServiceProvider in project sofa-ark by alipay.
the class ServiceRegistrationTest method testFilter.
@Test
@SuppressWarnings("unchecked")
public void testFilter() {
final PluginModel pluginA = new PluginModel();
pluginA.setPluginName("plugin A").setPriority("10");
PluginModel pluginB = new PluginModel();
pluginB.setPluginName("plugin B").setPriority("1");
pluginManagerService.registerPlugin(pluginA);
pluginManagerService.registerPlugin(pluginB);
registryService.publishService(ITest.class, new TestObjectA(), new PluginServiceProvider(pluginA));
registryService.publishService(ITest.class, new TestObjectB(), new PluginServiceProvider(pluginB));
registryService.publishService(ITest.class, new TestObjectC(), new ContainerServiceProvider());
List<ServiceReference> references = registryService.referenceServices(new DefaultServiceFilter().setServiceInterface(ITest.class).setProviderType(ServiceProviderType.ARK_PLUGIN));
Assert.assertTrue(2 == references.size());
PluginServiceProvider provider = (PluginServiceProvider) references.get(0).getServiceMetadata().getServiceProvider();
Assert.assertEquals(pluginB.getPluginName(), provider.getPluginName());
references = registryService.referenceServices(new ServiceFilter() {
@Override
public boolean match(ServiceReference serviceReference) {
ServiceProvider serviceProvider = serviceReference.getServiceMetadata().getServiceProvider();
if (serviceProvider instanceof PluginServiceProvider) {
if (((PluginServiceProvider) serviceProvider).getPluginName().equals(pluginA.getPluginName())) {
return true;
}
}
return false;
}
});
Assert.assertTrue(1 == references.size());
provider = (PluginServiceProvider) references.get(0).getServiceMetadata().getServiceProvider();
Assert.assertEquals(pluginA.getPluginName(), provider.getPluginName());
references = registryService.referenceServices(new DefaultServiceFilter().setServiceInterface(ITest.class));
Assert.assertTrue(3 == references.size());
references = registryService.referenceServices(new DefaultServiceFilter().setProviderType(ServiceProviderType.ARK_CONTAINER).setServiceInterface(ITest.class));
Assert.assertTrue(1 == references.size());
Assert.assertEquals("TestObject C", ((TestObjectC) references.get(0).getService()).test());
}
use of com.alipay.sofa.ark.container.registry.ContainerServiceProvider in project sofa-ark by alipay.
the class ServiceRegistrationTest method testPublishService.
@Test
@SuppressWarnings("unchecked")
public void testPublishService() {
ServiceReference<ITest> iTestServiceReference = registryService.publishService(ITest.class, new TestObjectA(), new ContainerServiceProvider());
Assert.assertNotNull(iTestServiceReference);
Assert.assertEquals(TestObjectA.OUTPUT, iTestServiceReference.getService().test());
int c = registryService.unPublishServices(new DefaultServiceFilter().setServiceInterface(ITest.class).setProviderType(ServiceProviderType.ARK_CONTAINER));
Assert.assertTrue(c == 1);
iTestServiceReference = registryService.referenceService(ITest.class);
Assert.assertNull(iTestServiceReference);
}
Aggregations