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 2007/01/12 20:12:57 UTC

svn commit: r495689 - in /lenya/trunk/src: modules-core/ac-impl/ modules-core/cache/ modules-core/ldap/ modules-core/linking/ modules-core/observation-impl/ modules-core/properties/ modules-core/sitemanagement/ modules-core/sitemanagement/java/src/org/...

Author: andreas
Date: Fri Jan 12 11:12:55 2007
New Revision: 495689

URL: http://svn.apache.org/viewvc?view=rev&rev=495689
Log:
Refactored workflow event handling, replaced unpublished menus with OSGi-style package exporting

Added:
    lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java
Modified:
    lenya/trunk/src/modules-core/ac-impl/module.xml
    lenya/trunk/src/modules-core/cache/module.xml
    lenya/trunk/src/modules-core/ldap/module.xml
    lenya/trunk/src/modules-core/linking/module.xml
    lenya/trunk/src/modules-core/observation-impl/module.xml
    lenya/trunk/src/modules-core/properties/module.xml
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java
    lenya/trunk/src/modules-core/sitemanagement/module.xml
    lenya/trunk/src/modules-core/templating-impl/module.xml
    lenya/trunk/src/modules-core/usecase-impl/module.xml
    lenya/trunk/src/modules-core/usecase/module.xml
    lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java
    lenya/trunk/src/modules-core/workflow-impl/module.xml
    lenya/trunk/src/modules/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
    lenya/trunk/src/modules/blog/module.xml
    lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java
    lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java
    lenya/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java
    lenya/trunk/src/modules/jcr/module.xml
    lenya/trunk/src/modules/notification/module.xml
    lenya/trunk/src/modules/repository/module.xml
    lenya/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java
    lenya/trunk/src/modules/resource/module.xml
    lenya/trunk/src/modules/sitetree/module.xml
    lenya/trunk/src/modules/sourcerepository/module.xml
    lenya/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java
    lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java
    lenya/trunk/src/resources/build/module.rng
    lenya/trunk/src/resources/build/modules2build.xsl

Modified: lenya/trunk/src/modules-core/ac-impl/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/module.xml (original)
+++ lenya/trunk/src/modules-core/ac-impl/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,8 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.ac-impl</id>
-  <published>false</published>
+  <export package="org.apache.lenya.ac.file"/>
+  <export package="org.apache.lenya.cms.ac.usecases"/>
   <depends module="org.apache.lenya.modules.usecase"/>
   <depends module="org.apache.lenya.modules.cache"/>
   <package>org.apache.lenya.modules</package>

Modified: lenya/trunk/src/modules-core/cache/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/cache/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/cache/module.xml (original)
+++ lenya/trunk/src/modules-core/cache/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.cache</id>
+  <export package="org.apache.lenya.ac.cache"/>
   <depends module="org.apache.lenya.modules.usecase"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules-core/ldap/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ldap/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/ldap/module.xml (original)
+++ lenya/trunk/src/modules-core/ldap/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.ldap</id>
-  <published>false</published>
+  <export package="org.apache.lenya.ac.ldap"/>
   <depends module="org.apache.lenya.modules.ac-impl"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules-core/linking/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/linking/module.xml (original)
+++ lenya/trunk/src/modules-core/linking/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.linking</id>
-  <published>false</published>
+  <export package="org.apache.lenya.cms.linking"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>
   <name>Linking</name>

Modified: lenya/trunk/src/modules-core/observation-impl/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/observation-impl/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/observation-impl/module.xml (original)
+++ lenya/trunk/src/modules-core/observation-impl/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,6 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.observation-impl</id>
-  <published>false</published>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>
   <name>Observation implementation</name>

