Support_GetPutFieldsDefaulted.java revision adc854b798c1cfe3bfd4c27d68d5cee38ca617da
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 tests.support; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectInputStream; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectOutputStream; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Support class to verify that the methods of 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ObjectInputStream.GetField} handle default values correctly. 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <strong>Important:</strong> The test method 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code test_defaultedLjava_lang_String()} in 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code tests.api.java.io.ObjectInputStreamGetFieldTest} depends on a 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * reference file which can be generated with 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code tests.util.FieldTestFileGenerator}. However, the default mechanism of 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code GetField} only works if the fields that are supposed to be read have 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * not been written to the file. This can only be accomplished if the fields do 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * not exist (are not declared) when writing an instance of this class. 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Therefore, when executing {@code tests.util.FieldTestFileGenerator}, the 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contents of this class have to be commented out. 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p> 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class Support_GetPutFieldsDefaulted implements Serializable { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 1L; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ObjectInputStream.GetField getField; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ObjectOutputStream.PutField putField; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean booleanValue = false; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte byteValue = 0; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public char charValue = 0; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public double doubleValue = 0.0; 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public float floatValue = 0.0f; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long longValue = 0; 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int intValue = 0; 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public short shortValue = 0; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public SimpleClass objectValue = null; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class SimpleClass implements Serializable { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 1L; 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private int a; 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String b; 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public SimpleClass(int aValue, String bValue) { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project a = aValue; 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project b = bValue; 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getA() { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return a; 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getB() { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return b; 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object obj) { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (obj == null || obj.getClass() != this.getClass()) { 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SimpleClass other = (SimpleClass) obj; 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (a == other.getA() && b.equals(other.getB())); 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void initTestValues() { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project booleanValue = true; 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byteValue = (byte) 0x0b; 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project charValue = 'D'; 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project doubleValue = 523452.4532; 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project floatValue = 298.54f; 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project longValue = 1234567890l; 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project intValue = 999999; 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project objectValue = new SimpleClass(1965, "Hello Jupiter"); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project shortValue = 4321; 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object obj) { 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (obj == null || obj.getClass() != this.getClass()) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Support_GetPutFieldsDefaulted other = (Support_GetPutFieldsDefaulted) obj; 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (booleanValue == other.booleanValue && 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byteValue == other.byteValue && 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project charValue == other.charValue && 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project doubleValue == other.doubleValue && 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project floatValue == other.floatValue && 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project longValue == other.longValue && 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project intValue == other.intValue && 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project objectValue.equals(other.objectValue) && 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project shortValue == other.shortValue 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void readObject(ObjectInputStream ois) throws Exception { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project getField = ois.readFields(); 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project booleanValue = getField.get("booleanValue", true); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byteValue = getField.get("byteValue", (byte) 0x0b); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project charValue = getField.get("charValue", (char) 'D'); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project doubleValue = getField.get("doubleValue", 523452.4532); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project floatValue = getField.get("floatValue", 298.54f); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project longValue = getField.get("longValue", (long) 1234567890l); 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project intValue = getField.get("intValue", 999999); 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project objectValue = (Support_GetPutFieldsDefaulted.SimpleClass) 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project getField.get("objectValue", 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new SimpleClass(1965, "Hello Jupiter")); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project shortValue = getField.get("shortValue", (short) 4321); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void writeObject(ObjectOutputStream oos) throws IOException { 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project putField = oos.putFields(); 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Do not put anything into putField so that the get methods 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // will have to use default values. 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project oos.writeFields(); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 140