/** Returns a StringRepresentation with the status of the running threads in the thread pool. */ private void handleProgress(Request req, Response resp, ArrayList<GWCTaskStatus> taskList) throws RestletException { Object[] tasks = taskList.toArray(); StringBuilder strBld = new StringBuilder(); strBld.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); strBld.append("<Tasks>"); XStream xs = new XStream(); xs.omitField(GWCTask.class, "parsedType"); xs.omitField(GWCTask.class, "state"); xs.omitField(GWCTask.class, "sharedThreadCount"); xs.omitField(GWCTask.class, "groupStartTime"); xs.omitField(GWCTask.class, "storageBroker"); xs.alias("GWCTaskStatus", GWCTaskStatus.class); for (int i = 0; i < tasks.length; i++) { GWCTaskStatus taskStatus = (GWCTaskStatus) tasks[i]; Iterator<Entry<Long, GWCTask>> iter = seeder.getRunningTasksIterator(); while (iter.hasNext()) { Entry<Long, GWCTask> entry = iter.next(); GWCTask task = entry.getValue(); if (task.getDbId() == taskStatus.getDbId()) { taskStatus.setTaskId(task.getTaskId()); taskStatus.setThreadRunning(true); taskStatus.setTilesDone(task.getTilesDone()); taskStatus.setTilesTotal(task.getTilesTotal()); taskStatus.setTimeSpent(task.getTimeSpent()); taskStatus.setTimeRemaing(task.getTimeRemaining()); } } String task_xml = xs.toXML(taskStatus); strBld.append(task_xml); } strBld.append("</Tasks>"); resp.setEntity(strBld.toString(), MediaType.TEXT_XML); }