checkNotNull(cacheExtensions);
_cacheExtensions = ImmutableMap.copyOf(cacheExtensions);
}
public CacheControl buildCacheControl() {
CacheControl cacheControl = new CacheControl();
cacheControl.setNoTransform(false); // Default is true
if (_maxAge.isPresent()) {
cacheControl.setMaxAge((int) _maxAge.get().toSeconds());
}
if (_sharedMaxAge.isPresent()) {
cacheControl.setSMaxAge((int) _maxAge.get().toSeconds());
}
if (_privateFields.size() > 0) {
cacheControl.setPrivate(true);
cacheControl.getPrivateFields().addAll(_privateFields);
}
if (_noCacheFields.size() > 0) {
cacheControl.setNoCache(true);
cacheControl.getNoCacheFields().addAll(_noCacheFields);
}
for (CacheControlFlag flag : _flags) {
switch (flag) {
case NO_CACHE:
cacheControl.setNoCache(true);
break;
case NO_STORE:
cacheControl.setNoStore(true);
break;
case MUST_REVALIDATE:
cacheControl.setMustRevalidate(true);
break;
case PROXY_REVALIDATE:
cacheControl.setProxyRevalidate(true);
break;
case NO_TRANSFORM:
cacheControl.setNoTransform(true);
break;
case PRIVATE:
cacheControl.setPrivate(true);
break;
case PUBLIC:
// public is not directly supported by the CacheControl object, so use extension map
cacheControl.getCacheExtension().put("public", "");
break;
default:
checkState(false, "Unhandled cache control flag: " + flag);
break;
}
}
// Although the docs don't state it explicitly, both null and empty string get converted to a bare directive
// for cache extensions.
cacheControl.getCacheExtension().putAll(_cacheExtensions);
return cacheControl;
}