1 package spoon.support; 2 3 import java.io.IOException ; 4 import java.io.InputStream ; 5 import java.io.ObjectInputStream ; 6 import java.io.ObjectOutputStream ; 7 import java.io.OutputStream ; 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 19 public class SerializationModelStreamer implements ModelStreamer { 20 21 24 public SerializationModelStreamer() { 25 } 26 27 public void save(Factory f, OutputStream out) throws IOException { 28 ObjectOutputStream oos = new ObjectOutputStream (out); 29 oos.writeObject(f); 30 oos.close(); 31 } 32 33 public Factory load(InputStream in) throws IOException { 34 try { 35 ObjectInputStream ois = new ObjectInputStream (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 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 e) { 52 e.printStackTrace(); 53 throw new IOException (e.getMessage()); 54 } 55 } 56 57 } 58 | Popular Tags |