X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FCustomSerializer.java;h=be89316eae07b74f6a67ccaeb589641ba81f8cea;hb=3fb0b4a71a70c154a5eeb41b89add4ae6be5a7a1;hp=fa03f02e141c5056df9ad8bc89f9d59937500a74;hpb=5bc55b5183dcc811d06ef7cf2e26b43329a0ae34;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/serial/CustomSerializer.java b/src/be/nikiroo/utils/serial/CustomSerializer.java index fa03f02..be89316 100644 --- a/src/be/nikiroo/utils/serial/CustomSerializer.java +++ b/src/be/nikiroo/utils/serial/CustomSerializer.java @@ -1,10 +1,12 @@ package be.nikiroo.utils.serial; +import java.io.IOException; + public abstract class CustomSerializer { protected abstract String toString(Object value); - protected abstract Object fromString(String content); + protected abstract Object fromString(String content) throws IOException; protected abstract String getType(); @@ -21,7 +23,7 @@ public abstract class CustomSerializer { public boolean encode(StringBuilder builder, Object value) { int prev = builder.length(); String customString = toString(value); - builder.append("custom:").append(getType()).append(":"); + builder.append("custom^").append(getType()).append("^"); if (!SerialUtils.encode(builder, customString)) { builder.delete(prev, builder.length()); return false; @@ -30,28 +32,28 @@ public abstract class CustomSerializer { return true; } - public Object decode(String encodedValue) { + public Object decode(String encodedValue) throws IOException { return fromString((String) SerialUtils.decode(contentOf(encodedValue))); } public static boolean isCustom(String encodedValue) { - int pos1 = encodedValue.indexOf(':'); - int pos2 = encodedValue.indexOf(':', pos1 + 1); + int pos1 = encodedValue.indexOf('^'); + int pos2 = encodedValue.indexOf('^', pos1 + 1); - return pos1 >= 0 && pos2 >= 0 && encodedValue.startsWith("custom:"); + return pos1 >= 0 && pos2 >= 0 && encodedValue.startsWith("custom^"); } public static String typeOf(String encodedValue) { - int pos1 = encodedValue.indexOf(':'); - int pos2 = encodedValue.indexOf(':', pos1 + 1); + int pos1 = encodedValue.indexOf('^'); + int pos2 = encodedValue.indexOf('^', pos1 + 1); String type = encodedValue.substring(pos1 + 1, pos2); return type; } public static String contentOf(String encodedValue) { - int pos1 = encodedValue.indexOf(':'); - int pos2 = encodedValue.indexOf(':', pos1 + 1); + int pos1 = encodedValue.indexOf('^'); + int pos2 = encodedValue.indexOf('^', pos1 + 1); String encodedContent = encodedValue.substring(pos2 + 1); return encodedContent;