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.IOException;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectInputStream;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectOutputStream;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Support class to test the methods of {@code ObjectInputStream.GetField} and
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ObjectOutputStream.PutField}. The difference with class
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Support_GetPutFields} is that it uses the deprecated method
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ObjectOutputStream.PutField.write(ObjectOutput)} to write the fields
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the output stream.
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class Support_GetPutFieldsDeprecated implements Serializable {
33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static final long serialVersionUID = 1L;
35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ObjectInputStream.GetField getField;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ObjectOutputStream.PutField putField;
38f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean booleanValue = false;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public byte byteValue = 0;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public char charValue = 0;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public double doubleValue = 0.0;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public float floatValue = 0.0f;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public long longValue = 0;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int intValue = 0;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public short shortValue = 0;
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public SimpleClass objectValue = null;
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class SimpleClass implements Serializable {
50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private static final long serialVersionUID = 1L;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private int a;
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private String b;
54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public SimpleClass(int aValue, String bValue) {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            a = aValue;
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            b = bValue;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
59f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getA() {
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return a;
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getB() {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return b;
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
67f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean equals(Object obj) {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (obj == null || obj.getClass() != this.getClass()) {
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return false;
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
72f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SimpleClass other = (SimpleClass) obj;
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return (a == other.getA() && b.equals(other.getB()));
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
77f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void initTestValues() {
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        booleanValue = true;
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byteValue = (byte) 0xbe;
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        charValue = 'A';
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doubleValue = 1231.342;
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        floatValue = 43.22f;
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        longValue = 1560732321l;
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        intValue = 33333;
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        objectValue = new SimpleClass(2001, "A Space Odyssey");
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        shortValue = 3078;
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean equals(Object obj) {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (obj == null || obj.getClass() != this.getClass()) {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
94f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_GetPutFields other = (Support_GetPutFields) obj;
96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        return (booleanValue == other.booleanValue &&
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                byteValue == other.byteValue &&
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                charValue == other.charValue &&
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                doubleValue == other.doubleValue &&
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                floatValue == other.floatValue &&
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                longValue == other.longValue &&
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                intValue == other.intValue &&
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                objectValue.equals(other.objectValue) &&
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                shortValue == other.shortValue
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
107f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void readObject(ObjectInputStream ois) throws Exception {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        booleanValue = getField.get("booleanValue", false);
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byteValue = getField.get("byteValue", (byte) 0);
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        charValue = getField.get("charValue", (char) 0);
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doubleValue = getField.get("doubleValue", 0.0);
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        floatValue = getField.get("floatValue", 0.0f);
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        longValue = getField.get("longValue", (long) 0);
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        intValue = getField.get("intValue", 0);
116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        objectValue = (Support_GetPutFieldsDeprecated.SimpleClass)
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                getField.get("objectValue", (Object) null);
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        shortValue = getField.get("shortValue", (short) 0);
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
120f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void writeObject(ObjectOutputStream oos) throws IOException {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField = oos.putFields();
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("booleanValue", booleanValue);
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("byteValue", byteValue);
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("charValue", charValue);
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("doubleValue", doubleValue);
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("floatValue", floatValue);
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("longValue", longValue);
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("intValue", intValue);
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("objectValue", objectValue);
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.put("shortValue", shortValue);
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        putField.write(oos);
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
135