extract Put, Get, and IterableGet interfaces from IterableMap such that our Maps, which all implement IterableMap, can have their read/write functionality exposed separately.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/branches/collections_jdk5_branch@751890 13f79535-47bb-0310-9956-ffa450edef68 Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/86b30a0e Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/86b30a0e Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/86b30a0e Branch: refs/heads/collections_jdk5_branch Commit: 86b30a0eff32757a52b7ea7cf1c58dab92566289 Parents: 7cb8edc Author: Matthew Jason Benson <mben...@apache.org> Authored: Mon Mar 9 22:45:37 2009 +0000 Committer: Matthew Jason Benson <mben...@apache.org> Committed: Mon Mar 9 22:45:37 2009 +0000 ---------------------------------------------------------------------- .../org/apache/commons/collections/Get.java | 77 ++++++++++++++++++++ .../apache/commons/collections/IterableGet.java | 49 +++++++++++++ .../apache/commons/collections/IterableMap.java | 22 +----- .../org/apache/commons/collections/Put.java | 46 ++++++++++++ 4 files changed, 173 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/86b30a0e/src/java/org/apache/commons/collections/Get.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/Get.java b/src/java/org/apache/commons/collections/Get.java new file mode 100644 index 0000000..8447076 --- /dev/null +++ b/src/java/org/apache/commons/collections/Get.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.collections; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +/** + * The "read" subset of the {@link Map} interface. + * @since Commons Collections 5 + * @TODO fix version + * @version $Revision$ $Date$ + * @see Put + * @author Matt Benson + */ +public interface Get<K, V> { + + /** + * @see Map#containsKey(Object) + */ + public boolean containsKey(Object key); + + /** + * @see Map#containsValue(Object) + */ + public boolean containsValue(Object value); + + /** + * @see Map#entrySet() + */ + public Set<java.util.Map.Entry<K, V>> entrySet(); + + /** + * @see Map#get(Object) + */ + public V get(Object key); + + /** + * @see Map#remove(Object) + */ + public V remove(Object key); + + /** + * @see Map#isEmpty() + */ + public boolean isEmpty(); + + /** + * @see Map#keySet() + */ + public Set<K> keySet(); + + /** + * @see Map#size() + */ + public int size(); + + /** + * @see Map#values() + */ + public Collection<V> values(); +} http://git-wip-us.apache.org/repos/asf/commons-collections/blob/86b30a0e/src/java/org/apache/commons/collections/IterableGet.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/IterableGet.java b/src/java/org/apache/commons/collections/IterableGet.java new file mode 100644 index 0000000..0d10d7b --- /dev/null +++ b/src/java/org/apache/commons/collections/IterableGet.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.collections; + +import java.util.Map; + +/** + * The "read" subset of the {@link Map} interface. + * @since Commons Collections 5 + * @TODO fix version + * @version $Revision$ $Date$ + * @see Put + * @author Matt Benson + */ +public interface IterableGet<K, V> extends Get<K, V> { + /** + * Obtains a <code>MapIterator</code> over the map. + * <p> + * A map iterator is an efficient way of iterating over maps. + * There is no need to access the entry set or use Map Entry objects. + * <pre> + * IterableMap<String,Integer> map = new HashedMap<String,Integer>(); + * MapIterator<String,Integer> it = map.mapIterator(); + * while (it.hasNext()) { + * String key = it.next(); + * Integer value = it.getValue(); + * it.setValue(value + 1); + * } + * </pre> + * + * @return a map iterator + */ + MapIterator<K, V> mapIterator(); + +} http://git-wip-us.apache.org/repos/asf/commons-collections/blob/86b30a0e/src/java/org/apache/commons/collections/IterableMap.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/IterableMap.java b/src/java/org/apache/commons/collections/IterableMap.java index b4b92e7..91e6256 100644 --- a/src/java/org/apache/commons/collections/IterableMap.java +++ b/src/java/org/apache/commons/collections/IterableMap.java @@ -40,25 +40,5 @@ import java.util.Map; * * @author Stephen Colebourne */ -public interface IterableMap<K, V> extends Map<K, V> { - - /** - * Obtains a <code>MapIterator</code> over the map. - * <p> - * A map iterator is an efficient way of iterating over maps. - * There is no need to access the entry set or use Map Entry objects. - * <pre> - * IterableMap<String,Integer> map = new HashedMap<String,Integer>(); - * MapIterator<String,Integer> it = map.mapIterator(); - * while (it.hasNext()) { - * String key = it.next(); - * Integer value = it.getValue(); - * it.setValue(value + 1); - * } - * </pre> - * - * @return a map iterator - */ - MapIterator<K, V> mapIterator(); - +public interface IterableMap<K, V> extends Map<K, V>, Put<K, V>, IterableGet<K, V> { } http://git-wip-us.apache.org/repos/asf/commons-collections/blob/86b30a0e/src/java/org/apache/commons/collections/Put.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/Put.java b/src/java/org/apache/commons/collections/Put.java new file mode 100644 index 0000000..ee55a28 --- /dev/null +++ b/src/java/org/apache/commons/collections/Put.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.collections; + +import java.util.Map; + +/** + * The "write" subset of the {@link Map} interface. + * @since Commons Collections 5 + * @TODO fix version + * @version $Revision$ $Date$ + * @see Get + * @author Matt Benson + */ +public interface Put<K, V> { + + /** + * @see Map#clear() + */ + public void clear(); + + /** + * @see Map#put(Object, Object) + */ + public Object put(K key, V value); + + /** + * @see Map#putAll(Map) + */ + public void putAll(Map<? extends K, ? extends V> t); + +}