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 2008/11/19 23:44:15 UTC
svn commit: r719109 - in
/lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases:
Publish.java Reject.java Submit.java
Author: andreas
Date: Wed Nov 19 14:44:15 2008
New Revision: 719109
URL: http://svn.apache.org/viewvc?rev=719109&view=rev
Log:
Committing changes to workflow module.
Modified:
lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java
lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java
Modified: lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java?rev=719109&r1=719108&r2=719109&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java Wed Nov 19 14:44:15 2008
@@ -33,7 +33,6 @@
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.Request;
import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identifiable;
import org.apache.lenya.ac.User;
import org.apache.lenya.cms.ac.PolicyUtil;
import org.apache.lenya.cms.linking.LinkManager;
@@ -59,10 +58,12 @@
import org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler;
import org.apache.lenya.cms.workflow.WorkflowUtil;
import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
+import org.apache.lenya.notification.Address;
import org.apache.lenya.notification.Message;
import org.apache.lenya.notification.NotificationEventDescriptor;
import org.apache.lenya.notification.NotificationException;
import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflowable;
@@ -98,22 +99,22 @@
Boolean canSendNotification = Boolean.valueOf(canNotifySubmitter());
setParameter(CAN_SEND_NOTIFICATION, canSendNotification);
setParameter(SEND_NOTIFICATION, canSendNotification);
-
+
setParameter(UNPUBLISHED_LINKS, new LinkList(this.manager, getSourceDocument()));
-
+
}
-
+
protected boolean canNotifySubmitter() {
-
+
boolean shallNotifySubmitter = false;
Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
getLogger(), getSourceDocument());
Version versions[] = workflowable.getVersions();
-
+
// consider the case that there was no submit transition
if (versions.length > 0) {
Version version = versions[versions.length - 1];
-
+
// we check if the document has been submitted, otherwise we do nothing
if (version.getEvent().equals("submit")) {
shallNotifySubmitter = true;
@@ -121,7 +122,7 @@
}
return shallNotifySubmitter;
}
-
+
protected boolean hasBrokenLinks() {
LinkManager linkMgr = null;
LinkResolver resolver = null;
@@ -147,7 +148,7 @@
}
return false;
}
-
+
/**
* @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
*/
@@ -156,15 +157,16 @@
List nodes = new ArrayList();
Document doc = getSourceDocument();
- if(doc != null) {
+ if (doc != null) {
nodes.add(doc.getRepositoryNode());
-
+
// lock the authoring site to avoid having live nodes for which no corresponding
// authoring node exists
nodes.add(doc.area().getSite().getRepositoryNode());
-
+
// lock the live site to avoid overriding changes made by others
- SiteStructure liveSite = doc.getPublication().getArea(Publication.LIVE_AREA).getSite();
+ SiteStructure liveSite = doc.getPublication().getArea(Publication.LIVE_AREA)
+ .getSite();
nodes.add(liveSite.getRepositoryNode());
}
@@ -177,8 +179,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()
*/
@@ -237,17 +239,16 @@
for (Iterator i = missingDocuments.iterator(); i.hasNext();) {
Document doc = (Document) i.next();
/*
- * This doesn't work yet, see
- * https://issues.apache.org/jira/browse/COCOON-2057
- * String[] params = { doc.getCanonicalWebappURL(),
- * doc.getPath() + " (" + doc.getLanguage() + ")" };
+ * This doesn't work yet, see https://issues.apache.org/jira/browse/COCOON-2057
+ * String[] params = { doc.getCanonicalWebappURL(), doc.getPath() + " (" +
+ * doc.getLanguage() + ")" };
*/
String[] params = { doc.getPath() + ":" + doc.getLanguage(),
DublinCoreHelper.getTitle(doc, true) };
addErrorMessage("missing-document", params);
}
}
-
+
if (hasBrokenLinks()) {
addInfoMessage("publish-broken-links");
}
@@ -255,8 +256,8 @@
}
/**
- * Returns a link of a certain node, preferably in the document's language,
- * or <code>null</code> if the node has no links.
+ * Returns a link of a certain node, preferably in the document's language, or <code>null</code>
+ * if the node has no links.
* @param path The path of the node.
* @param document The document.
* @return A link or <code>null</code>.
@@ -346,32 +347,34 @@
protected void sendNotification(Document authoringDocument) throws NotificationException,
DocumentException, AccessControlException {
-
+
if (!getParameterAsBoolean(CAN_SEND_NOTIFICATION, false)) {
- getLogger().error("Can't notify submitter of document [" + authoringDocument +
- "] because it hasn't been submitted.");
+ getLogger().error(
+ "Can't notify submitter of document [" + authoringDocument
+ + "] because it hasn't been submitted.");
return;
}
Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
getLogger(), authoringDocument);
Version versions[] = workflowable.getVersions();
-
+
// obtain submitted version
Version version = versions[versions.length - 2];
-
+
String userId = version.getUserId();
User user = PolicyUtil.getUser(this.manager, authoringDocument.getCanonicalWebappURL(),
userId, getLogger());
- Identifiable[] recipients = { user };
+ Address[] recipients = { new UserAddress(user) };
Document liveVersion = authoringDocument.getAreaVersion(Publication.LIVE_AREA);
- String url;
+ String url = getWebUrl(liveVersion);
+ String loggedInUserId = getSession().getIdentity().getUserReference().getId();
+ User loggedInUser = PolicyUtil.getUser(this.manager, getSourceURL(), loggedInUserId,
+ getLogger());
+ Address sender = new UserAddress(loggedInUser);
- url = getWebUrl(liveVersion);
- User sender = getSession().getIdentity().getUser();
-
Text[] subjectParams = { new Text(getEvent(), true) };
Text[] params = { new Text(url, false) };
Text subject = new Text(MESSAGE_SUBJECT, subjectParams);
@@ -417,16 +420,16 @@
s++;
}
}
-
+
/**
* A list of links originating from a document. Allows lazy loading rom the usecase view.
*/
public static class LinkList {
-
+
private Document document;
private Document[] documents;
private ServiceManager manager;
-
+
/**
* @param manager The manager.
* @param doc The document to resolve the links from.
@@ -435,7 +438,7 @@
this.manager = manager;
this.document = doc;
}
-
+
/**
* @return The link documents.
*/
@@ -445,7 +448,7 @@
}
return this.documents;
}
-
+
protected Document[] getUnpublishedLinks() {
Set docs = new HashSet();
LinkManager linkMgr = null;
Modified: lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java?rev=719109&r1=719108&r2=719109&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java Wed Nov 19 14:44:15 2008
@@ -20,7 +20,6 @@
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.Request;
import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identifiable;
import org.apache.lenya.ac.User;
import org.apache.lenya.cms.ac.PolicyUtil;
import org.apache.lenya.cms.observation.RepositoryEvent;
@@ -31,10 +30,12 @@
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.workflow.WorkflowUtil;
import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
+import org.apache.lenya.notification.Address;
import org.apache.lenya.notification.Message;
import org.apache.lenya.notification.NotificationException;
import org.apache.lenya.notification.NotificationEventDescriptor;
import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflowable;
@@ -65,7 +66,9 @@
protected void sendNotification(Document authoringDocument) throws NotificationException,
DocumentException, AccessControlException {
- User sender = getSession().getIdentity().getUser();
+ String loggedInUserId = getSession().getIdentity().getUserReference().getId();
+ User loggedInUser = PolicyUtil.getUser(this.manager, getSourceURL(), loggedInUserId, getLogger());
+ Address sender = new UserAddress(loggedInUser);
String reason = getParameterAsString(REJECT_REASON);
Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
@@ -82,7 +85,7 @@
User user = PolicyUtil.getUser(this.manager, authoringDocument.getCanonicalWebappURL(),
userId, getLogger());
- Identifiable[] recipients = { user };
+ Address[] recipients = { new UserAddress(user) };
Document authoringVersion = authoringDocument
.getAreaVersion(Publication.AUTHORING_AREA);
Modified: lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java?rev=719109&r1=719108&r2=719109&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java Wed Nov 19 14:44:15 2008
@@ -30,9 +30,11 @@
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.notification.NotificationException;
import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
+import org.apache.lenya.notification.Address;
import org.apache.lenya.notification.Message;
import org.apache.lenya.notification.NotificationEventDescriptor;
import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
/**
* Submit usecase handler.
@@ -58,16 +60,23 @@
protected void sendNotification(Document authoringDocument) throws NotificationException,
DocumentException, AccessControlException {
- User sender = getSession().getIdentity().getUser();
+ String loggedInUserId = getSession().getIdentity().getUserReference().getId();
+ User loggedInUser = PolicyUtil.getUser(this.manager, getSourceURL(), loggedInUserId, getLogger());
+ Address sender = new UserAddress(loggedInUser);
User[] recipients = PolicyUtil.getUsersWithRole(this.manager, authoringDocument
.getCanonicalWebappURL(), "review", getLogger());
-
+
// check to see if current user can review their own submission
for (int i = 0; i < recipients.length; i++) {
if (recipients[i].equals(sender))
return;
}
+
+ Address[] recipientAddresses = new UserAddress[recipients.length];
+ for (int i = 0; i < recipients.length; i++) {
+ recipientAddresses[i] = new UserAddress(recipients[i]);
+ }
String url;
Document authoringVersion = authoringDocument.getAreaVersion(Publication.AUTHORING_AREA);
@@ -87,7 +96,7 @@
Text[] params = { new Text(url, false) };
Text subject = new Text(MESSAGE_SUBJECT, subjectParams);
Text body = new Text(MESSAGE_DOCUMENT_SUBMITTED, params);
- Message message = new Message(subject, body, sender, recipients);
+ Message message = new Message(subject, body, sender, recipientAddresses);
NotificationEventDescriptor descriptor = new NotificationEventDescriptor(message);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org