
com.guigarage.toggles.DefaultFeatureToggle Maven / Gradle / Ivy
The newest version!
package com.guigarage.toggles;
import org.togglz.core.Feature;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
/**
* Default feature toggle. The toggle is observable and can be generated by ObservableToggleManager
*
* @author Hendrik Ebbers
* @see ObservableToggleManager
*
*/
public class DefaultFeatureToggle implements ObservableFeatureToggle, FeatureStateListener {
private Feature feature;
private Function activeCheck;
private List listeners;
/**
* Default Constructor
*
* @param feature The Togglz feature that is wrapped by this toggle
* @param activeCheck a function to check the active state of the toggle
*/
protected DefaultFeatureToggle(Feature feature, Function activeCheck) {
this.feature = feature;
this.activeCheck = activeCheck;
listeners = new CopyOnWriteArrayList<>();
}
/* (non-Javadoc)
* @see com.guigarage.toggles.ObservableFeatureToggle#isActive()
*/
public boolean isActive() {
return activeCheck.apply(feature);
}
/* (non-Javadoc)
* @see com.guigarage.toggles.ObservableFeatureToggle#getName()
*/
public String getName() {
return feature.name();
}
/* (non-Javadoc)
* @see com.guigarage.toggles.FeatureObservable#addListener(com.guigarage.toggles.FeatureStateListener)
*/
@Override
public void addListener(FeatureStateListener listener) {
listeners.add(listener);
}
/* (non-Javadoc)
* @see com.guigarage.toggles.FeatureObservable#removeListener(com.guigarage.toggles.FeatureStateListener)
*/
@Override
public void removeListener(FeatureStateListener listener) {
listeners.remove(listener);
}
protected void fireStateChanged(boolean active) {
for(FeatureStateListener listener : listeners) {
listener.stateChanged(this.feature, active);
}
}
/* (non-Javadoc)
* @see com.guigarage.toggles.FeatureStateListener#stateChanged(org.togglz.core.Feature, boolean)
*/
@Override
public void stateChanged(Feature feature, boolean active) {
if(this.feature.equals(feature)) {
fireStateChanged(active);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy