package de.halbekunst.juplo.cachecontrol;
+import de.halbekunst.juplo.cachecontrol.AcceleratorFilter.AccelerationWrapper;
import de.halbekunst.juplo.cachecontrol.annotations.CacheSeconds;
import de.halbekunst.juplo.cachecontrol.annotations.Accepts;
import de.halbekunst.juplo.cachecontrol.annotations.AdditionalHeaders;
CacheControl.tl.set(handle);
}
- public void init(Object handler) throws NoSuchMethodException {
- CacheControl.tl.set(new ReflectionCacheMethodHandle(handler));
+ void init(Object handler, AccelerationWrapper wrapper) throws NoSuchMethodException {
+ CacheControl.tl.set(new ReflectionCacheMethodHandle(handler, wrapper == null ? false : wrapper.zipped));
}
public boolean decorate(
HttpServletRequest request,
- HttpServletResponse response,
- Object handler
+ HttpServletResponse response
)
{
try {
log.debug("{}: first up!", url);
+ if (handle.isZipped())
+ response.addHeader(Headers.HEADER_CONTENT_ENCODING, "gzip");
+
/** HTTP/1.1-Caching-Header richtig setzen!! */
response.setDateHeader(Headers.HEADER_LAST_MODIFIED, lastModified);
}
- public interface CacheMethodHandle {
- long getTimestamp();
- int accepts(HttpServletRequest request);
- int getCacheSeconds(HttpServletRequest request);
- long getLastModified(HttpServletRequest request);
- String getETag(HttpServletRequest request);
- boolean isETagWeak();
- void cacheControl(HttpServletRequest request, Map<String, String> cacheControlMap);
- Map<String,String> getAdditionalHeaders(HttpServletRequest request);
- }
-
-
class ReflectionCacheMethodHandle implements CacheMethodHandle {
private Object handler;
private boolean isCacheControlMethodDefined;
private boolean isAdditionalHeadersMethodDefined;
private boolean weak;
+ private boolean zipped;
- ReflectionCacheMethodHandle(Object handler) throws NoSuchMethodException {
+ ReflectionCacheMethodHandle(Object handler, boolean zipped) throws NoSuchMethodException {
this.handler = handler;
+ this.zipped = zipped;
cacheSeconds = CacheControl.this.defaultCacheSeconds;
lastModified = CacheControl.this.defaultLastModified;
}
+ @Override
+ public boolean isZipped() {
+ return zipped;
+ }
+
@Override
public long getTimestamp() {
return now;