1 package org.apache.directmemory.serialization;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.ByteArrayInputStream;
23 import java.io.ByteArrayOutputStream;
24 import java.io.IOException;
25 import java.io.ObjectInputStream;
26 import java.io.ObjectOutputStream;
27 import java.io.ObjectStreamClass;
28
29 public final class StandardSerializer
30 implements Serializer
31 {
32
33
34
35
36 @Override
37 public <T> byte[] serialize( T obj )
38 throws IOException
39 {
40 ByteArrayOutputStream baos = new ByteArrayOutputStream();
41 ObjectOutputStream oos = new ObjectOutputStream( baos );
42 oos.writeObject( obj );
43 oos.flush();
44 oos.close();
45 return baos.toByteArray();
46 }
47
48
49
50
51 @Override
52 public <T> T deserialize( byte[] source, final Class<T> clazz )
53 throws IOException, ClassNotFoundException
54 {
55 ByteArrayInputStream bis = new ByteArrayInputStream( source );
56 ObjectInputStream ois = new ObjectInputStream( bis )
57 {
58
59 @Override
60 protected Class<?> resolveClass( ObjectStreamClass objectStreamClass )
61 throws IOException, ClassNotFoundException
62 {
63 ClassLoader classLoader = clazz.getClassLoader();
64 return classLoader != null
65 ? classLoader.loadClass( objectStreamClass.getName() )
66 : Class.forName( objectStreamClass.getName() );
67 }
68
69 };
70 T obj = clazz.cast( ois.readObject() );
71 ois.close();
72 return obj;
73 }
74
75 }