Search in sources :

Example 6 with SimpleFilter

use of org.apache.karaf.features.internal.resolver.SimpleFilter in project karaf by apache.

the class StaxParser method parseRequirement.

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);
}
Also used : RequirementImpl(org.apache.karaf.features.internal.resolver.RequirementImpl) HashMap(java.util.HashMap) SimpleFilter(org.apache.karaf.features.internal.resolver.SimpleFilter)

Example 7 with SimpleFilter

use of org.apache.karaf.features.internal.resolver.SimpleFilter in project karaf by apache.

the class BaseRepository method findProviders.

@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) : new SimpleFilter(null, null, SimpleFilter.MATCH_ALL);
            }
            result.put(requirement, set.match(sf, true));
        } else {
            result.put(requirement, Collections.emptyList());
        }
    }
    return result;
}
Also used : Requirement(org.osgi.resource.Requirement) RequirementImpl(org.apache.karaf.features.internal.resolver.RequirementImpl) HashMap(java.util.HashMap) SimpleFilter(org.apache.karaf.features.internal.resolver.SimpleFilter) Collection(java.util.Collection) CapabilitySet(org.apache.karaf.features.internal.resolver.CapabilitySet)

Example 8 with SimpleFilter

use of org.apache.karaf.features.internal.resolver.SimpleFilter in project karaf by apache.

the class SubsystemResolver method toJson.

private Object toJson(Repository repository) {
    Requirement req = new RequirementImpl(null, IDENTITY_NAMESPACE, Collections.emptyMap(), Collections.emptyMap(), new SimpleFilter(null, null, SimpleFilter.MATCH_ALL));
    Collection<Capability> identities = repository.findProviders(Collections.singleton(req)).get(req);
    List<Object> resources = new ArrayList<>();
    for (Capability identity : identities) {
        String id = BaseClause.toString(null, identity.getNamespace(), identity.getAttributes(), identity.getDirectives());
        resources.add(toJson(identity.getResource()));
    }
    return resources;
}
Also used : Requirement(org.osgi.resource.Requirement) RequirementImpl(org.apache.karaf.features.internal.resolver.RequirementImpl) Capability(org.osgi.resource.Capability) SimpleFilter(org.apache.karaf.features.internal.resolver.SimpleFilter)

Example 9 with SimpleFilter

use of org.apache.karaf.features.internal.resolver.SimpleFilter in project karaf by apache.

the class SubsystemResolver method getFeatures.

public Map<Resource, String> getFeatures() {
    if (features == null) {
        SimpleFilter sf = createFilter(IDENTITY_NAMESPACE, "*", CAPABILITY_TYPE_ATTRIBUTE, TYPE_FEATURE);
        features = getResourceMapping(sf);
    }
    return features;
}
Also used : SimpleFilter(org.apache.karaf.features.internal.resolver.SimpleFilter)

Example 10 with SimpleFilter

use of org.apache.karaf.features.internal.resolver.SimpleFilter in project karaf by apache.

the class Subsystem method cloneResource.

ResourceImpl cloneResource(Resource resource) {
    ResourceImpl res = new ResourceImpl();
    for (Capability cap : resource.getCapabilities(null)) {
        res.addCapability(new CapabilityImpl(res, cap.getNamespace(), new HashMap<>(cap.getDirectives()), new HashMap<>(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 HashMap<>(req.getDirectives()), new HashMap<>(req.getAttributes()), sf));
    }
    return res;
}
Also used : ResourceUtils.addIdentityRequirement(org.apache.karaf.features.internal.resolver.ResourceUtils.addIdentityRequirement) ResourceUtils.toFeatureRequirement(org.apache.karaf.features.internal.resolver.ResourceUtils.toFeatureRequirement) Requirement(org.osgi.resource.Requirement) ResourceImpl(org.apache.karaf.features.internal.resolver.ResourceImpl) CapabilityImpl(org.apache.karaf.features.internal.resolver.CapabilityImpl) RequirementImpl(org.apache.karaf.features.internal.resolver.RequirementImpl) Capability(org.osgi.resource.Capability) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) SimpleFilter(org.apache.karaf.features.internal.resolver.SimpleFilter)

Aggregations

SimpleFilter (org.apache.karaf.features.internal.resolver.SimpleFilter)10 Requirement (org.osgi.resource.Requirement)5 HashMap (java.util.HashMap)4 RequirementImpl (org.apache.karaf.features.internal.resolver.RequirementImpl)4 Capability (org.osgi.resource.Capability)4 CapabilitySet (org.apache.karaf.features.internal.resolver.CapabilitySet)2 Resource (org.osgi.resource.Resource)2 Wire (org.osgi.resource.Wire)2 Collection (java.util.Collection)1 LinkedHashSet (java.util.LinkedHashSet)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 DictionaryAsMap (org.apache.felix.utils.collections.DictionaryAsMap)1 CapabilityImpl (org.apache.karaf.features.internal.resolver.CapabilityImpl)1 ResourceImpl (org.apache.karaf.features.internal.resolver.ResourceImpl)1 ResourceUtils.addIdentityRequirement (org.apache.karaf.features.internal.resolver.ResourceUtils.addIdentityRequirement)1 ResourceUtils.toFeatureRequirement (org.apache.karaf.features.internal.resolver.ResourceUtils.toFeatureRequirement)1