svn commit: r641118 - in /lenya/trunk/src/modules-core: metadata/config/ metadata/config/cocoon-xconf/ metadata/java/src/org/apache/lenya/modules/metadata/ sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/
[email protected] Wed, 26 Mar 2008 02:34:11 -0000
Newsgroups
gmane.comp.cms.lenya.cvs
Message-ID
<[email protected] >
Author: andreas
Date: Tue Mar 25 19:34:09 2008
New Revision: 641118
URL: http://svn.apache.org/viewvc?rev=641118&view=rev
Log:
Adding workflow handling to ChangeMetaData usecase.
Modified:
lenya/trunk/src/modules-core/metadata/config/cocoon-xconf/usecase-change.xconf
lenya/trunk/src/modules-core/metadata/config/module.xml
lenya/trunk/src/modules-core/metadata/java/src/org/apache/lenya/modules/metadata/ChangeMetaData.java
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
Modified: lenya/trunk/src/modules-core/metadata/config/cocoon-xconf/usecase-change.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/metadata/config/cocoon-xconf/usecase-change.xconf?rev=641118&r1=641117&r2=641118&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/metadata/config/cocoon-xconf/usecase-change.xconf (original)
+++ lenya/trunk/src/modules-core/metadata/config/cocoon-xconf/usecase-change.xconf Tue Mar 25 19:34:09 2008
@@ -24,5 +24,6 @@
<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'metadata.change']">
<component-instance name="metadata.change" logger="lenya.metadata" class="org.apache.lenya.modules.metadata.ChangeMetaData">
<view uri="cocoon://modules/metadata/change" createContinuation="false"/>
+ <event id="edit"/>
</component-instance>
</xconf>
Modified: lenya/trunk/src/modules-core/metadata/config/module.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/metadata/config/module.xml?rev=641118&r1=641117&r2=641118&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/metadata/config/module.xml (original)
+++ lenya/trunk/src/modules-core/metadata/config/module.xml Tue Mar 25 19:34:09 2008
@@ -19,6 +19,7 @@
<id>org.apache.lenya.modules.metadata</id>
<export package="org.apache.lenya.modules.metadata"/>
<depends module="org.apache.lenya.modules.usecase"/>
+ <depends module="org.apache.lenya.modules.workflow"/>
<package>org.apache.lenya.modules</package>
<version>2.0.2-dev</version>
<name>Meta Data</name>
Modified: lenya/trunk/src/modules-core/metadata/java/src/org/apache/lenya/modules/metadata/ChangeMetaData.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/metadata/java/src/org/apache/lenya/modules/metadata/ChangeMetaData.java?rev=641118&r1=641117&r2=641118&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/metadata/java/src/org/apache/lenya/modules/metadata/ChangeMetaData.java (original)
+++ lenya/trunk/src/modules-core/metadata/java/src/org/apache/lenya/modules/metadata/ChangeMetaData.java Tue Mar 25 19:34:09 2008
@@ -18,14 +18,17 @@
package org.apache.lenya.modules.metadata;
import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.usecase.DocumentUsecase;
import org.apache.lenya.cms.usecase.UsecaseInvoker;
+import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
import org.apache.lenya.util.Assert;
/**
* Save a meta data element.
*/
-public class ChangeMetaData extends DocumentUsecase {
+public class ChangeMetaData extends InvokeWorkflow {
protected static final String PARAM_NAMESPACE = "namespace";
protected static final String PARAM_ELEMENT = "element";
@@ -48,6 +51,16 @@
protected void doCheckPreconditions() throws Exception {
super.doCheckPreconditions();
+
+ Document doc = getSourceDocument();
+ if (doc == null) {
+ return;
+ }
+ if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
+ addErrorMessage("This usecase can only be invoked in the authoring area!");
+ return;
+ }
+
String namespace = getParameterAsString(PARAM_NAMESPACE);
Assert.notNull("namespace", namespace);
String element = getParameterAsString(PARAM_ELEMENT);
@@ -71,6 +84,8 @@
protected void doExecute() throws Exception {
+ super.doExecute();
+
String namespace = getParameterAsString(PARAM_NAMESPACE);
Assert.notNull("namespace", namespace);
String element = getParameterAsString(PARAM_ELEMENT);
@@ -83,5 +98,4 @@
MetaData meta = getSourceDocument().getMetaData(namespace);
meta.setValue(element, value);
}
-
}
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?rev=641118&r1=641117&r2=641118&view=diff
==============================================================================
--- 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 Tue Mar 25 19:34:09 2008
@@ -121,64 +121,6 @@
this.manager.release(registry);
}
}
-
- }
-
- protected void doCheckPreconditions() throws Exception {
- super.doCheckPreconditions();
- Document doc = getSourceDocument();
- if (doc == null) {
- return;
- }
-
- if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
- addErrorMessage("This usecase can only be invoked in the authoring area!");
- }
- UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc,
- getLogger());
- }
-
- /**
- * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
- */
- protected void doExecute() throws Exception {
- super.doExecute();
-
- // we need a reverse lookup to get the correct ns index:
- Map num2namespace = (Map) getParameter("namespaces");
- Map namespace2num = new HashMap();
-
- Iterator iter = num2namespace.keySet().iterator();
- while (iter.hasNext()) {
- String key = (String) iter.next();
- namespace2num.put(num2namespace.get(key), key);
- }
-
- Document document = getSourceDocument();
- String[] namespaces = document.getMetaDataNamespaceUris();
-
- for (int nsIndex = 0; nsIndex < namespaces.length; nsIndex++) {
- MetaData meta = document.getMetaData(namespaces[nsIndex]);
- String orgNsIndex = (String) namespace2num.get(namespaces[nsIndex]);
-
- String[] keys = meta.getPossibleKeys();
- for (int keyIndex = 0; keyIndex < keys.length; keyIndex++) {
- String key = keys[keyIndex];
- Element element = meta.getElementSet().getElement(key);
- if (element.isEditable()) {
- Object value = getParameter("ns" + orgNsIndex + "." + key);
- if (value != null && value instanceof String) {
- meta.setValue(key, (String) value);
- }
- }
- }
- }
-
- WorkflowUtil.invoke(this.manager, getSession(), getLogger(), document, getEvent());
- }
-
- protected String getEvent() {
- return "edit";
}
}