1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.multiset;
18
19 import java.io.IOException;
20 import java.io.ObjectInputStream;
21 import java.io.ObjectOutputStream;
22 import java.util.Collection;
23 import java.util.Iterator;
24 import java.util.Set;
25 import java.util.function.Predicate;
26
27 import org.apache.commons.collections4.MultiSet;
28 import org.apache.commons.collections4.Unmodifiable;
29 import org.apache.commons.collections4.iterators.UnmodifiableIterator;
30 import org.apache.commons.collections4.set.UnmodifiableSet;
31
32
33
34
35
36
37
38
39
40
41 public final class UnmodifiableMultiSet<E>
42 extends AbstractMultiSetDecorator<E> implements Unmodifiable {
43
44
45 private static final long serialVersionUID = 20150611L;
46
47
48
49
50
51
52
53
54
55
56
57 public static <E> MultiSet<E> unmodifiableMultiSet(final MultiSet<? extends E> multiset) {
58 if (multiset instanceof Unmodifiable) {
59 @SuppressWarnings("unchecked")
60 final MultiSet<E> tmpMultiSet = (MultiSet<E>) multiset;
61 return tmpMultiSet;
62 }
63 return new UnmodifiableMultiSet<>(multiset);
64 }
65
66
67
68
69
70
71
72
73 @SuppressWarnings("unchecked")
74 private UnmodifiableMultiSet(final MultiSet<? extends E> multiset) {
75 super((MultiSet<E>) multiset);
76 }
77
78
79
80
81
82
83
84
85 private void writeObject(final ObjectOutputStream out) throws IOException {
86 out.defaultWriteObject();
87 out.writeObject(decorated());
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 setCollection((Collection<E>) in.readObject());
102 }
103
104
105 @Override
106 public Iterator<E> iterator() {
107 return UnmodifiableIterator.<E> unmodifiableIterator(decorated().iterator());
108 }
109
110 @Override
111 public boolean add(final E object) {
112 throw new UnsupportedOperationException();
113 }
114
115 @Override
116 public boolean addAll(final Collection<? extends E> coll) {
117 throw new UnsupportedOperationException();
118 }
119
120 @Override
121 public void clear() {
122 throw new UnsupportedOperationException();
123 }
124
125 @Override
126 public boolean remove(final Object object) {
127 throw new UnsupportedOperationException();
128 }
129
130
131
132
133 @Override
134 public boolean removeIf(Predicate<? super E> filter) {
135 throw new UnsupportedOperationException();
136 }
137
138 @Override
139 public boolean removeAll(final Collection<?> coll) {
140 throw new UnsupportedOperationException();
141 }
142
143 @Override
144 public boolean retainAll(final Collection<?> coll) {
145 throw new UnsupportedOperationException();
146 }
147
148
149 @Override
150 public int setCount(final E object, final int count) {
151 throw new UnsupportedOperationException();
152 }
153
154 @Override
155 public int add(final E object, final int count) {
156 throw new UnsupportedOperationException();
157 }
158
159 @Override
160 public int remove(final Object object, final int count) {
161 throw new UnsupportedOperationException();
162 }
163
164 @Override
165 public Set<E> uniqueSet() {
166 final Set<E> set = decorated().uniqueSet();
167 return UnmodifiableSet.unmodifiableSet(set);
168 }
169
170 @Override
171 public Set<MultiSet.Entry<E>> entrySet() {
172 final Set<MultiSet.Entry<E>> set = decorated().entrySet();
173 return UnmodifiableSet.unmodifiableSet(set);
174 }
175
176 }