Author: tdraier
Date: Fri Sep 14 12:42:09 2007
New Revision: 18451

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18451&repname=
=3Djahia
Log:
add container / container list dependencies for container cache into group =
cache keys, =

added method to add dependencies
switched container cache tag to true by default (port 18161)

Added:
    trunk/core/src/java/org/jahia/taglibs/container/ContainerCache.java
      - copied unchanged from r18161, branches/JAHIA-5-0-SP-BRANCH/core/src=
/java/org/jahia/taglibs/container/ContainerCache.java
Modified:
    trunk/core/src/java/org/jahia/services/cache/CacheEventListener.java
    trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.java
    trunk/core/src/java/org/jahia/taglibs/container/ContainerCacheTag.java
    trunk/core/src/java/org/jahia/taglibs/container/ContainerListTag.java
    trunk/core/src/java/org/jahia/taglibs/container/ContainerTag.java

Modified: trunk/core/src/java/org/jahia/services/cache/CacheEventListener.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/cache/CacheEventListener.java&rev=3D18451&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/services/cache/CacheEventListener.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/cache/CacheEventListener.java Fr=
i Sep 14 12:42:09 2007
@@ -57,7 +57,7 @@
         }
         for (Iterator iterator =3D myEvents.iterator(); iterator.hasNext()=
;) {
             Object[] objs =3D (Object[]) iterator.next();
-            invalidate((ContentContainerKey) objs[0], EntryLoadRequest.STA=
GING_WORKFLOW_STATE, (String) objs[1]);
+            invalidate((ContentObjectKey) objs[0], EntryLoadRequest.STAGIN=
G_WORKFLOW_STATE, (String) objs[1]);
         }
     }
 =

@@ -74,7 +74,7 @@
         }
         for (Iterator iterator =3D myEvents.iterator(); iterator.hasNext()=
;) {
             Object[] objs =3D (Object[]) iterator.next();
-            invalidate((ContentContainerKey) objs[0], EntryLoadRequest.ACT=
IVE_WORKFLOW_STATE, (String) objs[1]);
+            invalidate((ContentObjectKey) objs[0], EntryLoadRequest.ACTIVE=
_WORKFLOW_STATE, (String) objs[1]);
         }
     }
 =

@@ -100,7 +100,8 @@
         if (objectKey !=3D null && ContentFieldKey.FIELD_TYPE.equals(objec=
tKey.getType())) {
             objectKey =3D objectKey.getParent(EntryLoadRequest.STAGED);
         }
-        while (objectKey !=3D null && ContentContainerKey.CONTAINER_TYPE.e=
quals(objectKey.getType())) {
+        if (objectKey !=3D null && ContentContainerKey.CONTAINER_TYPE.equa=
ls(objectKey.getType())) {
+            ContentContainerListKey cclk =3D (ContentContainerListKey) obj=
ectKey.getParent(EntryLoadRequest.STAGED);
             for (Iterator iterator =3D languageCodes.iterator(); iterator.=
hasNext();) {
                 String languageCode =3D iterator.next().toString();
                 String key =3D objectKey + languageCode;
@@ -108,14 +109,18 @@
                     myEvents.add(new Object[]{objectKey, languageCode});
                     viewed.add(key);
                 }
+                key =3D cclk + languageCode;
+                if (!viewed.contains(key)) {
+                    myEvents.add(new Object[]{cclk, languageCode});
+                    viewed.add(key);
+                }
             }
-            ContentContainerListKey cclk =3D (ContentContainerListKey) obj=
ectKey.getParent(EntryLoadRequest.STAGED);
-            objectKey =3D cclk.getParent(EntryLoadRequest.STAGED);
+//            objectKey =3D cclk.getParent(EntryLoadRequest.STAGED);
         }
     }
 =

-    private void invalidate(ContentContainerKey object, int entryLoadReque=
st, String locale) {
-        getChtmlCache().invalidateContainerEntries(object.getIDInType(), e=
ntryLoadRequest, locale);
+    private void invalidate(ContentObjectKey object, int entryLoadRequest,=
 String locale) {
+        getChtmlCache().invalidateContainerEntries(object.toString(), entr=
yLoadRequest, locale);
     }
 =

 }

Modified: trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/cache/ContainerHTMLCache.java&rev=3D18451&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/services/cache/ContainerHTMLCache.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/cache/ContainerHTMLCache.java Fr=
i Sep 14 12:42:09 2007
@@ -4,6 +4,8 @@
 import org.jahia.services.usermanager.JahiaGroup;
 import org.jahia.data.containers.JahiaContainer;
 import org.jahia.registries.ServicesRegistry;
