KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > ubik > rmi > Utils


1 package org.sapia.ubik.rmi;
2
3 import java.io.ByteArrayInputStream JavaDoc;
4 import java.io.ByteArrayOutputStream JavaDoc;
5 import java.io.IOException JavaDoc;
6 import java.io.InputStream JavaDoc;
7 import java.io.ObjectInputStream JavaDoc;
8 import java.io.ObjectOutputStream JavaDoc;
9 import java.io.ObjectStreamClass JavaDoc;
10 import java.rmi.server.RMIClassLoader JavaDoc;
11
12
13 /**
14  * @author Yanick Duchesne
15  * <dl>
16  * <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>
17  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
18  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
19  * </dl>
20  */

21 public class Utils {
22   
23   public static Object JavaDoc deserialize(byte[] bytes)
24   throws IOException JavaDoc, ClassNotFoundException JavaDoc {
25     ObjectInputStream JavaDoc ois = new ObjectInputStream JavaDoc(new ByteArrayInputStream JavaDoc(
26       bytes));
27     Object JavaDoc o = ois.readObject();
28     
29     return o;
30   }
31   
32   public static Object JavaDoc deserialize(byte[] bytes, ClassLoader JavaDoc loader)
33   throws IOException JavaDoc, ClassNotFoundException JavaDoc {
34     ObjectInputStream JavaDoc ois = new ObjectInputStreamEx(new ByteArrayInputStream JavaDoc(
35       bytes), loader);
36     Object JavaDoc o = ois.readObject();
37     
38     return o;
39   }
40   
41   public static Object JavaDoc deserialize(byte[] bytes, ClassLoader JavaDoc loader, String JavaDoc codebase)
42   throws IOException JavaDoc, ClassNotFoundException JavaDoc {
43     RMIClassLoader.getClassLoader(codebase);
44     ObjectInputStream JavaDoc ois = new ObjectInputStreamEx(new ByteArrayInputStream JavaDoc(
45       bytes), loader);
46     Object JavaDoc o = ois.readObject();
47     
48     return o;
49   }
50   
51   public static byte[] serialize(Object JavaDoc o) throws IOException JavaDoc {
52     ByteArrayOutputStream JavaDoc bos = new ByteArrayOutputStream JavaDoc();
53     ObjectOutputStream JavaDoc ous = new ObjectOutputStream JavaDoc(bos);
54     ous.writeObject(o);
55     ous.flush();
56     ous.close();
57     
58     return bos.toByteArray();
59   }
60   
61   static final class ObjectInputStreamEx extends ObjectInputStream JavaDoc {
62     private ClassLoader JavaDoc _loader;
63     
64     ObjectInputStreamEx(InputStream JavaDoc is, ClassLoader JavaDoc loader)
65     throws IOException JavaDoc {
66       super(is);
67       _loader = loader;
68     }
69     
70     /**
71      * @see java.io.ObjectInputStream#resolveClass(ObjectStreamClass)
72      */

73     protected Class JavaDoc resolveClass(ObjectStreamClass JavaDoc desc)
74     throws IOException JavaDoc, ClassNotFoundException JavaDoc {
75       if (_loader != null) {
76         return _loader.loadClass(desc.getName());
77       } else {
78         return super.resolveClass(desc);
79       }
80     }
81   }
82 }
83
Popular Tags