KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > support > SerializationModelStreamer


1 package spoon.support;
2
3 import java.io.IOException JavaDoc;
4 import java.io.InputStream JavaDoc;
5 import java.io.ObjectInputStream JavaDoc;
6 import java.io.ObjectOutputStream JavaDoc;
7 import java.io.OutputStream JavaDoc;
8
9 import spoon.reflect.Factory;
10 import spoon.reflect.ModelStreamer;
11 import spoon.reflect.declaration.CtElement;
12 import spoon.reflect.reference.CtReference;
13 import spoon.reflect.visitor.CtScanner;
14
15 /**
16  * This class provides a regular Java serialization-based implementation of the
17  * model streamer.
18  */

19 public class SerializationModelStreamer implements ModelStreamer {
20
21     /**
22      * Default constructor.
23      */

24     public SerializationModelStreamer() {
25     }
26     
27     public void save(Factory f, OutputStream JavaDoc out) throws IOException JavaDoc {
28         ObjectOutputStream JavaDoc oos = new ObjectOutputStream JavaDoc(out);
29         oos.writeObject(f);
30         oos.close();
31     }
32
33     public Factory load(InputStream JavaDoc in) throws IOException JavaDoc {
34         try {
35             ObjectInputStream JavaDoc ois = new ObjectInputStream JavaDoc(in);
36             final Factory f = (Factory) ois.readObject();
37             new CtScanner() {
38                 public void enter(CtElement e) {
39                     e.setFactory(f);
40                     super.enter(e);
41                 }
42
43                 @Override JavaDoc
44                 protected void enterReference(CtReference e) {
45                     e.setFactory(f);
46                     super.enterReference(e);
47                 }
48             }.scan(f.Package().getAll());
49             ois.close();
50             return f;
51         } catch (ClassNotFoundException JavaDoc e) {
52             e.printStackTrace();
53             throw new IOException JavaDoc(e.getMessage());
54         }
55     }
56
57 }
58
Popular Tags