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