Modified: lenya/trunk/src/modules-core/properties/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/properties/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/properties/module.xml (original)
+++ lenya/trunk/src/modules-core/properties/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,6 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.properties</id>
-  <published>false</published>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>
   <name>Property system implementation</name>

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java Fri Jan 12 11:12:55 2007
@@ -26,13 +26,13 @@
 
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataRegistry;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.site.usecases.SiteUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 
 /**
  * Usecase to edit metadata for a resource.
@@ -117,10 +117,8 @@
         if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
             addErrorMessage("This usecase can only be invoked in the authoring area!");
         }
-        if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, getEvent())) {
-            String title = DublinCoreHelper.getTitle(doc);
-            addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
-        }
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc,
+                getLogger());
     }
 
     /**

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java Fri Jan 12 11:12:55 2007
@@ -26,6 +26,7 @@
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 
 /**
  * Change the label of a document.
@@ -55,10 +56,8 @@
             addErrorMessage("This usecase can only be invoked in the authoring area!");
         }
 
-        if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, getEvent())) {
-            String title = DublinCoreHelper.getTitle(doc);
-            addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
-        }
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc,
+                getLogger());
     }
 
     /**

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java Fri Jan 12 11:12:55 2007
@@ -26,6 +26,7 @@
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 
 /**
  * Switch the navigation visibility of a document.
@@ -53,11 +54,8 @@
         String[] languages = doc.getLanguages();
         for (int i = 0; i < languages.length; i++) {
             Document version = doc.getTranslation(languages[i]);
-            if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), version,
-                    getEvent())) {
-                String title = DublinCoreHelper.getTitle(version);
-                addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
-            }
+            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), version,
+                    getLogger());
         }
     }
 

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java Fri Jan 12 11:12:55 2007
@@ -22,6 +22,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Area;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentLocator;
@@ -79,6 +80,7 @@
                 }
                 if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), docs[i],
                         getEvent())) {
+                    String title = DublinCoreHelper.getTitle(docs[i]);
                     addErrorMessage("The workflow event [" + getEvent()
                             + "] cannot be invoked on document [" + docs[i] + "].");
                 }

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java Fri Jan 12 11:12:55 2007
@@ -32,6 +32,7 @@
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 
 /**
  * Rollback.
@@ -51,14 +52,8 @@
      */
     protected void doCheckPreconditions() throws Exception {
         super.doCheckPreconditions();
-        if (!WorkflowUtil.canInvoke(this.manager,
-                getSession(),
-                getLogger(),
-                getSourceDocument(),
-                getEvent())) {
-            addErrorMessage("error-workflow-document", new String[] { getEvent(),
-                    DublinCoreHelper.getTitle(getSourceDocument()) });
-        }
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
+                getLogger());
     }
 
     /**

Modified: lenya/trunk/src/modules-core/sitemanagement/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/module.xml (original)
+++ lenya/trunk/src/modules-core/sitemanagement/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.sitemanagement</id>
+  <export package="org.apache.lenya.cms.site.usecases"/>
   <depends module="org.apache.lenya.modules.usecase"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules-core/templating-impl/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/templating-impl/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/templating-impl/module.xml (original)
+++ lenya/trunk/src/modules-core/templating-impl/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,6 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.templating-impl</id>
-  <published>false</published>
   <depends module="org.apache.lenya.modules.usecase"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules-core/usecase-impl/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/usecase-impl/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/usecase-impl/module.xml (original)
+++ lenya/trunk/src/modules-core/usecase-impl/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,6 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.usecase-impl</id>
-  <published>false</published>
   <depends module="org.apache.lenya.modules.usecase"/>
   <depends module="org.apache.lenya.modules.cache"/>
   <package>org.apache.lenya.modules</package>

Modified: lenya/trunk/src/modules-core/usecase/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/usecase/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/usecase/module.xml (original)
+++ lenya/trunk/src/modules-core/usecase/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,10 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.usecase</id>
+  <export package="org.apache.lenya.cms.ac.usecase"/>
+  <export package="org.apache.lenya.cms.usecase"/>
+  <export package="org.apache.lenya.cms.usecase.scheduling"/>
+  <export package="org.apache.lenya.cms.usecase.xml"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>
   <name>Usecase framework API</name>

Modified: lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java (original)
+++ lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java Fri Jan 12 11:12:55 2007
@@ -20,7 +20,6 @@
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
@@ -62,11 +61,7 @@
 
         Document doc = getSourceDocument();
         if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, getEvent())) {
-            String title = DublinCoreHelper.getTitle(doc);
-            if (title == null) {
-                title = "";
-            }
-            addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
+            UsecaseWorkflowHelper.addWorkflowError(this, getEvent(), doc);
         }
     }
 

Added: lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java?view=auto&rev=495689
==============================================================================
--- lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java (added)
+++ lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java Fri Jan 12 11:12:55 2007
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.workflow.usecases;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.lenya.cms.metadata.MetaDataException;
+import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.usecase.AbstractUsecase;
+import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.workflow.WorkflowException;
+
+/**
+ * Helper class for workflow related usecases.
+ */
+public class UsecaseWorkflowHelper {
+
+    /**
+     * The error message that an event can not be invoked on a document. It
+     * takes two parameters: the event name and the document title.
+     */
+    protected static final String ERROR_CANNOT_INVOKE_EVENT = "error-workflow-document";
+
+    /**
+     * Adds an error message to a usecase that an event cannot be invoked on a
+     * document.
+     * @param usecase The usecase.
+     * @param event The event.
+     * @param doc The document.
+     */
+    protected static final void addWorkflowError(AbstractUsecase usecase, String event, Document doc) {
+        try {
+            String title = DublinCoreHelper.getTitle(doc);
+            if (title == null) {
+                title = "";
+            }
+            usecase.addErrorMessage(ERROR_CANNOT_INVOKE_EVENT, new String[] { event, title });
+        } catch (MetaDataException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Adds an error message if the event can not be invoked.
+     * @param manager The service manager.
+     * @param usecase The usecase.
+     * @param event The event.
+     * @param doc The document.
+     * @param logger The logger.
+     */
+    public static final void checkWorkflow(ServiceManager manager, AbstractUsecase usecase,
+            String event, Document doc, Logger logger) {
+        try {
+            if (!WorkflowUtil.canInvoke(manager, usecase.getSession(), logger, doc, event)) {
+                UsecaseWorkflowHelper.addWorkflowError(usecase, event, doc);
+            }
+        } catch (WorkflowException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+}

Modified: lenya/trunk/src/modules-core/workflow-impl/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/workflow-impl/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules-core/workflow-impl/module.xml (original)
+++ lenya/trunk/src/modules-core/workflow-impl/module.xml Fri Jan 12 11:12:55 2007
@@ -20,7 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.workflow-impl</id>
-  <published>false</published>
+  <export package="org.apache.lenya.cms.workflow.usecases"/>
   <depends module="org.apache.lenya.modules.usecase"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java (original)
+++ lenya/trunk/src/modules/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java Fri Jan 12 11:12:55 2007
@@ -78,8 +78,8 @@
     }
 
     /**
-     * Checks if the workflow event is supported and the parent of the document exists in the live
-     * area.
+     * Checks if the workflow event is supported and the parent of the document
+     * exists in the live area.
      * 
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
      */
@@ -95,17 +95,8 @@
                 return;
             }
 
-            if (!WorkflowUtil.canInvoke(this.manager,
-                    getSession(),
-                    getLogger(),
-                    getSourceDocument(),
-                    event)) {
-                String title = DublinCoreHelper.getTitle(getSourceDocument());
-                if (title == null) {
-                    title = "";
-                }
-                addErrorMessage("error-workflow-document", new String[] { getEvent(),
-                        title });
+            if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), document, event)) {
+                UsecaseWorkflowHelper.addWorkflowError(this, event, document);
             }
 
         }
