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