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