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