Use StAX to write config XML.

This commit is contained in:
Michael Jumper
2013-01-09 12:52:19 -08:00
parent 263cd8836c
commit 506c92c733

View File

@@ -19,11 +19,13 @@ package net.sourceforge.guacamole.net.basic;
*/ */
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
/** /**
@@ -45,23 +47,38 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
// Write XML // Write XML
response.setHeader("Content-Type", "text/xml"); response.setHeader("Content-Type", "text/xml");
PrintWriter out = response.getWriter();
out.println("<configs>");
try {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLStreamWriter xml = outputFactory.createXMLStreamWriter(response.getWriter());
// Begin document
xml.writeStartDocument();
xml.writeStartElement("configs");
// For each entry, write corresponding config element
for (Entry<String, GuacamoleConfiguration> entry : configs.entrySet()) { for (Entry<String, GuacamoleConfiguration> entry : configs.entrySet()) {
// Get config
GuacamoleConfiguration config = entry.getValue(); GuacamoleConfiguration config = entry.getValue();
// Write config // Write config
out.print("<config id=\""); xml.writeEmptyElement("config");
out.print(entry.getKey()); xml.writeAttribute("id", entry.getKey());
out.print("\" protocol=\""); xml.writeAttribute("protocol", config.getProtocol());
out.print(config.getProtocol());
out.println("\"/>");
} }
out.println("</configs>"); // End document
xml.writeEndElement();
xml.writeEndDocument();
}
catch (XMLStreamException e) {
throw new IOException("Unable to write configuration list XML.", e);
}
} }
} }