private static List<BundleCapability> aliasSymbolicName(List<BundleCapability> caps) { if (caps == null) { return new ArrayList<BundleCapability>(0); } List<BundleCapability> aliasCaps = new ArrayList<BundleCapability>(caps); String[] aliases = { FelixConstants.SYSTEM_BUNDLE_SYMBOLICNAME, Constants.SYSTEM_BUNDLE_SYMBOLICNAME }; for (int capIdx = 0; capIdx < aliasCaps.size(); capIdx++) { BundleCapability cap = aliasCaps.get(capIdx); // Need to alias bundle and host capabilities. if (cap.getNamespace().equals(BundleRevision.BUNDLE_NAMESPACE) || cap.getNamespace().equals(BundleRevision.HOST_NAMESPACE)) { // Make a copy of the attribute array. Map<String, Object> aliasAttrs = new HashMap<String, Object>(cap.getAttributes()); // Add the aliased value. aliasAttrs.put(cap.getNamespace(), aliases); // Create the aliased capability to replace the old capability. cap = new BundleCapabilityImpl( cap.getRevision(), cap.getNamespace(), cap.getDirectives(), aliasAttrs); aliasCaps.set(capIdx, cap); } // Further, search attributes for bundle symbolic name and alias it too. for (Entry<String, Object> entry : cap.getAttributes().entrySet()) { // If there is a bundle symbolic name attribute, add the // standard alias as a value. if (entry.getKey().equalsIgnoreCase(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE)) { // Make a copy of the attribute array. Map<String, Object> aliasAttrs = new HashMap<String, Object>(cap.getAttributes()); // Add the aliased value. aliasAttrs.put(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE, aliases); // Create the aliased capability to replace the old capability. aliasCaps.set( capIdx, new BundleCapabilityImpl( cap.getRevision(), cap.getNamespace(), cap.getDirectives(), aliasAttrs)); // Continue with the next capability. break; } } } return aliasCaps; }
private CapabilityRefDTO getCapabilityRefDTO(BundleCapability cap) { if (cap == null) { return null; } CapabilityRefDTO dto = new CapabilityRefDTO(); dto.capability = identifier(cap); dto.resource = getResourceId(cap.getRevision()); return dto; }
private CapabilityDTO getCapabilityDTO(BundleCapability cap) { if (cap == null) { return null; } CapabilityDTO dto = new CapabilityDTO(); dto.id = identifier(cap); dto.namespace = cap.getNamespace(); dto.resource = getResourceId(cap.getRevision()); dto.attributes = newAttributesMapDTO(cap.getAttributes()); dto.directives = newDirectivesMapDTO(cap.getDirectives()); return dto; }