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