You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/01/03 15:59:04 UTC

svn commit: r123978 - lenya/trunk/src/java/org/apache/lenya/cms/usecase

Author: andreas
Date: Mon Jan  3 06:59:02 2005
New Revision: 123978

URL: http://svn.apache.org/viewcvs?view=rev&rev=123978
Log:
added WorkflowUsecase
Added:
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java
Modified:
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java?view=diff&rev=123978&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java&r1=123977&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java&r2=123978
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java	Mon Jan  3 06:59:02 2005
@@ -29,14 +29,7 @@
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.cocoon.workflow.WorkflowHelper;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.workflow.WorkflowFactory;
 import org.apache.lenya.util.ServletHelper;
-import org.apache.lenya.workflow.Event;
-import org.apache.lenya.workflow.Situation;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.WorkflowInstance;
 
 /**
  * Abstract usecase implementation.
@@ -51,37 +44,12 @@
     public AbstractUsecase() {
     }
 
-    private Situation situation;
-
-    /**
-     * Sets the source URL and the workflow situation of the usecase.
-     * @param sourceUrl The URL the usecase was invoked on.
-     * @param situation The workflow situation.
-     * 
-     */
-    public void setup(String sourceUrl, Situation situation) {
-        this.sourceUrl = sourceUrl;
-        this.situation = situation;
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Invoking usecase on URL: [" + sourceUrl + "]");
-        }
-    }
-
     /**
      * Override to initialize parameters.
      */
     protected void initParameters() {
     }
 
-    /**
-     * Returns the workflow situation.
-     * @return A situation.
-     */
-    protected Situation getSituation() {
-        return this.situation;
-    }
-
     private String sourceUrl = null;
 
     /**
@@ -365,20 +333,17 @@
 
     /**
      * Does the actual initialization. Template method.
-     * @throws Exception if an error occurs.
      */
-    protected void doInitialize() throws Exception {
+    protected void doInitialize() {
         Map objectModel = ContextHelper.getObjectModel(this.context);
-        Situation situation;
-        try {
-            situation = WorkflowHelper.buildSituation(objectModel);
-        } catch (WorkflowException e) {
-            throw new RuntimeException(e);
-        }
         Request request = ObjectModelHelper.getRequest(objectModel);
         String webappUri = ServletHelper.getWebappURI(request);
         
-        setup(webappUri, situation);
+        this.sourceUrl = webappUri;
+
+        if (getLogger().isDebugEnabled()) {
+            getLogger().debug("Invoking usecase on URL: [" + this.sourceUrl + "]");
+        }
     }
 
     /**
@@ -393,33 +358,6 @@
      */
     protected void deleteParameter(String name) {
         this.parameters.remove(name);
-    }
-
-    /**
-     * Triggers a workflow event on a document.
-     * @param event The event.
-     * @param document The document.
-     */
-    protected void triggerWorkflow(String event, Document document) {
-        WorkflowFactory factory = WorkflowFactory.newInstance();
-        try {
-            WorkflowInstance instance = factory.buildInstance(document);
-            Event[] events = instance.getExecutableEvents(getSituation());
-            Event executableEvent = null;
-            for (int i = 0; i < events.length; i++) {
-                if (events[i].getName().equals(event)) {
-                    executableEvent = events[i];
-                }
-            }
-
-            if (executableEvent == null) {
-                throw new RuntimeException("The event [" + event
-                        + "] is not executable on document [" + document + "]");
-            }
-            instance.invoke(getSituation(), executableEvent);
-        } catch (WorkflowException e) {
-            throw new RuntimeException(e);
-        }
     }
 
 }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java?view=diff&rev=123978&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java&r1=123977&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java&r2=123978
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java	Mon Jan  3 06:59:02 2005
@@ -19,13 +19,12 @@
 
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.workflow.Situation;
 
 /**
  * 
  * Extends AbstractUsecase with document helper methods
  */
-public class DocumentUsecase extends AbstractUsecase {
+public class DocumentUsecase extends WorkflowUsecase {
 
     /**
      * Ctor.
@@ -34,15 +33,11 @@
         super();
     }
 
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setup(java.lang.String,
-     *      org.apache.lenya.workflow.Situation)
-     */
-    public void setup(String sourceUrl, Situation situation) {
-        super.setup(sourceUrl, situation);
+    protected void doInitialize() {
+        super.doInitialize();
         try {
             this.sourceDocument = getUnitOfWork().getIdentityMap().getFactory().getFromURL(
-                    sourceUrl);
+                    getSourceURL());
         } catch (DocumentBuildException e) {
             throw new RuntimeException(e);
         }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java?view=diff&rev=123978&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java&r1=123977&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java&r2=123978
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java	Mon Jan  3 06:59:02 2005
@@ -19,7 +19,6 @@
 import java.util.List;
 
 import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.workflow.Situation;
 
 /**
  * Usecase interface.
@@ -66,14 +65,6 @@
      * parameters are set.
      */
     void advance();
-    
-    /**
-     * Passes the source URL and the workflow situation to the usecase.
-     * @param sourceUrl The URL the usecase was invoked on.
-     * @param situation The workflow situation.
-     * 
-     */
-    void setup(String sourceUrl, Situation situation);
     
     /**
      * Checks the conditions before a form is displayed.

Added: lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java?view=auto&rev=123978
==============================================================================
--- (empty file)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java	Mon Jan  3 06:59:02 2005
@@ -0,0 +1,78 @@
+/*
+ * Created on 03.01.2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.lenya.cms.usecase;
+
+import java.util.Map;
+
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.lenya.cms.cocoon.workflow.WorkflowHelper;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.workflow.WorkflowFactory;
+import org.apache.lenya.workflow.Event;
+import org.apache.lenya.workflow.Situation;
+import org.apache.lenya.workflow.WorkflowException;
+import org.apache.lenya.workflow.WorkflowInstance;
+
+/**
+ * @author nobby
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WorkflowUsecase extends AbstractUsecase {
+
+    private Situation situation;
+
+    /**
+     * Returns the workflow situation.
+     * @return A situation.
+     */
+    protected Situation getSituation() {
+        return this.situation;
+    }
+
+    /**
+     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doInitialize()
+     */
+    protected void doInitialize() {
+        super.doInitialize();
+        Map objectModel = ContextHelper.getObjectModel(getContext());
+        try {
+            this.situation = WorkflowHelper.buildSituation(objectModel);
+        } catch (WorkflowException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Triggers a workflow event on a document.
+     * @param event The event.
+     * @param document The document.
+     */
+    protected void triggerWorkflow(String event, Document document) {
+        WorkflowFactory factory = WorkflowFactory.newInstance();
+        try {
+            WorkflowInstance instance = factory.buildInstance(document);
+            Event[] events = instance.getExecutableEvents(getSituation());
+            Event executableEvent = null;
+            for (int i = 0; i < events.length; i++) {
+                if (events[i].getName().equals(event)) {
+                    executableEvent = events[i];
+                }
+            }
+
+            if (executableEvent == null) {
+                throw new RuntimeException("The event [" + event
+                        + "] is not executable on document [" + document + "]");
+            }
+            instance.invoke(getSituation(), executableEvent);
+        } catch (WorkflowException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org