X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FCustomSerializer.java;h=e58ccf2af5945eab2ba4b508bd9d04c9213c56f1;hb=505be508ae7d3fb48122be548b310a238cfb91eb;hp=c5876ce401b622788f53ca073ced5e89d7ca56c2;hpb=bd86c2218b4a8befeb9b2789b62e1697993f0b5b;p=fanfix.git diff --git a/src/be/nikiroo/utils/serial/CustomSerializer.java b/src/be/nikiroo/utils/serial/CustomSerializer.java index c5876ce..e58ccf2 100644 --- a/src/be/nikiroo/utils/serial/CustomSerializer.java +++ b/src/be/nikiroo/utils/serial/CustomSerializer.java @@ -4,9 +4,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import be.nikiroo.utils.IOUtils; -import be.nikiroo.utils.streams.NextableInputStream; -import be.nikiroo.utils.streams.NextableInputStreamStep; +import be.nikiroo.utils.streams.BufferedInputStream; import be.nikiroo.utils.streams.ReplaceInputStream; import be.nikiroo.utils.streams.ReplaceOutputStream; @@ -77,7 +75,12 @@ public abstract class CustomSerializer { protected abstract String getType(); /** - * Encode the object into the given {@link OutputStream}. + * Encode the object into the given {@link OutputStream}, i.e., generate the + * ENCODED_VALUE part. + *

+ * Use whatever scheme you wish, the system shall ensure that the content is + * correctly encoded and that you will receive the same content at decode + * time. * * @param out * the builder to append to @@ -104,6 +107,14 @@ public abstract class CustomSerializer { /** * Decode the value back into the supported object type. + *

+ * We do not expect the full content here but only: + *

+ * That is, we do not expect the "custom^TYPE^" + * part. * * @param in * the encoded value @@ -119,52 +130,14 @@ public abstract class CustomSerializer { new String[] { "\\", "\n" }); try { - NextableInputStream stream = new NextableInputStream( - replace.open(), new NextableInputStreamStep('^')); - try { - if (!stream.next()) { - throw new IOException( - "Cannot find the first custom^ element"); - } - - String custom = IOUtils.readSmallStream(stream); - if (!"custom".equals(custom)) { - throw new IOException( - "Cannot find the first custom^ element, it is: " - + custom + "^"); - } - - if (!stream.next()) { - throw new IOException("Cannot find the second custom^" - + getType() + " element"); - } - - String type = IOUtils.readSmallStream(stream); - if (!getType().equals(type)) { - throw new IOException("Cannot find the second custom^" - + getType() + " element, it is: custom^" + type - + "^"); - } - - if (!stream.nextAll()) { - throw new IOException("Cannot find the third custom^" - + getType() + "^value element"); - } - - return fromStream(stream); - } finally { - stream.close(); - } + return fromStream(replace); } finally { replace.close(false); } } - public static boolean isCustom(String encodedValue) { - int pos1 = encodedValue.indexOf('^'); - int pos2 = encodedValue.indexOf('^', pos1 + 1); - - return pos1 >= 0 && pos2 >= 0 && encodedValue.startsWith("custom^"); + public static boolean isCustom(BufferedInputStream in) throws IOException { + return in.startsWith("custom^"); } public static String typeOf(String encodedValue) { @@ -174,12 +147,4 @@ public abstract class CustomSerializer { return type; } - - public static String contentOf(String encodedValue) { - int pos1 = encodedValue.indexOf('^'); - int pos2 = encodedValue.indexOf('^', pos1 + 1); - String encodedContent = encodedValue.substring(pos2 + 1); - - return encodedContent; - } }