You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2012/05/07 11:43:37 UTC
[1/2] git commit: WICKET-4532 Disable caching for particular resources
Updated Branches:
refs/heads/master 40bdfd41d -> 8ee7eaea5
WICKET-4532 Disable caching for particular resources
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8ee7eaea
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8ee7eaea
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8ee7eaea
Branch: refs/heads/master
Commit: 8ee7eaea544b49a37daa4a4fbdf41df855a7fa6e
Parents: 6ccdbb7
Author: Peter Ertl <pe...@apache.org>
Authored: Mon May 7 11:23:53 2012 +0200
Committer: Peter Ertl <pe...@apache.org>
Committed: Mon May 7 11:23:53 2012 +0200
----------------------------------------------------------------------
.../mapper/BasicResourceReferenceMapper.java | 23 +++++++++------
.../wicket/core/request/mapper/ResourceMapper.java | 21 ++++++++------
.../wicket/request/resource/AbstractResource.java | 11 ++++++-
.../request/resource/ContextRelativeResource.java | 17 +++++++++-
.../wicket/request/resource/PackageResource.java | 23 ++++++++++++++-
.../resource/caching/IStaticCacheableResource.java | 7 ++++
.../resource/bundles/ConcatBundleResource.java | 13 ++++++++
.../mapper/BasicResourceReferenceMapperTest.java | 6 ++++
8 files changed, 98 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
index 6f4d417..3ec6cea 100755
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
@@ -226,19 +226,24 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper
{
final IResource resource = reference.getResource();
- // apply caching if required
+ // is resource supposed to be cached?
if (resource instanceof IStaticCacheableResource)
{
- // add caching related information to filename + query parameters
final IStaticCacheableResource cacheable = (IStaticCacheableResource)resource;
- final ResourceUrl resourceUrl = new ResourceUrl(token, parameters);
- getCachingStrategy().decorateUrl(resourceUrl, cacheable);
- token = resourceUrl.getFileName();
-
- if (Strings.isEmpty(token))
+
+ // is caching enabled?
+ if(cacheable.isCacheEnabled())
{
- throw new IllegalStateException(
- "caching strategy returned empty name for " + resource);
+ // apply caching scheme to resource url
+ final ResourceUrl resourceUrl = new ResourceUrl(token, parameters);
+ getCachingStrategy().decorateUrl(resourceUrl, cacheable);
+ token = resourceUrl.getFileName();
+
+ if (Strings.isEmpty(token))
+ {
+ throw new IllegalStateException(
+ "caching strategy returned empty name for " + resource);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
index 984f0ad..912bf09 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
@@ -215,22 +215,25 @@ public class ResourceMapper extends AbstractMapper implements IRequestMapper
if (Strings.isEmpty(filename) == false)
{
- // TODO is calling getResource() a potential performance bottleneck?
final IResource resource = resourceReference.getResource();
if (resource instanceof IStaticCacheableResource)
{
final IStaticCacheableResource cacheable = (IStaticCacheableResource)resource;
- final ResourceUrl cacheUrl = new ResourceUrl(filename, parameters);
-
- getCachingStrategy().decorateUrl(cacheUrl, cacheable);
-
- if (Strings.isEmpty(cacheUrl.getFileName()))
+
+ if(cacheable.isCacheEnabled())
{
- throw new IllegalStateException("caching strategy returned empty name for " +
- resource);
+ final ResourceUrl cacheUrl = new ResourceUrl(filename, parameters);
+
+ getCachingStrategy().decorateUrl(cacheUrl, cacheable);
+
+ if (Strings.isEmpty(cacheUrl.getFileName()))
+ {
+ throw new IllegalStateException("caching strategy returned empty name for " +
+ resource);
+ }
+ segments.set(lastSegmentAt, cacheUrl.getFileName());
}
- segments.set(lastSegmentAt, cacheUrl.getFileName());
}
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/request/resource/AbstractResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/AbstractResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/AbstractResource.java
index 2033a72..0bbd4e6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/AbstractResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/AbstractResource.java
@@ -477,10 +477,17 @@ public abstract class AbstractResource implements IResource
// Get a "new" ResourceResponse to write a response
ResourceResponse data = newResourceResponse(attributes);
- // let caching strategy decorate response if resource is intended to be cached
+ // is resource supposed to be cached?
if (this instanceof IStaticCacheableResource)
{
- getCachingStrategy().decorateResponse(data, (IStaticCacheableResource)this);
+ final IStaticCacheableResource cacheable = (IStaticCacheableResource)this;
+
+ // is caching enabled?
+ if (cacheable.isCacheEnabled())
+ {
+ // apply caching strategy to response
+ getCachingStrategy().decorateResponse(data, cacheable);
+ }
}
// set response header
setResponseHeaders(data, attributes);
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
index 8b3e87b..3b99377 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
@@ -44,6 +44,7 @@ public class ContextRelativeResource extends AbstractResource implements IStatic
private static final Logger log = LoggerFactory.getLogger(ContextRelativeResource.class);
private final String path;
+ private boolean cacheEnabled;
/**
* Construct.
@@ -62,9 +63,21 @@ public class ContextRelativeResource extends AbstractResource implements IStatic
{
pathRelativeToContextRoot = "/" + pathRelativeToContextRoot;
}
- path = pathRelativeToContextRoot;
+ this.path = pathRelativeToContextRoot;
+ this.cacheEnabled = true;
}
-
+
+ @Override
+ public boolean isCacheEnabled()
+ {
+ return cacheEnabled;
+ }
+
+ public void setCacheEnabled(final boolean cacheEnabled)
+ {
+ this.cacheEnabled = cacheEnabled;
+ }
+
@Override
public Serializable getCacheKey()
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
index 640639b..93e65b5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
@@ -124,6 +124,13 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
private boolean compress = false;
/**
+ * controls whether {@link org.apache.wicket.request.resource.caching.IResourceCachingStrategy}
+ * should be applied to resource
+ */
+
+ private boolean cacheEnabled;
+
+ /**
* Hidden constructor.
*
* @param scope
@@ -155,10 +162,11 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
path = name;
}
- scopeName = scope.getName();
+ this.scopeName = scope.getName();
this.locale = locale;
this.style = style;
this.variation = variation;
+ this.cacheEnabled = true;
}
private Locale getCurrentLocale()
@@ -171,6 +179,18 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
return style != null ? style : Session.get().getStyle();
}
+ @Override
+ public boolean isCacheEnabled()
+ {
+ return cacheEnabled;
+ }
+
+ public void setCacheEnabled(final boolean cacheEnabled)
+ {
+ this.cacheEnabled = cacheEnabled;
+ }
+
+ @Override
public Serializable getCacheKey()
{
IResourceStream stream = getCacheableResourceStream();
@@ -339,6 +359,7 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
* @see org.apache.wicket.request.resource.caching.IStaticCacheableResource#getCacheableResourceStream()
* @see #getResourceStream()
*/
+ @Override
public IResourceStream getCacheableResourceStream()
{
return internalGetResourceStream(getCurrentStyle(), getCurrentLocale());
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IStaticCacheableResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IStaticCacheableResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IStaticCacheableResource.java
index a861e27..b182056 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IStaticCacheableResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IStaticCacheableResource.java
@@ -31,6 +31,13 @@ import org.apache.wicket.util.resource.IResourceStream;
public interface IStaticCacheableResource extends IResource
{
/**
+ * controls whether caching of the resource is enabled or disabled
+ *
+ * @return @{code true} if caching is enabled
+ */
+ boolean isCacheEnabled();
+
+ /**
* get unique caching key for the resource stream produced by
* {@link #getCacheableResourceStream()}
*
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatBundleResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatBundleResource.java b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatBundleResource.java
index 2307f23..4eb04c5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatBundleResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatBundleResource.java
@@ -54,6 +54,7 @@ public class ConcatBundleResource extends AbstractResource implements IStaticCac
private static final long serialVersionUID = 1L;
private List<? extends IReferenceHeaderItem> providedResources;
+ private boolean cacheEnabled;
/**
* Construct.
@@ -63,6 +64,7 @@ public class ConcatBundleResource extends AbstractResource implements IStaticCac
public ConcatBundleResource(List<? extends IReferenceHeaderItem> providedResources)
{
this.providedResources = Args.notNull(providedResources, "providedResources");
+ this.cacheEnabled = true;
}
@Override
@@ -173,6 +175,17 @@ public class ConcatBundleResource extends AbstractResource implements IStaticCac
}
@Override
+ public boolean isCacheEnabled()
+ {
+ return cacheEnabled;
+ }
+
+ public void setCacheEnabled(final boolean cacheEnabled)
+ {
+ this.cacheEnabled = cacheEnabled;
+ }
+
+ @Override
public Serializable getCacheKey()
{
ArrayList<Serializable> key = new ArrayList<Serializable>(providedResources.size());
http://git-wip-us.apache.org/repos/asf/wicket/blob/8ee7eaea/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
index 21e30a0..ff76ed0 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
@@ -477,6 +477,12 @@ public class BasicResourceReferenceMapperTest extends AbstractResourceReferenceM
public void respond(Attributes attributes)
{
}
+
+ @Override
+ public boolean isCacheEnabled()
+ {
+ return true;
+ }
};
final ResourceReference reference = new ResourceReference(getClass(), "versioned",