X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FSerialUtils.java;h=a1105a90d441352d71fa51faf5d56f8294f35318;hb=f4053377fa15da2f11e82955bfab86e673fa371c;hp=73f2027abb75480957beb087681495fa75009363;hpb=5bc55b5183dcc811d06ef7cf2e26b43329a0ae34;p=fanfix.git diff --git a/src/be/nikiroo/utils/serial/SerialUtils.java b/src/be/nikiroo/utils/serial/SerialUtils.java index 73f2027..a1105a9 100644 --- a/src/be/nikiroo/utils/serial/SerialUtils.java +++ b/src/be/nikiroo/utils/serial/SerialUtils.java @@ -7,6 +7,7 @@ import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.UnknownFormatConversionException; @@ -37,6 +38,7 @@ import be.nikiroo.utils.ImageUtils; *
  • Enum (any enum whose name and value is known by the caller)
  • *
  • java.awt.image.BufferedImage (as a {@link CustomSerializer})
  • *
  • An array of the above (as a {@link CustomSerializer})
  • + *
  • URL
  • * * * @author niki @@ -85,7 +87,7 @@ public class SerialUtils { } @Override - protected Object fromString(String content) { + protected Object fromString(String content) throws IOException { String[] tab = content.split("\n"); try { @@ -98,11 +100,38 @@ public class SerialUtils { return array; } catch (Exception e) { - throw new UnknownFormatConversionException(e.getMessage()); + if (e instanceof IOException) { + throw (IOException) e; + } + throw new IOException(e.getMessage()); } } }); + // URL: + customTypes.put("java.net.URL", new CustomSerializer() { + @Override + protected String toString(Object value) { + if (value != null) { + return ((URL) value).toString(); + } + return null; + } + + @Override + protected Object fromString(String content) throws IOException { + if (content != null) { + return new URL(content); + } + return null; + } + + @Override + protected String getType() { + return "java.net.URL"; + } + }); + // Images (this is currently the only supported image type by default) customTypes.put("java.awt.image.BufferedImage", new CustomSerializer() { @Override @@ -326,24 +355,23 @@ public class SerialUtils { * * @return the object (can be NULL for NULL encoded values) * - * @throws UnknownFormatConversionException + * @throws IOException * if the content cannot be converted */ - static Object decode(String encodedValue) { - String cut = ""; - if (encodedValue.length() > 1) { - cut = encodedValue.substring(0, encodedValue.length() - 1); - } - + static Object decode(String encodedValue) throws IOException { try { + String cut = ""; + if (encodedValue.length() > 1) { + cut = encodedValue.substring(0, encodedValue.length() - 1); + } + if (CustomSerializer.isCustom(encodedValue)) { // custom:TYPE_NAME:"content is String-encoded" String type = CustomSerializer.typeOf(encodedValue); if (customTypes.containsKey(type)) { return customTypes.get(type).decode(encodedValue); } - throw new UnknownFormatConversionException( - "Unknown custom type: " + type); + throw new IOException("Unknown custom type: " + type); } else if (encodedValue.equals("NULL") || encodedValue.equals("null")) { return null; @@ -371,10 +399,10 @@ public class SerialUtils { return Integer.parseInt(encodedValue); } } catch (Exception e) { - if (e instanceof UnknownFormatConversionException) { - throw (UnknownFormatConversionException) e; + if (e instanceof IOException) { + throw (IOException) e; } - throw new UnknownFormatConversionException(e.getMessage()); + throw new IOException(e.getMessage()); } }