Missed a spot where getStreamer() was called which motivated further changing

around of the interface (I wanted to automatically call getStreamerClass() for
the caller but that turns out not to be possible when unstreaming so fuck it).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4373 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2006-09-12 01:09:01 +00:00
parent 13bcdf769d
commit 54d3bb6496
2 changed files with 10 additions and 7 deletions
@@ -93,16 +93,14 @@ public class ObjectOutputStream extends DataOutputStream
_classmap = new HashMap<Class,ClassMapping>(); _classmap = new HashMap<Class,ClassMapping>();
} }
// otherwise, look up the class mapping record (if the target class is // otherwise, look up the class mapping record
// an enum, convert it from its potentially enum-value specific class
// to the main class for that enum)
Class sclass = Streamer.getStreamerClass(object); Class sclass = Streamer.getStreamerClass(object);
ClassMapping cmap = _classmap.get(sclass); ClassMapping cmap = _classmap.get(sclass);
// create a class mapping for this class if we've not got one // create a class mapping for this class if we've not got one
if (cmap == null) { if (cmap == null) {
// create a streamer instance and assign a code to this class // create a streamer instance and assign a code to this class
Streamer streamer = Streamer.getStreamer(object); Streamer streamer = Streamer.getStreamer(sclass);
// we specifically do not inline the getStreamer() call // we specifically do not inline the getStreamer() call
// into the ClassMapping constructor because we want to be // into the ClassMapping constructor because we want to be
// sure not to call _nextCode++ if getStreamer() throws an // sure not to call _nextCode++ if getStreamer() throws an
@@ -148,7 +146,8 @@ public class ObjectOutputStream extends DataOutputStream
public void writeBareObject (Object object) public void writeBareObject (Object object)
throws IOException throws IOException
{ {
writeBareObject(object, Streamer.getStreamer(object), true); writeBareObject(object, Streamer.getStreamer(
Streamer.getStreamerClass(object)), true);
} }
/** /**
+6 -2
View File
@@ -98,11 +98,15 @@ public class Streamer
* are shared among all {@link ObjectInputStream}s and {@link * are shared among all {@link ObjectInputStream}s and {@link
* ObjectOutputStream}s. * ObjectOutputStream}s.
* *
* @param target the class that is desired to be streamed. This should be
* the result of a call to {@link #getStreamerClass} if the caller has an
* instance they wish to stream.
*
* @throws IOException when a streamer is requested for an object that * @throws IOException when a streamer is requested for an object that
* does not implement {@link Streamable} and is not one of the basic * does not implement {@link Streamable} and is not one of the basic
* object types (@see {@link ObjectOutputStream}). * object types (@see {@link ObjectOutputStream}).
*/ */
public synchronized static Streamer getStreamer (Object object) public synchronized static Streamer getStreamer (final Class target)
throws IOException throws IOException
{ {
// if we have not yet initialized ourselves, do so now // if we have not yet initialized ourselves, do so now
@@ -110,11 +114,11 @@ public class Streamer
createStreamers(); createStreamers();
} }
final Class target = getStreamerClass(object);
Streamer stream = _streamers.get(target); Streamer stream = _streamers.get(target);
if (stream == null) { if (stream == null) {
// make sure this is a streamable class // make sure this is a streamable class
if (!isStreamable(target)) { if (!isStreamable(target)) {
Thread.dumpStack();
throw new IOException("Requested to stream invalid class '" + throw new IOException("Requested to stream invalid class '" +
target.getName() + "'"); target.getName() + "'");
} }