387208: basic utilities for case insensitivity improvements
diff --git a/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/CaseInsensitiveMap.java b/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/CaseInsensitiveMap.java
index 27edf0e..f2a78d4 100644
--- a/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/CaseInsensitiveMap.java
+++ b/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/CaseInsensitiveMap.java
@@ -346,6 +346,9 @@
}
+ public CaseInsensitiveMap(CaseInsensitiveMap<? extends V> map) {
+ this.map.putAll(map.map);
+ }
/**
* {@inheritDoc}
*/
diff --git a/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/IteratorToEnumerationAdapter.java b/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/IteratorToEnumerationAdapter.java
new file mode 100644
index 0000000..8b264ee
--- /dev/null
+++ b/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/IteratorToEnumerationAdapter.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package org.eclipse.virgo.util.common;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+
+/**
+ * {@link IteratorToEnumerationAdapter} adapts an {@link Iterator} to conform to the {@link Enumeration} interface.
+ * <p />
+ *
+ * <strong>Concurrent Semantics</strong><br />
+ * Thread safe.
+ */
+public class IteratorToEnumerationAdapter<T> implements Enumeration<T> {
+
+ private final Iterator<T> iterator;
+
+ public IteratorToEnumerationAdapter(Iterator<T> iterator) {
+ this.iterator = iterator;
+ }
+
+ @Override
+ public boolean hasMoreElements() {
+ return iterator.hasNext();
+ }
+
+ @Override
+ public T nextElement() {
+ // TODO Auto-generated method stub
+ return iterator.next();
+ }
+
+}
diff --git a/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/MapToDictionaryAdapter.java b/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/MapToDictionaryAdapter.java
new file mode 100644
index 0000000..85216f6
--- /dev/null
+++ b/org.eclipse.virgo.util.common/src/main/java/org/eclipse/virgo/util/common/MapToDictionaryAdapter.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2012 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package org.eclipse.virgo.util.common;
+
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.Map;
+
+/**
+ * {@link MapToDictionaryAdapter} adapts a {@link Map} instance to conform to the {@link Dictionary} interface.
+ * <p />
+ *
+ * <strong>Concurrent Semantics</strong><br />
+ * Thread safe.
+ */
+public class MapToDictionaryAdapter<K, V> extends Dictionary<K, V> {
+
+ private final Map<K, V> map;
+
+ public MapToDictionaryAdapter(Map<K, V> map) {
+ this.map = map;
+ }
+
+ @Override
+ public int size() {
+ return map.size();
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return map.isEmpty();
+ }
+
+ @Override
+ public Enumeration<K> keys() {
+ return new IteratorToEnumerationAdapter<K>(map.keySet().iterator());
+ }
+
+ @Override
+ public Enumeration<V> elements() {
+ return new IteratorToEnumerationAdapter<V>(map.values().iterator());
+ }
+
+ @Override
+ public V get(Object key) {
+ return this.map.get(key);
+ }
+
+ @Override
+ public V put(K key, V value) {
+ return this.map.put(key, value);
+ }
+
+ @Override
+ public V remove(Object key) {
+ return this.map.remove(key);
+ }
+
+}
diff --git a/org.eclipse.virgo.util.osgi.manifest/src/main/java/org/eclipse/virgo/util/osgi/manifest/internal/StandardBundleManifest.java b/org.eclipse.virgo.util.osgi.manifest/src/main/java/org/eclipse/virgo/util/osgi/manifest/internal/StandardBundleManifest.java
index 0bb7645..e56e461 100755
--- a/org.eclipse.virgo.util.osgi.manifest/src/main/java/org/eclipse/virgo/util/osgi/manifest/internal/StandardBundleManifest.java
+++ b/org.eclipse.virgo.util.osgi.manifest/src/main/java/org/eclipse/virgo/util/osgi/manifest/internal/StandardBundleManifest.java
@@ -334,10 +334,7 @@
public Dictionary<String, String> toDictionary() {
synchroniseContentsWithHeaders();
- Hashtable<String, String> output = new Hashtable<String, String>();
- output.putAll(this.contents);
-
- return output;
+ return new MapToDictionaryAdapter(new CaseInsensitiveMap<String>(this.contents));
}
/**