package org.yajul.serialization; import java.io.ObjectInputStream; import java.io.InputStream; import java.io.IOException; import java.io.ObjectInput; /** * Resolves objects from in input stream. Useful for implementing Externalizable, where the write * method uses ObjectReplacingInputStream. * <br> * User: josh * Date: Sep 9, 2009 * Time: 12:05:54 PM */ public class ObjectResolvingInputStream extends ObjectInputStream { private ObjectResolver resolver; public ObjectResolvingInputStream(InputStream in, ObjectResolver resolver) throws IOException { super(in); this.resolver = resolver; enableResolveObject(true); } public ObjectResolvingInputStream(ObjectInput in, ObjectResolver resolver) throws IOException { this(new ObjectInputStreamAdapter(in),resolver); } @Override protected Object resolveObject(Object obj) throws IOException { if (resolver != null) return resolver.resolveObject(obj); else return super.resolveObject(obj); } }