@Override public Collection<Requirement> getUnresolvedRequirements() { return resource.getRequirements(HostNamespace.HOST_NAMESPACE); }
@Override public Collection<Requirement> getUnresolvedRequirements() { return resource.getRequirements(HostNamespace.HOST_NAMESPACE); }
@Override public Collection<Requirement> getUnresolvedRequirements() { return resource.getRequirements(HostNamespace.HOST_NAMESPACE); }
@Override public Collection<Requirement> getUnresolvedRequirements() { return resource.getRequirements(HostNamespace.HOST_NAMESPACE); }
public List<Requirement> getRequirements(String namespace) { return m_resource.getRequirements(namespace); } }
static Requirement getSubsystemRequirement(Resource resource) { for (Requirement requirement : resource.getRequirements(null)) { if (IDENTITY_NAMESPACE.equals(requirement.getNamespace()) && TYPE_SUBSYSTEM.equals(requirement.getAttributes().get(CAPABILITY_TYPE_ATTRIBUTE))) { return requirement; } } return null; }
/** * Returns name of owning {@link org.apache.karaf.features.internal.region.Subsystem} for given resource * @param resource * @return */ public static String getOwnerName(Resource resource) { List<Requirement> reqs = resource.getRequirements(null); for (Requirement req : reqs) { if (req.getNamespace().equals(IdentityNamespace.IDENTITY_NAMESPACE) && TYPE_SUBSYSTEM.equals(req.getAttributes().get(CAPABILITY_TYPE_ATTRIBUTE))) { return req.getAttributes().get(IdentityNamespace.IDENTITY_NAMESPACE).toString(); } } return null; }
@SuppressWarnings("unchecked") private static <T extends Resource> Set<T> collectDependencies(T resource, CapabilitySet capSet) { Set<T> result = new LinkedHashSet<>(); for (Requirement requirement : resource.getRequirements(null)) { String filter = requirement.getDirectives().get(Constants.FILTER_DIRECTIVE); SimpleFilter sf = (filter != null) ? SimpleFilter.parse(filter) : SimpleFilter.MATCH_ALL_FILTER; for (Capability cap : capSet.match(sf, true)) { result.add((T) cap.getResource()); } } return result; }
public Map<Capability, Capability> from(Resource bundle) throws Exception { Map<Capability, Capability> mapping = new HashMap<>(); addRequirements(bundle.getRequirements(null)); for (Capability c : bundle.getCapabilities(null)) { CapReqBuilder clone = CapReqBuilder.clone(c); Capability addedCapability = addCapability0(clone); mapping.put(c, addedCapability); } return mapping; }
public Map<Capability, Capability> from(Resource bundle) throws Exception { Map<Capability, Capability> mapping = new HashMap<>(); addRequirements(bundle.getRequirements(null)); for (Capability c : bundle.getCapabilities(null)) { CapReqBuilder clone = CapReqBuilder.clone(c); Capability addedCapability = addCapability0(clone); mapping.put(c, addedCapability); } return mapping; }
private void addWiredBundle(Map<Resource, List<Wire>> wirings, Resource resource, List<Resource> result) { List<Requirement> reqs = resource.getRequirements(BUNDLE_NAMESPACE); for (Requirement req : reqs) { List<Wire> wrs = wirings.get(resource); for (Wire w : wrs) { if (w.getRequirement() .equals(req)) { Resource res = w.getProvider(); if (res != null) { if (!result.contains(res)) { result.add(res); addWiredBundle(wirings, res, result); } } } } } }
private void addWiredBundle(Map<Resource, List<Wire>> wirings, Resource resource, List<Resource> result) { List<Requirement> reqs = resource.getRequirements(BUNDLE_NAMESPACE); for (Requirement req : reqs) { List<Wire> wrs = wirings.get(resource); for (Wire w : wrs) { if (w.getRequirement() .equals(req)) { Resource res = w.getProvider(); if (res != null) { if (!result.contains(res)) { result.add(res); addWiredBundle(wirings, res, result); } } } } } }
private static Object toJson(Resource resource) { Map<String, Object> obj = new HashMap<>(); List<Object> caps = new ArrayList<>(); List<Object> reqs = new ArrayList<>(); for (Capability cap : resource.getCapabilities(null)) { caps.add(ResourceUtils.toString(null, cap.getNamespace(), cap.getAttributes(), cap.getDirectives())); } for (Requirement req : resource.getRequirements(null)) { reqs.add(ResourceUtils.toString(null, req.getNamespace(), req.getAttributes(), req.getDirectives())); } obj.put("capabilities", caps); obj.put("requirements", reqs); return obj; }
public ResourceBuilder(Resource source) throws Exception { addCapabilities(source.getCapabilities(null)); addRequirements(source.getRequirements(null)); }
public ResourceBuilder(Resource source) throws Exception { addCapabilities(source.getCapabilities(null)); addRequirements(source.getRequirements(null)); }
private Map<Resource, Integer> computeEdges(Resource resource) { Map<Resource, Integer> edges = new HashMap<>(); String owner = ResolverUtil.getOwnerName(resource); for (Requirement req : resource.getRequirements(null)) { if (isOptional(req) || isDynamic(req)) { continue; } List<Capability> caps = findProviders(req); for (Capability cap : caps) { Resource r = cap.getResource(); // If there's a single provider for any kind of mandatory requirement, // this means the resource is also mandatory. // Else prefer resources from the same subsystem (with the same owner). int v = (caps.size() == 1) ? 0 : (Objects.equals(ResolverUtil.getOwnerName(r), owner)) ? 1 : 10; edges.merge(r, v, Math::min); } } return edges; }
/** * Removes the specified module from the internal data structures, which * involves removing its requirements and its capabilities. This may cause * other modules to become unresolved as a result. * * @param resource the module to remove. * @param unresolvedResources a list to containing any additional modules * that that became unresolved as a result of removing this module and will * also need to be removed. */ private void remove(Resource resource, Set<Resource> unresolvedResources) { for (Requirement r : resource.getRequirements(null)) { remove(r); } for (Capability c : resource.getCapabilities(null)) { remove(c, unresolvedResources); } }
/** * Removes the specified module from the internal data structures, which * involves removing its requirements and its capabilities. This may cause * other modules to become unresolved as a result. * * @param resource the module to remove. * @param unresolvedResources a list to containing any additional modules * that that became unresolved as a result of removing this module and will * also need to be removed. */ private void remove(Resource resource, Set<Resource> unresolvedResources) { for (Requirement r : resource.getRequirements(null)) { remove(r); } for (Capability c : resource.getCapabilities(null)) { remove(c, unresolvedResources); } }
private void wrap(Map<Capability, Capability> map, Subsystem subsystem, Resource resource) { ResourceImpl wrapped = new ResourceImpl(); for (Capability cap : resource.getCapabilities(null)) { CapabilityImpl wCap = new CapabilityImpl(wrapped, cap.getNamespace(), cap.getDirectives(), cap.getAttributes()); map.put(cap, wCap); wrapped.addCapability(wCap); } for (Requirement req : resource.getRequirements(null)) { RequirementImpl wReq = new RequirementImpl(wrapped, req.getNamespace(), req.getDirectives(), req.getAttributes()); wrapped.addRequirement(wReq); } addIdentityRequirement(wrapped, subsystem, false); resToSub.put(wrapped, subsystem); try { downloader.download(getUri(wrapped), null); } catch (MalformedURLException e) { throw new IllegalStateException("Unable to download resource: " + getUri(wrapped)); } } }
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; }