Added xstream handiling for Wikipedia upload/download
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / xml / XStreamManager.java
diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/xml/XStreamManager.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/xml/XStreamManager.java
new file mode 100644 (file)
index 0000000..07ad09a
--- /dev/null
@@ -0,0 +1,51 @@
+package net.sourceforge.phpeclipse.wiki.xml;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+public class XStreamManager {
+
+  public static String toXML(Page page) {
+    XStream xstream = new XStream(new DomDriver());
+    xstream.alias("page", Page.class);
+    xstream.changeDefaultConverter(new PageConverter(xstream.getClassMapper(), "revision"));
+    xstream.alias("revision", Revision.class);
+    return xstream.toXML(page);
+  }
+  
+  public static Page fromXML(String xmlString) {
+    XStream xstream = new XStream(new DomDriver());
+    xstream.alias("page", Page.class);
+    xstream.changeDefaultConverter(new PageConverter(xstream.getClassMapper(), "revision"));
+    xstream.alias("revision", Revision.class);
+    return (Page) xstream.fromXML(xmlString);
+  }
+  
+  public static Page fromXML(Reader xmlReader) {
+    XStream xstream = new XStream(new DomDriver());
+    xstream.alias("page", Page.class);
+    xstream.changeDefaultConverter(new PageConverter(xstream.getClassMapper(), "revision"));
+    xstream.alias("revision", Revision.class);
+    return (Page) xstream.fromXML(xmlReader);
+  }
+  
+  public static Page fromXML(InputStream iStream) {
+    InputStreamReader sReader = new InputStreamReader(iStream);
+    return fromXML(sReader);
+  }
+
+  public static void main(String[] args) {
+    Page page = new Page("20050129", "title", "body1");
+    page.add(new Revision("20050130", "body2", "Joe"));
+    page.add(new Revision("20050131", "body3"));
+    String xml = toXML(page);
+    System.out.println(xml);
+
+    Page newXML = (Page) fromXML(xml);
+    System.out.println(newXML);
+  }
+}
\ No newline at end of file