private static Map<String, CeTaskProcessor> indexTaskProcessors(CeTaskProcessor[] taskProcessors) { Multimap<String, CeTaskProcessor> permissiveIndex = buildPermissiveCeTaskProcessorIndex(taskProcessors); checkUniqueHandlerPerCeTaskType(permissiveIndex); return ImmutableMap.copyOf(Maps.transformValues(permissiveIndex.asMap(), CeTaskProcessorCollectionToFirstElement.INSTANCE)); }
public CeTaskProcessorRepositoryImpl(CeTaskProcessor[] taskProcessors) { this.taskProcessorByCeTaskType = indexTaskProcessors(taskProcessors); }
@Test public void getForTask_returns_absent_if_repository_is_empty() { CeTaskProcessorRepositoryImpl underTest = new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] {}); assertThat(underTest.getForCeTask(createCeTask(SOME_CE_TASK_TYPE, SOME_COMPONENT_KEY))).isEmpty(); }
@Test public void constructor_accepts_empty_array_argument() { new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] {}); }
@Test public void getForTask_returns_TaskProcessor_based_on_CeTask_type_only() { CeTaskProcessor taskProcessor = createCeTaskProcessor(SOME_CE_TASK_TYPE); CeTaskProcessorRepositoryImpl underTest = new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] {taskProcessor}); assertThat(underTest.getForCeTask(createCeTask(SOME_CE_TASK_TYPE, SOME_COMPONENT_KEY)).get()).isSameAs(taskProcessor); assertThat(underTest.getForCeTask(createCeTask(SOME_CE_TASK_TYPE, SOME_COMPONENT_KEY + "2")).get()).isSameAs(taskProcessor); }
@Test public void constructor_throws_IAE_if_multiple_TaskProcessor_overlap_their_supported_CeTask_type() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage( "There can be only one CeTaskProcessor instance registered as the processor for CeTask type " + SOME_CE_TASK_TYPE + ". " + "More than one found. Please fix your configuration: " + SomeProcessor1.class.getName() + ", " + SomeProcessor2.class.getName()); new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] { new SomeProcessor2(SOME_CE_TASK_TYPE + "_2", SOME_CE_TASK_TYPE), new SomeProcessor1(SOME_CE_TASK_TYPE, SOME_CE_TASK_TYPE + "_3") }); }
private static Map<String, CeTaskProcessor> indexTaskProcessors(CeTaskProcessor[] taskProcessors) { Multimap<String, CeTaskProcessor> permissiveIndex = buildPermissiveCeTaskProcessorIndex(taskProcessors); checkUniqueHandlerPerCeTaskType(permissiveIndex); return ImmutableMap.copyOf(Maps.transformValues(permissiveIndex.asMap(), CeTaskProcessorCollectionToFirstElement.INSTANCE)); }
@Test public void getForTask_returns_TaskProcessor_even_if_it_is_not_specific() { CeTaskProcessor taskProcessor = createCeTaskProcessor(SOME_CE_TASK_TYPE + "_1", SOME_CE_TASK_TYPE, SOME_CE_TASK_TYPE + "_3"); CeTaskProcessorRepositoryImpl underTest = new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] {taskProcessor}); assertThat(underTest.getForCeTask(createCeTask(SOME_CE_TASK_TYPE, SOME_COMPONENT_KEY)).get()).isSameAs(taskProcessor); }
public CeTaskProcessorRepositoryImpl(CeTaskProcessor[] taskProcessors) { this.taskProcessorByCeTaskType = indexTaskProcessors(taskProcessors); }
@Test public void constructor_throws_IAE_if_two_TaskProcessor_handle_the_same_CeTask_type() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage( "There can be only one CeTaskProcessor instance registered as the processor for CeTask type " + SOME_CE_TASK_TYPE + ". " + "More than one found. Please fix your configuration: " + SomeProcessor1.class.getName() + ", " + SomeProcessor2.class.getName()); new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] { new SomeProcessor1(SOME_CE_TASK_TYPE), new SomeProcessor2(SOME_CE_TASK_TYPE) }); }
@Test public void getForTask_returns_absent_if_repository_does_not_contain_matching_TaskProcessor() { CeTaskProcessorRepositoryImpl underTest = new CeTaskProcessorRepositoryImpl(new CeTaskProcessor[] { createCeTaskProcessor(SOME_CE_TASK_TYPE + "_1"), createCeTaskProcessor(SOME_CE_TASK_TYPE + "_2", SOME_CE_TASK_TYPE + "_3"), }); assertThat(underTest.getForCeTask(createCeTask(SOME_CE_TASK_TYPE, SOME_COMPONENT_KEY))).isEmpty(); }