Author: sdumitriu
Date: 2007-11-20 13:05:29 +0100 (Tue, 20 Nov 2007)
New Revision: 6028

Modified:
   
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/DefaultXWikiRenderingEngine.java
Log:
XWIKI-1044: Refreshing cached documents affects only the current request
XWIKI-937: Caching documents breaks the inline edit mode
XWIKI-1869: Caching documents does not consider the current user language, 
returning the document in the cached language

Fixed.


Modified: 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/DefaultXWikiRenderingEngine.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/DefaultXWikiRenderingEngine.java
    2007-11-20 11:44:00 UTC (rev 6027)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/DefaultXWikiRenderingEngine.java
    2007-11-20 12:05:29 UTC (rev 6028)
@@ -324,13 +324,24 @@
     private String getKey(String text, XWikiDocument contentdoc, XWikiDocument 
includingdoc,
         XWikiContext context)
     {
-        return ((context == null) ? "xwiki" : context.getDatabase()) + "-"
-            + ((contentdoc == null) ? "" : contentdoc.getDatabase() + ":"
-                + contentdoc.getFullName()) + "-"
-            + ((includingdoc == null) ? "" : includingdoc.getDatabase() + ":"
-                + includingdoc.getFullName()) + "-"
-            + ((context == null || context.getRequest() == null) ? "" : 
context.getRequest()
-                .getQueryString()) + "-" + text.hashCode();
+        String qs =
+            ((context == null || context.getRequest() == null) ? "" : 
context.getRequest()
+                .getQueryString());
+        if (qs != null) {
+            qs = qs.replaceAll("refresh=1&?", "");
+            qs = qs.replaceAll("&?refresh=1", "");
+        }
+        String db = ((context == null) ? "xwiki" : context.getDatabase());
+        String cdoc =
+            ((contentdoc == null) ? "" : contentdoc.getDatabase() + ":"
+                + contentdoc.getFullName() + ":" + 
contentdoc.getRealLanguage());
+        String idoc =
+            ((includingdoc == null) ? "" : includingdoc.getDatabase() + ":"
+                + includingdoc.getFullName() + ":" + 
includingdoc.getRealLanguage());
+        String action = ((context == null) ? "view" : context.getAction());
+        String lang = ((context == null) ? "" : context.getLanguage());
+        return db + "-" + cdoc + "-" + idoc + "-" + qs + "-" + action + "-" + 
lang + "-"
+            + text.hashCode();
     }
 
     public void flushCache()

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to