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