/** * Defines a <tt>ObservableToggleManager</tt> that is configured by the given <tt>ObservableTogglzConfig</tt> * * @param config The configuration */ public ObservableToggleManager(ObservableTogglzConfig config) { manager = new FeatureManagerBuilder().togglzConfig(config).build(); weakFeatureStateListeners = new CopyOnWriteArrayList<>(); config.getStateRepository().addListener((feature, active) -> { for (WeakReference<FeatureStateListener> ref : weakFeatureStateListeners) { FeatureStateListener listener = ref.get(); if (listener == null) { weakFeatureStateListeners.remove(ref); } else { listener.stateChanged(feature, active); } } }); }