package com.constellio.data.frameworks.extensions; public class ExtensionUtils { public static <T> Boolean getBooleanValue(VaultBehaviorsList<T> behaviors, Boolean defaultValue, BooleanCaller<T> caller) { Boolean value = defaultValue; boolean forced = false; for (T behavior : behaviors) { ExtensionBooleanResult behaviorValue = caller.call(behavior); if (value == null && behaviorValue == ExtensionBooleanResult.TRUE) { value = true; } else if (behaviorValue == ExtensionBooleanResult.FALSE) { value = false; } else if (behaviorValue == ExtensionBooleanResult.FORCE_TRUE) { forced = true; } } if (forced) { return true; } else { return value; } } public static interface BooleanCaller<T> { ExtensionBooleanResult call(T behavior); } }