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