@@ -124,10 +115,7 @@
             updateFeed();
             documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
             documentManager.copyToArea(authoringDocument, Publication.LIVE_AREA);
-            WorkflowUtil.invoke(this.manager,
-                    getSession(),
-                    getLogger(),
-                    authoringDocument,
+            WorkflowUtil.invoke(this.manager, getSession(), getLogger(), authoringDocument,
                     getEvent());
         } catch (Exception e) {
             throw new RuntimeException(e);
@@ -148,7 +136,7 @@
         Area live = pub.getArea(Publication.LIVE_AREA);
         String path = "/feeds/all/index";
         String language = pub.getDefaultLanguage();
-        
+
         docs[0] = live.getSite().getNode(path).getLink(language).getDocument();
         docs[1] = authoring.getSite().getNode(path).getLink(language).getDocument();
 
@@ -189,10 +177,8 @@
         DocumentHelper.setSimpleElementText(element, datestr);
 
         // set issued date on first time publish
-        Workflowable dw = WorkflowUtil.getWorkflowable(this.manager,
-                this.getSession(),
-                this.getLogger(),
-                doc);
+        Workflowable dw = WorkflowUtil.getWorkflowable(this.manager, this.getSession(), this
+                .getLogger(), doc);
         Version versions[] = dw.getVersions();
         boolean wasLive = false;
         for (int i = 0; i < versions.length; i++) {

Modified: lenya/trunk/src/modules/blog/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/blog/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/blog/module.xml (original)
+++ lenya/trunk/src/modules/blog/module.xml Fri Jan 12 11:12:55 2007
@@ -21,6 +21,7 @@
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.blog</id>
   <depends module="org.apache.lenya.modules.usecase"/>
+  <depends module="org.apache.lenya.modules.workflow-impl"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>
   <name>Blog</name>

Modified: lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java (original)
+++ lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java Fri Jan 12 11:12:55 2007
@@ -48,12 +48,12 @@
 import org.apache.excalibur.source.ModifiableSource;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.usecase.UsecaseMessage;
 import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 import org.apache.lenya.xml.DocumentHelper;
 import org.apache.lenya.xml.ValidationUtil;
 import org.apache.lenya.xml.XPath;
@@ -117,15 +117,8 @@
      */
     protected void doCheckPreconditions() throws Exception {
         super.doCheckPreconditions();
-        if (!WorkflowUtil.canInvoke(this.manager,
-                getSession(),
-                getLogger(),
-                getSourceDocument(),
-                getEvent())) {
-            String title = DublinCoreHelper.getTitle(getSourceDocument());
-            addErrorMessage("error-workflow-document", new String[] { getEvent(),
-                    title });
-        }
+        org.apache.lenya.cms.publication.Document doc = getSourceDocument();
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc, getLogger());
     }
 
     /**

Modified: lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java (original)
+++ lenya/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java Fri Jan 12 11:12:55 2007
@@ -29,12 +29,12 @@
 import org.apache.excalibur.source.ModifiableSource;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.ResourceType;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 import org.apache.lenya.xml.DocumentHelper;
 import org.apache.lenya.xml.Schema;
 import org.apache.lenya.xml.ValidationUtil;
@@ -61,15 +61,7 @@
      */
     protected void doCheckPreconditions() throws Exception {
         super.doCheckPreconditions();
-        if (!WorkflowUtil.canInvoke(this.manager,
-                getSession(),
-                getLogger(),
-                getSourceDocument(),
-                getEvent())) {
-            String title = DublinCoreHelper.getTitle(getSourceDocument());
-            addErrorMessage("error-workflow-document", new String[] { getEvent(),
-                    title });
-        }
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(), getLogger());
     }
 
     /**

Modified: lenya/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java (original)
+++ lenya/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java Fri Jan 12 11:12:55 2007
@@ -45,6 +45,7 @@
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 import org.apache.lenya.xml.DocumentHelper;
 import org.apache.lenya.xml.Schema;
 import org.apache.lenya.xml.ValidationUtil;
@@ -57,11 +58,10 @@
  * 
  */
 public class Fckeditor extends DocumentUsecase {
-    
-    public static final String TIDY_CONFIG="tidyConfig";
-    public static final String XSLT_CLEAN_FORMAT="xslt-clean";
-    
-    
+
+    public static final String TIDY_CONFIG = "tidyConfig";
+    public static final String XSLT_CLEAN_FORMAT = "xslt-clean";
+
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
      */
@@ -75,31 +75,22 @@
      */
     protected void initParameters() {
         super.initParameters();
-        
+
         Request request = ContextHelper.getRequest(this.context);
         String requesturi = request.getRequestURI();
-        String host = "http://"+request.getServerName()+":"+request.getServerPort();
-        setParameter("host",host);
-        setParameter("requesturi",requesturi);
-    }    
-    
-    
-    
+        String host = "http://" + request.getServerName() + ":" + request.getServerPort();
+        setParameter("host", host);
+        setParameter("requesturi", requesturi);
+    }
+
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
      */
     protected void doCheckPreconditions() throws Exception {
         super.doCheckPreconditions();
-        
-        
-        if (!WorkflowUtil.canInvoke(this.manager,
-                getSession(),
-                getLogger(),
-                getSourceDocument(),
-                getEvent())) {
-            addErrorMessage("error-workflow-document", new String[] { getEvent(),
-                    getSourceDocument().toString() });
-        }
+
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
+                getLogger());
     }
 
     /**
@@ -123,9 +114,10 @@
     }
 
     /**
-     * Save the content to the document source. After saving, the XML is validated. If validation
-     * errors occur, the usecase transaction is rolled back, so the changes are not persistent. If
-     * the validation succeeded, the workflow event is invoked.
+     * Save the content to the document source. After saving, the XML is
+     * validated. If validation errors occur, the usecase transaction is rolled
+     * back, so the changes are not persistent. If the validation succeeded, the
+     * workflow event is invoked.
      * @param encoding The encoding to use.
      * @param content The content to save.
      * @throws Exception if an error occurs.
@@ -141,44 +133,44 @@
             resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
             xmlSource = (ModifiableSource) resolver.resolveURI(getSourceDocument().getSourceURI());
             saveXMLFile(encoding, content, xmlSource);
-            
+
             Document xmlDoc = null;
-            
+
             // Setup an instance of Tidy.
             Tidy tidy = new Tidy();
-            
+
             String tidyProps = this.getParameterAsString(TIDY_CONFIG, null);
             if (tidyProps != null) {
                 tidySource = resolver.resolveURI(tidyProps);
                 if (getLogger().isDebugEnabled()) {
-                    getLogger().debug(
-                        "Loading configuration from " + tidySource.getURI());
+                    getLogger().debug("Loading configuration from " + tidySource.getURI());
                 }
                 properties = new Properties();
                 properties.load(tidySource.getInputStream());
-            
 
                 if (properties == null) {
                     tidy.setXHTML(true);
                 } else {
                     tidy.setConfigurationFromProps(properties);
                 }
-            
-                //Set Jtidy warnings on-off
+
+                // Set Jtidy warnings on-off
                 tidy.setShowWarnings(getLogger().isWarnEnabled());
-                //Set Jtidy final result summary on-off
+                // Set Jtidy final result summary on-off
                 tidy.setQuiet(!getLogger().isInfoEnabled());
-                //Set Jtidy infos to a String (will be logged) instead of System.out
+                // Set Jtidy infos to a String (will be logged) instead of
+                // System.out
                 StringWriter stringWriter = new StringWriter();
                 PrintWriter errorWriter = new PrintWriter(stringWriter);
                 tidy.setErrout(errorWriter);
 
                 xmlDoc = tidy.parseDOM(xmlSource.getInputStream(), null);
-            
-                // FIXME: Jtidy doesn't warn or strip duplicate attributes in same
+
+                // FIXME: Jtidy doesn't warn or strip duplicate attributes in
+                // same
                 // tag; stripping.
                 XMLUtils.stripDuplicateAttributes(xmlDoc, null);
-            
+
                 StringWriter output = new StringWriter();
                 StreamResult strResult = new StreamResult(output);
                 TransformerFactory tfac = TransformerFactory.newInstance();
@@ -189,22 +181,22 @@
                     t.setOutputProperty(OutputKeys.METHOD, "xml");
                     t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
                     t.transform(new DOMSource(xmlDoc.getDocumentElement()), strResult);
-                
+
                     content = strResult.getWriter().toString();
                 } catch (Exception e) {
                     addErrorMessage(e.getMessage());
                 }
-                
+
                 saveXMLFile(encoding, content, xmlSource);
             } else {
                 try {
-                  xmlDoc = DocumentHelper.readDocument(xmlSource.getInputStream());
+                    xmlDoc = DocumentHelper.readDocument(xmlSource.getInputStream());
                 } catch (SAXException e) {
                     addErrorMessage("error-document-form", new String[] { e.getMessage() });
                 }
             }
-            
-            //Try to clean the xml using xslt
+
+            // Try to clean the xml using xslt
             ResourceType resType = getSourceDocument().getResourceType();
             String[] formats = resType.getFormats();
             if (Arrays.asList(formats).contains(XSLT_CLEAN_FORMAT)) {
@@ -212,37 +204,37 @@
                 StreamResult strResult = new StreamResult(output);
                 TransformerFactory tfac = TransformerFactory.newInstance();
                 try {
-                    xsltSource = (ModifiableSource) resolver.resolveURI(resType.getFormatURI(XSLT_CLEAN_FORMAT));
-                    Transformer t = tfac.newTransformer(new StreamSource(xsltSource.getInputStream()));
+                    xsltSource = (ModifiableSource) resolver.resolveURI(resType
+                            .getFormatURI(XSLT_CLEAN_FORMAT));
+                    Transformer t = tfac.newTransformer(new StreamSource(xsltSource
+                            .getInputStream()));
                     t.setOutputProperty(OutputKeys.ENCODING, encoding);
                     t.setOutputProperty(OutputKeys.INDENT, "yes");
                     t.setOutputProperty(OutputKeys.METHOD, "xml");
                     t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
                     xmlDoc = DocumentHelper.readDocument(xmlSource.getInputStream());
                     t.transform(new DOMSource(xmlDoc.getDocumentElement()), strResult);
-                
+
                     content = strResult.getWriter().toString();
                 } catch (Exception e) {
                     addErrorMessage(e.getMessage());
                 }
-                
+
                 saveXMLFile(encoding, content, xmlSource);
             }
-            
+
             xmlDoc = DocumentHelper.readDocument(xmlSource.getInputStream());
-            
+
             if (xmlDoc != null) {
                 ResourceType resourceType = getSourceDocument().getResourceType();
                 Schema schema = resourceType.getSchema();
 
-                ValidationUtil.validate(this.manager, xmlDoc, schema, new UsecaseErrorHandler(this));
+                ValidationUtil
+                        .validate(this.manager, xmlDoc, schema, new UsecaseErrorHandler(this));
 
                 if (!hasErrors()) {
-                    WorkflowUtil.invoke(this.manager,
-                            getSession(),
-                            getLogger(),
-                            getSourceDocument(),
-                            getEvent());
+                    WorkflowUtil.invoke(this.manager, getSession(), getLogger(),
+                            getSourceDocument(), getEvent());
                 }
             }
 
@@ -264,7 +256,7 @@
             }
         }
     }
-    
+
     /**
      * Save the XML file
      * @param encoding The encoding

Modified: lenya/trunk/src/modules/jcr/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/jcr/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/jcr/module.xml (original)
+++ lenya/trunk/src/modules/jcr/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.jcr</id>
+  <export package="org.apache.lenya.cms.jcr"/>
   <depends module="org.apache.lenya.modules.repository"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules/notification/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/notification/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/notification/module.xml (original)
+++ lenya/trunk/src/modules/notification/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.notification</id>
+  <export package="org.apache.lenya.notification"/>
   <depends module="org.apache.lenya.modules.administration"/> <!-- necessary for tabs -->
   <depends module="org.apache.lenya.modules.usecase"/>
   <package>org.apache.lenya.modules</package>

Modified: lenya/trunk/src/modules/repository/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/repository/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/repository/module.xml (original)
+++ lenya/trunk/src/modules/repository/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,9 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.repository</id>
+  <export package="org.apache.lenya.cms.repo"/>
+  <export package="org.apache.lenya.cms.repo.metadata"/>
+  <export package="org.apache.lenya.cms.repo.metadata.impl"/>
   <depends module="org.apache.lenya.modules.sourcerepository"/>
   <package>org.apache.lenya.modules</package>
   <version>0.1-dev</version>

Modified: lenya/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java (original)
+++ lenya/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java Fri Jan 12 11:12:55 2007
@@ -23,6 +23,7 @@
 import org.apache.lenya.cms.publication.ResourceWrapper;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 import org.apache.lenya.util.ServletHelper;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Document;
@@ -49,10 +50,8 @@
             addErrorMessage("This usecase can only be invoked on existing documents.");
         }
 
-        if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, getEvent())) {
-            String title = DublinCoreHelper.getTitle(doc);
-            addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
-        }        
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc,
+                getLogger());
     }
 
     /**

Modified: lenya/trunk/src/modules/resource/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/resource/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/resource/module.xml (original)
+++ lenya/trunk/src/modules/resource/module.xml Fri Jan 12 11:12:55 2007
@@ -4,6 +4,7 @@
 
 <lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
   <lenya:id>org.apache.lenya.modules.resource</lenya:id>
+  <lenya:export package="org.apache.lenya.cms.site.usecases"/>
   <lenya:depends module="org.apache.lenya.modules.usecase"/>
   <lenya:depends module="org.apache.lenya.modules.defaultusecases"/>
   <lenya:depends module="org.apache.lenya.modules.sitemanagement"/>

Modified: lenya/trunk/src/modules/sitetree/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/sitetree/module.xml (original)
+++ lenya/trunk/src/modules/sitetree/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.sitetree</id>
+  <export package="org.apache.lenya.cms.site.tree"/>
   <depends module="org.apache.lenya.modules.ac-impl"/>
   <depends module="org.apache.lenya.modules.usecase"/>
   <package>org.apache.lenya.modules</package>

Modified: lenya/trunk/src/modules/sourcerepository/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/module.xml?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/module.xml (original)
+++ lenya/trunk/src/modules/sourcerepository/module.xml Fri Jan 12 11:12:55 2007
@@ -20,6 +20,7 @@
 
 <module xmlns="http://apache.org/lenya/module/1.0">
   <id>org.apache.lenya.modules.sourcerepository</id>
+  <export package="org.apache.lenya.cms.repository"/>
   <depends module="org.apache.lenya.modules.ac-impl"/>
   <depends module="org.apache.lenya.modules.usecase-impl"/>
   <package>org.apache.lenya.modules</package>

Modified: lenya/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java (original)
+++ lenya/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java Fri Jan 12 11:12:55 2007
@@ -39,6 +39,7 @@
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 import org.apache.lenya.xml.DocumentHelper;
 import org.apache.lenya.xml.Schema;
 import org.apache.lenya.xml.ValidationUtil;
@@ -75,12 +76,8 @@
      */
     protected void doCheckPreconditions() throws Exception {
         super.doCheckPreconditions();
-        if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), getSourceDocument(),
-                getEvent())) {
-            String title = DublinCoreHelper.getTitle(getSourceDocument());
-            addErrorMessage("error-workflow-document", new String[] { getEvent(),
-                    title });
-        }
+        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
+                getLogger());
         addInfoMessage("This is a usecase InfoMessage.");
     }
 

