Bug 224833 Incomplete Export-Package header of system bundle
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java
index 9f0791c..4dc3e3f 100644
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java
+++ b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java
@@ -16,6 +16,8 @@
import java.net.URL;
import java.security.Permission;
import java.security.ProtectionDomain;
+import java.util.Dictionary;
+import java.util.Enumeration;
import org.eclipse.osgi.framework.debug.Debug;
import org.osgi.framework.*;
@@ -26,6 +28,53 @@
*/
public class SystemBundle extends BundleHost {
+ class SystemBundleHeaders extends Dictionary {
+ private final Dictionary headers;
+
+ public SystemBundleHeaders(Dictionary headers) {
+ this.headers = headers;
+ }
+
+ public Enumeration elements() {
+ return headers.elements();
+ }
+
+ public Object get(Object key) {
+ if (!org.osgi.framework.Constants.EXPORT_PACKAGE.equals(key))
+ return headers.get(key);
+ String systemPackages = FrameworkProperties.getProperty(org.osgi.framework.Constants.FRAMEWORK_SYSTEMPACKAGES);
+ String resorts = (String) headers.get(org.osgi.framework.Constants.EXPORT_PACKAGE);
+ if (systemPackages != null) {
+ if (resorts != null)
+ resorts += ", " + systemPackages; //$NON-NLS-1$
+ else
+ resorts = systemPackages;
+ }
+ return resorts;
+ }
+
+ public boolean isEmpty() {
+ return headers.isEmpty();
+ }
+
+ public Enumeration keys() {
+ return headers.keys();
+ }
+
+ public Object put(Object key, Object value) {
+ return headers.put(key, value);
+ }
+
+ public Object remove(Object key) {
+ return headers.remove(key);
+ }
+
+ public int size() {
+ return headers.size();
+ }
+
+ }
+
ProtectionDomain systemDomain;
/**
@@ -289,4 +338,9 @@
protected void unresolvePermissions(AbstractBundle[] refreshedBundles) {
// Do nothing
}
+
+ public Dictionary getHeaders(String localeString) {
+ return new SystemBundleHeaders(super.getHeaders(localeString));
+ }
+
}