У меня есть приложение весенней загрузки, и у нас есть application.yml с набором флагов функций
featureFlag:
featureOne:true
featureTwo:true
featureThree:true
featureFour:false
Затем этот файл читается этим классом
@Configuration
@ConfigurationProperties(prefix="featureFlag")
public class FeatureFlag{
private Boolean featureOne;
private Boolean featureTwo;
private Boolean featureThree;
private Boolean featureFour;
/*The predicates based on the feature flags*/
private Predicate<FeatureFlag> isFeatureFlagOneEnabled = featureFlag.isFeatureOne();
private Predicate<FeatureFlag> isFeatureFlagTwoEnabled = featureFlag.isFeatureTwo();
private Predicate<FeatureFlag> isFeatureFlagThreeEnabled = featureFlag.isFeatureThree();
private Predicate<FeatureFlag> isFeatureFlagFourEnabled = featureFlag.isFeatureFour();
}
Я хочу передать фактический предикат и повторить каждый из них, но я хочу знать, могу ли я сделать обобщенную c функцию, которую я передаю список Предикатов с его значением, которое будет проверено, и если все они истинны, функция возвращает мне true, иначе false
Затем в этот класс добавьте такой код, потому что я хочу сгенерировать этот список по требованию, например, у меня есть клиент x, который покупает featureOne и featureTwo, в этом примере я создаю список вроде этого
Set<Predicate<FeatureFlag>> rulesForClientX = new HashSet<>();
rulesForClientX.add(isFeatureFlagOneEnabled);
rulesForClientX.add(isFeatureFlagTwoEnabled);
Затем я хочу создать спецификацию c logi c для этого клиента и передать ему список ранее созданных предикатов, но я думаю, что мне нужно что-то вроде этого
Function<List<Predicate<FeatureFlag>>, Boolean> iteratePredicates = (predicates) -> {
//test each predicate and return true if all of them are true otherwise return false
}