Remove work-in-progress (unused) OBR code
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1412395 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/src/main/java/aQute/bnd/obr/OBRFragment.java b/bundleplugin/src/main/java/aQute/bnd/obr/OBRFragment.java
deleted file mode 100644
index 1af3518..0000000
--- a/bundleplugin/src/main/java/aQute/bnd/obr/OBRFragment.java
+++ /dev/null
@@ -1,300 +0,0 @@
-package aQute.bnd.obr;
-
-import java.io.*;
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.jar.*;
-import java.util.regex.*;
-
-import org.osgi.framework.Constants;
-import org.osgi.framework.Version;
-import org.osgi.framework.namespace.*;
-import org.osgi.namespace.service.*;
-import org.osgi.resource.*;
-import org.osgi.service.repository.*;
-
-import aQute.bnd.header.*;
-import aQute.bnd.osgi.*;
-import aQute.bnd.osgi.resource.*;
-import aQute.bnd.version.*;
-import aQute.libg.cryptography.*;
-import aQute.libg.map.*;
-import aQute.service.reporter.*;
-
-public class OBRFragment {
-
- // The mime-type of an OSGi bundle
- static final String MIME_TYPE_OSGI_BUNDLE = "application/vnd.osgi.bundle";
-static Pattern EE_PATTERN = Pattern.compile("[^.]-([\\d]+(?:\\.[\\d]+(?:\\.[\\d]+(?:\\.)?)?)?)");
-
- @SuppressWarnings("deprecation")
- public static Reporter parse(Jar jar, ResourceBuilder resource) throws Exception {
- Manifest m = jar.getManifest();
- if (m == null)
- return null;
-
- Domain d = Domain.domain(m);
- d.setTranslation(jar);
- Entry<String,Attrs> bundleSymbolicName = d.getBundleSymbolicName();
-
- if (bundleSymbolicName == null)
- return null;
-
- boolean singleton = "true".equals(bundleSymbolicName.getValue().get(Constants.SINGLETON_DIRECTIVE + ":"));
- boolean isFragment = d.get(Constants.FRAGMENT_HOST) != null;
- Version version = d.getBundleVersion() == null ? Version.emptyVersion : new Version(d.getBundleVersion());
-
- CapReqBuilder identity = new CapReqBuilder(IdentityNamespace.IDENTITY_NAMESPACE);
- identity.addAttribute(IdentityNamespace.IDENTITY_NAMESPACE, bundleSymbolicName.getKey());
- 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("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()));
-
- resource.addCapability(identity);
-
-
- if ( isFragment ) {
-
- //
- // Fragment-Host
- //
-
- Entry<String,Attrs> fragmentHost = d.getFragmentHost();
- CapReqBuilder fragment = new CapReqBuilder(HostNamespace.HOST_NAMESPACE);
- String v = fragmentHost.getValue().get("version");
- if ( v == null)
- v = "0";
- Version fragmentVersion = new Version(v);
- String filter = filter(PackageNamespace.PACKAGE_NAMESPACE, fragmentHost.getKey(), fragmentHost.getValue());
- fragment.addDirective(HostNamespace.REQUIREMENT_FILTER_DIRECTIVE, filter.toString());
- resource.addRequirement(fragment);
- } else {
-
- //
- // Bundle-SymbolicName
- //
-
- CapReqBuilder bundle = new CapReqBuilder(BundleNamespace.BUNDLE_NAMESPACE);
- CapReqBuilder host = new CapReqBuilder(HostNamespace.HOST_NAMESPACE);
-
- bundle.addAttribute("version", version);
- host.addAttribute("version", version);
-
- for (Entry<String,String> e : bundleSymbolicName.getValue().entrySet()) {
- String key = e.getKey();
- if (key.endsWith(":")) {
- String directive = key.substring(0, key.length() - 1);
- if (Constants.FRAGMENT_ATTACHMENT_DIRECTIVE.equalsIgnoreCase(directive)) {
- if (Constants.FRAGMENT_ATTACHMENT_NEVER.equalsIgnoreCase(e.getValue()))
- host = null;
-
- } else if (!Constants.SINGLETON_DIRECTIVE.equalsIgnoreCase(directive)) {
- bundle.addDirective(directive, e.getValue());
- }
- if ( host != null )
- host.addDirective(directive, e.getValue());
- bundle.addDirective(directive, e.getValue());
- } else {
- if ( host != null )
- host.addAttribute(key, e.getValue());
- bundle.addAttribute(key, e.getValue());
- }
- }
- if ( host != null)
- resource.addCapability(host);
- resource.addCapability(bundle);
- }
-
- //
- // Export-Package
- //
-
- Parameters exports = d.getExportPackage();
- for (Entry<String,Attrs> entry : exports.entrySet()) {
- CapReqBuilder exported = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE);
-
- String pkgName = Processor.removeDuplicateMarker(entry.getKey());
- exported.addAttribute(PackageNamespace.PACKAGE_NAMESPACE, pkgName);
-
- String versionStr = entry.getValue().get(Constants.VERSION_ATTRIBUTE);
- Version v = Version.parseVersion(entry.getValue().get("version"));
-
- exported.addAttribute(PackageNamespace.CAPABILITY_VERSION_ATTRIBUTE, version);
-
- for (Entry<String,String> attribEntry : entry.getValue().entrySet()) {
- String key = attribEntry.getKey();
- if (key.endsWith(":")) {
- String directive = key.substring(0, key.length()-1);
- exported.addDirective(directive, attribEntry.getValue());
- } else {
- if ( key.equals("specification-version") || key.equals("version"))
- exported.addAttribute("version", Version.parseVersion(attribEntry.getValue()));
- else
- exported.addAttribute(key, attribEntry.getValue());
- }
- }
-
- exported.addAttribute(PackageNamespace.CAPABILITY_BUNDLE_SYMBOLICNAME_ATTRIBUTE, bundleSymbolicName.getKey());
- exported.addAttribute(PackageNamespace.CAPABILITY_BUNDLE_VERSION_ATTRIBUTE, version);
-
- resource.addCapability(exported);
- }
-
- //
- // Import-Package
- //
-
- Parameters imports = d.getImportPackage();
- for (Entry<String,Attrs> entry : imports.entrySet()) {
- CapReqBuilder imported = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE);
- String name = Processor.removeDuplicateMarker(entry.getKey());
- String filter = filter(PackageNamespace.PACKAGE_NAMESPACE, Processor.removeDuplicateMarker(entry.getKey()), entry.getValue());
- imported.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter);
- resource.addRequirement(imported);
- }
-
- //
- // Require-Bundle
- //
-
- Parameters requires = d.getRequireBundle();
- for (Entry<String,Attrs> entry : requires.entrySet()) {
- CapReqBuilder req = new CapReqBuilder(BundleNamespace.BUNDLE_NAMESPACE);
- String bsn = Processor.removeDuplicateMarker(entry.getKey());
- String filter = filter(BundleNamespace.BUNDLE_NAMESPACE, bsn, entry.getValue());
- req.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter);
- resource.addRequirement(req);
- }
-
- //
- // Bundle-RequiredExecutionEnvironment
- //
-
- Parameters brees = d.getBundleRequiredExecutionEnvironment();
- Formatter formatter = new Formatter();
- formatter.format("(|");
-
- for ( Entry<String,Attrs> bree : brees.entrySet() ) {
- String name = Processor.removeDuplicateMarker(bree.getKey());
- Matcher matcher = EE_PATTERN.matcher(name);
- if ( matcher.matches()) {
- name = matcher.group(1);
- Version v = Version.parseVersion(matcher.group(2));
- formatter.format("%s", filter(ExecutionEnvironmentNamespace.EXECUTION_ENVIRONMENT_NAMESPACE, name, MAP.$("version", v.toString())));
- }
- }
- formatter.format(")");
-
- CapReqBuilder breeReq = new CapReqBuilder(ExecutionEnvironmentNamespace.EXECUTION_ENVIRONMENT_NAMESPACE);
- breeReq.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, formatter.toString());
-
- //
- // Export-Service (deprecated)
- //
-
- for (Entry<String,Attrs> export : d.getParameters(Constants.EXPORT_SERVICE).entrySet()) {
- CapReqBuilder exportedService = new CapReqBuilder(ServiceNamespace.SERVICE_NAMESPACE);
- String service = Processor.removeDuplicateMarker(export.getKey());
- exportedService.addAttribute(ServiceNamespace.SERVICE_NAMESPACE, service);
- exportedService.addAttribute(ServiceNamespace.CAPABILITY_OBJECTCLASS_ATTRIBUTE, export.getValue().get("objectclass"));
- resource.addCapability(exportedService);
- }
-
- //
- // Import-Service (deprecated)
- //
-
- for (Entry<String,Attrs> imported : d.getParameters(Constants.IMPORT_SERVICE).entrySet()) {
- CapReqBuilder importedService = new CapReqBuilder(ServiceNamespace.SERVICE_NAMESPACE);
- String service = Processor.removeDuplicateMarker(imported.getKey());
- importedService.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter(ServiceNamespace.SERVICE_NAMESPACE, service, imported.getValue()));
- resource.addRequirement(importedService);
- }
-
- //
- // Provide-Capability
- //
-
- for ( Entry<String,Attrs> rc : d.getProvideCapability().entrySet()) {
- resource.addCapability( toCapability(rc.getKey(), rc.getValue()));
- }
-
- //
- // Require-Capability
- //
-
- for ( Entry<String,Attrs> rc : d.getRequireCapability().entrySet()) {
- resource.addCapability( toRequirement(rc.getKey(), rc.getValue()));
- }
-
-
- return null;
- }
-
- private static Capability toRequirement(String key, Attrs value) {
- // TODO Auto-generated method stub
- return null;
- }
-
- private static Capability toCapability(String key, Attrs value) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public static Reporter parse(File file, ResourceBuilder resource, String base) throws Exception {
- Jar jar = new Jar(file);
- try {
- Reporter reporter = parse(jar, resource);
- if (!reporter.isOk())
- return reporter;
-
- CapReqBuilder content = new CapReqBuilder(ContentNamespace.CONTENT_NAMESPACE);
- String sha = SHA1.digest(file).asHex();
- content.addAttribute(ContentNamespace.CONTENT_NAMESPACE, sha);
- content.addAttribute(ContentNamespace.CAPABILITY_SIZE_ATTRIBUTE, (long) file.length());
- content.addAttribute(ContentNamespace.CAPABILITY_MIME_ATTRIBUTE, MIME_TYPE_OSGI_BUNDLE);
-
- if (base != null) {
- String path = file.getAbsolutePath();
- if (base.startsWith(path)) {
- content.addAttribute(ContentNamespace.CAPABILITY_URL_ATTRIBUTE, path.substring(base.length())
- .replace(File.separatorChar, '/'));
- } else {
- reporter.error("Base path %s is not parent of file path: %s", base, file.getAbsolutePath());
- }
- }
-
- resource.addCapability(content);
- return reporter;
- }
- finally {
- jar.close();
- }
- }
-
- // TODO finish
- private static String filter(String ns, String primary, Map<String,String> value) {
- Formatter f = new Formatter();
- f.format("(&(%s=%s)", ns, primary);
- for ( String key : value.keySet()) {
- if ( key.equals("version") || key.equals("bundle-version")) {
- VersionRange vr = new VersionRange(value.get(key));
- } else {
- f.format("(%s=%s)", key, value.get(key));
- }
- }
-
- f.format(")");
- return null;
- }
-
-}