Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.osgi')
-rw-r--r--bundles/org.eclipse.osgi/META-INF/MANIFEST.MF2
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/framework/util/CaseInsensitiveDictionaryMap.java49
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java6
-rw-r--r--bundles/org.eclipse.osgi/pom.xml2
4 files changed, 31 insertions, 28 deletions
diff --git a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
index 0f7985ae0..0978188c2 100644
--- a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
@@ -103,7 +103,7 @@ Bundle-Activator: org.eclipse.osgi.internal.framework.SystemBundleActivator
Bundle-Description: %systemBundle
Bundle-Copyright: %copyright
Bundle-Vendor: %eclipse.org
-Bundle-Version: 3.12.0.qualifier
+Bundle-Version: 3.12.1.qualifier
Bundle-Localization: systembundle
Bundle-DocUrl: http://www.eclipse.org
Eclipse-ExtensibleAPI: true
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/framework/util/CaseInsensitiveDictionaryMap.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/framework/util/CaseInsensitiveDictionaryMap.java
index 545cc9008..a4700be3e 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/framework/util/CaseInsensitiveDictionaryMap.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/framework/util/CaseInsensitiveDictionaryMap.java
@@ -59,8 +59,15 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
Enumeration<? extends K> keys = dictionary.keys();
while (keys.hasMoreElements()) {
K key = keys.nextElement();
- if (put(key, dictionary.get(key)) != null) {
- throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, key));
+ // ignore null keys
+ if (key != null) {
+ V value = dictionary.get(key);
+ // ignore null values
+ if (value != null) {
+ if (put(key, value) != null) {
+ throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, key));
+ }
+ }
}
}
}
@@ -76,8 +83,16 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
this(initialCapacity(map.size()));
/* initialize the keys and values */
for (Entry<? extends K, ? extends V> e : map.entrySet()) {
- if (put(e.getKey(), e.getValue()) != null) {
- throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, e.getKey()));
+ K key = e.getKey();
+ // ignore null keys
+ if (key != null) {
+ V value = e.getValue();
+ // ignore null values
+ if (value != null) {
+ if (put(key, value) != null) {
+ throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, key));
+ }
+ }
}
}
}
@@ -112,13 +127,11 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
/**
* {@inheritDoc}
* <p>
- * The key must be non-null.
- * <p>
* If the key is a String, the key is located in a case-insensitive manner.
*/
@Override
public V get(Object key) {
- return map.get(keyWrap(requireNonNull(key)));
+ return map.get(keyWrap(key));
}
/**
@@ -173,13 +186,11 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
/**
* {@inheritDoc}
* <p>
- * The key must be non-null.
- * <p>
* If the key is a String, the key is removed in a case-insensitive manner.
*/
@Override
public V remove(Object key) {
- return map.remove(keyWrap(requireNonNull(key)));
+ return map.remove(keyWrap(key));
}
/**
@@ -201,23 +212,19 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
/**
* {@inheritDoc}
* <p>
- * The key must be non-null.
- * <p>
* If the key is a String, the key is located in a case-insensitive manner.
*/
@Override
public boolean containsKey(Object key) {
- return map.containsKey(keyWrap(requireNonNull(key)));
+ return map.containsKey(keyWrap(key));
}
/**
* {@inheritDoc}
- * <p>
- * The value must be non-null.
*/
@Override
public boolean containsValue(Object value) {
- return map.containsValue(requireNonNull(value));
+ return map.containsValue(value);
}
private transient Set<Entry<K, V>> entrySet = null;
@@ -556,7 +563,7 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
@Override
public int hashCode() {
- return entry.getKey().hashCode() ^ entry.getValue().hashCode();
+ return Objects.hashCode(entry.getKey()) ^ Objects.hashCode(entry.getValue());
}
@Override
@@ -566,13 +573,7 @@ public class CaseInsensitiveDictionaryMap<K, V> extends Dictionary<K, V> impleme
Object k1 = entry.getKey();
@SuppressWarnings("unchecked")
Object k2 = (other instanceof CaseInsentiveEntry) ? ((CaseInsentiveEntry<K, V>) other).entry.getKey() : other.getKey();
- if ((k1 == k2) || k1.equals(k2)) {
- Object v1 = entry.getValue();
- Object v2 = other.getValue();
- if ((v1 == v2) || v1.equals(v2)) {
- return true;
- }
- }
+ return Objects.equals(k1, k2) && Objects.equals(entry.getValue(), other.getValue());
}
return false;
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java
index b875b6cf3..b6646d431 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java
@@ -54,7 +54,8 @@ class ServiceProperties extends CaseInsensitiveDictionaryMap<String, Object> {
Object key = keysEnum.nextElement();
if (key instanceof String) {
String header = (String) key;
- if (put(header, cloneValue(props.get(header))) != null) {
+ Object value = cloneValue(props.get(header));
+ if (value != null && put(header, value) != null) {
throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, key));
}
}
@@ -79,7 +80,8 @@ class ServiceProperties extends CaseInsensitiveDictionaryMap<String, Object> {
Object key = e.getKey();
if (key instanceof String) {
String header = (String) key;
- if (put(header, cloneValue(e.getValue())) != null) {
+ Object value = cloneValue(props.get(header));
+ if (value != null && put(header, value) != null) {
throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, key));
}
}
diff --git a/bundles/org.eclipse.osgi/pom.xml b/bundles/org.eclipse.osgi/pom.xml
index 9e6a5f6c6..228ba6028 100644
--- a/bundles/org.eclipse.osgi/pom.xml
+++ b/bundles/org.eclipse.osgi/pom.xml
@@ -19,7 +19,7 @@
</parent>
<groupId>org.eclipse.osgi</groupId>
<artifactId>org.eclipse.osgi</artifactId>
- <version>3.12.0-SNAPSHOT</version>
+ <version>3.12.1-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<build>

Back to the top