Author: xlawrence
Date: Tue Jan 10 18:25:01 2006
New Revision: 12760
URL: https://jahia.mine.nu/websvn/listing.php?sc=1&rev=12760&repname=jahia
Log:
fix allowing to validate more than 1 object. Don't use the Workflowhelper of
the parent page since it contains only 1 object
Modified:
trunk/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java
Modified:
trunk/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java
URL:
https://jahia.mine.nu/websvn/diff.php?path=/trunk/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java&rev=12760&repname=jahia
==============================================================================
--- trunk/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java
(original)
+++ trunk/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java
Tue Jan 10 18:25:01 2006
@@ -126,7 +126,7 @@
final String actionScreen = jParams.getParameter("screen");
final ContentPage page = jParams.getContentPage();
- logger.error("handleActions: " + actionScreen);
+ logger.debug("handleActions: " + actionScreen);
if ("cancel".equals(actionScreen)) {
// #ifdef LOCK
releaseAllLock(jParams);
@@ -214,7 +214,7 @@
}
}
} else if ("apply".equals(actionScreen)) {
- applyModifications(jParams, workflowHelper);
+ applyModifications(jParams);
initEngineMap(jParams, engineMap,
workflowHelper.getAllOptions());
engineMap.put("screen", ""); // Screen is defined bellow
engineMap.put("engineUrl",
jParams.composeEngineUrl("workflow", "?screen=display&display=" +
_lastDisplay.get(jParams.getSessionID()) + "&workflowAction=" +
_lastAction.get(jParams.getSessionID())));
@@ -222,7 +222,7 @@
// screen = save
} else if ("save".equals(actionScreen)) {
- applyModifications(jParams, workflowHelper);
+ applyModifications(jParams);
engineMap.put("jspSource", "close");
// #ifdef LOCK
releaseAllLock(jParams);
@@ -244,12 +244,35 @@
siteMapContentPage.getObjectKey().getType(), fieldId, pageID);
}
+ public static WorkflowHelper getWorkflowHelper(final ProcessingContext
jParams,
+ final List objects) throws
JahiaException {
+ WorkflowHelper workflowHelper = new WorkflowHelper(jParams);
+ try {
+ for (int i = 0; i < objects.size(); i++) {
+ final ContentObject obj =
ContentObject.getContentObjectInstance((ObjectKey) objects.get(i));
+ workflowHelper = getWorkflowHelper(jParams, obj,
workflowHelper);
+ }
+ } catch (ClassNotFoundException cn) {
+ logger.error(cn, cn);
+ }
+ return workflowHelper;
+ }
+
+ public static WorkflowHelper getWorkflowHelper(final ProcessingContext
jParams,
+ final ContentObject object)
throws JahiaException {
+ return getWorkflowHelper(jParams, object, null);
+ }
+
/**
* Returns a WorkflowHelper for a given ContentObject
*/
public static WorkflowHelper getWorkflowHelper(final ProcessingContext
jParams,
- final ContentObject object)
throws JahiaException {
- final WorkflowHelper workflowHelper = new WorkflowHelper(jParams);
+ final ContentObject object,
+ WorkflowHelper
workflowHelper) throws JahiaException {
+
+ if (workflowHelper == null) {
+ workflowHelper = new WorkflowHelper(jParams);
+ }
// String actionName = jParams.getParameter("display");
@@ -283,7 +306,7 @@
}
final boolean isWaitingState = languageState.intValue() ==
EntryLoadRequest.WAITING_WORKFLOW_STATE;
final boolean isActiveState = languageState.intValue() ==
EntryLoadRequest.ACTIVE_WORKFLOW_STATE;
- final boolean isStagingState = languageState.intValue() ==
EntryLoadRequest.STAGING_WORKFLOW_STATE;
+ // final boolean isStagingState = languageState.intValue() ==
EntryLoadRequest.STAGING_WORKFLOW_STATE;
final List availableOptions = new ArrayList();
@@ -425,8 +448,7 @@
*
* @param jParams ;)
*/
- private void applyModifications(ProcessingContext jParams,
- final WorkflowHelper workflowHelper)
+ private void applyModifications(ProcessingContext jParams)
throws JahiaException {
// Get the cache instance BEFORE applying any modification in case the
cache cannot
// be found for any mysterious reason ;o) THIS SHOULD STAY THE FIRST
ACTION TO
@@ -455,6 +477,7 @@
String action = (String) _lastAction.get(jParams.getSessionID());
+ final List keys = new ArrayList();
final Iterator paramNames = jParams.getParameterNames();
while (paramNames.hasNext()) {
final String paramName = (String) paramNames.next();
@@ -467,12 +490,15 @@
final String languageCode = paramToken.nextToken();
final String objectKeyStr = paramToken.nextToken();
final ObjectKey objectKey =
ObjectKey.getInstance(objectKeyStr);
+ keys.add(objectKey);
+ final WorkflowHelper workflowHelper =
getWorkflowHelper(jParams,
+
ContentObject.getContentObjectInstance(objectKey));
final String additionalOption = paramToken.nextToken();
// #ifdef LOCK
if (jParams.settings().areLocksActivated()) {
// Ensure that the lock is always our's.
- LockService lockRegistry =
ServicesRegistry.getInstance().getLockService();
- LockKey lockKey =
getLockKey(ContentObject.getContentObjectInstance(objectKey));
+ final LockService lockRegistry =
ServicesRegistry.getInstance().getLockService();
+ final LockKey lockKey =
getLockKey(ContentObject.getContentObjectInstance(objectKey));
if
(!lockRegistry.isAlreadyAcquiredInContext(lockKey, jParams.getUser(),
jParams.getUser().getUserKey())) {
continue;
@@ -500,6 +526,7 @@
}
}
final Map userNotifData = new HashMap();
+ final WorkflowHelper workflowHelper = getWorkflowHelper(jParams, keys);
try {
final List ordered = workflowHelper.getOrderedKeys();