[Yanel-commits] rev 24459 -
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet
michi at wyona.com
michi at wyona.com
Mon May 14 23:02:50 CEST 2007
Author: michi
Date: 2007-05-14 23:02:48 +0200 (Mon, 14 May 2007)
New Revision: 24459
Modified:
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
check if resource is workflowable and response accordingly
Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java 2007-05-14 20:57:48 UTC (rev 24458)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java 2007-05-14 21:02:48 UTC (rev 24459)
@@ -45,6 +45,7 @@
import org.wyona.yanel.core.api.attributes.VersionableV2;
import org.wyona.yanel.core.api.attributes.ViewableV1;
import org.wyona.yanel.core.api.attributes.ViewableV2;
+import org.wyona.yanel.core.api.attributes.WorkflowableV1;
import org.wyona.yanel.core.attributes.versionable.RevisionInformation;
import org.wyona.yanel.core.attributes.viewable.View;
import org.wyona.yanel.core.attributes.viewable.ViewDescriptor;
@@ -53,6 +54,8 @@
import org.wyona.yanel.core.serialization.SerializerFactory;
import org.wyona.yanel.core.transformation.I18nTransformer2;
import org.wyona.yanel.core.util.DateUtil;
+import org.wyona.yanel.core.workflow.WorkflowException;
+import org.wyona.yanel.core.workflow.WorkflowHelper;
import org.wyona.yanel.core.map.Map;
import org.wyona.yanel.core.map.Realm;
@@ -562,26 +565,33 @@
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- if (request.getParameter("yanel.resource.workflow.transition") != null) {
- // TODO: Implement response if transition has failed ...
+ String transition = request.getParameter("yanel.resource.workflow.transition");
+ if (transition != null) {
+
+ Resource resource = getResource(request, response);
+ if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Workflowable", "1")) {
+ WorkflowableV1 workflowable = (WorkflowableV1)resource;
+ try {
+ String revision = request.getParameter("yanel.resource.revision");
+ workflowable.doTransition(transition, revision);
+
+ response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK);
+ StringBuffer sb = new StringBuffer("<?xml version=\"1.0\"?>");
+ //sb.append(WorkflowHelper.getWorkflowIntrospection(resource));
+ // TODO: don't use WorkflowHelper here, it's implementation specific!
+ sb.append(WorkflowHelper.getWorkflowIntrospectionAnswer(resource, revision));
+ PrintWriter w = response.getWriter();
+ w.print(sb);
+ return;
+ } catch (WorkflowException e) {
+ // TODO: Implement response if transition has failed ...
+ log.error(e, e);
+ throw new ServletException(e.getMessage(), e);
+ }
+ } else {
+ log.warn("Resource not workflowable: " + resource.getPath());
+ }
- response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK);
- StringBuffer sb = new StringBuffer("<?xml version=\"1.0\"?>");
- sb.append("<workflow xmlns=\"http://www.wyona.org/neutron/2.0\">");
- sb.append(" <state date=\"2006-05-23T00:54:05+02:00\">LIVE</state>");
- sb.append("<transitions>");
- sb.append("<transition id=\"deactivate\" to=\"ARCHIVE\" url=\"?yanel.resource.workflow.transition=deactivate\" method=\"POST\">");
- sb.append("<description>Deactivate</description>");
- sb.append("</transition>");
- sb.append("</transitions>");
- sb.append("<history>");
- sb.append(" <state date=\"2006-05-23T00:38:05+02:00\">REVIEW</state>");
- sb.append(" <state date=\"2006-05-23T00:31:05+02:00\">DRAFT</state>");
- sb.append("</history>");
- sb.append("</workflow>");
- PrintWriter w = response.getWriter();
- w.print(sb);
- return;
}
String value = request.getParameter("yanel.resource.usecase");
More information about the Yanel-commits
mailing list