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);


Reply via email to