Author: tdraier
Date: Mon Jul 9 15:47:00 2007
New Revision: 17925
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D17925&repname=
=3Djahia
Log:
-use stateModificationContext to store the list of all activated objects
-links do not display validation errors if destination is part of validation
-correctly propagate delete validation, removed inconsistent warning
Modified:
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/fields/Co=
ntentPageField.java
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/version/S=
tateModificationContext.java
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
ActivationJob.java
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
NotifyAllJob.java
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
PublishAllJob.java
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
SimpleActivationJob.java
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/fie=
lds/ContentPageField.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/fields/ContentPageField.java&rev=
=3D17925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/fields/Co=
ntentPageField.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/fields/Co=
ntentPageField.java Mon Jul 9 15:47:00 2007
@@ -404,7 +404,8 @@
linkPage =3D null;
}
if (linkPage !=3D null) {
- if (linkPage.hasActiveEntries() || isMarkedFor=
Delete()) {
+ if (linkPage.hasActiveEntries() || isMarkedFor=
Delete() ||
+ stateModifContext.isModifiedObject(Wor=
kflowService.getInstance().getMainLinkObject(new ContentPageKey(linkPage.ge=
tID())))) {
activationTestResults.setStatus(Activation=
TestResults.COMPLETED_OPERATION_STATUS);
} else {
activationTestResults.setStatus(Activation=
TestResults.PARTIAL_OPERATION_STATUS);
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/ver=
sion/StateModificationContext.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/version/StateModificationContext.j=
ava&rev=3D17925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/version/S=
tateModificationContext.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/version/S=
tateModificationContext.java Mon Jul 9 15:47:00 2007
@@ -19,8 +19,10 @@
import java.util.HashSet;
import java.util.Set;
import java.util.Stack;
+import java.util.Collection;
=
import org.jahia.content.ObjectKey;
+import org.jahia.content.ContentObjectKey;
=
/**
* <p>Title: Contains the "context" of an activation operation</p>
@@ -56,6 +58,8 @@
// for deletion operations because we might break content tree nodes.
private Stack allLanguagesStack =3D new Stack();
=
+ private Set allModifiedObjects =3D new HashSet();
+
/**
* Making the default constructor private because we want to enforce t=
he
* creation of this object only with valid language codes.
@@ -215,4 +219,16 @@
final Boolean removedElement =3D (Boolean) allLanguagesStack.pop();
return removedElement.booleanValue();
}
+
+ public void addModifiedObject(ContentObjectKey k) {
+ allModifiedObjects.add(k);
+ }
+
+ public void addModifiedObjects(Collection c) {
+ allModifiedObjects.addAll(c);
+ }
+
+ public boolean isModifiedObject(ContentObjectKey k) {
+ return allModifiedObjects.contains(k);
+ }
}
\ No newline at end of file
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/ActivationJob.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/ActivationJob.java&rev=3D=
17925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
ActivationJob.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
ActivationJob.java Mon Jul 9 15:47:00 2007
@@ -102,9 +102,13 @@
String additionalKey =3D (String) additionalIt.next();
Set languageCodes =3D (Set) options.get(additionalKey);
=
+
+ final StateModificationContext stateModifContext =3D n=
ew StateModificationContext(key, languageCodes);
+ stateModifContext.addModifiedObjects(ordered);
+
ExternalWorkflow externalWorkflow =3D processWorkflow(=
processingContext, workflowHelper, key,
additionalKey, action, languageCodes, saveVers=
ion,
- userNotifData, comment, activationTestResults);
+ userNotifData, comment, activationTestResults,=
stateModifContext);
if (externalWorkflow !=3D null) {
externalWorkflows.put(externalWorkflow, externalWo=
rkflow);
}
@@ -134,10 +138,8 @@
final JahiaSaveVersion =
saveVersion,
Map userNotifData,
String comment,
- ActivationTestResults a=
ctivationTestResults)
+ ActivationTestResults a=
ctivationTestResults, StateModificationContext stateModifContext)
throws JahiaException {
- final StateModificationContext stateModifContext =3D new StateModi=
ficationContext(key, languageCodes);
- stateModifContext.setDescendingInSubPages(false);
=
ContentObject object =3D null;
ExternalWorkflow externalWorkflow =3D null;
@@ -151,26 +153,6 @@
=
try {
ContentObject contentObject =3D (ContentObject) ContentObject.=
getInstance(key, true);
- if (contentObject instanceof ContentPage) {
- ContentPage contentPage =3D (ContentPage) contentObject;
- if (contentObject.isMarkedForDelete()) {
- List childs =3D ServicesRegistry.getInstance().getJahi=
aPageService().getPageSubTree(contentPage.getPageID(), PageLoadFlags.DIRECT=
, jParams);
- for (int i =3D 0; i < childs.size() && activationTestR=
esults.getStatus() !=3D ActivationTestResults.FAILED_OPERATION_STATUS; i++)
- {
- JahiaPage curJahiaPage =3D (JahiaPage) childs.get(=
i);
- ContentPage curContentPage =3D curJahiaPage.getCon=
tentPage();
- processWorkflow(jParams, workflowHelper, curConten=
tPage.getObjectKey(), additionalKey, action, languageCodes, saveVersion, us=
erNotifData, comment, activationTestResults);
- }
- } else if (contentObject.getPickedObject() !=3D null) {
- List childs =3D ServicesRegistry.getInstance().getJahi=
aPageService().getPageSubTree(contentPage.getPageID(), PageLoadFlags.DIRECT=
, jParams);
- for (int i =3D 0; i < childs.size(); i++) {
- JahiaPage curJahiaPage =3D (JahiaPage) childs.get(=
i);
- ContentPage curContentPage =3D curJahiaPage.getCon=
tentPage();
- if (curContentPage.isMarkedForDelete())
- processWorkflow(jParams, workflowHelper, curCo=
ntentPage.getObjectKey(), additionalKey, action, languageCodes, saveVersion=
, userNotifData, comment, activationTestResults);
- }
- }
- }
if (mode =3D=3D WorkflowService.INACTIVE) {
if (action.equals(AdvancedWorkflowEngine.APPROVE_PENDING_P=
AGES)
&& additionalKey.equals(AdvancedWorkflowEngine.ACC=
EPT)) {
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/NotifyAllJob.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/NotifyAllJob.java&rev=3D1=
7925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
NotifyAllJob.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
NotifyAllJob.java Mon Jul 9 15:47:00 2007
@@ -22,6 +22,7 @@
import org.jahia.services.lock.LockKey;
import org.jahia.services.version.JahiaSaveVersion;
import org.jahia.services.version.ActivationTestResults;
+import org.jahia.services.version.StateModificationContext;
import org.jahia.services.sites.SiteLanguageSettings;
import org.jahia.registries.ServicesRegistry;
import org.jahia.params.ProcessingContext;
@@ -72,11 +73,17 @@
final ActivationTestResults activationTestResults =3D new Activati=
onTestResults();
final Map userNotifData =3D new HashMap();
try {
- final Iterator iterator =3D allStagingAndWaitingObjects.iterat=
or();
+ List allKeys =3D new ArrayList();
+ for (Iterator iterator =3D allStagingAndWaitingObjects.iterato=
r(); iterator.hasNext();) {
+ String key =3D (String) iterator.next();
+ final ObjectKey objectKey =3D ObjectKey.getInstance(key);
+ allKeys.add(objectKey);
+ }
+ final Iterator iterator =3D allKeys.iterator();
while (iterator.hasNext()) {
- final String key =3D (String) iterator.next();
+ final ObjectKey objectKey =3D (ObjectKey) iterator.next();
+ String key =3D objectKey.toString();
if (logger.isDebugEnabled()) logger.debug("Processing obje=
ct: " + key);
- final ObjectKey objectKey =3D ObjectKey.getInstance(key);
final ContentObject theObject =3D ContentObject.getContent=
ObjectInstance(objectKey);
if (theObject =3D=3D null || ! theObject.checkWriteAccess(=
jParams.getUser())) {
if (logger.isDebugEnabled()) logger.debug("No Write ac=
cess on " + key);
@@ -130,6 +137,10 @@
actionName =3D AdvancedWorkflowEngine.NOTIFY_COMPLETED=
_PAGES;
}
=
+
+ final StateModificationContext stateModifContext =3D new S=
tateModificationContext(objectKey, languageCodes);
+ stateModifContext.addModifiedObjects(allKeys);
+
final ExternalWorkflow externalWorkflow =3D ActivationJob.=
processWorkflow(
jParams,
workflowHelper,
@@ -140,7 +151,7 @@
saveVersion,
userNotifData,
comment,
- activationTestResults);
+ activationTestResults, stateModifContext);
if (externalWorkflow !=3D null) {
externalWorkflows.put(externalWorkflow, externalWorkfl=
ow);
}
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/PublishAllJob.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/PublishAllJob.java&rev=3D=
17925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
PublishAllJob.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
PublishAllJob.java Mon Jul 9 15:47:00 2007
@@ -29,6 +29,7 @@
import org.jahia.services.scheduler.BackgroundJob;
import org.jahia.services.version.JahiaSaveVersion;
import org.jahia.services.version.ActivationTestResults;
+import org.jahia.services.version.StateModificationContext;
import org.jahia.services.sites.SiteLanguageSettings;
import org.jahia.workflow.nstep.NStepWorkflow;
import org.quartz.JobDataMap;
@@ -73,11 +74,17 @@
final ActivationTestResults activationTestResults =3D new Activati=
onTestResults();
final Map userNotifData =3D new HashMap();
try {
- final Iterator iterator =3D allStagingAndWaitingObjects.iterat=
or();
+ List allKeys =3D new ArrayList();
+ for (Iterator iterator =3D allStagingAndWaitingObjects.iterato=
r(); iterator.hasNext();) {
+ String key =3D (String) iterator.next();
+ final ObjectKey objectKey =3D ObjectKey.getInstance(key);
+ allKeys.add(objectKey);
+ }
+ final Iterator iterator =3D allKeys.iterator();
while (iterator.hasNext()) {
- final String key =3D (String) iterator.next();
+ final ObjectKey objectKey =3D (ObjectKey) iterator.next();
+ String key =3D objectKey.toString();
if (logger.isDebugEnabled()) logger.debug("Processing obje=
ct: " + key);
- final ObjectKey objectKey =3D ObjectKey.getInstance(key);
final ContentObject theObject =3D ContentObject.getContent=
ObjectInstance(objectKey);
if (theObject =3D=3D null || ! theObject.checkAdminAccess(=
jParams.getUser())) {
if (logger.isDebugEnabled()) logger.debug("No Admin ac=
cess on " + key);
@@ -121,6 +128,9 @@
}
}
=
+ final StateModificationContext stateModifContext =3D new S=
tateModificationContext(objectKey, languageCodes);
+ stateModifContext.addModifiedObjects(allKeys);
+
final ExternalWorkflow externalWorkflow =3D ActivationJob.=
processWorkflow(
jParams,
workflowHelper,
@@ -131,7 +141,7 @@
saveVersion,
userNotifData,
comment,
- activationTestResults);
+ activationTestResults, stateModifContext);
if (externalWorkflow !=3D null) {
externalWorkflows.put(externalWorkflow, externalWorkfl=
ow);
}
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/SimpleActivationJob.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/SimpleActivationJob.java&=
rev=3D17925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
SimpleActivationJob.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
SimpleActivationJob.java Mon Jul 9 15:47:00 2007
@@ -1,19 +1,19 @@
-/*
- * Copyright 2002-2006 Jahia Ltd
- *
- * Licensed under the JAHIA COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (J=
CDDL), =
- * Version 1.0 (the "License"), or (at your option) any later version; you=
may =
- * not use this file except in compliance with the License. You should hav=
e =
- * received a copy of the License along with this program; if not, you may=
obtain =
- * a copy of the License at =
- *
- * http://www.jahia.org/license/
- *
- * 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.
+/*
+ * Copyright 2002-2006 Jahia Ltd
+ *
+ * Licensed under the JAHIA COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (J=
CDDL), =
+ * Version 1.0 (the "License"), or (at your option) any later version; you=
may =
+ * not use this file except in compliance with the License. You should hav=
e =
+ * received a copy of the License along with this program; if not, you may=
obtain =
+ * a copy of the License at =
+ *
+ * http://www.jahia.org/license/
+ *
+ * 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.jahia.services.workflow;
=
import org.jahia.content.ContentObject;
@@ -61,7 +61,7 @@
try {
object =3D (ContentObject) JahiaObject.getInstance(key);
StateModificationContext stateModifContext =3D new StateMo=
dificationContext(object.getObjectKey(), languages);
-
+ stateModifContext.addModifiedObjects(keys);
service.activate(object, languages, saveVersion, processin=
gContext, stateModifContext);
} catch (ClassNotFoundException e) {
throw new JobExecutionException(e);
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/WorkflowService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/WorkflowService.java&rev=
=3D17925&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java Mon Jul 9 15:47:00 2007
@@ -1128,26 +1128,6 @@
unlinkedContents.add(co);
}
=
- try {
- ContentObject object =3D (ContentObject) ContentObject.getInst=
ance(objectKey);
- if (object.isMarkedForDelete() && !unlinkedContents.isEmpty())=
{
- activationTestResults.setStatus(ActivationTestResults.FAIL=
ED_OPERATION_STATUS);
- try {
- final EngineMessage msg =3D new EngineMessage(
- "org.jahia.services.workflow.WorkflowService.c=
hildObjectsNotValidatedError");
- activationTestResults
- .appendError(new IsValidForActivationResults(o=
bjectKey
- .getType(), Integer
- .parseInt(objectKey.getIDInType()),
- ContentField.SHARED_LANGUAGE, msg));
- } catch (ClassNotFoundException cnfe) {
- logger.debug ("Error while creating activation test no=
de result",
- cnfe);
- }
- }
- } catch (ClassNotFoundException e) {
- }
-
return activationTestResults;
}
=
@@ -1181,6 +1161,7 @@
=
boolean versioningActive =3D jParams.getSite().isVersioningEnabled=
();
ActivationTestResults activationResults =3D new ActivationTestResu=
lts ();
+ Set deletedChilds =3D new HashSet();
List objects =3D getLinkedContentObjects(objectKey, stateModifCont=
ext.isDescendingInSubPages());
for (Iterator iterator =3D objects.iterator(); iterator.hasNext();=
) {
ContentObjectKey contentObjectKey =3D (ContentObjectKey) itera=
tor.next();
@@ -1203,6 +1184,9 @@
cnfe);
}
} else {
+ if (contentObject.isMarkedForDelete()) {
+ deletedChilds.addAll(getUnlinkedContentObjects=
(objectKey,false,false));
+ }
activationResults.merge(contentObject.activate(lan=
guageCodes, versioningActive, saveVersion, jParams.getUser(), jParams, stat=
eModifContext));
}
}
@@ -1212,8 +1196,15 @@
}
=
ContentObject contentObject =3D null;
- try {
+ try { =
contentObject =3D (ContentObject) ContentObject.getInstance(ob=
jectKey);
+
+ // propagate deletion to childs
+ for (Iterator iterator =3D deletedChilds.iterator(); iterator.=
hasNext();) {
+ ContentObjectKey childObject =3D (ContentObjectKey) iterat=
or.next();
+ activationResults.merge(activate(childObject, languageCode=
s, saveVersion, jParams, stateModifContext));
+ }
+ =
// propagate to parent container list if need
if ( contentObject instanceof ContentContainer ){
ContentContainer container =3D (ContentContainer)contentOb=
ject;
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list