/* * Copyright (c) 2001 - 2012 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.geoserver.bkprst.rest; import java.util.Map; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; import org.geoserver.bkprst.BrManager; import org.geoserver.bkprst.BrTask; import org.geotools.util.logging.Logging; import org.restlet.data.MediaType; import org.restlet.data.Request; import org.restlet.data.Response; import org.restlet.data.Status; import org.restlet.resource.Resource; import com.thoughtworks.xstream.XStream; /** * * Resource class for single backup/restore tasks * * @author Simone Giannecchini, GeoSolutions SAS * */ public class BrTaskResource extends Resource { static Logger LOGGER = Logging.getLogger("org.geoserver.catalog.rest"); protected BrManager br; protected XStream xstream; public BrTaskResource(BrManager br) { this.br = br; this.xstream = new XStream(); } @Override public void handleGet() { final Request request = getRequest(); final Map<String, Object> attributes = request.getAttributes(); final Response response = getResponse(); String taskId = (String) attributes.get(BrManager.REST_ID); if(taskId==null){ LOGGER.log(Level.SEVERE,"Unable to locate the TaskID in the parsed request"); response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST); return; } try { BrTask task = this.br.getTask(UUID.fromString(taskId)); if (task != null) { response.setStatus(Status.SUCCESS_OK); response.setEntity(this.br.toXML(task), MediaType.APPLICATION_XML); } else { response.setStatus(Status.CLIENT_ERROR_NOT_FOUND); } } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); response.setStatus(Status.SERVER_ERROR_INTERNAL); } } }