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

Reply via email to