FeatureManagerWrapper.java

package pk.lucidxpo.ynami.spring.features;

import jakarta.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import org.togglz.core.Feature;
import org.togglz.core.manager.FeatureManager;
import org.togglz.core.repository.FeatureState;

@Component
@ConditionalOnProperty(name = "config.togglz.enabled", havingValue = "true")
public class FeatureManagerWrapper implements FeatureManagerWrappable {
    private final FeatureManager featureManager;

    @Autowired
    public FeatureManagerWrapper(final FeatureManager featureManager) {
        this.featureManager = featureManager;
    }

    @Override
    public boolean isActive(@NotNull final Feature feature) {
        return featureManager.getFeatureState(feature).isEnabled();
    }

    @Override
    public void activate(@NotNull final Feature feature) {
        featureManager.setFeatureState(new FeatureState(feature).enable());
    }

    @Override
    public void deactivate(@NotNull final Feature feature) {
        featureManager.setFeatureState(new FeatureState(feature).disable());
    }
}