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/03/23 14:41:35 UTC

svn commit: r158772 - in lenya/trunk/src: java/org/apache/lenya/cms/usecase/ webapp/WEB-INF/ webapp/lenya/pubs/default/config/ webapp/lenya/usecases/

Author: andreas
Date: Wed Mar 23 05:41:34 2005
New Revision: 158772

URL: http://svn.apache.org/viewcvs?view=rev&rev=158772
Log:
introduced usecase view configuration

Added:
    lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseView.java
Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
    lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java
    lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl
    lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf
    lenya/trunk/src/webapp/lenya/usecases/usecases.js

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&r1=158771&r2=158772
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java Wed Mar 23 05:41:34 2005
@@ -23,6 +23,9 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.context.Contextualizable;
@@ -33,7 +36,8 @@
  * 
  * @version $Id$
  */
-public class AbstractUsecase extends AbstractOperation implements Usecase, Contextualizable {
+public class AbstractUsecase extends AbstractOperation implements Usecase, Contextualizable,
+        Configurable {
 
     /**
      * Ctor.
@@ -67,8 +71,8 @@
     }
 
     /**
-     * Checks if the operation can be executed and returns the error messages.
-     * Error messages prevent the operation from being executed.
+     * Checks if the operation can be executed and returns the error messages. Error messages
+     * prevent the operation from being executed.
      * @return A boolean value.
      */
     public List getErrorMessages() {
@@ -77,8 +81,7 @@
 
     /**
      * Returns the information messages to show on the confirmation screen.
-     * @return An array of strings. Info messages do not prevent the operation
-     *         from being executed.
+     * @return An array of strings. Info messages do not prevent the operation from being executed.
      */
     public List getInfoMessages() {
         return Collections.unmodifiableList(this.infoMessages);
@@ -247,8 +250,7 @@
     private Map parameters = new HashMap();
 
     /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String,
-     *      java.lang.Object)
+     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
      */
     public void setParameter(String name, Object value) {
         if (getLogger().isDebugEnabled()) {
@@ -285,8 +287,8 @@
     }
 
     /**
-     * Returns one of the strings "true" or "false" depending on whether the
-     * corresponding checkbox was checked.
+     * Returns one of the strings "true" or "false" depending on whether the corresponding checkbox
+     * was checked.
      * @param name The parameter name.
      * @return A string.
      */
@@ -373,13 +375,6 @@
         this.parameters.remove(name);
     }
 
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#isInteractive()
-     */
-    public boolean isInteractive() {
-        return true;
-    }
-
     private String name;
 
     /**
@@ -411,5 +406,25 @@
         setParameter(SOURCE_URL, url);
         initParameters();
     }
-    
-}
+
+    private UsecaseView view;
+
+    /**
+     * @see org.apache.lenya.cms.usecase.Usecase#getView()
+     */
+    public UsecaseView getView() {
+        return this.view;
+    }
+
+    /**
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
+    public void configure(Configuration config) throws ConfigurationException {
+        Configuration viewConfig = config.getChild("view", false);
+        if (viewConfig != null) {
+            this.view = new UsecaseView();
+            view.configure(viewConfig);
+        }
+    }
+
+}
\ No newline at end of file

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&r1=158771&r2=158772
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/Usecase.java Wed Mar 23 05:41:34 2005
@@ -142,12 +142,6 @@
     String getTargetURL(boolean success);
 
     /**
-     * @return If the usecase is interactive, i.e. a confirmation screen should
-     *         be shown.
-     */
-    boolean isInteractive();
-    
-    /**
      * @param name The name of this usecase.
      */
     void setName(String name);
@@ -156,5 +150,10 @@
      * @return The name of this usecase.
      */
     String getName();
+    
+    /**
+     * @return The view of the usecase.
+     */
+    UsecaseView getView();
 
 }

Added: lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseView.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseView.java?view=auto&rev=158772
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseView.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseView.java Wed Mar 23 05:41:34 2005
@@ -0,0 +1,51 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.lenya.cms.usecase;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+
+/**
+ * Information about a usecase view.
+ * 
+ * @version $Id:$
+ */
+public class UsecaseView implements Configurable {
+    
+    protected static final String ATTRIBUTE_TEMPLATE_URI = "template";
+
+    /**
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
+    public void configure(Configuration config) throws ConfigurationException {
+        this.templateUri = config.getAttribute(ATTRIBUTE_TEMPLATE_URI);
+    }
+
+    private String templateUri;
+    
+    /**
+     * @return The URI of the JX template;
+     */
+    public String getTemplateURI() {
+        if (this.templateUri == null) {
+            throw new RuntimeException("The template URI was not configured!");
+        }
+        return this.templateUri;
+    }
+    
+}
\ No newline at end of file

Modified: lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl?view=diff&r1=158771&r2=158772
==============================================================================
--- lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl (original)
+++ lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl Wed Mar 23 05:41:34 2005
@@ -236,50 +236,120 @@
       role="org.apache.lenya.cms.usecase.UnitOfWorkImpl"/>
       
   <usecases>
-    <component-instance name="ac.login" logger="lenya.ac" class="org.apache.lenya.cms.ac.usecases.Login"/>
-    <component-instance name="ac.logout" logger="lenya.ac" class="org.apache.lenya.cms.ac.usecases.Logout"/>
+    <component-instance name="ac.login" logger="lenya.ac" class="org.apache.lenya.cms.ac.usecases.Login">
+      <view template="ac/login"/>
+    </component-instance>
+    <component-instance name="ac.logout" logger="lenya.ac" class="org.apache.lenya.cms.ac.usecases.Logout">
+      <view template="ac/logout"/>
+    </component-instance>
     
-    <component-instance name="admin.addUser" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddUser"/>
-    <component-instance name="admin.userProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserProfile"/>
-    <component-instance name="admin.changePassword" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserPassword"/>
-    <component-instance name="admin.userGroups" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserGroups"/>
-    <component-instance name="admin.deleteUser" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteUser"/>
-    <component-instance name="admin.addGroup" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddGroup"/>
-    <component-instance name="admin.groupProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.GroupProfile"/>
-    <component-instance name="admin.groupMembers" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.GroupMembers"/>
-    <component-instance name="admin.deleteGroup" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteGroup"/>
+    <component-instance name="admin.users" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.Users">
+      <view template="admin/users"/>
+    </component-instance>
+    <component-instance name="admin.addUser" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddUser">
+      <view template="admin/addUser"/>
+    </component-instance>
+    <component-instance name="admin.userProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserProfile">
+      <view template="admin/userProfile"/>
+    </component-instance>
+    <component-instance name="admin.changePassword" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserPassword">
+      <view template="admin/changePassword"/>
+    </component-instance>
+    <component-instance name="admin.userGroups" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserGroups">
+      <view template="admin/userGroups"/>
+    </component-instance>
+    <component-instance name="admin.deleteUser" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteUser">
+      <view template="admin/deleteUser"/>
+    </component-instance>
+    <component-instance name="admin.groups" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.Groups">
+      <view template="admin/groups"/>
+    </component-instance>
+    <component-instance name="admin.addGroup" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddGroup">
+      <view template="admin/addGroup"/>
+    </component-instance>
+    <component-instance name="admin.groupProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.GroupProfile">
+      <view template="admin/groupProfile"/>
+    </component-instance>
+    <component-instance name="admin.groupMembers" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.GroupMembers">
+      <view template="admin/groupMembers"/>
+    </component-instance>
+    <component-instance name="admin.deleteGroup" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteGroup">
+      <view template="admin/deleteGroup"/>
+    </component-instance>
     <!--
     <component-instance name="admin.addIPRange" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddIPRange"/>
     <component-instance name="admin.ipRangeProfileProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.IPRangeProfile"/>
     <component-instance name="admin.deleteIPRange" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteIPRange"/>
     -->
 
-    <component-instance name="search.search" logger="lenya.search" class="org.apache.lenya.cms.search.usecases.Search"/>
+    <component-instance name="search.search" logger="lenya.search" class="org.apache.lenya.cms.search.usecases.Search">
+      <view template="search/search"/>
+    </component-instance>
     
-    <component-instance name="site.create" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateDocument"/>
-    <component-instance name="site.createLanguage" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateLanguage"/>
-    <component-instance name="site.delete" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Delete"/>
-    <component-instance name="site.deleteLanguage" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.DeleteLanguage"/>
-    <component-instance name="site.changeLabel" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeLabel"/>
-    <component-instance name="site.changeNodeID" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeNodeID"/>
-    <component-instance name="site.cut" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Cut"/>
-    <component-instance name="site.copy" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Copy"/>
-    <component-instance name="site.paste" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Paste"/>
+    <component-instance name="site.create" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateDocument">
+      <view template="site/create"/>
+    </component-instance>
+    <component-instance name="site.createLanguage" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateLanguage">
+      <view template="site/createLanguage"/>
+    </component-instance>
+    <component-instance name="site.delete" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Delete">
+      <view template="site/delete"/>
+    </component-instance>
+    <component-instance name="site.deleteLanguage" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.DeleteLanguage">
+      <view template="site/deleteLanguage"/>
+    </component-instance>
+    <component-instance name="site.changeLabel" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeLabel">
+      <view template="site/changeLabel"/>
+    </component-instance>
+    <component-instance name="site.changeNodeID" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeNodeID">
+      <view template="site/changeNodeID"/>
+    </component-instance>
+    <component-instance name="site.cut" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Cut">
+      <view template="site/cut"/>
+    </component-instance>
+    <component-instance name="site.copy" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Copy">
+      <view template="site/copy"/>
+    </component-instance>
+    <component-instance name="site.paste" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Paste">
+      <view template="site/paste"/>
+    </component-instance>
     <component-instance name="site.nudge" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Nudge"/>
     
-    <component-instance name="tab.acArchive" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl"/>
-    <component-instance name="tab.acAuthoring" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl"/>
-    <component-instance name="tab.acLive" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl"/>
-    <component-instance name="tab.acTrash" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl"/>
-    <component-instance name="tab.assets" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Assets"/>
-    <component-instance name="tab.meta" logger="lenya.site" class="org.apache.lenya.cms.metadata.usecases.Metadata"/>
-    <component-instance name="tab.overview" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Overview"/>
-    <component-instance name="tab.revisions" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Revisions"/>
-    <component-instance name="tab.workflow" logger="lenya.site" class="org.apache.lenya.cms.workflow.usecases.History"/>
-    <component-instance name="tab.scheduler" logger="lenya.site" class="org.apache.lenya.cms.usecase.scheduling.ManageJobs"/>
+    <component-instance name="tab.acArchive" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">
+      <view template="tab/acArchive"/>
+    </component-instance>
+    <component-instance name="tab.acAuthoring" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">
+      <view template="tab/acAuthoring"/>
+    </component-instance>
+    <component-instance name="tab.acLive" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">
+      <view template="tab/acLive"/>
+    </component-instance>
+    <component-instance name="tab.acTrash" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">
+      <view template="tab/acTrash"/>
+    </component-instance>
+    <component-instance name="tab.assets" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Assets">
+      <view template="tab/assets"/>
+    </component-instance>
+    <component-instance name="tab.meta" logger="lenya.site" class="org.apache.lenya.cms.metadata.usecases.Metadata">
+      <view template="tab/meta"/>
+    </component-instance>
+    <component-instance name="tab.overview" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Overview">
+      <view template="tab/overview"/>
+    </component-instance>
+    <component-instance name="tab.revisions" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Revisions">
+      <view template="tab/revisions"/>
+    </component-instance>
+    <component-instance name="tab.workflow" logger="lenya.site" class="org.apache.lenya.cms.workflow.usecases.History">
+      <view template="tab/workflow"/>
+    </component-instance>
+    <component-instance name="tab.scheduler" logger="lenya.site" class="org.apache.lenya.cms.usecase.scheduling.ManageJobs">
+      <view template="tab/scheduler"/>
+    </component-instance>
     
     <component-instance name="publication.createPublicationFromTemplate" logger="lenya.site"
-                        class="org.apache.lenya.cms.publication.usecases.CreatePublicationFromTemplate"/>
+                        class="org.apache.lenya.cms.publication.usecases.CreatePublicationFromTemplate">
+      <view template="publication/createPublicationFromTemplate"/>
+    </component-instance>
   </usecases>
 
   <component role="org.apache.cocoon.components.cron.CronJob/usecase"

Modified: lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf?view=diff&r1=158771&r2=158772
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf Wed Mar 23 05:41:34 2005
@@ -4,24 +4,32 @@
                         logger="lenya.usecases.workflow"
                         class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">
       <event id="submit"/>
+      <view template="workflow/submit"/>
     </component-instance>
                         
     <component-instance name="default/workflow.reject"
                         logger="lenya.usecases.workflow"
                         class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">
       <event id="reject"/>
+      <view template="workflow/reject"/>
     </component-instance>
                         
     <component-instance name="default/workflow.publish"
                         logger="lenya.usecases.workflow"
-                        class="org.apache.lenya.defaultpub.cms.usecases.Publish"/>
+                        class="org.apache.lenya.defaultpub.cms.usecases.Publish">
+      <view template="workflow/publish"/>
+    </component-instance>
 
     <component-instance name="default/workflow.deactivate"
                         logger="lenya.usecases.workflow"
-                        class="org.apache.lenya.defaultpub.cms.usecases.Deactivate"/>
+                        class="org.apache.lenya.defaultpub.cms.usecases.Deactivate">
+      <view template="workflow/deactivate"/>
+    </component-instance>
 
     <component-instance name="default/site.delete"
                         logger="lenya.usecases.delete"
-                        class="org.apache.lenya.defaultpub.cms.usecases.Delete"/>
+                        class="org.apache.lenya.defaultpub.cms.usecases.Delete">
+      <view template="site/delete"/>
+    </component-instance>
 
   </xconf>

Modified: lenya/trunk/src/webapp/lenya/usecases/usecases.js
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/usecases/usecases.js?view=diff&r1=158771&r2=158772
==============================================================================
--- lenya/trunk/src/webapp/lenya/usecases/usecases.js (original)
+++ lenya/trunk/src/webapp/lenya/usecases/usecases.js Wed Mar 23 05:41:34 2005
@@ -39,13 +39,6 @@
 }
 
 
-function selectView(usecaseName) { 
-    var usecaseView = new Packages.java.lang.String(usecaseName).replace('.', '/');
-    var view = "view/" + usecaseView;
-    return view;
-}
-
-
 /* Returns the query string to attach to the target URL. This is used in the site area. */
 function getTargetQueryString(usecaseName) {
     var isTabUsecase = new Packages.java.lang.String(usecaseName).startsWith('tab');
@@ -59,7 +52,7 @@
 
 function executeUsecase() {
     var usecaseName = cocoon.request.getParameter("lenya.usecase");
-    var isInteractive;
+    var view;
     var proxy;
     
     var usecaseResolver;
@@ -74,7 +67,7 @@
         var sourceUrl = Packages.org.apache.lenya.util.ServletHelper.getWebappURI(request);
         usecase.setSourceURL(sourceUrl);
         usecase.setName(usecaseName);
-        isInteractive = usecase.isInteractive();
+        view = usecase.getView();
 
         passRequestParameters(flowHelper, usecase);
         usecase.checkPreconditions();
@@ -90,12 +83,11 @@
     var success = false;
     var targetUrl;
 
-    if (isInteractive) {
-        var view = selectView(usecaseName);
+    if (view) {
         var ready = false;
         while (!ready) {
         
-            cocoon.sendPageAndWait(view, {
+            cocoon.sendPageAndWait("view/" + view.getTemplateURI(), {
                 "usecase" : proxy
             });
             
@@ -137,6 +129,7 @@
         try {
             usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
             usecase = usecaseResolver.resolve(usecaseName);
+            proxy.setup(usecase);
                 
             usecase.execute();
             if (usecase.getErrorMessages().isEmpty()) {



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