in library/src/main/java/org/apache/fineract/cn/anubis/security/ApplicationPermission.java [114:137]
private boolean matchesHelper(final String servletPath, final String method,
@Nonnull final BiPredicate<PermissionSegmentMatcher, String> segmentMatcher) {
final boolean opMatches = allowedOperation.containsHttpMethod(method);
final String[] requestPathSegments = servletPath.split("/");
if (servletPathSegmentMatchers.size() > requestPathSegments.length + 1)
return false;
if (servletPathSegmentMatchers.size() == requestPathSegments.length + 1)
if (!lastSegmentIsStarSegment(servletPathSegmentMatchers))
return false;
if (servletPathSegmentMatchers.size() < requestPathSegments.length)
if (!lastSegmentIsStarSegment(servletPathSegmentMatchers))
return false;
final Optional<Integer> indexOfFirstNonMappableSegment =
Stream.iterate(0, n -> n + 1)
.limit(Math.min(servletPathSegmentMatchers.size(), requestPathSegments.length))
.filter(i -> !segmentMatcher.test(servletPathSegmentMatchers.get(i), requestPathSegments[i]))
.findFirst();
return opMatches && !indexOfFirstNonMappableSegment.isPresent();
}