mcardle 2006/01/04 17:48:23 CET
Modified files:
core/src/java/org/jahia/engines/rights ManageRights.java
core/src/java/org/jahia/services/esi
EsiInvalidationEventListener.java
Log:
* clears entire ESI cache if an acl is changed in Rights engine (yes this is
indeed a temporary hack)
Revision Changes Path
1.17 +8 -0
jahia/core/src/java/org/jahia/engines/rights/ManageRights.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/rights/ManageRights.java.diff?r1=1.16&r2=1.17&f=h
1.14 +21 -9
jahia/core/src/java/org/jahia/services/esi/EsiInvalidationEventListener.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/esi/EsiInvalidationEventListener.java.diff?r1=1.13&r2=1.14&f=h
Index: ManageRights.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/rights/ManageRights.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ManageRights.java 18 Oct 2005 16:09:49 -0000 1.16
+++ ManageRights.java 4 Jan 2006 16:48:23 -0000 1.17
@@ -14,6 +14,7 @@
import org.jahia.content.*;
import org.jahia.data.fields.LoadFlags;
+import org.jahia.data.events.JahiaEvent;
import org.jahia.engines.EngineMessage;
import org.jahia.engines.EngineMessages;
import org.jahia.engines.JahiaEngine;
@@ -155,6 +156,7 @@
case (JahiaEngine.SAVE_MODE):
if (saveACLEntries(theACL)){
resetCacheVariables();
+ fireRightsEvent (jParams, theACL );
return null;
}
final ValidationError ve2 = new ValidationError(this,
@@ -186,6 +188,12 @@
return evh;
}
+ private void fireRightsEvent (final ProcessingContext jParams, final
JahiaBaseACL theACL )
+ throws JahiaException {
+ JahiaEvent setRightsEvent = new JahiaEvent(this, jParams, theACL);
+ ServicesRegistry.getInstance ().getJahiaEventService
().fireSetRights(setRightsEvent);
+ }
+
/**
* Load all the ACL entries and inherited ACL from parent object and
store the resulting
* principals to an HashSet.
Index: EsiInvalidationEventListener.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/esi/EsiInvalidationEventListener.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- EsiInvalidationEventListener.java 23 Dec 2005 01:22:29 -0000 1.13
+++ EsiInvalidationEventListener.java 4 Jan 2006 16:48:23 -0000 1.14
@@ -486,19 +486,23 @@
}
public void templateUpdated( JahiaEvent je ) {
+ logger.debug("caught templateUpdated event ");
clearEntireCache(je, "templateUpdated");
}
public void rightsSet( JahiaEvent je) {
- clearEntireCache(je, "templateUpdated");
+ logger.debug("caught rightsSet event ");
+ clearEntireCache(je, "rightsSet");
}
public void pageAdded( JahiaEvent je ) {
- clearEntireCache(je, "templateUpdated");
+ logger.debug("caught pageAdded event ");
+ clearEntireCache(je, "pageAdded");
}
public void fileManagerAclChanged (JahiaEvent theEvent) {
- clearEntireCache(theEvent, "templateUpdated");
+ logger.debug("caught fileManagerAclChanged event ");
+ clearEntireCache(theEvent, "fileManagerAclChanged");
}
private void clearEntireCache(JahiaEvent je, String eventFct) {
@@ -507,16 +511,24 @@
//Clear the ESI server cache
try {
JahiaData jd = je.getJahiaData();
- if (jd==null) return;
- ProcessingContext pc = jd.getProcessingContext();
- if (pc==null) return;
+ ProcessingContext pc = null;
+ if (jd==null) {
+ if (je.getProcessingContext() != null) {
+ pc = je.getProcessingContext();
+ }
+ } else {
+ pc = jd.getProcessingContext();
+ }
+ if (pc==null) {
+ logger.error("No ProcessingContext could be found in event :
"+je.getObject());
+ return;
+ }
SettingsBean sb = pc.settings();
- if (sb==null) return;
EsiSOAPInvalidation.emptyEsiServerCache(sb);
- logger.warn(eventFct+" event detected so Clearing the whole ESI
server cache (temporary fix)");
+ logger.warn(eventFct+" event detected so Clearing the whole ESI
server cache (temporary fix). For JahiaEvent"+je.getObject());
}
catch (Exception ex) {
- logger.info("couldn't complete cache clearing operation due to
"+ex);
+ logger.error("couldn't complete cache clearing operation due to
"+ex);
}
}