Added class translation support so that I could write a DSet converter.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3947 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2006-03-15 02:29:10 +00:00
parent ccb77db4fa
commit baa45c51c1
@@ -63,6 +63,18 @@ public class ObjectOutputStream extends DataOutputStream
super(target);
}
/**
* Configures this object output stream with a mapping from a classname
* to a streamed name.
*/
public void addTranslation (String className, String streamedName)
{
if (_translations == null) {
_translations = new HashMap();
}
_translations.put(className, streamedName);
}
/**
* Writes a {@link Streamable} instance or one of the support object
* types to the output stream.
@@ -105,7 +117,14 @@ public class ObjectOutputStream extends DataOutputStream
// writing a negative class code indicates that the class
// name will follow
writeShort(-cmap.code);
writeUTF(sclass.getName());
String cname = sclass.getName();
if (_translations != null) {
String tname = (String) _translations.get(cname);
if (tname != null) {
cname = tname;
}
}
writeUTF(cname);
} else {
writeShort(cmap.code);
@@ -182,4 +201,8 @@ public class ObjectOutputStream extends DataOutputStream
/** The streamer being used currently. */
protected Streamer _streamer;
/** An optional set of class name translations to use when serializing
* objects. */
protected HashMap _translations;
}