1 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 m_userContext; 34 35 public FastObjectInputStream(InputStream in) throws IOException 36 { 37 this(in, null); 38 } 39 40 public FastObjectInputStream(InputStream in, Object userContext) throws IOException 41 { 42 super(in); 43 44 m_userContext = userContext; 45 } 46 47 protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException 48 { 49 if (CLASS_TABLE == null) 50 { 51 return super.readClassDescriptor(); 52 } 53 54 Integer id = null; 55 String className = null; 56 57 try 58 { 59 boolean registered = readBoolean(); 60 61 if (registered == true) 62 { 63 id = new Integer (readInt()); 64 Class cl = (Class ) 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 (byteField); 73 return ObjectStreamClass.lookup(Class.forName(className)); 74 } 75 } 76 catch (Exception e) 77 { 78 throw new org.myoodb.exception.InternalException("Caught during read: " + e, e); 79 } 80 } 81 82 public void setUserContext(Object userContext) 83 { 84 m_userContext = userContext; 85 } 86 87 public Object getUserContext() 88 { 89 return m_userContext; 90 } 91 } 92 | Popular Tags |