1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.bag;
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.Bag;
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
42
43
44 public final class UnmodifiableBag<E>
45 extends AbstractBagDecorator<E> implements Unmodifiable {
46
47
48 private static final long serialVersionUID = -1873799975157099624L;
49
50
51
52
53
54
55
56
57
58
59
60
61 public static <E> Bag<E> unmodifiableBag(final Bag<? extends E> bag) {
62 if (bag instanceof Unmodifiable) {
63 @SuppressWarnings("unchecked")
64 final Bag<E> tmpBag = (Bag<E>) bag;
65 return tmpBag;
66 }
67 return new UnmodifiableBag<>(bag);
68 }
69
70
71
72
73
74
75
76 @SuppressWarnings("unchecked")
77 private UnmodifiableBag(final Bag<? extends E> bag) {
78 super((Bag<E>) bag);
79 }
80
81 @Override
82 public boolean add(final E object) {
83 throw new UnsupportedOperationException();
84 }
85
86 @Override
87 public boolean add(final E object, final int count) {
88 throw new UnsupportedOperationException();
89 }
90
91 @Override
92 public boolean addAll(final Collection<? extends E> coll) {
93 throw new UnsupportedOperationException();
94 }
95
96 @Override
97 public void clear() {
98 throw new UnsupportedOperationException();
99 }
100
101 @Override
102 public Iterator<E> iterator() {
103 return UnmodifiableIterator.<E>unmodifiableIterator(decorated().iterator());
104 }
105
106
107
108
109
110
111
112
113
114 @SuppressWarnings("unchecked")
115 private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
116 in.defaultReadObject();
117 setCollection((Collection<E>) in.readObject());
118 }
119
120 @Override
121 public boolean remove(final Object object) {
122 throw new UnsupportedOperationException();
123 }
124
125 @Override
126 public boolean remove(final Object object, final int count) {
127 throw new UnsupportedOperationException();
128 }
129
130 @Override
131 public boolean removeAll(final Collection<?> coll) {
132 throw new UnsupportedOperationException();
133 }
134
135
136
137
138 @Override
139 public boolean removeIf(final Predicate<? super E> filter) {
140 throw new UnsupportedOperationException();
141 }
142
143 @Override
144 public boolean retainAll(final Collection<?> coll) {
145 throw new UnsupportedOperationException();
146 }
147
148 @Override
149 public Set<E> uniqueSet() {
150 final Set<E> set = decorated().uniqueSet();
151 return UnmodifiableSet.<E>unmodifiableSet(set);
152 }
153
154
155
156
157
158
159
160 private void writeObject(final ObjectOutputStream out) throws IOException {
161 out.defaultWriteObject();
162 out.writeObject(decorated());
163 }
164
165 }