Modified: lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java (original)
+++ lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java Fri Jan 12 11:12:55 2007
@@ -47,6 +47,7 @@
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
+import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
 import org.apache.lenya.xml.Schema;
 import org.apache.lenya.xml.ValidationUtil;
 
@@ -88,12 +89,11 @@
     protected void doCheckExecutionConditions() throws Exception {
         super.doCheckExecutionConditions();
 
-        Document doc = getSourceDocument();
         String event = getParameterAsString(EVENT);
-        if (event != null
-                && !WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, event)) {
-            String title = DublinCoreHelper.getTitle(doc);
-            addErrorMessage("error-workflow-document", new String[] { event, title });
+        if (event != null) {
+            Document doc = getSourceDocument();
+            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, event, doc,
+                    getLogger());
         }
     }
 

Modified: lenya/trunk/src/resources/build/module.rng
URL: http://svn.apache.org/viewvc/lenya/trunk/src/resources/build/module.rng?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/resources/build/module.rng (original)
+++ lenya/trunk/src/resources/build/module.rng Fri Jan 12 11:12:55 2007
@@ -25,9 +25,11 @@
   <start>
     <element name="lenya:module" >
       <element name="lenya:id"><text/></element>
-      <optional>
-        <element name="lenya:published"><data type="boolean"/></element>
-      </optional>
+      <zeroOrMore>
+        <element name="lenya:export">
+          <attribute name="package"><text/></attribute>
+        </element>
+      </zeroOrMore>
       <zeroOrMore>
         <element name="lenya:depends">
           <attribute name="module"><text/></attribute>

