1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.io;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * An EmulatedFieldsForLoading is an object that represents a set of emulated
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * fields for an object being loaded. It is a concrete implementation for
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ObjectInputStream.GetField
24f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see ObjectInputStream.GetField
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see EmulatedFieldsForDumping
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass EmulatedFieldsForLoading extends ObjectInputStream.GetField {
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // The class descriptor with the declared fields the receiver emulates
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private ObjectStreamClass streamClass;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // The actual representation, with a more powerful API (set&get)
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private EmulatedFields emulatedFields;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Constructs a new instance of EmulatedFieldsForDumping.
38f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param streamClass
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            an ObjectStreamClass, defining the class for which to emulate
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            fields.
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    EmulatedFieldsForLoading(ObjectStreamClass streamClass) {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.streamClass = streamClass;
4532c2297a959b72abdb18743f0519e1d8b7c7ea88Elliott Hughes        emulatedFields = new EmulatedFields(streamClass.getLoadFields(), streamClass.fields());
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return a boolean indicating if the field named <code>name</code> has
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * been assigned a value explicitly (false) or if it still holds a default
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * value for the type (true) because it hasn't been assigned to yet.
52f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to test
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return <code>true</code> if the field holds it default value,
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         <code>false</code> otherwise.
57f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean defaulted(String name) throws IOException,
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.defaulted(name);
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the actual EmulatedFields instance used by the receiver. We have
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the actual work in a separate class so that the code can be shared. The
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * receiver has to be of a subclass of GetField.
73f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return array of ObjectSlot the receiver represents.
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    EmulatedFields emulatedFields() {
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields;
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the byte value of a given field named <code>name</code>
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
84f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
91f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public byte get(String name, byte defaultValue) throws IOException,
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the char value of a given field named <code>name</code>
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
107f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
114f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public char get(String name, char defaultValue) throws IOException,
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the double value of a given field named <code>name</code>
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
130f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
137f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public double get(String name, double defaultValue) throws IOException,
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the float value of a given field named <code>name</code>
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
153f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
160f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public float get(String name, float defaultValue) throws IOException,
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the int value of a given field named <code>name</code>
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
183f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int get(String name, int defaultValue) throws IOException,
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the long value of a given field named <code>name</code>
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
206f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public long get(String name, long defaultValue) throws IOException,
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the Object value of a given field named <code>name</code>
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
222f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
229f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Object get(String name, Object defaultValue) throws IOException,
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the short value of a given field named <code>name</code>
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the receiver. If the field has not been assigned any value yet, the
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * default value <code>defaultValue</code> is returned instead.
245f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
252f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public short get(String name, short defaultValue) throws IOException,
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Find and return the boolean value of a given field named
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <code>name</code> in the receiver. If the field has not been assigned
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * any value yet, the default value <code>defaultValue</code> is returned
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * instead.
269f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            A String, the name of the field to find
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param defaultValue
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            Return value in case the field has not been assigned to yet.
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the value of the given field if it has been assigned, or the
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         default value otherwise
276f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If an IO error occurs
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             If the corresponding field can not be found.
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean get(String name, boolean defaultValue) throws IOException,
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            IllegalArgumentException {
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return emulatedFields.get(name, defaultValue);
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the class descriptor for which the emulated fields are defined.
290f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return ObjectStreamClass The class descriptor for which the emulated
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         fields are defined.
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ObjectStreamClass getObjectStreamClass() {
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return streamClass;
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
299