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);
           }
       }
   
  

Reply via email to