Version 4.0.0: java.awt dependencies move
[nikiroo-utils.git] / src / be / nikiroo / utils / serial / SerialUtils.java
index decf57525fb30336ab00dee5be5bb2952d5f8196..3308a756c578bd14c3f5bc758cd31e30164afcaa 100644 (file)
@@ -1,17 +1,17 @@
 package be.nikiroo.utils.serial;
 
-import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.NotSerializableException;
 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;
 
-import be.nikiroo.utils.ImageUtils;
+import be.nikiroo.utils.Image;
 
 /**
  * Small class to help with serialisation.
@@ -37,6 +37,7 @@ import be.nikiroo.utils.ImageUtils;
  * <li>Enum (any enum whose name and value is known by the caller)</li>
  * <li>java.awt.image.BufferedImage (as a {@link CustomSerializer})</li>
  * <li>An array of the above (as a {@link CustomSerializer})</li>
+ * <li>URL</li>
  * </ul>
  * 
  * @author niki
@@ -106,26 +107,46 @@ public class SerialUtils {
                        }
                });
 
-               // Images (this is currently the only supported image type by default)
-               customTypes.put("java.awt.image.BufferedImage", new CustomSerializer() {
+               // URL:
+               customTypes.put("java.net.URL", new CustomSerializer() {
                        @Override
                        protected String toString(Object value) {
-                               try {
-                                       return ImageUtils.toBase64((BufferedImage) value);
-                               } catch (IOException e) {
-                                       throw new UnknownFormatConversionException(e.getMessage());
+                               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("be.nikiroo.utils.Image", new CustomSerializer() {
+                       @Override
+                       protected String toString(Object value) {
+                               return ((Image) value).toBase64();
                        }
 
                        @Override
                        protected String getType() {
-                               return "java.awt.image.BufferedImage";
+                               return "be.nikiroo.utils.Image";
                        }
 
                        @Override
                        protected Object fromString(String content) {
                                try {
-                                       return ImageUtils.fromBase64(content);
+                                       return new Image(content);
                                } catch (IOException e) {
                                        throw new UnknownFormatConversionException(e.getMessage());
                                }