/sitebricks-client/src/main/java/com/google/sitebricks/client/transport/XStreamXmlTransport.java

http://github.com/dhanji/sitebricks · Java · 35 lines · 25 code · 7 blank · 3 comment · 0 complexity · f2ccfee1671c9a2bb6fdf04456b6aca3 MD5 · raw file

  1. package com.google.sitebricks.client.transport;
  2. import com.google.inject.Inject;
  3. import com.google.inject.TypeLiteral;
  4. import com.thoughtworks.xstream.XStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. /**
  9. * @author Dhanji R. Prasanna (dhanji@gmail.com)
  10. */
  11. class XStreamXmlTransport extends Xml {
  12. private final XStream xStream;
  13. @Inject
  14. public XStreamXmlTransport(XStream xStream) {
  15. this.xStream = xStream;
  16. }
  17. public <T> T in(InputStream in, Class<T> type) throws IOException {
  18. return type.cast(xStream.fromXML(in));
  19. }
  20. @Override
  21. @SuppressWarnings("unchecked")
  22. public <T> T in(InputStream in, TypeLiteral<T> type) throws IOException {
  23. return (T)xStream.fromXML(in);
  24. }
  25. public <T> void out(OutputStream out, Class<T> type, T data) {
  26. xStream.toXML(data, out);
  27. }
  28. }