Modified: lenya/trunk/src/resources/build/modules2build.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/resources/build/modules2build.xsl?view=diff&rev=495689&r1=495688&r2=495689
==============================================================================
--- lenya/trunk/src/resources/build/modules2build.xsl (original)
+++ lenya/trunk/src/resources/build/modules2build.xsl Fri Jan 12 11:12:55 2007
@@ -135,6 +135,7 @@
       <jing rngfile="{$module-schema}" file="{$src}/module.xml"/>
     </target>
     
+    <!--
     <target name="dependency-warning-{$id}">
       <xsl:if test="mod:published = 'false'">
         <property name="dependentModule" value=""/>
@@ -144,6 +145,7 @@
         </echo>
       </xsl:if>
     </target>
+    -->
     
     <xsl:text>
       
@@ -154,24 +156,54 @@
     
     <available file="{$src}/java/src" property="compile.module.{$id}"/>
     
-    <xsl:variable name="destDir">${build.dir}/modules/<xsl:value-of select="$id"/>/java/classes</xsl:variable>
+    <xsl:variable name="destDirPublic">${build.dir}/modules/<xsl:value-of select="$id"/>/java/classes/api</xsl:variable>
+    <xsl:variable name="destDirPrivate">${build.dir}/modules/<xsl:value-of select="$id"/>/java/classes/impl</xsl:variable>
     
