in integrations/rest-management/rest-management/src/main/java/org/apache/aries/jax/rs/rest/management/internal/BaseResource.java [89:124]
static Predicate<Bundle> fromNamespaceQuery(UriInfo info) {
MultivaluedMap<String,String> parameters = info.getQueryParameters(true);
if (parameters.isEmpty()) {
return b -> true;
}
Map<String, List<Filter>> filters = parameters.entrySet().stream().flatMap(
e -> e.getValue().stream().map(v -> new SimpleEntry<>(e.getKey(), v))
).map(
e -> new SimpleEntry<>(e.getKey(), create(e.getValue()))
).collect(
groupingBy(Entry::getKey, mapping(Entry::getValue, toList()))
);
if (filters.isEmpty()) {
return b -> true;
}
return b -> {
BundleWiring wiring = b.adapt(BundleWiring.class);
return filters.entrySet().stream().allMatch(
entry -> {
String namespace = entry.getKey();
List<BundleCapability> caps = wiring.getCapabilities(namespace);
return entry.getValue().stream().anyMatch(
f ->
caps.stream().anyMatch(
cap ->
f.matches(cap.getAttributes())
)
);
}
);
};
}