public List<Capability> findProvider(Requirement requirement) { String namespace = requirement.getNamespace(); return resources.stream() .flatMap(resource -> resource.getCapabilities(namespace) .stream()) .filter(capability -> { if (!requirement.getNamespace() .equals(capability.getNamespace())) return false; if (!ResourceUtils.isEffective(requirement, capability)) return false; String filter = requirement.getDirectives() .get(Namespace.REQUIREMENT_FILTER_DIRECTIVE); if (filter == null) return true; try { Filter f = cache.computeIfAbsent(filter, (k) -> new Filter(k)); return f.matchMap(capability.getAttributes()); } catch (Exception e) { return false; } }) .collect(toCapabilities()); }
public List<Capability> findProvider(Requirement requirement) { String namespace = requirement.getNamespace(); return resources.stream() .flatMap(resource -> resource.getCapabilities(namespace) .stream()) .filter(capability -> { if (!requirement.getNamespace() .equals(capability.getNamespace())) return false; if (!ResourceUtils.isEffective(requirement, capability)) return false; String filter = requirement.getDirectives() .get(Namespace.REQUIREMENT_FILTER_DIRECTIVE); if (filter == null) return true; try { Filter f = cache.computeIfAbsent(filter, (k) -> new Filter(k)); return f.matchMap(capability.getAttributes()); } catch (Exception e) { return false; } }) .collect(toCapabilities()); }
public static boolean matches(Requirement requirement, Capability capability) { if (!requirement.getNamespace() .equals(capability.getNamespace())) return false; if (!isEffective(requirement, capability)) return false; String filter = requirement.getDirectives() .get(Namespace.REQUIREMENT_FILTER_DIRECTIVE); if (filter == null) return true; try { Filter f = new Filter(filter); return f.matchMap(capability.getAttributes()); } catch (Exception e) { return false; } }
public static boolean matches(Requirement requirement, Capability capability) { if (!requirement.getNamespace() .equals(capability.getNamespace())) return false; if (!isEffective(requirement, capability)) return false; String filter = requirement.getDirectives() .get(Namespace.REQUIREMENT_FILTER_DIRECTIVE); if (filter == null) return true; try { Filter f = new Filter(filter); return f.matchMap(capability.getAttributes()); } catch (Exception e) { return false; } }