/** * Inject all the definitions provided by components. * @return a stream of definitions */ public Stream<Definition> createDefinitionsFromComponents() { return componentSpace.keySet() .stream() .map(key -> componentSpace.resolve(key, Component.class)) .filter(component -> DefinitionProvider.class.isAssignableFrom(component.getClass())) .flatMap(component -> ((DefinitionProvider) component).get(definitionSpace).stream()) .map(defitionSupplier -> defitionSupplier.get(definitionSpace)); }
@Override public List<? extends Definition> provideDefinitions(final DefinitionSpace definitionSpace) { // we need to unwrap the component to scan the real class and not the enhanced version final AopPlugin aopPlugin = Home.getApp().getConfig().getBootConfig().getAopPlugin(); return Home.getApp().getComponentSpace().keySet() .stream() .flatMap(id -> createDaemonDefinitions(Home.getApp().getComponentSpace().resolve(id, Component.class), aopPlugin).stream()) .collect(Collectors.toList()); }
@Override public List<? extends Definition> provideDefinitions(final DefinitionSpace definitionSpace) { // we need to unwrap the component to scan the real class and not the enhanced version final AopPlugin aopPlugin = Home.getApp().getConfig().getBootConfig().getAopPlugin(); return Home.getApp().getComponentSpace().keySet() .stream() .flatMap(id -> createEventSubscriptions(id, Home.getApp().getComponentSpace().resolve(id, Component.class), aopPlugin).stream()) .collect(Collectors.toList()); }
@Override public List<? extends Definition> provideDefinitions(final DefinitionSpace definitionSpace) { // here all // we need to unwrap the component to scan the real class and not the enhanced version final AopPlugin aopPlugin = Home.getApp().getConfig().getBootConfig().getAopPlugin(); return Home.getApp().getComponentSpace().keySet() .stream() .flatMap(id -> Stream.concat( //health HealthAnalyticsUtil.createHealthCheckDefinitions(id, Home.getApp().getComponentSpace().resolve(id, Component.class), aopPlugin).stream(), //metrics MetricAnalyticsUtil.createMetricDefinitions(id, Home.getApp().getComponentSpace().resolve(id, Component.class), aopPlugin).stream())) .collect(Collectors.toList()); }
@Test public void testComponentSpace() { final ComponentSpace componentSpace = Home.getApp().getComponentSpace(); assertEquals(componentSpace.keySet().size(), 2 + 3); //ParamManager and ResourceManager are automaticaly declared final DiscoveryB discoveryB = componentSpace.resolve(DiscoveryB.class); //--- assertTrue(DiscoveryA.class.getName().equals(discoveryB.getClass().getName())); //--- final DiscoveryD discoveryD = componentSpace.resolve(DiscoveryD.class); assertTrue(discoveryD.isTrue()); }