package org.fastcatsearch.http.action.management; import java.io.Writer; import org.fastcatsearch.control.JobService; import org.fastcatsearch.control.ResultFuture; import org.fastcatsearch.http.ActionMapping; import org.fastcatsearch.http.action.ActionRequest; import org.fastcatsearch.http.action.ActionResponse; import org.fastcatsearch.http.action.ServiceAction; import org.fastcatsearch.job.Job; import org.fastcatsearch.util.DynamicClassLoader; import org.fastcatsearch.util.ResponseWriter; import org.jboss.netty.handler.codec.http.HttpResponseStatus; @ActionMapping("/management/execute/job") public class JobExecuteAction extends ServiceAction { @Override public void doAction(ActionRequest request, ActionResponse response) throws Exception { writeHeader(response); response.setStatus(HttpResponseStatus.OK); String jobClassName = request.getParameter("job"); boolean isJoin = request.getBooleanParameter("join", true); Job job = DynamicClassLoader.loadObject(jobClassName,Job.class); job.setArgs(request.getParameterMap()); ResultFuture resultFuture = JobService.getInstance().offer(job); Object result = null; Writer writer = response.getWriter(); ResponseWriter resultWriter = getDefaultResponseWriter(writer); if(isJoin){ result = resultFuture.take(); writer.write("<h2>Run Job</h2>"); writer.write("<p>"+jobClassName+"</p><p>Result: <br/>\n"); writer.write("<pre>"+result.toString()+"</pre></p>"); resultWriter .object() .key("job").value(jobClassName); if(result != null && resultFuture.isSuccess()){ resultWriter.key("status").value("0"); resultWriter.key("result").value(result.toString()); }else{ resultWriter.key("status").value("1"); } resultWriter.endObject(); }else{ resultWriter .object() .key("job").value(jobClassName) .endObject(); } resultWriter.done(); if (writer != null) { writer.close(); } } }