+import org.jahia.content.ContentObjectKey;
+import org.jahia.content.ContentContainerKey;
 =

 import java.util.*;
 =

@@ -22,7 +24,6 @@
     // the Container HTML cache name.
     public static final String CONTAINER_HTML_CACHE =3D "ContainerHTMLCach=
e";
 =

-    private static final String CONTAINER_PREFIX =3D "CONTAINER-";
     private static final String PARENTCONTAINER_PREFIX =3D "PARENTCONTAINE=
R-";
     private static final String KEY_PREFIX =3D "KEY-";
     private static final String USERNAME_PREFIX =3D "USERNAME-";
@@ -70,16 +71,22 @@
             String group, JahiaUser user,
             String languageCode,
             int workflowState,
-            String scheme)
+            String scheme, Set dependencies)
     {
         int id =3D container.getID();
+        ContentContainerKey containerkey =3D new ContentContainerKey(id);
         String usercachekey =3D getUserCacheKey(user, container.getSiteID(=
));
 =

         String key =3D getKey(id, workflowState, languageCode, usercacheke=
y, group, scheme);
 =

         Set groups =3D new HashSet();
-        groups.add(CONTAINER_PREFIX + id + WORKFLOWSTATE_PREFIX + workflow=
State + LANGUAGECODE_PREFIX + languageCode);
+        groups.add(containerkey + WORKFLOWSTATE_PREFIX + workflowState + L=
ANGUAGECODE_PREFIX + languageCode);
         groups.add(USERNAME_PREFIX + usercachekey);
+        for (Iterator iterator =3D dependencies.iterator(); iterator.hasNe=
xt();) {
+            ContentObjectKey objectKey =3D (ContentObjectKey) iterator.nex=
t();
+            groups.add(objectKey.toString()+WORKFLOWSTATE_PREFIX + workflo=
wState + LANGUAGECODE_PREFIX + languageCode);
+        }
+        System.out.println(new GroupCacheKey(key, groups));
         return new GroupCacheKey(key, groups);
     }
 =

@@ -90,7 +97,7 @@
         }
         if (!"http".equals(scheme)) {
             key +=3D "-" +  scheme;
-        }
+        }                =

         return key;
     }
 =

@@ -110,9 +117,9 @@
             return;
         }
 =

-        logger.debug ("Removing cache entries for page ["+ containerID + "=
], workflow ["+workflowState+"], lang ["+languageCode+"]");
+        logger.debug ("Removing cache entries for container/containerlist =
["+ containerID + "], workflow ["+workflowState+"], lang ["+languageCode+"]=
");
 =

-        String pageKey =3D CONTAINER_PREFIX + containerID + WORKFLOWSTATE_=
PREFIX + workflowState + LANGUAGECODE_PREFIX + languageCode;
+        String pageKey =3D containerID + WORKFLOWSTATE_PREFIX + workflowSt=
ate + LANGUAGECODE_PREFIX + languageCode;
 =

         flushGroup(pageKey);
     }

Modified: trunk/core/src/java/org/jahia/taglibs/container/ContainerCacheTag=
.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/taglibs/container/ContainerCacheTag.java&rev=3D18451&repname=3Djah=
ia
=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/taglibs/container/ContainerCacheTag.java =
(original)
+++ trunk/core/src/java/org/jahia/taglibs/container/ContainerCacheTag.java =
Fri Sep 14 12:42:09 2007
@@ -10,12 +10,16 @@
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.params.ProcessingContext;
 import org.jahia.utils.LanguageCodeConverters;
+import org.jahia.content.ContentContainerListKey;
+import org.jahia.content.ContentContainerKey;
 =

 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspTagException;
 import javax.servlet.jsp.tagext.BodyTagSupport;
 import javax.servlet.ServletRequest;
 import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
 =

 /**
  * Created by IntelliJ IDEA.
@@ -24,7 +28,7 @@
  * Time: 09:19:13
  * To change this template use File | Settings | File Templates.
  */
