@Override public List<BundleCapability> getDeclaredCapabilities(String namespace) { return InternalUtils.asListBundleCapability(getModuleCapabilities(namespace)); }
@Override public List<BundleRequirement> getRequirements(String namespace) { return InternalUtils.asListBundleRequirement(getModuleRequirements(namespace)); }
@Override public List<BundleWire> getProvidedWires(String namespace) { return InternalUtils.asListBundleWire(getWires(namespace, providedWires)); }
Permission requirePermission = InternalUtils.getRequirePermission(candidate); Permission providePermission = InternalUtils.getProvidePermission(candidate); if (!requirement.getRevision().getBundle().hasPermission(requirePermission)) { iCandidates.remove();
private void filterResolvable() { Collection<ModuleRevision> enabledCandidates = new ArrayList<ModuleRevision>(unresolved); hook.filterResolvable(InternalUtils.asListBundleRevision((List<? extends BundleRevision>) enabledCandidates)); disabled.removeAll(enabledCandidates); for (ModuleRevision revision : disabled) { reportBuilder.addEntry(revision, Entry.Type.FILTERED_BY_RESOLVER_HOOK, null); if (DEBUG_HOOKS) { Debug.println("RESOLVER: Resource filtered by ResolverHook.filterResolvable: " + revision); //$NON-NLS-1$ } } }
@Override public List<Wire> getProvidedResourceWires(String namespace) { return InternalUtils.asListWire(getWires(namespace, providedWires)); }
@Override public List<Requirement> getResourceRequirements(String namespace) { return InternalUtils.asListRequirement(getRequirements(namespace)); }
public static Permission getProvidePermission(BundleCapability candidate) { String name = candidate.getNamespace(); if (PackageNamespace.PACKAGE_NAMESPACE.equals(name)) { return new PackagePermission(getPermisionName(candidate), PackagePermission.EXPORTONLY); } if (HostNamespace.HOST_NAMESPACE.equals(name)) { return new BundlePermission(getPermisionName(candidate), BundlePermission.HOST); } if (BundleNamespace.BUNDLE_NAMESPACE.equals(name)) { return new BundlePermission(getPermisionName(candidate), BundlePermission.PROVIDE); } return new CapabilityPermission(name, CapabilityPermission.PROVIDE); }
@Override public List<Capability> getCapabilities(String namespace) { return InternalUtils.asListCapability(getDeclaredCapabilities(namespace)); }
public RequiredBundle[] getRequiredBundles(String symbolicName) { String filter = "(" + BundleNamespace.BUNDLE_NAMESPACE + "=" + (symbolicName == null ? "*" : symbolicName) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$ Map<String, String> directives = Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter); Map<String, Boolean> attributes = Collections.singletonMap(Capabilities.SYNTHETIC_REQUIREMENT, Boolean.TRUE); Requirement bundleReq = ModuleContainer.createRequirement(BundleNamespace.BUNDLE_NAMESPACE, directives, attributes); Collection<BundleCapability> bundleCaps = container.getFrameworkWiring().findProviders(bundleReq); InternalUtils.filterCapabilityPermissions(bundleCaps); Collection<RequiredBundle> result = new ArrayList<RequiredBundle>(); for (BundleCapability capability : bundleCaps) { BundleWiring wiring = capability.getRevision().getWiring(); if (wiring != null) { result.add(new RequiredBundleImpl(capability, wiring)); } } return result.isEmpty() ? null : result.toArray(new RequiredBundle[result.size()]); }
public static void filterCapabilityPermissions(Collection<? extends BundleCapability> capabilities) { if (System.getSecurityManager() == null) { return; } for (Iterator<? extends BundleCapability> iCapabilities = capabilities.iterator(); iCapabilities.hasNext();) { BundleCapability capability = iCapabilities.next(); Permission permission = getProvidePermission(capability); Bundle provider = capability.getRevision().getBundle(); if (provider != null && !provider.hasPermission(permission)) { iCapabilities.remove(); } } }
Permission requirePermission = InternalUtils.getRequirePermission(candidate); Permission providePermission = InternalUtils.getProvidePermission(candidate); if (!requirement.getRevision().getBundle().hasPermission(requirePermission)) { iCandidates.remove();
private void filterResolvable() { Collection<ModuleRevision> enabledCandidates = new ArrayList<ModuleRevision>(unresolved); hook.filterResolvable(InternalUtils.asListBundleRevision((List<? extends BundleRevision>) enabledCandidates)); disabled.removeAll(enabledCandidates); for (ModuleRevision revision : disabled) { reportBuilder.addEntry(revision, Entry.Type.FILTERED_BY_RESOLVER_HOOK, null); if (DEBUG_HOOKS) { Debug.println("RESOLVER: Resource filtered by ResolverHook.filterResolvable: " + revision); //$NON-NLS-1$ } } }
@Override public List<Wire> getProvidedResourceWires(String namespace) { return InternalUtils.asListWire(getWires(namespace, providedWires)); }
@Override public List<Requirement> getRequirements(String namespace) { return InternalUtils.asListRequirement(getDeclaredRequirements(namespace)); }
public static Permission getProvidePermission(BundleCapability candidate) { String name = candidate.getNamespace(); if (PackageNamespace.PACKAGE_NAMESPACE.equals(name)) { return new PackagePermission(getPermisionName(candidate), PackagePermission.EXPORTONLY); } if (HostNamespace.HOST_NAMESPACE.equals(name)) { return new BundlePermission(getPermisionName(candidate), BundlePermission.HOST); } if (BundleNamespace.BUNDLE_NAMESPACE.equals(name)) { return new BundlePermission(getPermisionName(candidate), BundlePermission.PROVIDE); } return new CapabilityPermission(name, CapabilityPermission.PROVIDE); }
@Override public List<Capability> getResourceCapabilities(String namespace) { return InternalUtils.asListCapability(getCapabilities(namespace)); }
public RequiredBundle[] getRequiredBundles(String symbolicName) { String filter = "(" + BundleNamespace.BUNDLE_NAMESPACE + "=" + (symbolicName == null ? "*" : symbolicName) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$ Map<String, String> directives = Collections.<String, String> singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter); Map<String, Boolean> attributes = Collections.singletonMap(Capabilities.SYNTHETIC_REQUIREMENT, Boolean.TRUE); Requirement bundleReq = ModuleContainer.createRequirement(BundleNamespace.BUNDLE_NAMESPACE, directives, attributes); Collection<BundleCapability> bundleCaps = container.getFrameworkWiring().findProviders(bundleReq); InternalUtils.filterCapabilityPermissions(bundleCaps); Collection<RequiredBundle> result = new ArrayList<>(); for (BundleCapability capability : bundleCaps) { BundleWiring wiring = capability.getRevision().getWiring(); if (wiring != null) { result.add(new RequiredBundleImpl(capability, wiring)); } } return result.isEmpty() ? null : result.toArray(new RequiredBundle[result.size()]); }
public static void filterCapabilityPermissions(Collection<? extends BundleCapability> capabilities) { if (System.getSecurityManager() == null) { return; } for (Iterator<? extends BundleCapability> iCapabilities = capabilities.iterator(); iCapabilities.hasNext();) { BundleCapability capability = iCapabilities.next(); Permission permission = getProvidePermission(capability); Bundle provider = capability.getRevision().getBundle(); if (provider != null && !provider.hasPermission(permission)) { iCapabilities.remove(); } } }
Permission requirePermission = InternalUtils.getRequirePermission(candidate); Permission providePermission = InternalUtils.getProvidePermission(candidate); if (!requirement.getRevision().getBundle().hasPermission(requirePermission)) { iCandidates.remove();