1 package de.japrost.jabudget.serialization.xstream;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.OutputStream;
6
7 import com.thoughtworks.xstream.XStream;
8 import com.thoughtworks.xstream.io.xml.DomDriver;
9
10 import de.japrost.jabudget.domain.account.Account;
11 import de.japrost.jabudget.serialization.DomainStore;
12 import de.japrost.jabudget.serialization.Serialization;
13
14
15
16
17 public final class XStreamSerialization implements Serialization {
18
19 private final InputStream in;
20 private final OutputStream out;
21 private final XStream xstream;
22
23
24
25
26
27
28 public XStreamSerialization(final InputStream in) {
29 this(in, null);
30 }
31
32
33
34
35
36
37 public XStreamSerialization(final OutputStream out) {
38 this(null, out);
39 }
40
41
42
43
44
45
46
47 public XStreamSerialization(final InputStream in, final OutputStream out) {
48 this.in = in;
49 this.out = out;
50
51 this.xstream = new XStream(new DomDriver());
52 this.xstream.addImplicitCollection(DomainStore.class, "accounts");
53 this.xstream.aliasPackage("jabudget.account", Account.class.getPackageName());
54 this.xstream.aliasType("Store", DomainStore.class);
55 }
56
57
58
59
60
61
62 @Override
63 public void serialize(final DomainStore domainStore) {
64 xstream.toXML(domainStore, out);
65 try {
66 out.close();
67 } catch (final IOException e) {
68
69 e.printStackTrace();
70 }
71 }
72
73
74
75
76
77
78 @Override
79 public DomainStore deserialize() {
80 final DomainStore/../../../de/japrost/jabudget/serialization/DomainStore.html#DomainStore">DomainStore result = (DomainStore) xstream.fromXML(in);
81 try {
82 in.close();
83 } catch (final IOException e) {
84
85 e.printStackTrace();
86 }
87 return result;
88 }
89 }