XStream does not invoke readResolve nor writeReplace when an object that is being serialized/deserialized is Externalizable. Although this looks like a minor issue given that no one has complained yet, for the future it would be nice to bring XStream into a behavior consistent with Java default serialization on this issue. Attached is a Java file which demonstrates the issue. Thank you kindly.
Fixed in trunk.