1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections.map;
18
19 import java.io.IOException;
20 import java.io.ObjectInputStream;
21 import java.io.ObjectOutputStream;
22 import java.io.Serializable;
23 import java.util.Collection;
24 import java.util.Map;
25 import java.util.Set;
26
27 import org.apache.commons.collections.OrderedMap;
28 import org.apache.commons.collections.OrderedMapIterator;
29 import org.apache.commons.collections.Unmodifiable;
30 import org.apache.commons.collections.collection.UnmodifiableCollection;
31 import org.apache.commons.collections.iterators.UnmodifiableOrderedMapIterator;
32 import org.apache.commons.collections.set.UnmodifiableSet;
33
34
35
36
37
38
39
40
41
42
43
44 public final class UnmodifiableOrderedMap<K, V> extends AbstractOrderedMapDecorator<K, V> implements
45 Unmodifiable, Serializable {
46
47
48 private static final long serialVersionUID = 8136428161720526266L;
49
50
51
52
53
54
55
56
57
58
59 public static <K, V> OrderedMap<K, V> unmodifiableOrderedMap(final OrderedMap<K, V> map) {
60 if (map instanceof Unmodifiable) {
61 return map;
62 }
63 return new UnmodifiableOrderedMap<K, V>(map);
64 }
65
66
67
68
69
70
71
72
73 private UnmodifiableOrderedMap(final OrderedMap<K, V> map) {
74 super(map);
75 }
76
77
78
79
80
81
82
83
84
85 private void writeObject(final ObjectOutputStream out) throws IOException {
86 out.defaultWriteObject();
87 out.writeObject(map);
88 }
89
90
91
92
93
94
95
96
97
98 @SuppressWarnings("unchecked")
99 private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
100 in.defaultReadObject();
101 map = (Map<K, V>) in.readObject();
102 }
103
104
105 @Override
106 public OrderedMapIterator<K, V> mapIterator() {
107 final OrderedMapIterator<K, V> it = decorated().mapIterator();
108 return UnmodifiableOrderedMapIterator.unmodifiableOrderedMapIterator(it);
109 }
110
111 @Override
112 public void clear() {
113 throw new UnsupportedOperationException();
114 }
115
116 @Override
117 public V put(final K key, final V value) {
118 throw new UnsupportedOperationException();
119 }
120
121 @Override
122 public void putAll(final Map<? extends K, ? extends V> mapToCopy) {
123 throw new UnsupportedOperationException();
124 }
125
126 @Override
127 public V remove(final Object key) {
128 throw new UnsupportedOperationException();
129 }
130
131 @Override
132 public Set<Map.Entry<K, V>> entrySet() {
133 final Set<Map.Entry<K, V>> set = super.entrySet();
134 return UnmodifiableEntrySet.unmodifiableEntrySet(set);
135 }
136
137 @Override
138 public Set<K> keySet() {
139 final Set<K> set = super.keySet();
140 return UnmodifiableSet.unmodifiableSet(set);
141 }
142
143 @Override
144 public Collection<V> values() {
145 final Collection<V> coll = super.values();
146 return UnmodifiableCollection.unmodifiableCollection(coll);
147 }
148
149 }