cache publication rules weakreference Developer Legacy

Cache on WeakReference

Question

When you have weakreference field on a content (for instance related events on a publication, and the events should display the publication) and you change the weakreference to another event the cache is not flushed. Scenario:

  • flush cache site
  • reference event1 on my publication1
  • publish
  • go to event1 page and my publication1 is displayed (Ok)
  • reference event2 on my publication1
  • publish
  • go to event1 page and my publication isn't displayed (Ok)
  • go to event2 page and my publication isn't displayed (Ko)
     

Answer

The problem is the second source is already cached and a publication of the weakreference don't flush the cache because the cacheDependeny is set to late (just on the first call of the weakreference).
A solution for this would be to add a simple drools rule to flush the related cache like:

rule "flush related event cache"
 salience 25
 when
 A node is published
 - the node has the type jnt:publication
 then
> if (node.getNode().getProperty("relatedEvent") != null ) {
> org.jahia.services.cache.CacheHelper.flushOutputCachesForPath(node.getNode().getProperty("relatedEvent").getNode().getPath(), true);
> }
end