public RequirementImpl(Resource resource, String path, Map<String, String> dirs, Map<String, Object> attrs, SimpleFilter sf) { super(resource, path, dirs, attrs); if (sf == null) { this.filter = getFilter(directives, attributes); } else { this.filter = sf; } // Find resolution import directives. this.optional = Constants.RESOLUTION_OPTIONAL.equals(directives.get(Constants.RESOLUTION_DIRECTIVE)); }
public RequirementImpl(Resource resource, String path, Map<String, String> dirs, Map<String, Object> attrs, SimpleFilter sf) { super(resource, path, dirs, attrs); if (sf == null) { this.filter = getFilter(directives, attributes); } else { this.filter = sf; } // Find resolution import directives. this.optional = Constants.RESOLUTION_OPTIONAL.equals(directives.get(Constants.RESOLUTION_DIRECTIVE)); }
public boolean matches(Capability cap) { return CapabilitySet.matches(cap, getFilter()); }
/** * Utility method to obtain a SimpleFilter from a given requirement. * If the requirement contains a {@link Constants#FILTER_DIRECTIVE} directive, * it will be used, else, the filter will be derived from the attributes. * * @param requirement A requirement * @return a valid filter, never {@code null}. */ public static SimpleFilter getFilter(Requirement requirement) { if (requirement instanceof RequirementImpl) { return ((RequirementImpl) requirement).getFilter(); } return getFilter(requirement.getDirectives(), requirement.getAttributes()); }
public boolean matches(Capability cap) { return CapabilitySet.matches(cap, getFilter()); }
/** * Utility method to obtain a SimpleFilter from a given requirement. * If the requirement contains a {@link Constants#FILTER_DIRECTIVE} directive, * it will be used, else, the filter will be derived from the attributes. * * @param requirement A requirement * @return a valid filter, never {@code null}. */ public static SimpleFilter getFilter(Requirement requirement) { if (requirement instanceof RequirementImpl) { return ((RequirementImpl) requirement).getFilter(); } return getFilter(requirement.getDirectives(), requirement.getAttributes()); }
@Override public Map<Requirement, Collection<Capability>> findProviders(Collection<? extends Requirement> requirements) { Map<Requirement, Collection<Capability>> result = new HashMap<>(); for (Requirement requirement : requirements) { CapabilitySet set = capSets.get(requirement.getNamespace()); if (set != null) { SimpleFilter sf; if (requirement instanceof RequirementImpl) { sf = ((RequirementImpl) requirement).getFilter(); } else { String filter = requirement.getDirectives().get(Constants.FILTER_DIRECTIVE); sf = (filter != null) ? SimpleFilter.parse(filter) : SimpleFilter.MATCH_ALL_FILTER; } result.put(requirement, set.match(sf, true)); } else { result.put(requirement, Collections.<Capability>emptyList()); } } return result; } }
public static boolean matches(Capability capability, Requirement requirement) { return Objects.equals(capability.getNamespace(), requirement.getNamespace()) && matches(capability, RequirementImpl.getFilter(requirement)); }
public static boolean matches(Capability capability, Requirement requirement) { return Objects.equals(capability.getNamespace(), requirement.getNamespace()) && matches(capability, RequirementImpl.getFilter(requirement)); }
@Override public Map<Requirement, Collection<Capability>> findProviders(Collection<? extends Requirement> requirements) { Map<Requirement, Collection<Capability>> result = new HashMap<>(); for (Requirement requirement : requirements) { CapabilitySet set = capSets.get(requirement.getNamespace()); if (set != null) { SimpleFilter sf; if (requirement instanceof RequirementImpl) { sf = ((RequirementImpl) requirement).getFilter(); } else { String filter = requirement.getDirectives().get(Constants.FILTER_DIRECTIVE); sf = (filter != null) ? SimpleFilter.parse(filter) : SimpleFilter.MATCH_ALL_FILTER; } result.put(requirement, set.match(sf, true)); } else { result.put(requirement, Collections.<Capability>emptyList()); } } return result; } }
ResourceImpl cloneResource(Resource resource) { ResourceImpl res = new ResourceImpl(); for (Capability cap : resource.getCapabilities(null)) { res.addCapability(new CapabilityImpl(res, cap.getNamespace(), new StringArrayMap<>(cap.getDirectives()), new StringArrayMap<>(cap.getAttributes()))); } for (Requirement req : resource.getRequirements(null)) { SimpleFilter sf; if (req instanceof RequirementImpl) { sf = ((RequirementImpl) req).getFilter(); } else if (req.getDirectives().containsKey(REQUIREMENT_FILTER_DIRECTIVE)) { sf = SimpleFilter.parse(req.getDirectives().get(REQUIREMENT_FILTER_DIRECTIVE)); } else { sf = SimpleFilter.convert(req.getAttributes()); } res.addRequirement(new RequirementImpl(res, req.getNamespace(), new StringArrayMap<>(req.getDirectives()), new StringArrayMap<>(req.getAttributes()), sf)); } return res; }