FileDocCategorySizeDatePackage
ObjectInputStreamWithLoader.javaAPI DocGlassfish v2 API4091Fri May 04 22:32:08 BST 2007com.sun.enterprise.util

ObjectInputStreamWithLoader

public class ObjectInputStreamWithLoader extends ObjectInputStream
This subclass of ObjectInputStream delegates loading of classes to an existing ClassLoader.

Fields Summary
protected ClassLoader
loader
Constructors Summary
public ObjectInputStreamWithLoader(InputStream in, ClassLoader loader)
Loader must be non-null;

exception
IOException on io error
exception
StreamCorruptedException on a corrupted stream


	    super(in);
	    if (loader == null) {
		throw new IllegalArgumentException("Illegal null argument to ObjectInputStreamWithLoader");
	    }
	    this.loader = loader;
    
Methods Summary
private java.lang.ClassprimitiveType(char type)
Make a primitive array class

	switch (type) {
	case 'B": return byte.class;
	case 'C": return char.class;
	case 'D": return double.class;
	case 'F": return float.class;
	case 'I": return int.class;
	case 'J": return long.class;
	case 'S": return short.class;
	case 'Z": return boolean.class;
	default: return null;
	}
    
protected java.lang.ClassresolveClass(java.io.ObjectStreamClass classDesc)
Use the given ClassLoader rather than using the system class

exception
ClassNotFoundException if class can not be loaded

		
	    String cname = classDesc.getName();
	    if (cname.startsWith("[")) {
		// An array
		Class component;		// component class
		int dcount;			// dimension
		for (dcount=1; cname.charAt(dcount)=='["; dcount++) ;
		if (cname.charAt(dcount) == 'L") {
		    component = loader.loadClass(cname.substring(dcount+1,
								 cname.length()-1));
		} else {
		    if (cname.length() != dcount+1) {
			throw new ClassNotFoundException(cname);// malformed
		    }
		    component = primitiveType(cname.charAt(dcount));
		}
		int dim[] = new int[dcount];
		for (int i=0; i<dcount; i++) {
		    dim[i]=0;
		}
		return Array.newInstance(component, dim).getClass();
	    } else {
		return loader.loadClass(cname);
	    }