1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.james.util.io;
19
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.io.ObjectInputStream;
23 import java.io.ObjectStreamClass;
24 import java.io.StreamCorruptedException;
25
26 /***
27 * A special ObjectInputStream to handle highly transient classes hosted
28 * by Avalon components that are juggling many classloaders.
29 *
30 * @author <a href="mailto:paul_hammant@yahoo.com">Paul Hammant</a>
31 * @version $Revision: 365582 $ $Date: 2006-01-03 08:51:21 +0000 (mar, 03 gen 2006) $
32 */
33 public class ClassLoaderObjectInputStream
34 extends ObjectInputStream
35 {
36 private ClassLoader m_classLoader;
37
38 public ClassLoaderObjectInputStream( final ClassLoader classLoader,
39 final InputStream inputStream )
40 throws IOException, StreamCorruptedException
41 {
42 super( inputStream );
43 m_classLoader = classLoader;
44 }
45
46 protected Class resolveClass( final ObjectStreamClass objectStreamClass )
47 throws IOException, ClassNotFoundException
48 {
49 final Class clazz =
50 Class.forName( objectStreamClass.getName(), false, m_classLoader );
51
52 if( null != clazz )
53 {
54 return clazz;
55 }
56 else
57 {
58
59 return super.resolveClass( objectStreamClass );
60 }
61 }
62 }