public static Domain domain(final Manifest manifest) { Attributes attrs = manifest.getMainAttributes(); return domain(attrs); }
public String get(String key, String deflt) { String result = get(key); if (result != null) return result; return deflt; }
public Parameters getIncludeResource() { Parameters ic = getParameters(INCLUDE_RESOURCE); ic.putAll(getParameters(INCLUDERESOURCE)); return ic; }
public static List<String> getManifestHeaderValues(final Manifest manifest, final String headerName) { Domain domain = Domain.domain(manifest); Parameters params = domain.getParameters(headerName); return new ArrayList<>(params.keySet()); }
Domain d = Domain.domain(m); d.setTranslation(jar); Entry<String, Attrs> bundleSymbolicName = d.getBundleSymbolicName(); boolean isFragment = d.get(Constants.FRAGMENT_HOST) != null; Version version = d.getBundleVersion() == null ? Version.emptyVersion : new Version(d.getBundleVersion()); d.translate(Constants.BUNDLE_COPYRIGHT)); identity.addAttribute(IdentityNamespace.CAPABILITY_DESCRIPTION_ATTRIBUTE, d.translate(Constants.BUNDLE_DESCRIPTION)); identity.addAttribute(IdentityNamespace.CAPABILITY_DOCUMENTATION_ATTRIBUTE, d.translate(Constants.BUNDLE_DOCURL)); identity.addAttribute(IdentityNamespace.CAPABILITY_LICENSE_ATTRIBUTE, d.translate(aQute.bnd.osgi.Constants.BUNDLE_LICENSE)); if (singleton) identity.addAttribute(IdentityNamespace.CAPABILITY_SINGLETON_DIRECTIVE, "true"); identity.addAttribute(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE, isFragment ? IdentityNamespace.TYPE_FRAGMENT : IdentityNamespace.TYPE_BUNDLE); identity.addAttribute(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE, new Version(d.getBundleVersion())); Entry<String, Attrs> fragmentHost = d.getFragmentHost(); CapReqBuilder fragment = new CapReqBuilder(HostNamespace.HOST_NAMESPACE); String v = fragmentHost.getValue() Parameters exports = d.getExportPackage(); for (Entry<String, Attrs> entry : exports.entrySet()) { CapReqBuilder exported = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE); Parameters imports = d.getImportPackage();
int bundleManifestVersion = Integer.parseInt(manifest.get(Constants.BUNDLE_MANIFESTVERSION, "1")); Entry<String, Attrs> bsn = manifest.getBundleSymbolicName(); boolean fragment = manifest.getFragmentHost() != null; String versionString = manifest.getBundleVersion(); if (versionString == null) versionString = "0"; String copyright = manifest.translate(Constants.BUNDLE_COPYRIGHT); if (copyright != null) { identity.addAttribute(IdentityNamespace.CAPABILITY_COPYRIGHT_ATTRIBUTE, copyright); String description = manifest.translate(Constants.BUNDLE_DESCRIPTION); if (description != null) { identity.addAttribute(IdentityNamespace.CAPABILITY_DESCRIPTION_ATTRIBUTE, description); String docurl = manifest.get(Constants.BUNDLE_DOCURL); if (docurl != null) { identity.addAttribute(IdentityNamespace.CAPABILITY_DOCUMENTATION_ATTRIBUTE, docurl); String license = manifest.get("Bundle-License"); if (license != null) { identity.addAttribute(IdentityNamespace.CAPABILITY_LICENSE_ATTRIBUTE, license); Parameters importServices = OSGiHeader.parseHeader(manifest.get(Constants.IMPORT_SERVICE)); addImportServices(importServices);
pp.putAll(options); String name = manifest.getBundleName(); if (name == null) name = manifest.getBundleSymbolicName() .getKey(); String version = manifest.getBundleVersion(); if (version == null) version = Version.LOWEST.toString(); String bundleDescription = manifest.getBundleDescription(); set(pp, "-header", manifest.getBundleVendor()); set(pp, "-bottom", manifest.getBundleCopyright()); set(pp, "-footer", manifest.getBundleDocURL()); Parameters exports = manifest.getExportPackage(); for (String packageName : exports.keySet()) { args.add(String.format("'%s'", packageName));
Manifest m = jar.getManifest(); if (m != null) { Domain domain = Domain.domain(m); Parameters exported = domain.getExportPackage(); for (Entry<String,Attrs> e : exported.entrySet()) { PackageRef ref = getPackageRef(e.getKey()); Parameters pcs = domain.getProvideCapability(); contracts.collectContracts(jar.getName(), pcs);
this.manifest = manifest; Domain domain = Domain.domain(manifest); Entry<String, Attrs> bundleSymbolicName = domain.getBundleSymbolicName(); if (bundleSymbolicName != null) { bsn = bundleSymbolicName.getKey(); String name = domain.get(Constants.BUNDLE_NAME); if (name == null) { name = groupId + ":" + artifactId; version = domain.getBundleVersion();
Manifest m = jar.getManifest(); if (m != null) { Domain domain = Domain.domain(m); Parameters ep = domain.getExportPackage(); for (Glob g : options.exports()) { for (Entry<String,Attrs> exp : ep.entrySet()) { Parameters ip = domain.getImportPackage(); for (Glob g : options.imports()) { for (Entry<String,Attrs> imp : ip.entrySet()) {
/** * @param jar */ private void getExternalExports(Jar jar, Packages classpathExports) { try { Manifest m = jar.getManifest(); if (m != null) { Domain domain = Domain.domain(m); Parameters exported = domain.getExportPackage(); for (Entry<String,Attrs> e : exported.entrySet()) { PackageRef ref = getPackageRef(e.getKey()); if (!classpathExports.containsKey(ref)) { // TODO e.getValue().put(SOURCE_DIRECTIVE, // jar.getBsn()+"-"+jar.getVersion()); classpathExports.put(ref, e.getValue()); } } } } catch (Exception e) { warning("Erroneous Manifest for " + jar + " " + e); } }
/** * @param p * @param pack */ private boolean isDynamicImport(PackageRef pack) { if (dynamicImports == null) dynamicImports = new Instructions(main.getDynamicImportPackage()); return dynamicImports.matches(pack.getFQN()); }
void doExports(Domain domain, List< ? super Capability> caps) throws Exception { Parameters exports = domain.getExportPackage(); for (Entry<String,Attrs> entry : exports.entrySet()) { CapReqBuilder builder = new CapReqBuilder(Namespaces.NS_WIRING_PACKAGE); String pkgName = Processor.removeDuplicateMarker(entry.getKey()); builder.addAttribute(Namespaces.NS_WIRING_PACKAGE, pkgName); String versionStr = entry.getValue().getVersion(); Version version = Version.parseVersion(versionStr); builder.addAttribute(Namespaces.ATTR_VERSION, version); for (Entry<String,String> attribEntry : entry.getValue().entrySet()) { String key = attribEntry.getKey(); if (!"specification-version".equalsIgnoreCase(key) && !Constants.VERSION_ATTRIBUTE.equalsIgnoreCase(key)) { if (key.endsWith(":")) builder.addDirective(key.substring(0, key.length() - 1), attribEntry.getValue()); else builder.addAttribute(key, attribEntry.getValue()); } } Entry<String,Attrs> bsn = domain.getBundleSymbolicName(); builder.addAttribute(Namespaces.ATTR_BUNDLE_SYMBOLIC_NAME, bsn.getKey()); builder.addAttribute(Namespaces.ATTR_BUNDLE_VERSION, Version.parseVersion(bsn.getValue().getVersion())); caps.add(builder.buildCapability()); } }
void doBundleIdentity(Domain domain, MimeType mimeType, List< ? super Capability> caps) throws Exception { String type; switch (mimeType) { case Bundle : type = Namespaces.RESOURCE_TYPE_BUNDLE; break; case Fragment : type = Namespaces.RESOURCE_TYPE_FRAGMENT; break; default : type = Namespaces.RESOURCE_TYPE_PLAIN_JAR; break; } Entry<String,Attrs> bundleSymbolicName = domain.getBundleSymbolicName(); String bsn = bundleSymbolicName.getKey(); String s = bundleSymbolicName.getValue().get(Constants.SINGLETON_DIRECTIVE + ":"); boolean singleton = Boolean.TRUE.toString().equalsIgnoreCase(s); Version version = Version.parseVersion(domain.getBundleVersion()); CapReqBuilder builder = new CapReqBuilder(Namespaces.NS_IDENTITY).addAttribute(Namespaces.NS_IDENTITY, bsn) .addAttribute(Namespaces.ATTR_IDENTITY_TYPE, type).addAttribute(Namespaces.ATTR_VERSION, version); if (singleton) builder.addDirective(Namespaces.DIRECTIVE_SINGLETON, Boolean.TRUE.toString()); caps.add(builder.buildCapability()); }
void doBundleAndHost(Domain domain, List< ? super Capability> caps) throws Exception { CapReqBuilder bundleBuilder = new CapReqBuilder(Namespaces.NS_WIRING_BUNDLE); CapReqBuilder hostBuilder = new CapReqBuilder(Namespaces.NS_WIRING_HOST); boolean allowFragments = true; if (domain.getFragmentHost() != null) return; Map.Entry<String,Attrs> bsn = domain.getBundleSymbolicName(); Version version = Version.parseVersion(bsn.getValue().getVersion()); bundleBuilder.addAttribute(Namespaces.NS_WIRING_BUNDLE, bsn.getKey()).addAttribute( Constants.BUNDLE_VERSION_ATTRIBUTE, version); hostBuilder.addAttribute(Namespaces.NS_WIRING_HOST, bsn.getKey()).addAttribute( Constants.BUNDLE_VERSION_ATTRIBUTE, version); for (Entry<String,String> entry : bsn.getValue().entrySet()) { String key = entry.getKey(); if (key.endsWith(":")) { String directiveName = key.substring(0, key.length() - 1); if (Constants.FRAGMENT_ATTACHMENT_DIRECTIVE.equalsIgnoreCase(directiveName)) { if (Constants.FRAGMENT_ATTACHMENT_NEVER.equalsIgnoreCase(entry.getValue())) allowFragments = false; } else if (!Constants.SINGLETON_DIRECTIVE.equalsIgnoreCase(directiveName)) { bundleBuilder.addDirective(directiveName, entry.getValue()); } } else { bundleBuilder.addAttribute(key, entry.getValue()); } } caps.add(bundleBuilder.buildCapability()); if (allowFragments) caps.add(hostBuilder.buildCapability()); }
public void verifyBundleClasspath() { Parameters bcp = main.getBundleClassPath(); if (bcp.isEmpty() || bcp.containsKey(".")) return; for (String path : bcp.keySet()) { if (path.endsWith("/")) error("A Bundle-ClassPath entry must not end with '/': %s", path); if (dot.getDirectories().containsKey(path)) // We assume that any classes are in a directory // and therefore do not care when the bundle is included return; } for (String path : dot.getResources().keySet()) { if (path.endsWith(".class")) { warning("The Bundle-Classpath does not contain the actual bundle JAR (as specified with '.' in the Bundle-Classpath) but the JAR does contain classes. Is this intentional?"); return; } } }
void doBREE(Domain domain, List< ? super Requirement> reqs) throws Exception { Parameters brees = domain.getBundleRequiredExecutionEnvironment(); final String filter; if (!brees.isEmpty()) { if (brees.size() == 1) { String bree = brees.keySet().iterator().next(); filter = EE.parseBREE(bree).toFilter(); } else { StringBuilder builder = new StringBuilder().append("(|"); for (String bree : brees.keySet()) { bree = Processor.removeDuplicateMarker(bree); builder.append(EE.parseBREE(bree).toFilter()); } builder.append(')'); filter = builder.toString(); } Requirement requirement = new CapReqBuilder(Namespaces.NS_EE).addDirective(Namespaces.DIRECTIVE_FILTER, filter).buildRequirement(); reqs.add(requirement); } }
Domain d = Domain.domain(m); d.setTranslation(jar); Entry<String,Attrs> bundleSymbolicName = d.getBundleSymbolicName(); boolean isFragment = d.get(Constants.FRAGMENT_HOST) != null; Version version = d.getBundleVersion() == null ? Version.emptyVersion : new Version(d.getBundleVersion()); identity.addAttribute(IdentityNamespace.CAPABILITY_COPYRIGHT_ATTRIBUTE, d.translate(Constants.BUNDLE_COPYRIGHT)); identity.addAttribute(IdentityNamespace.CAPABILITY_DESCRIPTION_ATTRIBUTE, d.translate(Constants.BUNDLE_DESCRIPTION)); identity.addAttribute(IdentityNamespace.CAPABILITY_DOCUMENTATION_ATTRIBUTE, d.translate(Constants.BUNDLE_DOCURL)); identity.addAttribute(IdentityNamespace.CAPABILITY_LICENSE_ATTRIBUTE, d.translate(aQute.bnd.osgi.Constants.BUNDLE_LICENSE)); if (singleton) identity.addAttribute(IdentityNamespace.CAPABILITY_SINGLETON_DIRECTIVE, "true"); identity.addAttribute(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE, isFragment ? IdentityNamespace.TYPE_FRAGMENT : IdentityNamespace.TYPE_BUNDLE); identity.addAttribute(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE, new Version(d.getBundleVersion())); Entry<String,Attrs> fragmentHost = d.getFragmentHost(); CapReqBuilder fragment = new CapReqBuilder(HostNamespace.HOST_NAMESPACE); String v = fragmentHost.getValue().get("version"); Parameters exports = d.getExportPackage(); for (Entry<String,Attrs> entry : exports.entrySet()) { CapReqBuilder exported = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE); Parameters imports = d.getImportPackage(); for (Entry<String,Attrs> entry : imports.entrySet()) {