KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > ubik > net > ObjectInputStreamEx


1 package org.sapia.ubik.net;
2
3 import java.io.IOException JavaDoc;
4 import java.io.InputStream JavaDoc;
5 import java.io.ObjectInputStream JavaDoc;
6 import java.io.ObjectStreamClass JavaDoc;
7
8 import java.util.HashMap JavaDoc;
9
10
11 /**
12  * An <code>ObjectInputStream</code> that allows to specify an
13  * application-defined class loader.
14  *
15  * @author Yanick Duchesne
16  * <dl>
17  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
18  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
19  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
20  * </dl>
21  */

22 public class ObjectInputStreamEx extends ObjectInputStream JavaDoc {
23   /** table mapping primitive type names to corresponding class objects */
24   private static final HashMap JavaDoc _primitives = new HashMap JavaDoc(8, 1.0F);
25
26   static {
27     _primitives.put("boolean", boolean.class);
28     _primitives.put("byte", byte.class);
29     _primitives.put("char", char.class);
30     _primitives.put("short", short.class);
31     _primitives.put("int", int.class);
32     _primitives.put("long", long.class);
33     _primitives.put("float", float.class);
34     _primitives.put("double", double.class);
35     _primitives.put("void", void.class);
36   }
37
38   ClassLoader JavaDoc _loader;
39
40   /**
41    * Creates an instance of this class with the given parameters.
42    *
43    * @param is the stream to this instance will encapsulate.
44    * @param loader a <code>ClassLoader</code>
45    */

46   public ObjectInputStreamEx(InputStream JavaDoc is, ClassLoader JavaDoc loader)
47     throws java.io.IOException JavaDoc {
48     super(is);
49     _loader = loader;
50   }
51
52   /**
53    * @see java.io.ObjectInputStream#resolveClass(ObjectStreamClass)
54    */

55   protected Class JavaDoc resolveClass(ObjectStreamClass JavaDoc clazz)
56     throws IOException JavaDoc, ClassNotFoundException JavaDoc {
57     Class JavaDoc resolved;
58     resolved = (Class JavaDoc) _primitives.get(clazz.getName());
59
60     if (resolved == null) {
61       return _loader.loadClass(clazz.getName());
62     } else {
63       return resolved;
64     }
65   }
66 }
67
Popular Tags