Author: bpapez
Date: Fri Nov  9 14:30:42 2007
New Revision: 19108

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19108&repname=
=3Djahia
Log:
JAHIA-2526: 30'000 pages DB:Problem with ACL modifications : too long
- for determination, which pages need to be flushed, the page-sub-tree was =
iteratively selected before, now the select returns all pages having specif=
ic ACL-IDs (current and inheriting children)

Modified:
    trunk/core/src/java/org/jahia/engines/rights/ManageRights.java

Modified: trunk/core/src/java/org/jahia/engines/rights/ManageRights.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/rights/ManageRights.java&rev=3D19108&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/rights/ManageRights.java (origina=
l)
+++ trunk/core/src/java/org/jahia/engines/rights/ManageRights.java Fri Nov =
 9 14:30:42 2007
@@ -31,6 +31,7 @@
 import org.jahia.engines.validation.ValidationError;
 import org.jahia.exceptions.JahiaException;
 import org.jahia.exceptions.JahiaSessionExpirationException;
+import org.jahia.hibernate.model.JahiaAcl;
 import org.jahia.hibernate.model.JahiaAclEntry;
 import org.jahia.hibernate.dao.JahiaGroupAccessDAO;
 import org.jahia.params.ParamBean;
@@ -1056,8 +1057,8 @@
                     ContainerHTMLCache cacheInstance =3D
                             ServicesRegistry.getInstance().getCacheService=
().getContainerHTMLCacheInstance();
                     ArrayList languageSettings =3D processingContext.getSi=
te().getLanguageSettingsAsLocales(true);
-                    for (int i =3D 0; i < list.size(); i++) {
-                        ContentObject contentObject =3D (ContentObject) li=
st.get(i);
+                    for (Iterator it =3D list.iterator(); it.hasNext();) {
+                        ContentObject contentObject =3D (ContentObject) it=
.next();
                         if (contentObject instanceof ContentContainer) {
                             ContentContainer contentContainer =3D (Content=
Container) contentObject;
                             int id =3D contentContainer.getID() + 1000;
@@ -1084,19 +1085,29 @@
                         }
                     }
                 }
-                Set childs =3D pageService.getUncheckedPageSubTreeIDs(page=
ID);
-                Iterator it =3D childs.iterator();
-                while (it.hasNext()) {
+                List childAclList =3D ServicesRegistry.getInstance()
+                        .getJahiaACLManagerService().getChildAcls(acl.getI=
D());
+                Set aclIDs =3D new HashSet(childAclList.size());
+                aclIDs.add(new Integer(acl.getID()));
+                for (Iterator it =3D childAclList.iterator(); it.hasNext()=
;) {
+                    JahiaAcl childAcl =3D (JahiaAcl) it.next();
+                    if (childAcl.getInheritance().intValue() =3D=3D 1) {
+                        aclIDs.add(childAcl.getId());
+                    }
+                }
+                =

+                List childs =3D pageService.getPageIDsWithAclIDs(aclIDs);
+                for (Iterator it =3D childs.iterator(); it.hasNext();) {  =
              =

                     Integer childPageId =3D (Integer) it.next();
                     pageService.invalidatePageCache(childPageId.intValue()=
);
                     //only invalidate esi cache entries of sub-pages if in=
heritance is changed
-                    if (aclInheritanceAltered && esiCacheActivated) {
+//                    if (aclInheritanceAltered && esiCacheActivated) {
                         if (logger.isDebugEnabled()) logger.debug("ACL [" +
                                                                   acl +
                                                                   "] was a=
ltered so triggering invalidation of subpage :" +
                                                                   childPag=
eId);
                         esiPagesToInvalidate.add(childPageId);
-                    }
+//                    }
                 }
                 if (esiCacheActivated) {
                     if (logger.isDebugEnabled()) logger.debug("ACL [" +

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to