-    <path id="module.classpath.{$id}">
+    <path id="module.classpath.{$id}.api">
       <path refid="classpath"/>
       <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-*-api.jar"/>
       <xsl:for-each select="mod:depends">
-        <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-module-{@module}.jar"/>
+        <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-module-{@module}-api.jar"/>
       </xsl:for-each>
       <fileset dir="{$src}" includes="java/lib/*.jar"/>
       <fileset dir="${{lib.dir}}" includes="*.jar"/>
     </path>
     
+    <path id="module.classpath.{$id}.impl">
+      <path refid="module.classpath.{$id}.api"/>
+      <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-module-{$id}-api.jar"/>
+    </path>
+    
     <target name="compile-module-{$id}" if="compile.module.{$id}">
       
-      <mkdir dir="{$destDir}"/>
+      <mkdir dir="{$destDirPublic}"/>
       
+      <xsl:if test="mod:export[@package]">
+        <javac
+          destdir="{$destDirPublic}"
+          debug="${{debug}}"
+          optimize="${{optimize}}"
+          deprecation="${{deprecation}}"
+          target="${{target.vm}}"
+          nowarn="${{nowarn}}"
+          source="${{src.java.version}}">
+          <src path="{$src}/java/src"/>
+          <xsl:for-each select="mod:export[@package]">
+            <include name="{translate(@package, '.', '/')}/*.java"/>
+          </xsl:for-each>
+          <classpath refid="module.classpath.{$id}.api"/>
+        </javac>
+        
+        <jar jarfile="${{build.webapp}}/WEB-INF/lib/lenya-module-{$id}-api.jar" index="true">
+          <fileset dir="{$destDirPublic}">
+            <exclude name="**/Manifest.mf"/>
+          </fileset>
+        </jar>
+      </xsl:if>
+
+      <mkdir dir="{$destDirPrivate}"/>
       <javac
