package org.trianacode.http; import org.apache.commons.logging.Log; import org.thinginitself.http.HttpPeer; import org.thinginitself.http.RequestContext; import org.thinginitself.http.RequestProcessException; import org.thinginitself.http.Resource; import org.thinginitself.http.target.MemoryTarget; import org.trianacode.config.TrianaProperties; import org.trianacode.enactment.logging.Loggers; import org.trianacode.taskgraph.Task; import java.util.concurrent.atomic.AtomicInteger; /** * @author Andrew Harrison * @version 1.0.0 Jul 23, 2010 */ public class ResourceSpawn extends MemoryTarget { private static Log log = Loggers.TOOL_LOGGER; private Task task; private AtomicInteger count = new AtomicInteger(0); private HttpPeer peer; public ResourceSpawn(String path, Task task, HttpPeer peer) { super(path); this.task = task; ToolRenderer r = new ToolRenderer(); r.init(task, task.getToolName()); Resource res = new Resource(getPath().append(task.getToolName()), r.render(TrianaProperties.CREATE_TOOL_INSTANCE_PROPERTY, "text/html")); store.put(res); this.peer = peer; } public void onPost(RequestContext context) throws RequestProcessException { log.debug("ResourceSpawn.onPost ENTER " + context.getRequestTarget()); String path = task.getToolName() + "/" + count.incrementAndGet() + "/"; TaskResource res = new TaskResource(task, getPath().append(path).toString(), peer); peer.addTarget(res); ToolRenderer r = new ToolRenderer(); r.init(task, path); context.setResponseEntity(r.render(TrianaProperties.CREATE_TOOL_INSTANCE_PROPERTY, "text/html")); } public org.thinginitself.http.Resource getResource( org.thinginitself.http.RequestContext context) { log.debug("ResourceSpawn.getResource path:" + context.getRequestPath()); log.debug("ResourceSpawn.getResource target:" + context.getRequestTarget()); return super.getResource(context); } }