Package org.jgroups.util

Source Code of org.jgroups.util.MagicObjectInputStream

package org.jgroups.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jgroups.ChannelException;
import org.jgroups.conf.ClassConfigurator;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectStreamClass;

/**
* Uses magic numbers for class descriptors
* @author Bela Ban
* @version $Id: MagicObjectInputStream.java,v 1.6 2007/05/01 09:15:17 belaban Exp $
*/
public class MagicObjectInputStream extends ContextObjectInputStream {
    static volatile ClassConfigurator conf=null;
    static final Log log=LogFactory.getLog(MagicObjectInputStream.class);


    public MagicObjectInputStream(InputStream is) throws IOException {
        super(is);
        if(conf == null) {
            try {
                conf=ClassConfigurator.getInstance(false);
            }
            catch(ChannelException e) {
                log.error("ClassConfigurator could not be instantiated", e);
            }
        }
    }


    protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
        ObjectStreamClass retval;
        short magic_num=super.readShort();

        if(conf == null || magic_num == -1) {
            return super.readClassDescriptor();
        }

        retval=conf.getObjectStreamClassFromMagicNumber(magic_num);
        if(retval == null)
            throw new ClassNotFoundException("failed fetching class descriptor for magic number " + magic_num);
        //if(log.isTraceEnabled())
            //log.trace("reading descriptor (from " + magic_num + "): " + retval.getName());
        return retval;
    }
}
TOP

Related Classes of org.jgroups.util.MagicObjectInputStream

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.