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 EmulatedFieldsForDumping is an object that represents a set of emulated 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * fields for an object being dumped. It is a concrete implementation for 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ObjectOutputStream.PutField 24f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 25f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see ObjectOutputStream.PutField 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see EmulatedFieldsForLoading 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass EmulatedFieldsForDumping extends ObjectOutputStream.PutField { 30e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes // Record the ObjectOutputStream that created this PutField for checking in 'write'. 31e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes private final ObjectOutputStream oos; 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 * a ObjectStreamClass, which describe the fields to be emulated 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (names, types, etc). 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 43e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes EmulatedFieldsForDumping(ObjectOutputStream oos, ObjectStreamClass streamClass) { 44e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes this.oos = oos; 45e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes this.emulatedFields = new EmulatedFields(streamClass.fields(), (ObjectStreamField[]) null); 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Return the actual EmulatedFields instance used by the receiver. We have 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the actual work in a separate class so that the code can be shared. The 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * receiver has to be of a subclass of PutField. 52f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return array of ObjectSlot the receiver represents. 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project EmulatedFields emulatedFields() { 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return emulatedFields; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the byte value of a given field named <code>name</code> in 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the receiver. 62f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, byte value) { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the char value of a given field named <code>name</code> in 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the receiver. 76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, char value) { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the double value of a given field named <code>name</code> 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the receiver. 90f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, double value) { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the float value of a given field named <code>name</code> 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the receiver. 104f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, float value) { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the int value of a given field named <code>name</code> in 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the receiver. 118f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, int value) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the long value of a given field named <code>name</code> in 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the receiver. 132f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, long value) { 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the Object value of a given field named <code>name</code> 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the receiver. 146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, Object value) { 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the short value of a given field named <code>name</code> 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the receiver. 160f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, short value) { 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Find and set the boolean value of a given field named <code>name</code> 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the receiver. 174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A String, the name of the field to set 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * New value for the field. 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void put(String name, boolean value) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project emulatedFields.put(name, value); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Write the field values to the specified ObjectOutput. 187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the ObjectOutput 190f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IOException 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If an IO exception happened when writing the field values. 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Deprecated 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void write(ObjectOutput output) throws IOException { 197e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes if (!output.equals(oos)) { 198e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes throw new IllegalArgumentException("Attempting to write to a different stream than the one that created this PutField"); 199e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes } 200e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes for (EmulatedFields.ObjectSlot slot : emulatedFields.slots()) { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object fieldValue = slot.getFieldValue(); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class<?> type = slot.getField().getType(); 203e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes if (type == int.class) { 204e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeInt(fieldValue != null ? ((Integer) fieldValue).intValue() : 0); 205e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == byte.class) { 206e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeByte(fieldValue != null ? ((Byte) fieldValue).byteValue() : 0); 207e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == char.class) { 208e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeChar(fieldValue != null ? ((Character) fieldValue).charValue() : 0); 209e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == short.class) { 210e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeShort(fieldValue != null ? ((Short) fieldValue).shortValue() : 0); 211e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == boolean.class) { 212e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeBoolean(fieldValue != null ? ((Boolean) fieldValue).booleanValue() : false); 213e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == long.class) { 214e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeLong(fieldValue != null ? ((Long) fieldValue).longValue() : 0); 215e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == float.class) { 216e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeFloat(fieldValue != null ? ((Float) fieldValue).floatValue() : 0); 217e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes } else if (type == double.class) { 218e270027a8e421200a6af45f066c3a6aabe03aa30Elliott Hughes output.writeDouble(fieldValue != null ? ((Double) fieldValue).doubleValue() : 0); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Either array or Object 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project output.writeObject(fieldValue); 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 226