--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/MetroServlet.java 2010/09/16 09:11:23 1059 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/MetroServlet.java 2010/09/16 13:32:10 1060 @@ -1,5 +1,6 @@ package dk.thoerup.traininfoservice.banedk; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -10,10 +11,13 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.simpleframework.xml.Serializer; +import org.simpleframework.xml.core.Persister; + import dk.thoerup.circuitbreaker.CircuitBreakerException; import dk.thoerup.traininfoservice.Statistics; import dk.thoerup.traininfoservice.banedk.MetroFetcher.MetroBean; -import dk.thoerup.traininfoservice.banedk.MetroFetcher.MetroEntry; + @@ -48,6 +52,7 @@ resp.setDateHeader("Expires", 0); resp.setHeader("Cache-Control", "no-cache, must-revalidate"); + resp.setContentType("text/xml"); resp.getWriter().print(xml); } catch (java.io.IOException ioe) { @@ -70,29 +75,19 @@ } - String formatXml(MetroBean metro) { - StringBuilder sb = new StringBuilder(); + String formatXml(MetroBean metro) throws ServletException { - sb.append("\n"); - sb.append(" " + metro.head + "\n"); - sb.append(" " + metro.operationInfo + "\n"); - - sb.append(" \n"); - for (MetroEntry entry : metro.entries) { - sb.append(" \n"); - sb.append(" " + entry.metro + "\n"); - sb.append(" " + entry.destination + "\n"); - sb.append(" " + entry.minutes + "\n"); - sb.append(" \n"); + Serializer serializer = new Persister(); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + try { + serializer.write(metro, out); + } catch (Exception e) { + throw new ServletException(e); } - sb.append(" \n"); - - sb.append(" " + metro.plan + "\n"); - - sb.append("\n"); - - return sb.toString(); + return out.toString(); } }