• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc.  All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd
7 
8 package com.google.protobuf;
9 
10 import java.util.AbstractList;
11 import java.util.Collection;
12 import java.util.Collections;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.ListIterator;
16 import java.util.RandomAccess;
17 
18 /**
19  * An implementation of {@link LazyStringList} that wraps another {@link LazyStringList} such that
20  * it cannot be modified via the wrapper.
21  *
22  * @author jonp@google.com (Jon Perlow)
23  * @deprecated use {@link LazyStringArrayList#makeImmutable} instead.
24  */
25 @Deprecated
26 public class UnmodifiableLazyStringList extends AbstractList<String>
27     implements LazyStringList, RandomAccess {
28 
29   private final LazyStringList list;
30 
UnmodifiableLazyStringList(LazyStringList list)31   public UnmodifiableLazyStringList(LazyStringList list) {
32     this.list = list;
33   }
34 
35   @Override
get(int index)36   public String get(int index) {
37     return list.get(index);
38   }
39 
40   @Override
getRaw(int index)41   public Object getRaw(int index) {
42     return list.getRaw(index);
43   }
44 
45   @Override
size()46   public int size() {
47     return list.size();
48   }
49 
50   @Override
getByteString(int index)51   public ByteString getByteString(int index) {
52     return list.getByteString(index);
53   }
54 
55   @Override
add(ByteString element)56   public void add(ByteString element) {
57     throw new UnsupportedOperationException();
58   }
59 
60   @Override
set(int index, ByteString element)61   public void set(int index, ByteString element) {
62     throw new UnsupportedOperationException();
63   }
64 
65   @Override
addAllByteString(Collection<? extends ByteString> element)66   public boolean addAllByteString(Collection<? extends ByteString> element) {
67     throw new UnsupportedOperationException();
68   }
69 
70   @Override
getByteArray(int index)71   public byte[] getByteArray(int index) {
72     return list.getByteArray(index);
73   }
74 
75   @Override
add(byte[] element)76   public void add(byte[] element) {
77     throw new UnsupportedOperationException();
78   }
79 
80   @Override
set(int index, byte[] element)81   public void set(int index, byte[] element) {
82     throw new UnsupportedOperationException();
83   }
84 
85   @Override
addAllByteArray(Collection<byte[]> element)86   public boolean addAllByteArray(Collection<byte[]> element) {
87     throw new UnsupportedOperationException();
88   }
89 
90   @Override
listIterator(final int index)91   public ListIterator<String> listIterator(final int index) {
92     return new ListIterator<String>() {
93       ListIterator<String> iter = list.listIterator(index);
94 
95       @Override
96       public boolean hasNext() {
97         return iter.hasNext();
98       }
99 
100       @Override
101       public String next() {
102         return iter.next();
103       }
104 
105       @Override
106       public boolean hasPrevious() {
107         return iter.hasPrevious();
108       }
109 
110       @Override
111       public String previous() {
112         return iter.previous();
113       }
114 
115       @Override
116       public int nextIndex() {
117         return iter.nextIndex();
118       }
119 
120       @Override
121       public int previousIndex() {
122         return iter.previousIndex();
123       }
124 
125       @Override
126       public void remove() {
127         throw new UnsupportedOperationException();
128       }
129 
130       @Override
131       public void set(String o) {
132         throw new UnsupportedOperationException();
133       }
134 
135       @Override
136       public void add(String o) {
137         throw new UnsupportedOperationException();
138       }
139     };
140   }
141 
142   @Override
iterator()143   public Iterator<String> iterator() {
144     return new Iterator<String>() {
145       Iterator<String> iter = list.iterator();
146 
147       @Override
148       public boolean hasNext() {
149         return iter.hasNext();
150       }
151 
152       @Override
153       public String next() {
154         return iter.next();
155       }
156 
157       @Override
158       public void remove() {
159         throw new UnsupportedOperationException();
160       }
161     };
162   }
163 
164   @Override
165   public List<?> getUnderlyingElements() {
166     // The returned value is already unmodifiable.
167     return list.getUnderlyingElements();
168   }
169 
170   @Override
171   public void mergeFrom(LazyStringList other) {
172     throw new UnsupportedOperationException();
173   }
174 
175   @Override
176   public List<byte[]> asByteArrayList() {
177     return Collections.unmodifiableList(list.asByteArrayList());
178   }
179 
180   @Override
181   public List<ByteString> asByteStringList() {
182     return Collections.unmodifiableList(list.asByteStringList());
183   }
184 
185   @Override
186   public LazyStringList getUnmodifiableView() {
187     return this;
188   }
189 }
190