static Predicate fromNamespaceQuery()

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())
                            )
                    );
                }
            );
        };
    }