, O extends AbstractOwnership, ?>> {
/**
- * Resolved all relevant ACLs during meta permission check. Relevant ACLs are determined on several constraints:
+ * Resolves all relevant ACLs during meta permission check and searches for the first ACL to match the
+ * {@code filterCondition}. If and only if at least one such ACL is found, {@code null} is returned. As this
+ * could happen before having discovered all applicable ACLs for the {@code type} /
+ * {@code objectIdentifiersAsStringOrNull} combination, the full set of ACLs isn't known in this case. However,
+ * if no ACL matched the {@code filterCondition}, all ACLs applicable to the {@code type} /
+ * {@code objectIdentifiersAsStringOrNull} combination have been scanned and can be returned for caching, to be
+ * passed in for future invocations for the same combination of type and object ID.
+ *
+ *
+ * Relevant ACLs are determined on several constraints:
*
* - The security type is required to be given. Due to the fact that the meta permission check expands the
* permission to distinct permissions regarding the type and action part, the effective check always takes place
@@ -54,8 +67,21 @@ public class PermissionChecker {
* check includes distinct identifiers, we can enumerate the objects based on the type (we always have this one)
* and identifiers, which means, a direct lookup for the ACLs by {@link QualifiedObjectIdentifier} is possible.
*
+ *
+ * @param filterCondition
+ * if any of the ACLs found matches this predicate, {@code true} is returned; {@code false} otherwise
+ *
+ * @param allAclsForTypeAndObjectIdsOrNull
+ * if not {@code null} these ACLs are assumed to be the full set of ACLs applicable to the combination
+ * of {@code type} and {@code objectIdentifiersAsStringOrNull}. In this case a potentially expensive
+ * computation to determine those can be avoided. If {@code null}, the ACLs need to be determined here.
+ *
+ * @return {@code null} if any of the ACLs found passed the {@code filterCondition}; the set of
+ * {@link AccessControlList}s relevant for the combination of {@code type} and
+ * {@code objectIdentifiersAsStringOrNull} otherwise
*/
- Iterable