package net.jsunit.action; import com.opensymphony.webwork.ServletActionContext; import com.opensymphony.xwork.ActionInvocation; import com.opensymphony.xwork.Result; import net.jsunit.XmlRenderable; import net.jsunit.utility.XmlUtility; import org.jdom.Document; import org.jdom.Element; import javax.servlet.http.HttpServletResponse; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.logging.Logger; public class XmlResult implements Result { private Logger logger = Logger.getLogger(XmlResult.class.getName()); public void execute(ActionInvocation invocation) throws Exception { XmlProducer producer = (XmlProducer) invocation.getAction(); XmlRenderable xmlRenderable = producer.getXmlRenderable(); Element element = xmlRenderable.asXml(); Document document = new Document(element); String xmlString = XmlUtility.asString(document); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/xml"); try { OutputStream out = response.getOutputStream(); BufferedOutputStream bufferedOut = new BufferedOutputStream(out); bufferedOut.write(xmlString.getBytes()); bufferedOut.close(); } catch (IOException e) { logger.warning("Failed to write result XML response to browser: " + e.toString()); } } }