Author: sshafroi
Date: 2008-11-18 09:54:23 +0100 (Tue, 18 Nov 2008)
New Revision: 6946

Modified:
   
trunk/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java
   trunk/views.xsd
   trunk/war/src/main/java/no/sesat/search/view/taglib/SearchTabMainTag.java
Log:
Issue SKER4932:  (Mulighet for caching av sider i s?\195?\184kefronten)

Adding expires-in-seconds attribute to the layout element in views.xml
will add a expires with a date equal to the now + seconds.

<layout ...... expires-in-seconds="3600">

will add a 'Expires: Tue, 18 Nov 2008 10:30:31 CET' in the html header.

Should I add expires-in-days aswell?



Modified: 
trunk/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java
===================================================================
--- 
trunk/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java  
    2008-11-17 22:14:04 UTC (rev 6945)
+++ 
trunk/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java  
    2008-11-18 08:54:23 UTC (rev 6946)
@@ -545,6 +545,7 @@
         private Map<String,String> includes;
         private Map<String,String> properties;
         private String contentType;
+        private int expires = -1;
 
         private Layout(){}
 
@@ -561,6 +562,7 @@
                 includes = inherit.includes;
                 properties = inherit.properties;
                 contentType = inherit.contentType;
+                expires = inherit.expires;
             }
         }
 
@@ -640,9 +642,19 @@
            return contentType;
        }
 
+       /**
+        * Number of seconds until this layout (page) should expire.
+        *
+        * @return number of seconds until page expires.
+        */
+       public int getExpiresInSeconds() {
+           return expires;
+       }
+
         /** Will return null when the element argument is null.
          * Otherwise returns the Layout object deserialised from the contents 
of the Element.
          ** @param element
+         *
          * @return
          */
         public Layout readLayout(final Element element){
@@ -663,6 +675,9 @@
                 if(0 < element.getAttribute("content-type").length()){
                     contentType = element.getAttribute("content-type");
                 }
+                if(0 < element.getAttribute("expires-in-seconds").length()){
+                    expires = 
Integer.parseInt(element.getAttribute("expires-in-seconds"));
+                }
                 includes = readMap(includes, 
element.getElementsByTagName("include"), "key", "template");
                 properties = readMap(properties, 
element.getElementsByTagName("property"), "key", "value");
             }

Modified: trunk/views.xsd
===================================================================
--- trunk/views.xsd     2008-11-17 22:14:04 UTC (rev 6945)
+++ trunk/views.xsd     2008-11-18 08:54:23 UTC (rev 6946)
@@ -39,6 +39,7 @@
         <xsd:attribute name='origin'/>
         <xsd:attribute name='front'/>
         <xsd:attribute name='content-type'/>
+        <xsd:attribute name='expires-in-seconds' type="xsd:integer"/>
     </xsd:complexType>
        <xsd:complexType name='include'>
         <xsd:attribute name='key'/>
@@ -154,4 +155,4 @@
         <xsd:attribute name='key'/>
         <xsd:attribute name='value'/>
     </xsd:complexType>
-</xsd:schema>
\ No newline at end of file
+</xsd:schema>

Modified: 
trunk/war/src/main/java/no/sesat/search/view/taglib/SearchTabMainTag.java
===================================================================
--- trunk/war/src/main/java/no/sesat/search/view/taglib/SearchTabMainTag.java   
2008-11-17 22:14:04 UTC (rev 6945)
+++ trunk/war/src/main/java/no/sesat/search/view/taglib/SearchTabMainTag.java   
2008-11-18 08:54:23 UTC (rev 6946)
@@ -22,9 +22,12 @@
 
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.PageContext;
 
@@ -55,9 +58,10 @@
     private static final String MISSING = "Missing_SearchTabMain_Template";
 
     private static final String PAGES_DIRECTORY = "/pages/";
+    private static final String RFC1123="EEE, dd MMM yyyy HH:mm:ss zzz";
+    private static final SimpleDateFormat dateFormat = new 
SimpleDateFormat(RFC1123);
 
 
-
     // Attributes ----------------------------------------------------
 
 
@@ -104,6 +108,13 @@
                     cxt.getResponse().setContentType(layout.getContentType());
                 }
 
+                if(layout.getExpiresInSeconds() != -1) {
+                    HttpServletResponse httpResponse = 
(HttpServletResponse)cxt.getResponse();
+                    Calendar cal = Calendar.getInstance();
+                    cal.add(Calendar.SECOND, layout.getExpiresInSeconds());
+                    httpResponse.setHeader("EXPIRES", 
dateFormat.format(cal.getTime()));
+                }
+
                 if(include.endsWith(".jsp")){
 
                     forwardJsp(include);

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to