1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.list;
18
19 import java.util.Collection;
20 import java.util.Iterator;
21 import java.util.List;
22 import java.util.ListIterator;
23 import java.util.function.Predicate;
24
25 import org.apache.commons.collections4.BoundedCollection;
26 import org.apache.commons.collections4.iterators.AbstractListIteratorDecorator;
27 import org.apache.commons.collections4.iterators.UnmodifiableIterator;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 public class FixedSizeList<E>
49 extends AbstractSerializableListDecorator<E>
50 implements BoundedCollection<E> {
51
52
53
54
55 private final class FixedSizeListIterator extends AbstractListIteratorDecorator<E> {
56 protected FixedSizeListIterator(final ListIterator<E> iterator) {
57 super(iterator);
58 }
59 @Override
60 public void add(final Object object) {
61 throw unsupportedOperationException();
62 }
63 @Override
64 public void remove() {
65 throw unsupportedOperationException();
66 }
67 }
68
69
70 private static final long serialVersionUID = -2218010673611160319L;
71
72
73
74
75
76
77
78
79
80
81 public static <E> FixedSizeList<E> fixedSizeList(final List<E> list) {
82 return new FixedSizeList<>(list);
83 }
84
85
86
87
88
89
90 private static UnsupportedOperationException unsupportedOperationException() {
91 return new UnsupportedOperationException("List is fixed size");
92 }
93
94
95
96
97
98
99
100 protected FixedSizeList(final List<E> list) {
101 super(list);
102 }
103
104 @Override
105 public boolean add(final E object) {
106 throw unsupportedOperationException();
107 }
108
109 @Override
110 public void add(final int index, final E object) {
111 throw unsupportedOperationException();
112 }
113
114 @Override
115 public boolean addAll(final Collection<? extends E> coll) {
116 throw unsupportedOperationException();
117 }
118
119 @Override
120 public boolean addAll(final int index, final Collection<? extends E> coll) {
121 throw unsupportedOperationException();
122 }
123
124 @Override
125 public void clear() {
126 throw unsupportedOperationException();
127 }
128
129 @Override
130 public E get(final int index) {
131 return decorated().get(index);
132 }
133
134 @Override
135 public int indexOf(final Object object) {
136 return decorated().indexOf(object);
137 }
138
139 @Override
140 public boolean isFull() {
141 return true;
142 }
143
144 @Override
145 public Iterator<E> iterator() {
146 return UnmodifiableIterator.unmodifiableIterator(decorated().iterator());
147 }
148
149 @Override
150 public int lastIndexOf(final Object object) {
151 return decorated().lastIndexOf(object);
152 }
153
154 @Override
155 public ListIterator<E> listIterator() {
156 return new FixedSizeListIterator(decorated().listIterator(0));
157 }
158
159 @Override
160 public ListIterator<E> listIterator(final int index) {
161 return new FixedSizeListIterator(decorated().listIterator(index));
162 }
163
164 @Override
165 public int maxSize() {
166 return size();
167 }
168
169 @Override
170 public E remove(final int index) {
171 throw unsupportedOperationException();
172 }
173
174 @Override
175 public boolean remove(final Object object) {
176 throw unsupportedOperationException();
177 }
178
179 @Override
180 public boolean removeAll(final Collection<?> coll) {
181 throw unsupportedOperationException();
182 }
183
184
185
186
187 @Override
188 public boolean removeIf(final Predicate<? super E> filter) {
189 throw unsupportedOperationException();
190 }
191
192 @Override
193 public boolean retainAll(final Collection<?> coll) {
194 throw unsupportedOperationException();
195 }
196
197 @Override
198 public E set(final int index, final E object) {
199 return decorated().set(index, object);
200 }
201
202 @Override
203 public List<E> subList(final int fromIndex, final int toIndex) {
204 final List<E> sub = decorated().subList(fromIndex, toIndex);
205 return new FixedSizeList<>(sub);
206 }
207
208 }