contextobjectinputstream.java
来自「JGRoups源码」· Java 代码 · 共 83 行
JAVA
83 行
package org.jgroups.util;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectStreamClass;import java.util.HashMap;/** * ObjectInputStream which sets a contact classloader for reading bytes into objects. Copied from * MarshalledValueInputStream of JBoss * @author Bela Ban * @version $Id: ContextObjectInputStream.java,v 1.7 2006/05/02 08:23:25 belaban Exp $ */public class ContextObjectInputStream extends ObjectInputStream { /** * A class wide cache of proxy classes populated by resolveProxyClass */ private static final HashMap classCache=new HashMap(); private static final HashMap primClasses = new HashMap(9, 1.0F); static { primClasses.put("boolean", boolean.class); primClasses.put("byte", byte.class); primClasses.put("char", char.class); primClasses.put("short", short.class); primClasses.put("int", int.class); primClasses.put("long", long.class); primClasses.put("float", float.class); primClasses.put("double", double.class); primClasses.put("void", void.class); } /** * Creates a new instance of MarshalledValueOutputStream */ public ContextObjectInputStream(InputStream is) throws IOException { super(is); } protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFoundException { String className=v.getName(); Class resolvedClass=null; // Check the class cache first if it exists synchronized(classCache) { resolvedClass=(Class)classCache.get(className); } if(resolvedClass == null) { try { resolvedClass=Util.loadClass(className, this.getClass()); } catch(ClassNotFoundException e) { } if(resolvedClass == null) { /* This is a backport von JDK 1.4's java.io.ObjectInputstream to support * retrieval of primitive classes (e.g. Boolean.TYPE) in JDK 1.3. * This is required for org.jgroups.blocks.MethodCall to support primitive * Argument types in JDK1.3: */ resolvedClass = (Class) primClasses.get(className); if (resolvedClass == null) { /* Use the super.resolveClass() call which will resolve array classes and primitives. We do not use this by default as this can result in caching of stale values across redeployments. */ resolvedClass=super.resolveClass(v); } } synchronized(classCache) { classCache.put(className, resolvedClass); } } return resolvedClass; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?