Home | History | Annotate | Download | only in support
      1 /*
      2  *  Licensed to the Apache Software Foundation (ASF) under one or more
      3  *  contributor license agreements.  See the NOTICE file distributed with
      4  *  this work for additional information regarding copyright ownership.
      5  *  The ASF licenses this file to You under the Apache License, Version 2.0
      6  *  (the "License"); you may not use this file except in compliance with
      7  *  the License.  You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  */
     17 
     18 package tests.support;
     19 
     20 import java.io.IOException;
     21 import java.io.ObjectInputStream;
     22 import java.io.ObjectOutputStream;
     23 import java.io.Serializable;
     24 
     25 /**
     26  * Support class to test the methods of {@code ObjectInputStream.GetField} and
     27  * {@code ObjectOutputStream.PutField}. The difference with class
     28  * {@code Support_GetPutFields} is that it uses the deprecated method
     29  * {@code ObjectOutputStream.PutField.write(ObjectOutput)} to write the fields
     30  * to the output stream.
     31  */
     32 public class Support_GetPutFieldsDeprecated implements Serializable {
     33 
     34     private static final long serialVersionUID = 1L;
     35 
     36     public ObjectInputStream.GetField getField;
     37     public ObjectOutputStream.PutField putField;
     38 
     39     public boolean booleanValue = false;
     40     public byte byteValue = 0;
     41     public char charValue = 0;
     42     public double doubleValue = 0.0;
     43     public float floatValue = 0.0f;
     44     public long longValue = 0;
     45     public int intValue = 0;
     46     public short shortValue = 0;
     47     public SimpleClass objectValue = null;
     48 
     49     class SimpleClass implements Serializable {
     50 
     51         private static final long serialVersionUID = 1L;
     52         private int a;
     53         private String b;
     54 
     55         public SimpleClass(int aValue, String bValue) {
     56             a = aValue;
     57             b = bValue;
     58         }
     59 
     60         public int getA() {
     61             return a;
     62         }
     63 
     64         public String getB() {
     65             return b;
     66         }
     67 
     68         public boolean equals(Object obj) {
     69             if (obj == null || obj.getClass() != this.getClass()) {
     70                 return false;
     71             }
     72 
     73             SimpleClass other = (SimpleClass) obj;
     74             return (a == other.getA() && b.equals(other.getB()));
     75         }
     76     }
     77 
     78     public void initTestValues() {
     79         booleanValue = true;
     80         byteValue = (byte) 0xbe;
     81         charValue = 'A';
     82         doubleValue = 1231.342;
     83         floatValue = 43.22f;
     84         longValue = 1560732321L;
     85         intValue = 33333;
     86         objectValue = new SimpleClass(2001, "A Space Odyssey");
     87         shortValue = 3078;
     88     }
     89 
     90     public boolean equals(Object obj) {
     91         if (obj == null || obj.getClass() != this.getClass()) {
     92             return false;
     93         }
     94 
     95         Support_GetPutFields other = (Support_GetPutFields) obj;
     96         return (booleanValue == other.booleanValue &&
     97                 byteValue == other.byteValue &&
     98                 charValue == other.charValue &&
     99                 doubleValue == other.doubleValue &&
    100                 floatValue == other.floatValue &&
    101                 longValue == other.longValue &&
    102                 intValue == other.intValue &&
    103                 objectValue.equals(other.objectValue) &&
    104                 shortValue == other.shortValue
    105                 );
    106     }
    107 
    108     private void readObject(ObjectInputStream ois) throws Exception {
    109         booleanValue = getField.get("booleanValue", false);
    110         byteValue = getField.get("byteValue", (byte) 0);
    111         charValue = getField.get("charValue", (char) 0);
    112         doubleValue = getField.get("doubleValue", 0.0);
    113         floatValue = getField.get("floatValue", 0.0f);
    114         longValue = getField.get("longValue", (long) 0);
    115         intValue = getField.get("intValue", 0);
    116         objectValue = (Support_GetPutFieldsDeprecated.SimpleClass)
    117                 getField.get("objectValue", (Object) null);
    118         shortValue = getField.get("shortValue", (short) 0);
    119     }
    120 
    121     private void writeObject(ObjectOutputStream oos) throws IOException {
    122         putField = oos.putFields();
    123         putField.put("booleanValue", booleanValue);
    124         putField.put("byteValue", byteValue);
    125         putField.put("charValue", charValue);
    126         putField.put("doubleValue", doubleValue);
    127         putField.put("floatValue", floatValue);
    128         putField.put("longValue", longValue);
    129         putField.put("intValue", intValue);
    130         putField.put("objectValue", objectValue);
    131         putField.put("shortValue", shortValue);
    132         putField.write(oos);
    133     }
    134 }
    135