1 /* 2 * Copyright 2003-2004 The Apache Software Foundation 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.apache.commons.convert1.util; 17 18 import java.util.Collection; 19 import java.util.Map; 20 import java.util.Set; 21 22 /** 23 * <p>This <code>Map</code> wraps another <code>Map</code> 24 * implementation, using the wrapped instance for its default 25 * implementation. This class is used as a framework on which to 26 * build to extensions for its wrapped <code>Map</code> object which 27 * would be unavailable or inconvenient via sub-classing (but usable 28 * via composition).</p> 29 * 30 * <p>This implementation does not perform any special processing with 31 * {@link #entrySet()}, {@link #keySet()} or {@link #values()}. Instead 32 * it simply returns the set/collection from the wrapped map. This may be 33 * undesirable, for example if you are trying to write a validating 34 * implementation it would provide a loophole around the validation. But, 35 * you might want that loophole, so this class is kept simple.</p> 36 * 37 * @deprecated This class has been moved to the decorators sub-package 38 * and renamed to AbstractMapDecorator. It will be removed in v4.0. 39 * @since Commons Collections 2.0 40 * @version $Id: ProxyMap.java 155441 2005-02-26 13:19:22Z dirkv $ 41 * 42 * @author <a href="mailto:dlr@collab.net">Daniel Rall</a> 43 * @author Stephen Colebourne 44 */ 45 abstract class ProxyMap implements Map { 46 47 /** 48 * The <code>Map</code> to delegate to. 49 */ 50 protected Map map; 51 52 /** 53 * Constructor that uses the specified map to delegate to. 54 * <p> 55 * Note that the map is used for delegation, and is not copied. This is 56 * different to the normal use of a <code>Map</code> parameter in 57 * collections constructors. 58 * 59 * @param map the <code>Map</code> to delegate to 60 */ 61 public ProxyMap(Map map) { 62 this.map = map; 63 } 64 65 /** 66 * Invokes the underlying {@link Map#clear()} method. 67 */ 68 public void clear() { 69 map.clear(); 70 } 71 72 /** 73 * Invokes the underlying {@link Map#containsKey(Object)} method. 74 */ 75 public boolean containsKey(Object key) { 76 return map.containsKey(key); 77 } 78 79 /** 80 * Invokes the underlying {@link Map#containsValue(Object)} method. 81 */ 82 public boolean containsValue(Object value) { 83 return map.containsValue(value); 84 } 85 86 /** 87 * Invokes the underlying {@link Map#entrySet()} method. 88 */ 89 public Set entrySet() { 90 return map.entrySet(); 91 } 92 93 /** 94 * Invokes the underlying {@link Map#equals(Object)} method. 95 */ 96 public boolean equals(Object m) { 97 return map.equals(m); 98 } 99 100 /** 101 * Invokes the underlying {@link Map#get(Object)} method. 102 */ 103 public Object get(Object key) { 104 return map.get(key); 105 } 106 107 /** 108 * Invokes the underlying {@link Map#hashCode()} method. 109 */ 110 public int hashCode() { 111 return map.hashCode(); 112 } 113 114 /** 115 * Invokes the underlying {@link Map#isEmpty()} method. 116 */ 117 public boolean isEmpty() { 118 return map.isEmpty(); 119 } 120 121 /** 122 * Invokes the underlying {@link Map#keySet()} method. 123 */ 124 public Set keySet() { 125 return map.keySet(); 126 } 127 128 /** 129 * Invokes the underlying {@link Map#put(Object,Object)} method. 130 */ 131 public Object put(Object key, Object value) { 132 return map.put(key, value); 133 } 134 135 /** 136 * Invokes the underlying {@link Map#putAll(Map)} method. 137 */ 138 public void putAll(Map t) { 139 map.putAll(t); 140 } 141 142 /** 143 * Invokes the underlying {@link Map#remove(Object)} method. 144 */ 145 public Object remove(Object key) { 146 return map.remove(key); 147 } 148 149 /** 150 * Invokes the underlying {@link Map#size()} method. 151 */ 152 public int size() { 153 return map.size(); 154 } 155 156 /** 157 * Invokes the underlying {@link Map#values()} method. 158 */ 159 public Collection values() { 160 return map.values(); 161 } 162 163 }