1 /*
   2  * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 /*
  27  */
  28 package com.sun.corba.se.impl.orbutil;
  29 
  30 import java.io.*;
  31 import java.util.Hashtable;
  32 
  33 class LegacyHookGetFields extends ObjectInputStream.GetField {
  34     private Hashtable fields = null;
  35 
  36     LegacyHookGetFields(Hashtable fields){
  37         this.fields = fields;
  38     }
  39 
  40     /**
  41      * Get the ObjectStreamClass that describes the fields in the stream.
  42      */
  43     public java.io.ObjectStreamClass getObjectStreamClass() {
  44         return null;
  45     }
  46 
  47     /**
  48      * Return true if the named field is defaulted and has no value
  49      * in this stream.
  50      */
  51     public boolean defaulted(String name)
  52         throws IOException, IllegalArgumentException  {
  53         return (!fields.containsKey(name));
  54     }
  55 
  56     /**
  57      * Get the value of the named boolean field from the persistent field.
  58      */
  59     public boolean get(String name, boolean defvalue)
  60         throws IOException, IllegalArgumentException {
  61         if (defaulted(name))
  62             return defvalue;
  63         else return ((Boolean)fields.get(name)).booleanValue();
  64     }
  65 
  66     /**
  67      * Get the value of the named char field from the persistent fields.
  68      */
  69     public char get(String name, char defvalue)
  70         throws IOException, IllegalArgumentException {
  71         if (defaulted(name))
  72             return defvalue;
  73         else return ((Character)fields.get(name)).charValue();
  74 
  75     }
  76 
  77     /**
  78      * Get the value of the named byte field from the persistent fields.
  79      */
  80     public byte get(String name, byte defvalue)
  81         throws IOException, IllegalArgumentException {
  82         if (defaulted(name))
  83             return defvalue;
  84         else return ((Byte)fields.get(name)).byteValue();
  85 
  86     }
  87 
  88     /**
  89      * Get the value of the named short field from the persistent fields.
  90      */
  91     public short get(String name, short defvalue)
  92         throws IOException, IllegalArgumentException {
  93         if (defaulted(name))
  94             return defvalue;
  95         else return ((Short)fields.get(name)).shortValue();
  96 
  97     }
  98 
  99     /**
 100      * Get the value of the named int field from the persistent fields.
 101      */
 102     public int get(String name, int defvalue)
 103         throws IOException, IllegalArgumentException {
 104         if (defaulted(name))
 105             return defvalue;
 106         else return ((Integer)fields.get(name)).intValue();
 107 
 108     }
 109 
 110     /**
 111      * Get the value of the named long field from the persistent fields.
 112      */
 113     public long get(String name, long defvalue)
 114         throws IOException, IllegalArgumentException {
 115         if (defaulted(name))
 116             return defvalue;
 117         else return ((Long)fields.get(name)).longValue();
 118 
 119     }
 120 
 121     /**
 122      * Get the value of the named float field from the persistent fields.
 123      */
 124     public float get(String name, float defvalue)
 125         throws IOException, IllegalArgumentException {
 126         if (defaulted(name))
 127             return defvalue;
 128         else return ((Float)fields.get(name)).floatValue();
 129 
 130     }
 131 
 132     /**
 133      * Get the value of the named double field from the persistent field.
 134      */
 135     public double get(String name, double defvalue)
 136         throws IOException, IllegalArgumentException  {
 137         if (defaulted(name))
 138             return defvalue;
 139         else return ((Double)fields.get(name)).doubleValue();
 140 
 141     }
 142 
 143     /**
 144      * Get the value of the named Object field from the persistent field.
 145      */
 146     public Object get(String name, Object defvalue)
 147         throws IOException, IllegalArgumentException {
 148         if (defaulted(name))
 149             return defvalue;
 150         else return fields.get(name);
 151 
 152     }
 153 
 154     public String toString(){
 155         return fields.toString();
 156     }
 157 }