/* (c) Copyright 2011 Telefonica, I+D. Printed in Spain (Europe). All Righ Reserved. The copyright to the software program(s) is property of Telefonica I+D. The program(s) may be used and or copied only with the express written consent of Telefonica I+D or in accordance with the terms and conditions stipulated in the agreement/contract under which the program(s) have been supplied. */ package com.telefonica.claudia.smi.task; import java.io.IOException; import org.apache.log4j.Logger; import org.restlet.Context; import org.restlet.data.MediaType; import org.restlet.data.Request; import org.restlet.data.Response; import org.restlet.data.Status; import org.restlet.resource.Representation; import org.restlet.resource.Resource; import org.restlet.resource.ResourceException; import org.restlet.resource.StringRepresentation; import org.restlet.resource.Variant; public class TaskResource extends Resource { String orgId; String taskId; private static Logger log = Logger.getLogger("com.telefonica.claudia.smi.task.TaskResource"); public TaskResource(Context context, Request request, Response response) { super(context, request, response); this.orgId = (String) getRequest().getAttributes().get("org-id"); this.taskId = (String) getRequest().getAttributes().get("task-id"); if (orgId!=null && taskId!=null) { // Define the supported variant. getVariants().add(new Variant(MediaType.TEXT_XML)); // By default a resource cannot be updated. setModifiable(true); } else { // This resource is not available. setAvailable(false); } log.info("Task resource created"); } @Override public Representation represent(Variant variant) throws ResourceException { log.info("GET request recieved"); if (MediaType.TEXT_XML.equals(variant.getMediaType())) { try { if (TaskManager.getInstance().getTask(Long.parseLong(taskId))== null) { getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND); return null; } String taskDefinition = TaskManager.getInstance().getTask(Long.parseLong(taskId)).getStringDescription().replace("{org-id}", orgId); StringRepresentation representation = new StringRepresentation(taskDefinition, MediaType.TEXT_XML); log.debug("Data representation returned [" + taskDefinition + "]"); getResponse().setStatus(Status.SUCCESS_OK); return representation; } catch (IOException e) { log.error("Error connecting to the TaskManager: " + e.getMessage()); getResponse().setStatus(Status.SERVER_ERROR_INTERNAL, e); } } return null; } @Override public void removeRepresentations() throws ResourceException { log.info("DELETE request recieved on task " + taskId); TaskManager.getInstance().removeTask(Long.parseLong(taskId)); getResponse().setStatus(Status.SUCCESS_OK); } }