@Override public ProviderType getProviderType(final ProviderTypeKey providerTypeKey) { checkNotNull("providerTypeKey", providerTypeKey); return getAvailableProviderTypes().stream() .filter(providerType -> providerType.getKey().equals(providerTypeKey)) .findFirst().orElse(null); }
@Override public Collection<ProviderType> getEnabledProviderTypes() { return getProviderTypesStatus().entrySet().stream() .filter(entry -> ProviderTypeStatus.ENABLED.equals(entry.getValue())) .map(Map.Entry::getKey) .collect(Collectors.toList()); }
@Override public void enableProviderTypes(final Collection<ProviderType> providerTypes) { checkNotEmpty("providerTypes", providerTypes); providerTypes.forEach(providerType -> enableProviderType(providerType, true)); }
private void enableProviderType(final ProviderType providerType, final boolean enable) { checkNotNull("providerType", providerType); final Map<ProviderType, Boolean> result = readProviderTypeEnablements(); result.put(providerType, enable); saveProviderTypeEnablements(result); }
@Override public Map<ProviderType, ProviderTypeStatus> getProviderTypesStatus() { final Map<ProviderType, ProviderTypeStatus> result = new HashMap<>(); readProviderTypeEnablements().forEach((providerType, isEnabled) -> result.put(providerType, Boolean.TRUE.equals(isEnabled) ? ProviderTypeStatus.ENABLED : ProviderTypeStatus.DISABLED) ); getAvailableProviderTypes().forEach(providerType -> { if (!result.containsKey(providerType)) { result.put(providerType, ProviderTypeStatus.DISABLED); } }); return result; }
@Test public void testGetProviderTypesStatus() { Map<ProviderType, ProviderTypeStatus> initialStatusMap = service.getProviderTypesStatus(); assertEquals(PROVIDER_TYPES_COUNT, initialStatusMap.size()); //no provider is enabled initialStatusMap.values().forEach(status -> assertEquals(status, ProviderTypeStatus.DISABLED)); //enable some providers pickSomeProviders(); service.enableProviderTypes(pickedProviderTypes); Map<ProviderType, ProviderTypeStatus> currentStatusMap = service.getProviderTypesStatus(); //only the enabled providers can have ENABLED status assertEquals(PROVIDER_TYPES_COUNT, currentStatusMap.size()); pickedProviderTypes.forEach(enabledProvider -> assertEquals(ProviderTypeStatus.ENABLED, currentStatusMap.get(pickedProviderTypes.get(0)))); //all the remaining must be disabled. long expectedDisabled = PROVIDER_TYPES_COUNT - pickedProviderTypes.size(); long currentDisabled = currentStatusMap.values().stream() .filter(status -> status == ProviderTypeStatus.DISABLED).count(); assertEquals(expectedDisabled, currentDisabled); }
@Test public void testGetProviderTypeNotExisting() { //invent a non existing provider type key ProviderTypeKey providerTypeKey = new ProviderTypeKey("NonExisting", "NonExisting"); ProviderType providerType = service.getProviderType(providerTypeKey); assertNull(providerType); }
@Test public void testGetEnabledProviderTypes() { //pick some providers as the currently enabled ones by emulating their status in the preferences. pickSomeProviders(); pickedProviderTypes.forEach(providerType -> provisioningPreferences.getProviderTypeEnablements().put(providerType, Boolean.TRUE)); Collection<ProviderType> result = service.getEnabledProviderTypes(); assertEquals(pickedProviderTypes.size(), result.size()); pickedProviderTypes.forEach(providerType -> assertTrue(result.contains(providerType))); verify(provisioningPreferences, times(1)).load(); }
@Test public void testEnableProviderTypes() { //pick some providers an emulate that they are currently disabled in the preferences. pickSomeProviders(); pickedProviderTypes.forEach(providerType -> provisioningPreferences.getProviderTypeEnablements().put(providerType, Boolean.FALSE)); service.enableProviderTypes(pickedProviderTypes); //they must now be enabled. pickedProviderTypes.forEach(providerType -> assertTrue(provisioningPreferences.getProviderTypeEnablements().get(providerType))); verify(provisioningPreferences, times(pickedProviderTypes.size())).save(preferenceScope); }
@Test public void testDisableProviderType() { pickSomeProviders(); //pick some providers an emulate that they are currently enabled in the preferences. pickSomeProviders(); pickedProviderTypes.forEach(providerType -> provisioningPreferences.getProviderTypeEnablements().put(providerType, Boolean.TRUE)); //pick a provider type to disable and disable it ProviderType providerTypeToDisable = pickedProviderTypes.get(0); service.disableProviderType(providerTypeToDisable); //it must be now enabled. assertFalse(provisioningPreferences.getProviderTypeEnablements().get(providerTypeToDisable)); verify(provisioningPreferences, times(1)).save(preferenceScope); }
@Before public void setUp() { providerTypesSpi = mockProviderTypeListSPI(PROVIDER_TYPES_COUNT); when(globalPreferenceScope.resolve()).thenReturn(preferenceScope); provisioningPreferences = spy(new ProvisioningPreferences() { { setProviderTypeEnablements(new HashMap<>()); } @Override public void load() { } @Override public void save(PreferenceScope customScope) { } }); when(runtimeProvisioningService.getProviderTypes(anyInt(), anyInt(), anyString(), anyBoolean())).thenReturn(providerTypesSpi); service = new ProviderTypeServiceImpl(runtimeProvisioningService, provisioningPreferences, globalPreferenceScope); }
@Test public void testGetProviderTypesStatus() { Map<ProviderType, ProviderTypeStatus> initialStatusMap = service.getProviderTypesStatus(); assertEquals(PROVIDER_TYPES_COUNT, initialStatusMap.size()); //no provider is enabled initialStatusMap.values().forEach(status -> assertEquals(status, ProviderTypeStatus.DISABLED)); //enable some providers pickSomeProviders(); service.enableProviderTypes(pickedProviderTypes); Map<ProviderType, ProviderTypeStatus> currentStatusMap = service.getProviderTypesStatus(); //only the enabled providers can have ENABLED status assertEquals(PROVIDER_TYPES_COUNT, currentStatusMap.size()); pickedProviderTypes.forEach(enabledProvider -> assertEquals(ProviderTypeStatus.ENABLED, currentStatusMap.get(pickedProviderTypes.get(0)))); //all the remaining must be disabled. long expectedDisabled = PROVIDER_TYPES_COUNT - pickedProviderTypes.size(); long currentDisabled = currentStatusMap.values().stream() .filter(status -> status == ProviderTypeStatus.DISABLED).count(); assertEquals(expectedDisabled, currentDisabled); }
@Test public void testGetProviderTypeNotExisting() { //invent a non existing provider type key ProviderTypeKey providerTypeKey = new ProviderTypeKey("NonExisting", "NonExisting"); ProviderType providerType = service.getProviderType(providerTypeKey); assertNull(providerType); }
@Test public void testGetEnabledProviderTypes() { //pick some providers as the currently enabled ones by emulating their status in the preferences. pickSomeProviders(); pickedProviderTypes.forEach(providerType -> provisioningPreferences.getProviderTypeEnablements().put(providerType, Boolean.TRUE)); Collection<ProviderType> result = service.getEnabledProviderTypes(); assertEquals(pickedProviderTypes.size(), result.size()); pickedProviderTypes.forEach(providerType -> assertTrue(result.contains(providerType))); verify(provisioningPreferences, times(1)).load(); }
@Test public void testEnableProviderTypes() { //pick some providers an emulate that they are currently disabled in the preferences. pickSomeProviders(); pickedProviderTypes.forEach(providerType -> provisioningPreferences.getProviderTypeEnablements().put(providerType, Boolean.FALSE)); service.enableProviderTypes(pickedProviderTypes); //they must now be enabled. pickedProviderTypes.forEach(providerType -> assertTrue(provisioningPreferences.getProviderTypeEnablements().get(providerType))); verify(provisioningPreferences, times(pickedProviderTypes.size())).save(preferenceScope); }
@Test public void testDisableProviderType() { pickSomeProviders(); //pick some providers an emulate that they are currently enabled in the preferences. pickSomeProviders(); pickedProviderTypes.forEach(providerType -> provisioningPreferences.getProviderTypeEnablements().put(providerType, Boolean.TRUE)); //pick a provider type to disable and disable it ProviderType providerTypeToDisable = pickedProviderTypes.get(0); service.disableProviderType(providerTypeToDisable); //it must be now enabled. assertFalse(provisioningPreferences.getProviderTypeEnablements().get(providerTypeToDisable)); verify(provisioningPreferences, times(1)).save(preferenceScope); }
@Before public void setUp() { providerTypesSpi = mockProviderTypeListSPI(PROVIDER_TYPES_COUNT); when(scopeFactory.createScope(GuvnorPreferenceScopes.GLOBAL)).thenReturn(preferenceScope); provisioningPreferences = spy(new ProvisioningPreferences() { { setProviderTypeEnablements(new HashMap<>()); } @Override public void load() { } @Override public void save(PreferenceScope customScope) { } }); when(runtimeProvisioningService.getProviderTypes(anyInt(), anyInt(), anyString(), anyBoolean())).thenReturn(providerTypesSpi); service = new ProviderTypeServiceImpl(runtimeProvisioningService, provisioningPreferences, scopeFactory); }
private void pickSomeProviders() { //pick an arbitrary set of providers for the available ones. Collection<ProviderType> providerTypes = service.getAvailableProviderTypes(); Iterator<ProviderType> it = providerTypes.iterator(); pickedProviderTypes = new ArrayList<>(); pickedProviderTypes.add(it.next()); pickedProviderTypes.add(it.next()); } }
@Test public void testGetProviderTypeExisting() { //pick an arbitrary existing provider type org.guvnor.ala.runtime.providers.ProviderType providerTypeSpi = providerTypesSpi.get(2); ProviderTypeKey providerTypeKey = new ProviderTypeKey(providerTypeSpi.getProviderTypeName(), providerTypeSpi.getVersion()); ProviderType providerType = service.getProviderType(providerTypeKey); assertNotNull(providerType); assertEquals(providerTypeSpi.getProviderTypeName(), providerType.getKey().getId()); assertEquals(providerTypeSpi.getVersion(), providerType.getKey().getVersion()); }
@Override public void disableProviderType(final ProviderType providerType) { checkNotNull("providerType", providerType); enableProviderType(providerType, false); }