1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.sf.jdiskcatalog.io;
24
25 import java.awt.image.BufferedImage;
26 import java.io.IOException;
27
28 import net.sf.jdiskcatalog.analysis.JpegImage;
29
30 import com.thoughtworks.xstream.converters.Converter;
31 import com.thoughtworks.xstream.converters.MarshallingContext;
32 import com.thoughtworks.xstream.converters.UnmarshallingContext;
33 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
34 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
35
36 class ImageConverter implements Converter
37 {
38 public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context)
39 {
40 JpegImage image;
41 if (value instanceof BufferedImage)
42 image = new JpegImage((BufferedImage)value);
43 else
44 image = (JpegImage)value;
45 context.convertAnother(image.getData());
46 }
47
48 public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context)
49 {
50 byte[] data = new byte[0];
51 data = (byte[])context.convertAnother(null, data.getClass());
52 try
53 {
54 return new JpegImage(data);
55 }
56 catch (IOException e)
57 {
58 e.printStackTrace();
59 return null;
60 }
61 }
62
63 public boolean canConvert(Class clazz)
64 {
65 return (clazz == BufferedImage.class || clazz == JpegImage.class);
66 }
67
68 }