Author: tdraier
Date: Fri Sep 14 12:50:50 2007
New Revision: 18457
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18457&repname=
=3Djahia
Log:
somes fixes for page move / acl / workflow interactions
improved WorkflowLinkedObject cache ( JAHIA-2032 ) (port 18174)
Modified:
trunk/core/src/java/org/jahia/data/fields/JahiaPageField.java
trunk/core/src/java/org/jahia/engines/shared/Page_Field.java
trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java
trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.java
trunk/core/src/java/org/jahia/services/pages/ContentPage.java
trunk/core/src/java/org/jahia/services/workflow/WorkflowEventListener.j=
ava
trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java
trunk/core/src/java/org/jahia/views/engines/contentdefinition/ContentDe=
finitionEngine.java
Modified: trunk/core/src/java/org/jahia/data/fields/JahiaPageField.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/data/fields/JahiaPageField.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/data/fields/JahiaPageField.java (original)
+++ trunk/core/src/java/org/jahia/data/fields/JahiaPageField.java Fri Sep 1=
4 12:50:50 2007
@@ -22,6 +22,8 @@
import org.jahia.bin.Jahia;
import org.jahia.content.ContentPageKey;
import org.jahia.content.ContentPageXRefManager;
+import org.jahia.content.ContentContainerKey;
+import org.jahia.content.ContentObjectKey;
import org.jahia.data.FormDataManager;
import org.jahia.data.events.JahiaEvent;
import org.jahia.engines.login.Login_Engine;
@@ -321,6 +323,11 @@
ServicesRegistry.getInstance().getJahiaEventService()
.fireContentObjectUpdated(objectCreatedEvent);
=
+ if (contentField.getID() !=3D 0) {
+ WorkflowService.getInstance().pageMoved((ContentOb=
jectKey) contentField.getObjectKey(), (ContentPageKey) contentPage.getObjec=
tKey(), jParams);
+ } else {
+ WorkflowService.getInstance().pageMoved(new Conten=
tContainerKey(getctnid()), (ContentPageKey) contentPage.getObjectKey(), jPa=
rams); =
+ }
//ServicesRegistry.getInstance().
// getJahiaPageService().savePageInfo( thePage =
);
=
Modified: trunk/core/src/java/org/jahia/engines/shared/Page_Field.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/shared/Page_Field.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/engines/shared/Page_Field.java (original)
+++ trunk/core/src/java/org/jahia/engines/shared/Page_Field.java Fri Sep 14=
12:50:50 2007
@@ -624,6 +624,7 @@
if (movedPageID =3D=3D -1) return false;
=
contentPage =3D ContentPage.getPage(movedPageID, true);
+ boolean isAclSameAsParent =3D contentPage.isAclSameAsParent();
=
int oldParentFieldID =3D ServicesRegistry.getInstance().getJah=
iaPageService()
.getPageFieldID(contentPage.getID());
@@ -656,9 +657,19 @@
// Save the field modifications
theField.save(jParams);
=
+ // Reload the content page
+ contentPage =3D ContentPage.getPage(contentPage.getID());
+
// 3. Relink the parent ACL
- contentPage.getACL().setParentID(theField.getAclID());
=
+ if (theField.getAclID() !=3D contentPage.getAclID()) {
+ if (isAclSameAsParent) {
+ contentPage.updateAclForChildren(theField.getACL().get=
ID());
+ } else {
+ contentPage.getACL().setParentID(theField.getACL().get=
ID());
+ }
+ }
+ =
// 4. Invalidate all site maps.
ServicesRegistry.getInstance().getJahiaSiteMapService().resetS=
iteMap();
=
Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataMa=
nager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaFieldsDataManager.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java Fri Sep 14 12:50:50 2007
@@ -878,18 +878,21 @@
fieldsData =3D findJahiaFieldsData(contentField, newEntryState=
);
}
if(fieldsData!=3Dnull) {
+ fieldsData.setValue(value);
+
if(fieldsData.getComp_id().getVersionId().intValue()!=3DnewEnt=
ryState.getVersionID()) {
try {
JahiaFieldsData fieldsData2 =3D (JahiaFieldsData) fiel=
dsData.clone();
dao.deleteJahiaField(fieldsData);
fieldsData2.getComp_id().setVersionId(new Long(newEntr=
yState.getVersionID()));
- fieldsData =3D fieldsData2;
+ dao.saveNewVersion(fieldsData2);
+ fieldsData =3D fieldsData2; =
} catch (CloneNotSupportedException e) {
e.printStackTrace(); //To change body of catch statem=
ent use File | Settings | File Templates.
}
+ } else {
+ dao.update(fieldsData);
}
- fieldsData.setValue(value);
- dao.update(fieldsData);
flushCache(contentField.getID(),fieldsData.getSiteId()!=3Dnull=
?fieldsData.getSiteId().intValue():0, contentField.getContainerID());
if (cache) {
this.fieldCache.put(CACHE_KEY_PREFIX+contentField.getID(),=
contentField);
@@ -901,7 +904,7 @@
return dao.findJahiaFieldsDataByIdAndWorkflowStateAndLanguage(new =
Integer(contentField.getID()),
new =
Integer(newEntryState.getWorkflowState()),
newE=
ntryState.getLanguageCode());
- }
+ } =
=
public void updateFieldAclId(int fieldId, int aclId) {
List list =3D dao.loadAllActiveOrStagedFieldEntry(new Integer(fiel=
dId));
Modified: trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/cache/ContainerHTMLCache.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.java Fr=
i Sep 14 12:50:50 2007
@@ -124,10 +124,12 @@
}
=
public void rightsUpdated() {
- SortedSet newgroups =3D new TreeSet(ServicesRegistry.getInstance()=
.getJahiaACLManagerService().getAllGroupsInAcl());
- if (!newgroups.equals(groups.keySet())) {
- groups =3D null;
- flush();
+ if (groups !=3D null) {
+ SortedSet newgroups =3D new TreeSet(ServicesRegistry.getInstan=
ce().getJahiaACLManagerService().getAllGroupsInAcl());
+ if (!newgroups.equals(groups.keySet())) {
+ groups =3D null;
+ flush();
+ }
}
users =3D new TreeSet(ServicesRegistry.getInstance().getJahiaACLMa=
nagerService().getAllUsersInAcl());
}
Modified: trunk/core/src/java/org/jahia/services/pages/ContentPage.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/pages/ContentPage.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/services/pages/ContentPage.java (original)
+++ trunk/core/src/java/org/jahia/services/pages/ContentPage.java Fri Sep 1=
4 12:50:50 2007
@@ -1170,11 +1170,11 @@
for (Iterator iterator =3D pageInfos.iterator(); iterator.hasNext(=
);) {
JahiaPageInfo curPageInfo =3D (JahiaPageInfo) iterator.next();
curPageInfo.setAclID(aclID);
- try {
- commitChanges(true,false,null);
- } catch (JahiaException e) {
- logger.error("Cannot update page acl",e);
- }
+ }
+ try {
+ commitChanges(true,false,null);
+ } catch (JahiaException e) {
+ logger.error("Cannot update page acl",e);
}
}
=
Modified: trunk/core/src/java/org/jahia/services/workflow/WorkflowEventList=
ener.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/workflow/WorkflowEventListener.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/services/workflow/WorkflowEventListener.j=
ava (original)
+++ trunk/core/src/java/org/jahia/services/workflow/WorkflowEventListener.j=
ava Fri Sep 14 12:50:50 2007
@@ -25,6 +25,7 @@
import org.jahia.data.events.JahiaEvent;
import org.jahia.data.events.JahiaEventListener;
import org.jahia.exceptions.JahiaPageNotFoundException;
+import org.jahia.exceptions.JahiaException;
import org.jahia.params.ProcessingContext;
import org.jahia.params.SoapParamBean;
import org.jahia.registries.ServicesRegistry;
@@ -78,6 +79,21 @@
viewed.add(k);
}
}
+
+ WorkflowService service =3D ServicesRegistry.getInstance().getWork=
flowService();
+ Set allTops =3D new HashSet();
+ for (int i =3D allEvents.size()-1; i >=3D0 ; i--) {
+ WorkflowEvent we =3D (WorkflowEvent) allEvents.get(i);
+ ContentObjectKey key =3D (ContentObjectKey) ((ContentObject) w=
e.getObject()).getObjectKey();
+ try {
+ allTops.add(service.getTopLinkedObject(key));
+ } catch (JahiaException e) {
+ e.printStackTrace(); //To change body of catch statement =
use File | Settings | File Templates.
+ }
+ }
+ for (Iterator iterator =3D allTops.iterator(); iterator.hasNext();=
) {
+ service.flushCacheForObjectChanged((ContentObjectKey) iterator=
.next());
+ }
for (int i =3D allEvents.size()-1; i >=3D0 ; i--) {
WorkflowEvent we =3D (WorkflowEvent) allEvents.get(i);
myObjectChanged(we);
@@ -91,7 +107,6 @@
logger.debug("Object changed : "+object.getObjectKey()+ " , "+lang=
uageCode);
=
WorkflowService service =3D ServicesRegistry.getInstance().getWork=
flowService();
- service.flushCacheForObjectChanged((ContentObjectKey) object.getOb=
jectKey());
=
JahiaUser user =3D we.getUser();
boolean descendingInSubPages =3D we.isShouldDescend();
Modified: trunk/core/src/java/org/jahia/services/workflow/WorkflowService.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/workflow/WorkflowService.java&rev=3D18457&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
--- trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java Fr=
i Sep 14 12:50:50 2007
@@ -744,7 +744,7 @@
return main;
}
=
- private ContentObjectKey getTopLinkedObject(ContentObjectKey object) t=
hrows JahiaException{
+ public ContentObjectKey getTopLinkedObject(ContentObjectKey object) th=
rows JahiaException{
if (ContentFieldKey.FIELD_TYPE.equals(object.getType())) {
object =3D object.getParent(null);
}
@@ -821,14 +821,16 @@
ContentObjectKey main =3D getTopLinkedObject(object);
GroupCacheKey mainCacheKey =3D new GroupCacheKey(main.toString=
()+"_"+descendInAllSubGroups+"_"+checkParents, new HashSet());
l =3D (List[]) linkedObjectsCache.get(mainCacheKey);
- if (l =3D=3D null) {
=
+ cacheKey.getGroups().add(object.toString());
+ cacheKey.getGroups().add(MAINPREFIX + main.toString());
+ if (l !=3D null) {
+ linkedObjectsCache.put(cacheKey, l);
+ } else {
Set keys =3D new HashSet();
l =3D new List[] { new ArrayList(), new ArrayList() };
getLinkedContentObjects(object, keys, l[0], l[1], descendI=
nAllSubGroups, checkParents);
l[1].removeAll(l[0]);
- cacheKey.getGroups().add(object.toString());
- cacheKey.getGroups().add(MAINPREFIX + main.toString());
linkedObjectsCache.put(cacheKey, l);
=
mainCacheKey.getGroups().add(main.toString());
@@ -1275,6 +1277,25 @@
return activationResults;
}
=
+ public void pageMoved(ContentObjectKey parent, ContentPageKey page, Pr=
ocessingContext jParams) throws JahiaException {
+ if (getInheritedMode(parent) =3D=3D WorkflowService.INACTIVE) {
+ List all =3D getAllInheritedObjects(page);
+ Set languages =3D new HashSet();
+ for (Iterator iterator =3D jParams.getSite().getLanguageSettin=
gsAsLocales(true).iterator(); iterator.hasNext();) {
+ languages.add(iterator.next().toString());
+ }
+ JahiaSaveVersion saveVersion =3D ServicesRegistry.getInstance =
().getJahiaVersionService ().
+ getSiteSaveVersion (jParams.getSiteID ());
+ StateModificationContext stateModifContext =3D new StateModifi=
cationContext(page, languages);
+ stateModifContext.addModifiedObjects(all);
+
+ for (Iterator iterator =3D all.iterator(); iterator.hasNext();=
) {
+ ContentObjectKey contentObjectKey =3D (ContentObjectKey) i=
terator.next();
+ activate(contentObjectKey, languages, saveVersion, jParams=
, stateModifContext);
+ }
+ }
+ }
+
public Map getAllStagingObject(final int siteID) {
return languagesStatesManager.getAllStagingObject(siteID);
}
Modified: trunk/core/src/java/org/jahia/views/engines/contentdefinition/Con=
tentDefinitionEngine.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/views/engines/contentdefinition/ContentDefinitionEngine.java&rev=
=3D18457&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
--- trunk/core/src/java/org/jahia/views/engines/contentdefinition/ContentDe=
finitionEngine.java (original)
+++ trunk/core/src/java/org/jahia/views/engines/contentdefinition/ContentDe=
finitionEngine.java Fri Sep 14 12:50:50 2007
@@ -83,6 +83,9 @@
private String assignedAttribute =3D "";
private String availableAttribute =3D "";
=
+ public ContentDefinitionEngine() {
+ }
+
/**
* @param contentDefinition ContentDefinition
* @param processingContext the current processing context
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list