/** Accepts <tt>config.xml</tt> submission, as well as serve it. */ @WebMethod(name = "config.xml") public void doConfigDotXml(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { checkPermission(Jenkins.ADMINISTER); if (req.getMethod().equals("GET")) { // read rsp.setContentType("application/xml"); Jenkins.XSTREAM2.toXML(getNode(), rsp.getOutputStream()); return; } if (req.getMethod().equals("POST")) { // submission Node result = (Node) Jenkins.XSTREAM2.fromXML(req.getReader()); replaceBy(result); return; } // huh? rsp.sendError(SC_BAD_REQUEST); }
/** * Action when 'restore' button is pressed: Replace current config file by older version. * * @param req Incoming StaplerRequest * @param rsp Outgoing StaplerResponse * @throws IOException If something goes wrong */ public final void doRestore(StaplerRequest req, StaplerResponse rsp) throws IOException { checkConfigurePermission(); final String timestamp = req.getParameter("timestamp"); final XmlFile xmlFile = getHistoryDao().getOldRevision(slave, timestamp); final Slave newSlave = (Slave) Jenkins.XSTREAM2.fromXML(xmlFile.getFile()); final List<Node> nodes = new ArrayList<Node>(); nodes.addAll(hudson.getNodes()); nodes.remove(slave); nodes.add(newSlave); slave = newSlave; hudson.setNodes(nodes); rsp.sendRedirect(getHudson().getRootUrl() + slave.toComputer().getUrl()); }