Author: tdraier
Date: Tue Aug 14 20:24:06 2007
New Revision: 18174

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18174&repname=
=3Djahia
Log:
somes fixes for page move / acl / workflow interactions
improved WorkflowLinkedObject cache ( JAHIA-2032 )

Modified:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/data/fields/JahiaP=
ageField.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/shared/Pag=
e_Field.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaFieldsDataManager.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/cache/Con=
tainerHTMLCache.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/pages/Con=
tentPage.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowEventListener.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/views/engines/cont=
entdefinition/ContentDefinitionEngine.java

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/data/fields/=
JahiaPageField.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/data/fields/JahiaPageField.java&rev=3D18174=
&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/data/fields/JahiaP=
ageField.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/data/fields/JahiaP=
ageField.java Tue Aug 14 20:24:06 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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/shar=
ed/Page_Field.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/engines/shared/Page_Field.java&rev=3D18174&=
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/engines/shared/Pag=
e_Field.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/shared/Pag=
e_Field.java Tue Aug 14 20:24:06 2007
@@ -701,6 +701,7 @@
             if (movedPageID =3D=3D -1) return false;
 =

             contentPage =3D ContentPage.getPage(movedPageID);
+            boolean isAclSameAsParent =3D contentPage.isAclSameAsParent();
 =

             int oldParentFieldID =3D ServicesRegistry.getInstance().getJah=
iaPageService()
                     .getPageFieldID(contentPage.getID());
@@ -734,9 +735,18 @@
             // Save the field modifications
             theField.save(jParams);
 =

-            // 3. Relink the parent ACL
-            contentPage.getACL().setParentID(theField.getACL().getID());
+            // Reload the content page
+            contentPage =3D ContentPage.getPage(contentPage.getID());
 =

+            // 3. Relink the parent ACL
+            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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/ma=
nager/JahiaFieldsDataManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.ja=
va&rev=3D18174&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/hibernate/manager/=
JahiaFieldsDataManager.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaFieldsDataManager.java Tue Aug 14 20:24:06 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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/cac=
he/ContainerHTMLCache.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/cache/ContainerHTMLCache.java&rev=
=3D18174&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/cache/Con=
tainerHTMLCache.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/cache/Con=
tainerHTMLCache.java Tue Aug 14 20:24:06 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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/pag=
es/ContentPage.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/pages/ContentPage.java&rev=3D18174=
&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/pages/Con=
tentPage.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/pages/Con=
tentPage.java Tue Aug 14 20:24:06 2007
@@ -1166,11 +1166,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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/WorkflowEventListener.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/WorkflowEventListener.jav=
a&rev=3D18174&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/=
WorkflowEventListener.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowEventListener.java Tue Aug 14 20:24:06 2007
@@ -24,6 +24,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;
@@ -77,6 +78,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);
@@ -90,7 +106,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: 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=
=3D18174&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 Tue Aug 14 20:24:06 2007
@@ -735,7 +735,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);
         }
@@ -812,14 +812,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());
@@ -1266,6 +1268,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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/views/engine=
s/contentdefinition/ContentDefinitionEngine.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/views/engines/contentdefinition/ContentDefi=
nitionEngine.java&rev=3D18174&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/views/engines/cont=
entdefinition/ContentDefinitionEngine.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/views/engines/cont=
entdefinition/ContentDefinitionEngine.java Tue Aug 14 20:24:06 2007
@@ -80,6 +80,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

Reply via email to