-public class ContainerCacheTag extends BodyTagSupport {
+public class ContainerCacheTag extends BodyTagSupport implements Container=
Cache {
     private static org.apache.log4j.Logger logger =3D
         org.apache.log4j.Logger.getLogger(ContainerTag.class);
 =

@@ -35,7 +39,8 @@
     private int counter =3D 1;
     private JahiaData jData =3D null;
     private String cacheKey =3D null;
-
+    private Set dependencies =3D null;
+    private ContainerCache oldCacheTag;
     private boolean display =3D true;
 =

     public String getCacheKey() {
@@ -77,6 +82,8 @@
     }
 =

     public int doStartTag() throws JspException {
+        oldCacheTag =3D (ContainerCache) pageContext.getAttribute("cacheta=
g");
+        pageContext.setAttribute("cachetag", this);
 =

         ContainerListTag cListTag =3D (ContainerListTag) findAncestorWithC=
lass(this, ContainerListTag.class);
         ContainerTag containerTag =3D (ContainerTag) findAncestorWithClass=
(this, ContainerTag.class);
@@ -86,7 +93,7 @@
         if ((containerList =3D=3D null) || (container =3D=3D null)) {
             return SKIP_BODY;
         }
-
+        dependencies =3D new HashSet();
         ServletRequest request =3D pageContext.getRequest();
         jData =3D (JahiaData) request.getAttribute("org.jahia.data.JahiaDa=
ta");
         try {
@@ -107,9 +114,12 @@
         if (this.display) {
             try {
                 String bodyContent =3D getBodyContent().getString();
+                bodyContent +=3D (" my dependencies : "+dependencies);
+
                 writeToContainerCache(container, jData, bodyContent);
                 getBodyContent().writeOut(getPreviousOut());
                 getBodyContent().clear();
+                getPreviousOut().write(" MY dependencies : "+dependencies);
                 this.counter++;
             } catch (IOException ioe) {
                 logger.error("Error displaying container output", ioe);
@@ -141,11 +151,32 @@
         counter =3D 1;
         cacheKey =3D null;
         jData =3D null;
-
+        dependencies =3D null;
         display =3D true;
+
+        pageContext.setAttribute("cachetag", oldCacheTag);
+        oldCacheTag =3D null;
+
+
         return EVAL_PAGE;
     }
 =

+    public void addContainerListDependency(int listId) {
+        dependencies.add(new ContentContainerListKey(listId));
+
+        ContainerCache ancestor =3D (ContainerCache) findAncestorWithClass=
(this, ContainerCache.class);
+        if (ancestor !=3D null)
+        ancestor.addContainerListDependency(listId);
+    }
+
+    public void addContainerDependency(int containerId) {
+        dependencies.add(new ContentContainerKey(containerId));
+
+        ContainerCache ancestor =3D (ContainerCache) findAncestorWithClass=
(this, ContainerCache.class);
+        if (ancestor !=3D null)
+        ancestor.addContainerDependency(containerId);
+    }
+
     private void writeToContainerCache(JahiaContainer jahiaContainer,Jahia=
Data jahiaData,
             String bodyContent) throws JahiaInitializationException {
         ContainerHTMLCache containerHTMLCache =3D ServicesRegistry.getInst=
ance().getCacheService().getContainerHTMLCacheInstance();
@@ -159,7 +190,7 @@
                 jahiaContainer, cacheKey, processingContext.getUser(),
                 curLanguageCode,
                 workflowState,
-                processingContext.getScheme());
+                processingContext.getScheme(), dependencies);
         containerHTMLCache.put(containerKey, bodyContent);
     }
 =


Modified: trunk/core/src/java/org/jahia/taglibs/container/ContainerListTag.=
java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/taglibs/container/ContainerListTag.java&rev=3D18451&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/taglibs/container/ContainerListTag.java (=
original)
+++ trunk/core/src/java/org/jahia/taglibs/container/ContainerListTag.java F=
ri Sep 14 12:42:09 2007
@@ -297,7 +297,12 @@
                 pageContext.removeAttribute(getId());
             }
         }
-
+        if (containerList !=3D null) {
+        ContainerCache ancestor =3D (ContainerCache) findAncestorWithClass=
(this, ContainerCache.class);
+            if (ancestor !=3D null) {
+                ancestor.addContainerListDependency(containerList.getID());
+            }
+        }
         return EVAL_BODY_BUFFERED;
     }
 =


Modified: trunk/core/src/java/org/jahia/taglibs/container/ContainerTag.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/taglibs/container/ContainerTag.java&rev=3D18451&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/taglibs/container/ContainerTag.java (orig=
inal)
+++ trunk/core/src/java/org/jahia/taglibs/container/ContainerTag.java Fri S=
ep 14 12:42:09 2007
@@ -24,8 +24,11 @@
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.services.cache.ContainerHTMLCache;
 import org.jahia.services.cache.GroupCacheKey;
+import org.jahia.services.containers.ContentContainerList;
 import org.jahia.exceptions.JahiaInitializationException;
 import org.jahia.utils.LanguageCodeConverters;
+import org.jahia.content.ContentContainerListKey;
+import org.jahia.content.ContentContainerKey;
 =

 import javax.servlet.ServletRequest;
 import javax.servlet.jsp.JspException;
@@ -34,6 +37,8 @@
 import javax.servlet.jsp.tagext.BodyTagSupport;
 import java.io.IOException;
 import java.util.Enumeration;
+import java.util.Set;
+import java.util.HashSet;
 =

 =

 /**
@@ -50,7 +55,7 @@
  * </attriInfo>"
  */
 =

-public class ContainerTag extends BodyTagSupport {
+public class ContainerTag extends BodyTagSupport implements ContainerCache=
 {
 =

     private static org.apache.log4j.Logger logger =3D
         org.apache.log4j.Logger.getLogger(ContainerTag.class);
@@ -58,21 +63,21 @@
     private Enumeration containers;
 =

     // default value for container caching
-    private static final String CACHING_DEFAULT_VALUE =3D "false";
+    private static final String CACHING_DEFAULT_VALUE =3D "true";
 =

     private boolean first =3D true;
     private boolean last =3D true;
     private JahiaContainer container =3D null;
     private JahiaContainer firstContainer =3D null;
     private JahiaContainerList containerList =3D null;
+    private Set dependencies =3D null;
     private int counter =3D 1;
     private JahiaData jData =3D null;
-
+    private ContainerCache oldCacheTag;
     private String cache =3D CACHING_DEFAULT_VALUE;
     private String cacheKey =3D "";
 =

     private boolean initLoop =3D true;
-
     private boolean display =3D true;
 =

     /**
@@ -130,8 +135,10 @@
     }
 =

     public int doStartTag() throws JspException {
+        oldCacheTag =3D (ContainerCache) pageContext.getAttribute("cacheta=
g");
+        pageContext.setAttribute("cachetag", this);
         initLoop =3D true;
-
+        dependencies =3D new HashSet();
         ContainerListTag cListTag =3D (ContainerListTag) findAncestorWithC=
lass(this, ContainerListTag.class);
             containerList =3D cListTag.getContainerList();
             if (containerList =3D=3D null)
@@ -209,10 +216,14 @@
         if (this.display) {
             try {
                 if ("true".equals(cache)) {
-                    writeToContainerCache(container, jData, getBodyContent=
().getString());
+                    String content =3D getBodyContent().getString();
+                    content +=3D (" my dependencies2 : "+dependencies);
+
+                    writeToContainerCache(container, jData, content);
                 }
                 getBodyContent().writeOut(getPreviousOut());
                 getBodyContent().clear();
+                getPreviousOut().write(" MY dependencies2 : "+dependencies=
);
                 this.counter++;
             } catch (IOException ioe) {
                 logger.error("Error displaying container output", ioe);
@@ -242,7 +253,7 @@
         containerList =3D null;
         firstContainer =3D null;
         counter =3D 1;
-
+        dependencies =3D null;
         cache =3D CACHING_DEFAULT_VALUE;
 =

         cacheKey =3D "";
@@ -250,12 +261,31 @@
         initLoop =3D true;
         jData =3D null;
 =

+        pageContext.setAttribute("cachetag", oldCacheTag);
+        oldCacheTag =3D null;
+
         display =3D true;
         if (getId() !=3D null) {
             pageContext.removeAttribute(getId());
         }
         return EVAL_PAGE;
-    }                          =

+    }
+
+    public void addContainerListDependency(int listId) {
+        dependencies.add(new ContentContainerListKey(listId));
+
+        ContainerCache ancestor =3D (ContainerCache) findAncestorWithClass=
(this, ContainerCache.class);
+        if (ancestor !=3D null)
+        ancestor.addContainerListDependency(listId);
+    }
+
+    public void addContainerDependency(int containerId) {
+        dependencies.add(new ContentContainerKey(containerId));
+
+        ContainerCache ancestor =3D (ContainerCache) findAncestorWithClass=
(this, ContainerCache.class);
+        if (ancestor !=3D null)
+        ancestor.addContainerDependency(containerId);
+    }
 =

     private void writeToContainerCache(JahiaContainer jahiaContainer, Jahi=
aData jahiaData,
             String bodyContent) throws JahiaInitializationException {
@@ -270,7 +300,7 @@
                 jahiaContainer, cacheKey, processingContext.getUser(),
                 curLanguageCode,
                 workflowState,
-                processingContext.getScheme());
+                processingContext.getScheme(), dependencies);
         containerHTMLCache.put(containerKey, bodyContent);
     }
 =


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

Reply via email to