private static SimpleFilter createFilter(String... s) { Map<String, Object> attrs = new HashMap<>(); for (int i = 0; i < s.length - 1; i += 2) { attrs.put(s[i], s[i + 1]); } return SimpleFilter.convert(attrs); }
private static SimpleFilter getFilter(Map<String, String> directives, Map<String, Object> attributes) { String filter = directives.get(Constants.FILTER_DIRECTIVE); if (filter != null) { return SimpleFilter.parse(filter); } else { return SimpleFilter.convert(attributes); } } }
private static SimpleFilter getFilter(Map<String, String> directives, Map<String, Object> attributes) { String filter = directives.get(Constants.FILTER_DIRECTIVE); if (filter != null) { return SimpleFilter.parse(filter); } else { return SimpleFilter.convert(attributes); } } }
private boolean hasResource(String type, String name, Version version) { CapabilitySet set = capSets.get(IDENTITY_NAMESPACE); if (set != null) { Map<String, Object> attrs = new HashMap<>(); attrs.put(CAPABILITY_TYPE_ATTRIBUTE, type); attrs.put(IDENTITY_NAMESPACE, name); attrs.put(CAPABILITY_VERSION_ATTRIBUTE, version); SimpleFilter sf = SimpleFilter.convert(attrs); return !set.match(sf, true).isEmpty(); } else { return false; } }
private boolean hasResource(String type, String name, Version version) { CapabilitySet set = capSets.get(IDENTITY_NAMESPACE); if (set != null) { Map<String, Object> attrs = new HashMap<>(); attrs.put(CAPABILITY_TYPE_ATTRIBUTE, type); attrs.put(IDENTITY_NAMESPACE, name); attrs.put(CAPABILITY_VERSION_ATTRIBUTE, version); SimpleFilter sf = SimpleFilter.convert(attrs); return !set.match(sf, true).isEmpty(); } else { return false; } }
private static RequirementImpl parseRequirement(XMLStreamReader reader, ResourceImpl resource) throws XMLStreamException { String[] namespace = new String[1]; Map<String, String> directives = new HashMap<>(); Map<String, Object> attributes = new HashMap<>(); parseClause(reader, namespace, directives, attributes); sanityCheckEndElement(reader, reader.getEventType(), REQUIREMENT); String filterStr = directives.get(Constants.FILTER_DIRECTIVE); SimpleFilter sf = (filterStr != null) ? SimpleFilter.parse(filterStr) : SimpleFilter.convert(attributes); return new RequirementImpl(resource, namespace[0], directives, attributes, sf); }
private static RequirementImpl parseRequirement(XMLStreamReader reader, ResourceImpl resource) throws XMLStreamException { String[] namespace = new String[1]; Map<String, String> directives = new HashMap<>(); Map<String, Object> attributes = new HashMap<>(); parseClause(reader, namespace, directives, attributes); sanityCheckEndElement(reader, reader.getEventType(), REQUIREMENT); String filterStr = directives.get(Constants.FILTER_DIRECTIVE); SimpleFilter sf = (filterStr != null) ? SimpleFilter.parse(filterStr) : SimpleFilter.convert(attributes); return new RequirementImpl(resource, namespace[0], directives, attributes, sf); }
SimpleFilter sf = SimpleFilter.convert(newAttrs);
SimpleFilter sf = SimpleFilter.convert(newAttrs);
/** * Changes feature identifier (<code>name[/version]</code>) into a requirement specification. * The OSGi manifest header for a feature will be: <code>osgi.identity;osgi.identity=feature-name;type=karaf.feature[;version=feature-version];filter:=filter-from-attrs</code>. * * @param feature The feature name. * @return The feature requirement. */ public static String toFeatureRequirement(String feature) { String[] parts = feature.split("/"); Map<String, Object> attrs = new StringArrayMap<>(parts.length > 1 ? 3 : 2); attrs.put(IDENTITY_NAMESPACE, parts[0]); attrs.put(CAPABILITY_TYPE_ATTRIBUTE, TYPE_FEATURE); if (parts.length > 1) { attrs.put(CAPABILITY_VERSION_ATTRIBUTE, new VersionRange(parts[1])); } Map<String, String> dirs = Collections.singletonMap( Constants.FILTER_DIRECTIVE, SimpleFilter.convert(attrs).toString()); return new RequirementImpl(null, IDENTITY_NAMESPACE, dirs, attrs).toString(); }
private static List<Requirement> convertRequireCapabilities( List<ParsedHeaderClause> clauses, Resource resource) throws BundleException { // Now convert generic header clauses into requirements. List<Requirement> reqList = new ArrayList<>(); for (ParsedHeaderClause clause : clauses) { try { String filterStr = clause.dirs.get(Constants.FILTER_DIRECTIVE); SimpleFilter sf = (filterStr != null) ? SimpleFilter.parse(filterStr) : SimpleFilter.convert(clause.attrs); for (String path : clause.paths) { // Create requirement and add to requirement list. reqList.add(new RequirementImpl( resource, path, clause.dirs, clause.attrs, sf)); } } catch (Exception ex) { throw new BundleException("Error creating requirement: " + ex, ex); } } return reqList; }
private static List<Requirement> convertRequireCapabilities( List<ParsedHeaderClause> clauses, Resource resource) throws BundleException { // Now convert generic header clauses into requirements. List<Requirement> reqList = new ArrayList<>(); for (ParsedHeaderClause clause : clauses) { try { String filterStr = clause.dirs.get(Constants.FILTER_DIRECTIVE); SimpleFilter sf = (filterStr != null) ? SimpleFilter.parse(filterStr) : SimpleFilter.convert(clause.attrs); for (String path : clause.paths) { // Create requirement and add to requirement list. reqList.add(new RequirementImpl( resource, path, clause.dirs, clause.attrs, sf)); } } catch (Exception ex) { throw new BundleException("Error creating requirement: " + ex, ex); } } return reqList; }
SimpleFilter sf = SimpleFilter.convert(newAttrs);
SimpleFilter sf = SimpleFilter.convert(newAttrs);
SimpleFilter sf = SimpleFilter.convert(newAttrs);
SimpleFilter sf = SimpleFilter.convert(newAttrs);
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; }