ShadowParcel.java revision 7124c809f1a3a49cc0c6e2fb36972155fd00e796
1cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampackage com.xtremelabs.robolectric.shadows;
2cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham
3cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport android.os.Parcel;
46ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkelimport android.os.Parcelable;
54851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkelimport android.os.Bundle;
6cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.Robolectric;
7cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implementation;
8cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implements;
9cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham
10e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.ArrayList;
11e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.List;
12e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
13cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham@Implements(Parcel.class)
146ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel@SuppressWarnings("unchecked")
15cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampublic class ShadowParcel {
160373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    private final ArrayList parcelData = new ArrayList();
177598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    private int index = 0;
187598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
197598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
207598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public static Parcel obtain() {
217598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return Robolectric.newInstanceOf(Parcel.class);
227598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
237598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
247598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
257598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public void writeString(String str) {
267598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        if (str == null) {
277598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz            return;
287598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        }
297598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        parcelData.add(str);
307598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
317598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
327598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
337598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public void writeInt(int i) {
347598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        parcelData.add(i);
357598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
367598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
377598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
38e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    public void writeLong(long i) {
39e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson        parcelData.add(i);
40e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    }
414851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
420fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    @Implementation
43dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeFloat(float f) {
44dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        parcelData.add(f);
45dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
46dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
47dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
48dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeDouble(double f) {
49dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        parcelData.add(f);
50dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
51dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
52dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
530fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    @SuppressWarnings("unchecked")
540fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    public void writeByte( byte b ) {
550fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    	parcelData.add( b );
560fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    }
57e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
58e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    @Implementation
597598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public String readString() {
607598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index < parcelData.size() ? (String) parcelData.get(index++) : null;
617598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
627598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
637598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
647598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int readInt() {
657598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index < parcelData.size() ? (Integer) parcelData.get(index++) : 0;
667598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
677598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
68e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    @Implementation
69dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public float readFloat() {
70dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        return index < parcelData.size() ? (Float) parcelData.get(index++) : 0;
71dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
72dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
73dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
74dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public double readDouble() {
75dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        return index < parcelData.size() ? (Double) parcelData.get(index++) : 0;
76dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
77dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
78dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
790fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    public byte readByte() {
804851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        return index < parcelData.size() ? (Byte) parcelData.get(index++) : 0;
810fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    }
824851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
830fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    @Implementation
84e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    public long readLong() {
85e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson        return index < parcelData.size() ? (Long) parcelData.get(index++) : 0;
86e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    }
87e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
886ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    @Implementation
894851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    public Bundle readBundle() {
904851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        return index < parcelData.size() ? (Bundle) parcelData.get(index++) : null;
914851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    }
924851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
934851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    @Implementation
944851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    public Bundle readBundle(ClassLoader loader) {
954851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        return readBundle();
964851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    }
974851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
984851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    @Implementation
994851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    public void writeBundle(Bundle bundle) {
1004851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        parcelData.add(bundle);
1014851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    }
1024851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
1034851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    @Implementation
1046ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    public void writeParcelable(Parcelable p, int flags) {
1056ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel        parcelData.add(p);
1066ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    }
1076ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel
1086ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    @Implementation
1096ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    public Parcelable readParcelable(ClassLoader cl) {
1106ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel        return index < parcelData.size() ? (Parcelable) parcelData.get(index++) : null;
1116ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    }
1126ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel
113dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
114dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readFloatArray(float[] val) {
115dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
116dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
117dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int i = 0; i< val.length; i++) {
118dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readFloat();
119dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
120dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
121dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
122dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
123dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeFloatArray(float[] val) {
124dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
125dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (float f : val) writeFloat(f);
126dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
127dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
128dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
129dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeDoubleArray(double[] val) {
130dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
131dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (double f : val) writeDouble(f);
132dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
133dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
134dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
135dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readDoubleArray(double[] val) {
136dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
137dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
138dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int i = 0; i< val.length; i++) {
139dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readDouble();
140dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
141dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
142dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
143dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
144dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeIntArray(int[] val) {
145dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
146dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int f : val) writeInt(f);
147dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
148dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
149dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
150dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readIntArray(int[] val) {
151dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
152dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
153dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int i = 0; i< val.length; i++) {
154dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readInt();
155dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
156dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
157dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
158dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
1597124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy    public void writeByteArray(byte[] val) {
1607124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy        writeInt(val.length);
1617124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy        for (byte f : val) writeByte(f);
1627124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy    }
1637124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy
1647124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy    @Implementation
1657124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy    public void readByteArray(byte[] val) {
1667124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy        int n = readInt();
1677124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy        if (val.length != n) throw new RuntimeException("bad array lengths");
1687124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy        for (int i = 0; i< val.length; i++) {
1697124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy            val[i] = readByte();
1707124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy        }
1717124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy    }
1727124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy
1737124c809f1a3a49cc0c6e2fb36972155fd00e796John Stuppy    @Implementation
174dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeLongArray(long[] val) {
175dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
176dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (long f : val) writeLong(f);
177dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
178dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
179dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
180dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readLongArray(long[] val) {
181dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
182dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
183dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int i = 0; i< val.length; i++) {
184dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readLong();
185dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
186dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
187dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
188dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
189dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeStringArray(String[] val) {
190dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
191dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (String f : val) writeString(f);
192dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
193dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
194dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
1950373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    public String[] createStringArray() {
1960373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        String[] array = null;
1970373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen
1980373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        int length = readInt();
1990373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        if (length >= 0) {
2000373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            array = new String[length];
2010373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            for (int i = 0; i < length; i++) {
2020373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen                array[i] = readString();
2030373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            }
2040373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2050373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        return array;
2060373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    }
2070373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen
2080373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    @Implementation
209dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readStringArray(String[] val) {
210dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
211dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
212dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int i = 0; i< val.length; i++) {
213dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readString();
214dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
215dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
216dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
2170373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    @Implementation
2180373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    public void writeStringList(List<String> val) {
2190373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        int N = val.size();
2200373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        writeInt(N);
2210373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        for (int i = 0; i < N; i++) {
2220373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            writeString(val.get(i));
2230373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2240373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    }
225dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
2260373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    @Implementation
2270373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    public ArrayList<String> createStringArrayList() {
2280373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        int N = readInt();
2290373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        if (N < 0) {
2300373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            return null;
2310373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2320373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        ArrayList<String> l = new ArrayList<String>(N);
2330373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        while (N > 0) {
2340373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            l.add(readString());
2350373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            N--;
2360373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2370373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        return l;
2380373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    }
239dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
2400373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    @Implementation
2410373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    public void readStringList(List<String> list) {
2420373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        int M = list.size();
2430373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        int N = readInt();
2440373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        int i = 0;
2450373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        for (; i < M && i < N; i++) {
2460373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            list.set(i, readString());
2470373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2480373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        for (; i < N; i++) {
2490373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            list.add(readString());
2500373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2510373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        for (; i < M; i++) {
2520373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen            list.remove(N);
2530373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen        }
2540373fcde8d3df449d4db2d4cfd671fef219d85ddJon Boekenoogen    }
255dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
2567598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int getIndex() {
2577598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index;
2587598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
2597598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
2607598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public List getParcelData() {
2617598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return parcelData;
2627598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
263cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham}
264