X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FCustomSerializer.java;h=fa03f02e141c5056df9ad8bc89f9d59937500a74;hb=5bc55b5183dcc811d06ef7cf2e26b43329a0ae34;hp=b6928eec7685b853aff33537cd2844e0bfcc24d8;hpb=11f9e5f37c2570f0376a4c1898c6aea3a7f28fc7;p=fanfix.git diff --git a/src/be/nikiroo/utils/serial/CustomSerializer.java b/src/be/nikiroo/utils/serial/CustomSerializer.java index b6928ee..fa03f02 100644 --- a/src/be/nikiroo/utils/serial/CustomSerializer.java +++ b/src/be/nikiroo/utils/serial/CustomSerializer.java @@ -8,10 +8,26 @@ public abstract class CustomSerializer { protected abstract String getType(); - public void encode(StringBuilder builder, Object value) { + /** + * Encode the object into the given builder if possible (if supported). + * + * @param builder + * the builder to append to + * @param value + * the object to encode + * @return TRUE if success, FALSE if not (the content of the builder won't + * be changed in case of failure) + */ + public boolean encode(StringBuilder builder, Object value) { + int prev = builder.length(); String customString = toString(value); builder.append("custom:").append(getType()).append(":"); - SerialUtils.encode(builder, customString); + if (!SerialUtils.encode(builder, customString)) { + builder.delete(prev, builder.length()); + return false; + } + + return true; } public Object decode(String encodedValue) {