-        destdir="{$destDir}"
+        destdir="{$destDirPrivate}"
         debug="${{debug}}"
         optimize="${{optimize}}"
         deprecation="${{deprecation}}"
@@ -179,15 +211,18 @@
         nowarn="${{nowarn}}"
         source="${{src.java.version}}">
         <src path="{$src}/java/src"/>
-        <classpath refid="module.classpath.{$id}"/>
+        <xsl:for-each select="mod:export[@package]">
+          <exclude name="{translate(@package, '.', '/')}/*.java"/>
+        </xsl:for-each>
+        <classpath refid="module.classpath.{$id}.impl"/>
       </javac>
       
-      <jar jarfile="${{build.webapp}}/WEB-INF/lib/lenya-module-{$id}.jar" index="true">
-        <fileset dir="{$destDir}">
+      <jar jarfile="${{build.webapp}}/WEB-INF/lib/lenya-module-{$id}-impl.jar" index="true">
+        <fileset dir="{$destDirPrivate}">
           <exclude name="**/Manifest.mf"/>
         </fileset>
       </jar>
-
+      
     </target>
     
     <xsl:variable name="dirName">
@@ -233,11 +268,13 @@
       
     </target>
     
+    <!--
     <target name="dependency-warnings-{$id}">
       <xsl:apply-templates select="mod:depends" mode="dependencyWarning">
         <xsl:with-param name="id" select="$id"/>
       </xsl:apply-templates>
     </target>
+    -->
     
     <xsl:variable name="dependencyList">
       <xsl:for-each select="mod:depends">
@@ -246,8 +283,11 @@
     </xsl:variable>
     
     <target name="deploy-module-{$id}"
-      depends="dependency-warnings-{$id}, {$dependencyList} validate-module-{$id}, compile-module-{$id}, copy-module-{$id}, patch-module-{$id}"/>
-      
+      depends="{$dependencyList} validate-module-{$id}, compile-module-{$id}, copy-module-{$id}, patch-module-{$id}"/>
+      <!--
+    depends="dependency-warnings-{$id}, {$dependencyList} validate-module-{$id}, compile-module-{$id}, copy-module-{$id}, patch-module-{$id}"/>
+    -->
+    
     <!-- ============================================================ -->
     <!-- Javadocs -->
     <!-- ============================================================ -->



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