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