@Override public Collection<BundleCapability> findProviders(Requirement requirement) { return InternalUtils.asListBundleCapability(moduleDatabase.findCapabilities(requirement)); }
@Override public Collection<BundleCapability> findProviders(Requirement requirement) { return InternalUtils.asListBundleCapability(moduleDatabase.findCapabilities(requirement)); }
@Override public Collection<BundleCapability> findProviders(Requirement requirement) { return InternalUtils.asListBundleCapability(moduleDatabase.findCapabilities(requirement)); }
@Override public Collection<BundleCapability> findProviders(Requirement requirement) { return InternalUtils.asListBundleCapability(moduleDatabase.findCapabilities(requirement)); }
@Override public Collection<BundleCapability> findProviders(Requirement requirement) { return InternalUtils.asListBundleCapability(moduleDatabase.findCapabilities(requirement)); }
@Override public Collection<BundleCapability> findProviders(Requirement requirement) { return InternalUtils.asListBundleCapability(moduleDatabase.findCapabilities(requirement)); }
private List<Capability> findProviders0(Requirement origReq, Requirement lookupReq) { if (DEBUG_PROVIDERS) { Debug.println(new StringBuilder("RESOLVER: Finding capabilities for requirement") //$NON-NLS-1$ .append(SEPARATOR).append(TAB) // .append(origReq) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(origReq.getResource()) // .toString()); } List<ModuleCapability> candidates = moduleDatabase.findCapabilities(lookupReq); List<Capability> result = filterProviders(origReq, candidates); if (DEBUG_PROVIDERS) { StringBuilder builder = new StringBuilder("RESOLVER: Capabilities being returned to the resolver"); //$NON-NLS-1$ int i = 0; for (Capability capability : result) { builder.append(SEPARATOR).append(TAB) // .append("[").append(++i).append("] ") //$NON-NLS-1$ //$NON-NLS-2$ .append(capability) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(capability.getResource()); } Debug.println(builder.toString()); } return result; }
private List<Capability> findProviders0(Requirement origReq, Requirement lookupReq) { if (DEBUG_PROVIDERS) { Debug.println(new StringBuilder("RESOLVER: Finding capabilities for requirement") //$NON-NLS-1$ .append(SEPARATOR).append(TAB) // .append(origReq) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(origReq.getResource()) // .toString()); } List<ModuleCapability> candidates = moduleDatabase.findCapabilities(lookupReq); List<Capability> result = filterProviders(origReq, candidates); if (DEBUG_PROVIDERS) { StringBuilder builder = new StringBuilder("RESOLVER: Capabilities being returned to the resolver"); //$NON-NLS-1$ int i = 0; for (Capability capability : result) { builder.append(SEPARATOR).append(TAB) // .append("[").append(++i).append("] ") //$NON-NLS-1$ //$NON-NLS-2$ .append(capability) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(capability.getResource()); } Debug.println(builder.toString()); } return result; }
private List<Capability> findProviders0(Requirement origReq, Requirement lookupReq) { if (DEBUG_PROVIDERS) { Debug.println(new StringBuilder("RESOLVER: Finding capabilities for requirement") //$NON-NLS-1$ .append(SEPARATOR).append(TAB) // .append(origReq) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(origReq.getResource()) // .toString()); } List<ModuleCapability> candidates = moduleDatabase.findCapabilities(lookupReq); List<Capability> result = filterProviders(origReq, candidates); if (DEBUG_PROVIDERS) { StringBuilder builder = new StringBuilder("RESOLVER: Capabilities being returned to the resolver"); //$NON-NLS-1$ int i = 0; for (Capability capability : result) { builder.append(SEPARATOR).append(TAB) // .append("[").append(++i).append("] ") //$NON-NLS-1$ //$NON-NLS-2$ .append(capability) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(capability.getResource()); } Debug.println(builder.toString()); } return result; }
@Override public List<Capability> findProviders(Requirement requirement) { if (DEBUG_PROVIDERS) { Debug.println(new StringBuilder("RESOLVER: Finding capabilities for requirement") //$NON-NLS-1$ .append(SEPARATOR).append(TAB) // .append(requirement) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(requirement.getResource()) // .toString()); } List<ModuleCapability> candidates = moduleDatabase.findCapabilities(requirement); List<Capability> result = filterProviders(requirement, candidates); if (DEBUG_PROVIDERS) { StringBuilder builder = new StringBuilder("RESOLVER: Capabilities being returned to the resolver"); //$NON-NLS-1$ int i = 0; for (Capability capability : result) { builder.append(SEPARATOR).append(TAB) // .append("[").append(++i).append("] ") //$NON-NLS-1$ //$NON-NLS-2$ .append(capability) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(capability.getResource()); } Debug.println(builder.toString()); } return result; }
private List<Capability> findProviders0(Requirement origReq, Requirement lookupReq) { if (DEBUG_PROVIDERS) { Debug.println(new StringBuilder("RESOLVER: Finding capabilities for requirement") //$NON-NLS-1$ .append(SEPARATOR).append(TAB) // .append(origReq) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(origReq.getResource()) // .toString()); } List<ModuleCapability> candidates = moduleDatabase.findCapabilities(lookupReq); List<Capability> result = filterProviders(origReq, candidates); if (DEBUG_PROVIDERS) { StringBuilder builder = new StringBuilder("RESOLVER: Capabilities being returned to the resolver"); //$NON-NLS-1$ int i = 0; for (Capability capability : result) { builder.append(SEPARATOR).append(TAB) // .append("[").append(++i).append("] ") //$NON-NLS-1$ //$NON-NLS-2$ .append(capability) // .append(SEPARATOR).append(TAB).append(TAB) // .append("of resource") //$NON-NLS-1$ .append(SEPARATOR).append(TAB).append(TAB).append(TAB) // .append(capability.getResource()); } Debug.println(builder.toString()); } return result; }
@Override public Collection<Resource> getOndemandResources(Resource host) { String hostBSN = ((ModuleRevision) host).getSymbolicName(); if (hostBSN == null) { return Collections.emptyList(); } List<ModuleCapability> hostCaps = ((ModuleRevision) host).getModuleCapabilities(HostNamespace.HOST_NAMESPACE); if (hostCaps.isEmpty()) { return Collections.emptyList(); } ModuleCapability hostCap = hostCaps.get(0); String matchFilter = "(" + EquinoxFragmentNamespace.FRAGMENT_NAMESPACE + "=" + hostBSN + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ Requirement fragmentRequirement = ModuleContainer.createRequirement(EquinoxFragmentNamespace.FRAGMENT_NAMESPACE, Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, matchFilter), Collections.<String, Object> emptyMap()); List<ModuleCapability> candidates = moduleDatabase.findCapabilities(fragmentRequirement); // filter out disabled fragments and singletons filterDisabled(candidates.listIterator()); Collection<Resource> ondemandFragments = new ArrayList<Resource>(candidates.size()); for (Iterator<ModuleCapability> iCandidates = candidates.iterator(); iCandidates.hasNext();) { ModuleCapability candidate = iCandidates.next(); ModuleRequirement hostReq = candidate.getRevision().getModuleRequirements(HostNamespace.HOST_NAMESPACE).get(0); if (hostReq.matches(hostCap)) { ondemandFragments.add(candidate.getResource()); } } return ondemandFragments; }
@Override public Collection<Resource> getOndemandResources(Resource host) { String hostBSN = ((ModuleRevision) host).getSymbolicName(); if (hostBSN == null) { return Collections.emptyList(); } List<ModuleCapability> hostCaps = ((ModuleRevision) host).getModuleCapabilities(HostNamespace.HOST_NAMESPACE); if (hostCaps.isEmpty()) { return Collections.emptyList(); } ModuleCapability hostCap = hostCaps.get(0); String matchFilter = "(" + EquinoxFragmentNamespace.FRAGMENT_NAMESPACE + "=" + hostBSN + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ Requirement fragmentRequirement = ModuleContainer.createRequirement(EquinoxFragmentNamespace.FRAGMENT_NAMESPACE, Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, matchFilter), Collections.<String, Object> emptyMap()); List<ModuleCapability> candidates = moduleDatabase.findCapabilities(fragmentRequirement); // filter out disabled fragments and singletons filterDisabled(candidates.listIterator()); Collection<Resource> ondemandFragments = new ArrayList<Resource>(candidates.size()); for (Iterator<ModuleCapability> iCandidates = candidates.iterator(); iCandidates.hasNext();) { ModuleCapability candidate = iCandidates.next(); ModuleRequirement hostReq = candidate.getRevision().getModuleRequirements(HostNamespace.HOST_NAMESPACE).get(0); if (hostReq.matches(hostCap)) { ondemandFragments.add(candidate.getResource()); } } return ondemandFragments; }
@Override public Collection<Resource> getOndemandResources(Resource host) { List<ModuleCapability> hostCaps = ((ModuleRevision) host).getModuleCapabilities(HostNamespace.HOST_NAMESPACE); if (hostCaps.isEmpty()) { return Collections.emptyList(); } Collection<Resource> ondemandFragments = new ArrayList<Resource>(); for (String hostBSN : getHostBSNs(hostCaps)) { String matchFilter = "(" + EquinoxFragmentNamespace.FRAGMENT_NAMESPACE + "=" + hostBSN + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ Requirement fragmentRequirement = ModuleContainer.createRequirement(EquinoxFragmentNamespace.FRAGMENT_NAMESPACE, Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, matchFilter), Collections.<String, Object> emptyMap()); List<ModuleCapability> candidates = moduleDatabase.findCapabilities(fragmentRequirement); // filter out disabled fragments and singletons filterDisabled(candidates.listIterator()); for (Iterator<ModuleCapability> iCandidates = candidates.iterator(); iCandidates.hasNext();) { ModuleCapability candidate = iCandidates.next(); ModuleRequirement hostReq = candidate.getRevision().getModuleRequirements(HostNamespace.HOST_NAMESPACE).get(0); for (ModuleCapability hostCap : hostCaps) { if (hostReq.matches(hostCap)) { ondemandFragments.add(candidate.getResource()); break; } } } } return ondemandFragments; }
@Override public Collection<Resource> findRelatedResources(Resource host) { // for the container we only care about fragments for related resources List<ModuleCapability> hostCaps = ((ModuleRevision) host).getModuleCapabilities(HostNamespace.HOST_NAMESPACE); if (hostCaps.isEmpty()) { return Collections.emptyList(); } Collection<Resource> relatedFragments = new ArrayList<>(); for (String hostBSN : getHostBSNs(hostCaps)) { String matchFilter = "(" + EquinoxFragmentNamespace.FRAGMENT_NAMESPACE + "=" + hostBSN + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ Requirement fragmentRequirement = ModuleContainer.createRequirement(EquinoxFragmentNamespace.FRAGMENT_NAMESPACE, Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, matchFilter), Collections.<String, Object> emptyMap()); List<ModuleCapability> candidates = moduleDatabase.findCapabilities(fragmentRequirement); // filter out disabled fragments and singletons filterDisabled(candidates.listIterator()); for (Iterator<ModuleCapability> iCandidates = candidates.iterator(); iCandidates.hasNext();) { ModuleCapability candidate = iCandidates.next(); ModuleRequirement hostReq = candidate.getRevision().getModuleRequirements(HostNamespace.HOST_NAMESPACE).get(0); for (ModuleCapability hostCap : hostCaps) { if (hostReq.matches(hostCap)) { relatedFragments.add(candidate.getResource()); break; } } } } return relatedFragments; }
@Override public Collection<Resource> getOndemandResources(Resource host) { List<ModuleCapability> hostCaps = ((ModuleRevision) host).getModuleCapabilities(HostNamespace.HOST_NAMESPACE); if (hostCaps.isEmpty()) { return Collections.emptyList(); } Collection<Resource> ondemandFragments = new ArrayList<Resource>(); for (String hostBSN : getHostBSNs(hostCaps)) { String matchFilter = "(" + EquinoxFragmentNamespace.FRAGMENT_NAMESPACE + "=" + hostBSN + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ Requirement fragmentRequirement = ModuleContainer.createRequirement(EquinoxFragmentNamespace.FRAGMENT_NAMESPACE, Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, matchFilter), Collections.<String, Object> emptyMap()); List<ModuleCapability> candidates = moduleDatabase.findCapabilities(fragmentRequirement); // filter out disabled fragments and singletons filterDisabled(candidates.listIterator()); for (Iterator<ModuleCapability> iCandidates = candidates.iterator(); iCandidates.hasNext();) { ModuleCapability candidate = iCandidates.next(); ModuleRequirement hostReq = candidate.getRevision().getModuleRequirements(HostNamespace.HOST_NAMESPACE).get(0); for (ModuleCapability hostCap : hostCaps) { if (hostReq.matches(hostCap)) { ondemandFragments.add(candidate.getResource()); break; } } } } return ondemandFragments; }
@Override public Collection<Resource> findRelatedResources(Resource host) { // for the container we only care about fragments for related resources List<ModuleCapability> hostCaps = ((ModuleRevision) host).getModuleCapabilities(HostNamespace.HOST_NAMESPACE); if (hostCaps.isEmpty()) { return Collections.emptyList(); } Collection<Resource> relatedFragments = new ArrayList<>(); for (String hostBSN : getHostBSNs(hostCaps)) { String matchFilter = "(" + EquinoxFragmentNamespace.FRAGMENT_NAMESPACE + "=" + hostBSN + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ Requirement fragmentRequirement = ModuleContainer.createRequirement(EquinoxFragmentNamespace.FRAGMENT_NAMESPACE, Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, matchFilter), Collections.<String, Object> emptyMap()); List<ModuleCapability> candidates = moduleDatabase.findCapabilities(fragmentRequirement); // filter out disabled fragments and singletons filterDisabled(candidates.listIterator()); for (Iterator<ModuleCapability> iCandidates = candidates.iterator(); iCandidates.hasNext();) { ModuleCapability candidate = iCandidates.next(); ModuleRequirement hostReq = candidate.getRevision().getModuleRequirements(HostNamespace.HOST_NAMESPACE).get(0); for (ModuleCapability hostCap : hostCaps) { if (hostReq.matches(hostCap)) { relatedFragments.add(candidate.getResource()); break; } } } } return relatedFragments; }
private boolean failToWire(ModuleRequirement requirement, ModuleRevision requirer, List<Wire> wires) { List<ModuleCapability> matching = moduleDatabase.findCapabilities(requirement); List<Wire> newWires = new ArrayList<>(0); filterProviders(requirement, matching, false); for (ModuleCapability candidate : matching) { // If the requirer equals the requirement revision then this is a non-payload requirement. // We let non-payload requirements come from anywhere. // Payload requirements must come from the host or one of the fragments attached to the host if (requirer.equals(requirement.getRevision()) || validProviders.contains(candidate.getRevision())) { ModuleRevision provider = NON_PAYLOAD_CAPABILITIES.contains(candidate.getNamespace()) ? candidate.getRevision() : hostCapability.getRevision(); // if there are multiple candidates; then check for cardinality if (newWires.isEmpty() || Namespace.CARDINALITY_MULTIPLE.equals(requirement.getDirectives().get(Namespace.REQUIREMENT_CARDINALITY_DIRECTIVE))) { newWires.add(new ModuleWire(candidate, provider, requirement, requirer)); } } } if (newWires.isEmpty()) { if (!Namespace.RESOLUTION_OPTIONAL.equals(requirement.getDirectives().get(Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE))) { // could not resolve mandatory requirement; return true; } } // only create the wire if the namespace is a non-substituted namespace (e.g. NOT package) if (!NON_SUBSTITUTED_REQUIREMENTS.contains(requirement.getNamespace())) { wires.addAll(newWires); } return false; } }
private boolean failToWire(ModuleRequirement requirement, ModuleRevision requirer, List<Wire> wires) { List<ModuleCapability> matching = moduleDatabase.findCapabilities(requirement); List<Wire> newWires = new ArrayList<>(0); filterProviders(requirement, matching, false); for (ModuleCapability candidate : matching) { // If the requirer equals the requirement revision then this is a non-payload requirement. // We let non-payload requirements come from anywhere. // Payload requirements must come from the host or one of the fragments attached to the host if (requirer.equals(requirement.getRevision()) || validProviders.contains(candidate.getRevision())) { ModuleRevision provider = NON_PAYLOAD_CAPABILITIES.contains(candidate.getNamespace()) ? candidate.getRevision() : hostCapability.getRevision(); // if there are multiple candidates; then check for cardinality if (newWires.isEmpty() || Namespace.CARDINALITY_MULTIPLE.equals(requirement.getDirectives().get(Namespace.REQUIREMENT_CARDINALITY_DIRECTIVE))) { newWires.add(new ModuleWire(candidate, provider, requirement, requirer)); } } } if (newWires.isEmpty()) { if (!Namespace.RESOLUTION_OPTIONAL.equals(requirement.getDirectives().get(Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE))) { // could not resolve mandatory requirement; return true; } } // only create the wire if the namespace is a non-substituted namespace (e.g. NOT package) if (!NON_SUBSTITUTED_REQUIREMENTS.contains(requirement.getNamespace())) { wires.addAll(newWires); } return false; } }
private Map<Resource, List<Wire>> resolveDynamic() throws ResolutionException { List<Capability> dynamicMatches = filterProviders(dynamicReq.getOriginal(), moduleDatabase.findCapabilities(dynamicReq)); return new ResolverImpl(new Logger(0)).resolve(this, dynamicReq.getRevision(), dynamicReq.getOriginal(), dynamicMatches); }