@Override public void store(final ExperimentalFeatureImpl feature) { List<ExperimentalFeatureImpl> registeredFeatures = (List<ExperimentalFeatureImpl>) getFeatures(); Optional<ExperimentalFeatureImpl> optional = registeredFeatures.stream() .filter(registeredFeature -> registeredFeature.getFeatureId().equals(feature.getFeatureId())) .findAny(); if (optional.isPresent()) { ExperimentalFeatureImpl registeredFeature = optional.get(); registeredFeature.setEnabled(feature.isEnabled()); doStoreFeatures(registeredFeatures, () -> this.maybeNotifyFeatureUpdate(feature)); } }
@Override public void store(final ExperimentalFeatureImpl feature) { List<ExperimentalFeatureImpl> registeredFeatures = (List<ExperimentalFeatureImpl>) getFeatures(); Optional<ExperimentalFeatureImpl> optional = registeredFeatures.stream() .filter(registeredFeature -> registeredFeature.getFeatureId().equals(feature.getFeatureId())) .findAny(); if (optional.isPresent()) { ExperimentalFeatureImpl registeredFeature = optional.get(); registeredFeature.setEnabled(feature.isEnabled()); doStoreFeatures(registeredFeatures, () -> this.maybeNotifyFeatureUpdate(feature)); } }
@Override public void updateExperimentalFeature(String featureId, boolean enabled) { if (isExperimentalEnabled()) { Optional<ExperimentalFeature> optional = session.getFeaturesRegistry().getFeature(featureId); if (optional.isPresent()) { ExperimentalFeatureImpl feature = (ExperimentalFeatureImpl) optional.get(); if (feature.isEnabled() != enabled) { feature.setEnabled(enabled); event.fire(new NonPortableExperimentalFeatureModifiedEvent(feature)); } } } }
@Override public void updateExperimentalFeature(String featureId, boolean enabled) { if (isExperimentalEnabled()) { Optional<ExperimentalFeature> optional = session.getFeaturesRegistry().getFeature(featureId); if (optional.isPresent()) { ExperimentalFeatureImpl feature = (ExperimentalFeatureImpl) optional.get(); if (feature.isEnabled() != enabled) { feature.setEnabled(enabled); event.fire(new NonPortableExperimentalFeatureModifiedEvent(feature)); } } } }
public void doStoreFeatures(Collection<ExperimentalFeatureImpl> features, Runnable callback) { final String path = getStoragePath(); final Path fsPath = fileSystem.getPath(path); Properties properties = new Properties(); features.stream() .filter(experimentalFeature -> defRegistry.getFeatureById(experimentalFeature.getFeatureId()) != null) .forEach(feature -> properties.put(feature.getFeatureId(), String.valueOf(feature.isEnabled()))); try (OutputStream out = ioService.newOutputStream(fsPath)) { ioService.startBatch(fileSystem); properties.store(out, COMMENTS); if (callback != null) { callback.run(); } } catch (Exception ex) { log().warn("Impossible to write experimental features registry on '{}': {}", path, ex); } finally { ioService.endBatch(); } }
public void doStoreFeatures(Collection<ExperimentalFeatureImpl> features, Runnable callback) { final String path = getStoragePath(); final Path fsPath = fileSystem.getPath(path); Properties properties = new Properties(); features.stream() .filter(experimentalFeature -> defRegistry.getFeatureById(experimentalFeature.getFeatureId()) != null) .forEach(feature -> properties.put(feature.getFeatureId(), String.valueOf(feature.isEnabled()))); try (OutputStream out = ioService.newOutputStream(fsPath)) { ioService.startBatch(fileSystem); properties.store(out, COMMENTS); if (callback != null) { callback.run(); } } catch (Exception ex) { log().warn("Impossible to write experimental features registry on '{}': {}", path, ex); } finally { ioService.endBatch(); } }
@Test public void testWrongNotifyFeatureUpdate() { initService(true); ExperimentalFeatureImpl feature = new ExperimentalFeatureImpl(FEATURE_1, true); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); verify(event, never()).fire(any()); feature = new ExperimentalFeatureImpl(WRONG_FEATURE_ID, true); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); verify(event, never()).fire(any()); }
@Test public void testNotifyFeatureUpdateWhenExperimentalDisabled() { initService(false); ExperimentalFeatureImpl feature = new ExperimentalFeatureImpl(FEATURE_1, false); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); verify(event, never()).fire(any()); }
@Test public void testWrongNotifyFeatureUpdate() { initService(true); ExperimentalFeatureImpl feature = new ExperimentalFeatureImpl(FEATURE_1, true); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); verify(event, never()).fire(any()); feature = new ExperimentalFeatureImpl(WRONG_FEATURE_ID, true); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); verify(event, never()).fire(any()); }
@Test public void testNotifyFeatureUpdateWhenExperimentalDisabled() { initService(false); ExperimentalFeatureImpl feature = new ExperimentalFeatureImpl(FEATURE_1, false); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); verify(event, never()).fire(any()); }
@Test public void testNotifyFeatureUpdate() { initService(true); ExperimentalFeatureImpl feature = new ExperimentalFeatureImpl(FEATURE_1, false); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); checkNotifyFeatureUpdate(feature); }
@Test public void testNotifyFeatureUpdate() { initService(true); ExperimentalFeatureImpl feature = new ExperimentalFeatureImpl(FEATURE_1, false); service.updateExperimentalFeature(feature.getFeatureId(), feature.isEnabled()); checkNotifyFeatureUpdate(feature); }