You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/07/04 20:56:04 UTC

svn commit: r960384 - /incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java

Author: reto
Date: Sun Jul  4 18:56:03 2010
New Revision: 960384

URL: http://svn.apache.org/viewvc?rev=960384&view=rev
Log:
CLEREZZA-255: adding cache-control if not there yet

Modified:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java?rev=960384&r1=960383&r2=960384&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java Sun Jul  4 18:56:03 2010
@@ -32,19 +32,33 @@ import javax.ws.rs.ext.Provider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.clerezza.web.fileserver.util.MediaTypeGuesser;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.ComponentContext;
 import org.wymiwyg.commons.util.dirbrowser.PathNode;
 
 /**
  *
  * @author reto
- * 
- * @scr.component
- * @scr.service interface="java.lang.Object"
- * @scr.property name="javax.ws.rs" type="Boolean" value="true"
  */
+@Component
+@Service(value = Object.class)
+@Property(name = "javax.ws.rs", boolValue = true)
 @Provider
 public class PathNodeWriter implements MessageBodyWriter<PathNode> {
+
+	@Property(value="600", description="Specifies the value of the max-age field"
+		+ "set in the cache-control header, as per RFC 2616 this is a number of "
+		+ "seconds")
+	public static final String MAX_AGE = "max-age";
+
 	private final Logger logger = LoggerFactory.getLogger(PathNodeWriter.class);
+	private String cacheControlHeaderValue = "max-age:";
+
+	protected void activate(ComponentContext context) {
+		cacheControlHeaderValue = "max-age="+(String) context.getProperties().get(MAX_AGE);
+	}
 
 	@Override
 	public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
@@ -70,6 +84,11 @@ public class PathNodeWriter implements M
 				logger.debug("Set media-type to: {}", guessedMediaType);
 			}
 		}
+		if (!httpHeaders.containsKey(HttpHeaders.CACHE_CONTROL)) {
+			httpHeaders.putSingle(HttpHeaders.CACHE_CONTROL, cacheControlHeaderValue);
+		} else {
+			logger.debug("httpHeaders already contain CACHE_CONTROL");
+		}
 		InputStream in = t.getInputStream();
 		for (int ch = in.read(); ch != -1; ch = in.read()) {
 			entityStream.write(ch);