KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > myoodb > util > FastObjectInputStream


1 ///////////////////////////////////////////////////////////////////////////////
2
//
3
// Copyright (C) 2003-@year@ by Thomas M. Hazel, MyOODB (www.myoodb.org)
4
//
5
// All Rights Reserved
6
//
7
// This program is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License and GNU Library
9
// General Public License as published by the Free Software Foundation;
10
// either version 2, or (at your option) any later version.
11
//
12
// This program is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License and GNU Library General Public License
16
// for more details.
17
//
18
// You should have received a copy of the GNU General Public License
19
// and GNU Library General Public License along with this program; if
20
// not, write to the Free Software Foundation, 675 Mass Ave, Cambridge,
21
// MA 02139, USA.
22
//
23
///////////////////////////////////////////////////////////////////////////////
24
package org.myoodb.util;
25
26 import java.io.*;
27 import java.util.*;
28
29 public class FastObjectInputStream extends ObjectInputStream
30 {
31     public static HashMap CLASS_TABLE = null;
32
33     private Object JavaDoc m_userContext;
34
35     public FastObjectInputStream(InputStream in) throws IOException
36     {
37         this(in, null);
38     }
39
40     public FastObjectInputStream(InputStream in, Object JavaDoc userContext) throws IOException
41     {
42         super(in);
43
44         m_userContext = userContext;
45     }
46
47     protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException JavaDoc
48     {
49         if (CLASS_TABLE == null)
50         {
51             return super.readClassDescriptor();
52         }
53
54         Integer JavaDoc id = null;
55         String JavaDoc className = null;
56
57         try
58         {
59             boolean registered = readBoolean();
60
61             if (registered == true)
62             {
63                 id = new Integer JavaDoc(readInt());
64                 Class JavaDoc cl = (Class JavaDoc) CLASS_TABLE.get(id);
65                 return ObjectStreamClass.lookup(cl);
66             }
67             else
68             {
69                 byte len = readByte();
70                 byte[] byteField = new byte[len];
71                 readFully(byteField);
72                 className = new String JavaDoc(byteField);
73                 return ObjectStreamClass.lookup(Class.forName(className));
74             }
75         }
76         catch (Exception JavaDoc e)
77         {
78             throw new org.myoodb.exception.InternalException("Caught during read: " + e, e);
79         }
80     }
81
82     public void setUserContext(Object JavaDoc userContext)
83     {
84         m_userContext = userContext;
85     }
86
87     public Object JavaDoc getUserContext()
88     {
89         return m_userContext;
90     }
91 }
92
Popular Tags