in src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java [56:103]
public BundleResourceImpl(BundleDescriptor bd, Feature feat) {
artifact = bd.getArtifact();
bsn = bd.getBundleSymbolicName();
version = bd.getArtifact().getId().getOSGiVersion();
feature = feat;
Map<String, List<Capability>> caps = new HashMap<>();
for (Capability c : bd.getCapabilities()) {
List<Capability> l = caps.get(c.getNamespace());
if (l == null) {
l = new ArrayList<>();
caps.put(c.getNamespace(), l);
}
l.add(new CapabilityImpl(this, c));
}
// Add the identity capability
Map<String, Object> idattrs = new HashMap<>();
idattrs.put(IdentityNamespace.IDENTITY_NAMESPACE, bsn);
idattrs.put(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE, IdentityNamespace.TYPE_BUNDLE);
idattrs.put(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE, version);
Capability idCap = new CapabilityImpl(this, IdentityNamespace.IDENTITY_NAMESPACE, null, idattrs);
caps.put(IdentityNamespace.IDENTITY_NAMESPACE, Collections.singletonList(idCap));
// Add the bundle capability
Map<String, Object> battrs = new HashMap<>();
battrs.put(BundleNamespace.BUNDLE_NAMESPACE, bsn);
battrs.put(BundleNamespace.CAPABILITY_BUNDLE_VERSION_ATTRIBUTE, version);
Capability bundleCap = new CapabilityImpl(this, BundleNamespace.BUNDLE_NAMESPACE, null, battrs);
caps.put(BundleNamespace.BUNDLE_NAMESPACE, Collections.singletonList(bundleCap));
capabilities = Collections.unmodifiableMap(caps);
Map<String, List<Requirement>> reqs = new HashMap<>();
for (Requirement r : bd.getRequirements()) {
List<Requirement> l = reqs.get(r.getNamespace());
if (l == null) {
l = new ArrayList<>();
reqs.put(r.getNamespace(), l);
}
// Add the requirement and associate with this resource
l.add(new RequirementImpl(this, r));
}
// TODO What do we do with the execution environment?
reqs.remove(ExecutionEnvironmentNamespace.EXECUTION_ENVIRONMENT_NAMESPACE);
requirements = Collections.unmodifiableMap(reqs);
}