From 9d83cc96a52f755351e24ab888cebd5a982de8fc Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Tue, 6 Jul 2010 20:54:48 +0000 Subject: [PATCH] For the String[] transformer, encode null elements as "\" followed by the terminator (we encode the terminator as a different character). This is somewhat nicer when inspecting an encoded String, and allows for a future in which the decoder easily counts the number of terminator characters and pre-allocates the storage, if we so desired. --- src/java/com/samskivert/depot/Transformers.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java/com/samskivert/depot/Transformers.java b/src/java/com/samskivert/depot/Transformers.java index 875007f..76a514b 100644 --- a/src/java/com/samskivert/depot/Transformers.java +++ b/src/java/com/samskivert/depot/Transformers.java @@ -137,7 +137,7 @@ public class Transformers StringBuilder buf = new StringBuilder(); for (String s : value) { if (s == null) { - buf.append("\\0"); // encode nulls as "\0" (with no terminator) + buf.append("\\\n"); // encode nulls as slash followed by the terminator } else { s = s.replace("\\", "\\\\"); // turn \ into \\ s = s.replace("\n", "\\n"); // turn a newline in a String to "\n" @@ -163,7 +163,7 @@ public class Transformers Preconditions.checkArgument(++ii < nn, "Invalid encoded string"); char slashed = encoded.charAt(ii); switch (slashed) { - case '0': // turn \0 into a null element + case '\n': // turn back into a null element Preconditions.checkArgument(buf.length() == 0, "Invalid encoded string"); value.add(null); break;