View Javadoc

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 }