Updated Branches: refs/heads/master d30af7d18 -> 91c604d55
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/91c604d5 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/91c604d5 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/91c604d5 Branch: refs/heads/master Commit: 91c604d55c2a5692f8b6321c1980c4ba4b5574bf Parents: d30af7d Author: Peter Ertl <[email protected]> Authored: Sun May 6 14:40:22 2012 +0200 Committer: Peter Ertl <[email protected]> Committed: Sun May 6 14:40:22 2012 +0200 ---------------------------------------------------------------------- .../mapper/BasicResourceReferenceMapper.java | 18 ++-- .../wicket/core/request/mapper/ResourceMapper.java | 21 +++-- .../wicket/request/resource/AbstractResource.java | 9 ++- .../request/resource/CssPackageResource.java | 4 +- .../request/resource/CssResourceReference.java | 2 +- .../request/resource/ICssPackageResource.java | 28 +++++ .../resource/IJavaScriptPackageResource.java | 25 +++++ .../wicket/request/resource/IPackageResource.java | 59 ++++++++++ .../resource/JavaScriptPackageResource.java | 4 +- .../resource/JavaScriptResourceReference.java | 2 +- .../wicket/request/resource/PackageResource.java | 59 +++++----- .../request/resource/PackageResourceDecorator.java | 85 +++++++++++++++ .../request/resource/PackageResourceReference.java | 2 +- .../resource/caching/IStaticCacheableResource.java | 5 +- .../NonCachingPackageResourceDecorator.java | 45 ++++++++ .../version/RequestCycleCachedResourceVersion.java | 2 +- 16 files changed, 314 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/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..63b06d0 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 @@ -229,16 +229,20 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper // apply caching if required 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.getCacheKey() != null) { - throw new IllegalStateException( - "caching strategy returned empty name for " + resource); + 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/91c604d5/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..2e26caa 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,27 @@ 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(); + // is resource supposed to be cached? 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())) + // is caching enabled? + if (cacheable.getCacheKey() != null) { - 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/91c604d5/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..6d39189 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 @@ -480,7 +480,14 @@ public abstract class AbstractResource implements IResource // let caching strategy decorate response if resource is intended to be cached if (this instanceof IStaticCacheableResource) { - getCachingStrategy().decorateResponse(data, (IStaticCacheableResource)this); + final IStaticCacheableResource cacheable = (IStaticCacheableResource)this; + + // is caching enabled? + if (cacheable.getCacheKey() != null) + { + // decorate web response + getCachingStrategy().decorateResponse(data, cacheable); + } } // set response header setResponseHeaders(data, attributes); http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java index f6cf010..f7a77d9 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java @@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory; /** * Package resource for css files. It strips comments and whitespace from css. */ -public class CssPackageResource extends PackageResource +public class CssPackageResource extends PackageResource implements ICssPackageResource { private static final long serialVersionUID = 1L; @@ -57,7 +57,7 @@ public class CssPackageResource extends PackageResource ICssCompressor compressor = getCompressor(); - if (compressor != null && getCompress()) + if (compressor != null && isCompress()) { try { http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/CssResourceReference.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssResourceReference.java index c43ee3e..a3cf582 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssResourceReference.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssResourceReference.java @@ -64,7 +64,7 @@ public class CssResourceReference extends PackageResourceReference } @Override - public CssPackageResource getResource() + public ICssPackageResource getResource() { return new CssPackageResource(getScope(), getName(), getLocale(), getStyle(), getVariation()); http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/ICssPackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ICssPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ICssPackageResource.java new file mode 100644 index 0000000..cbb98a7 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ICssPackageResource.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.request.resource; + +import org.apache.wicket.request.resource.caching.IStaticCacheableResource; +import org.apache.wicket.util.resource.IResourceStream; + +/** + * Represents a css stylesheet package resource + */ +public interface ICssPackageResource extends IPackageResource +{ + // to be extended in the future +} http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/IJavaScriptPackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/IJavaScriptPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/IJavaScriptPackageResource.java new file mode 100644 index 0000000..75f2316 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/IJavaScriptPackageResource.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.request.resource; + +/** + * Represents a javascript package resource + */ +public interface IJavaScriptPackageResource extends IPackageResource +{ + // to be extended in the future +} http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/IPackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/IPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/IPackageResource.java new file mode 100644 index 0000000..8f6ad99 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/IPackageResource.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.request.resource; + +import org.apache.wicket.request.resource.caching.IStaticCacheableResource; +import org.apache.wicket.util.resource.IResourceStream; + +/** + * Represents a localizable static resource. + */ +public interface IPackageResource extends IStaticCacheableResource +{ + /** + * Gets the scoping class, used for class loading and to determine the package. + * + * @return the scoping class + */ + Class<?> getScope(); + + /** + * Gets the style. + * + * @return the style + */ + String getStyle(); + + /** + * locate resource stream for current resource + * + * @return resource stream or <code>null</code> if not found + */ + IResourceStream getResourceStream(); + + /** + * @return whether {@link org.apache.wicket.resource.ITextResourceCompressor} + * can be used to compress the resource. + */ + boolean isCompress(); + + /** + * @param compress + * A flag indicating whether the resource should be compressed. + */ + void setCompress(boolean compress); +} http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java index 210fee1..b317b8a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java @@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory; /** * Package resource for javascript files. It strips comments and whitespace from javascript. */ -public class JavaScriptPackageResource extends PackageResource +public class JavaScriptPackageResource extends PackageResource implements IJavaScriptPackageResource { private static final long serialVersionUID = 1L; @@ -57,7 +57,7 @@ public class JavaScriptPackageResource extends PackageResource IJavaScriptCompressor compressor = getCompressor(); - if (compressor != null && getCompress()) + if (compressor != null && isCompress()) { try { http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptResourceReference.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptResourceReference.java index eb2887d..e1a7250 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptResourceReference.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptResourceReference.java @@ -65,7 +65,7 @@ public class JavaScriptResourceReference extends PackageResourceReference } @Override - public JavaScriptPackageResource getResource() + public IJavaScriptPackageResource getResource() { return new JavaScriptPackageResource(getScope(), getName(), getLocale(), getStyle(), getVariation()); http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/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..9975f2e 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 @@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory; * @author Juergen Donnerstag * @author Matej Knopp */ -public class PackageResource extends AbstractResource implements IStaticCacheableResource +public class PackageResource extends AbstractResource implements IPackageResource { private static final Logger log = LoggerFactory.getLogger(PackageResource.class); @@ -171,9 +171,10 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl return style != null ? style : Session.get().getStyle(); } + @Override public Serializable getCacheKey() { - IResourceStream stream = getCacheableResourceStream(); + final IResourceStream stream = locateResourceStream(getCurrentStyle(), getCurrentLocale()); // if resource stream can not be found do not cache if (stream == null) @@ -185,21 +186,13 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl stream.getVariation()); } - /** - * Gets the scoping class, used for class loading and to determine the package. - * - * @return the scoping class - */ + @Override public final Class<?> getScope() { return WicketObjects.resolveClass(scopeName); } - /** - * Gets the style. - * - * @return the style - */ + @Override public final String getStyle() { return style; @@ -339,34 +332,25 @@ 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()); } - /** - * locate resource stream for current resource - * - * @return resource stream or <code>null</code> if not found - */ + @Override public IResourceStream getResourceStream() { return internalGetResourceStream(style, locale); } - /** - * @return whether {@link org.apache.wicket.resource.ITextResourceCompressor} can be used to compress the - * resource. - */ - public boolean getCompress() + @Override + public boolean isCompress() { return compress; } - /** - * @param compress - * A flag indicating whether the resource should be compressed. - */ + @Override public void setCompress(boolean compress) { this.compress = compress; @@ -374,10 +358,7 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl private IResourceStream internalGetResourceStream(final String style, final Locale locale) { - IResourceStreamLocator resourceStreamLocator = Application.get() - .getResourceSettings() - .getResourceStreamLocator(); - IResourceStream resourceStream = resourceStreamLocator.locate(getScope(), absolutePath, style, variation, locale, null, false); + IResourceStream resourceStream = locateResourceStream(style, locale); Class<?> realScope = getScope(); String realPath = absolutePath; @@ -415,6 +396,24 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl } /** + * locate resource stream taking style and locale into account + * + * @param style + * client style + * @param locale + * client locale + * @return client-specific resource stream + */ + private IResourceStream locateResourceStream(final String style, final Locale locale) + { + IResourceStreamLocator resourceStreamLocator = Application.get() + .getResourceSettings() + .getResourceStreamLocator(); + + return resourceStreamLocator.locate(getScope(), absolutePath, style, variation, locale, null, false); + } + + /** * @param scope * resource scope * @param path http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceDecorator.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceDecorator.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceDecorator.java new file mode 100644 index 0000000..372dc8e --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceDecorator.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.request.resource; + +import java.io.Serializable; + +import org.apache.wicket.util.resource.IResourceStream; + +/** + * wraps an existing {@link org.apache.wicket.request.resource.IPackageResource} and + * enables overriding of its public methods. + * + * @autor Peter Ertl + */ +public class PackageResourceDecorator implements IPackageResource +{ + private final IPackageResource resource; + + public PackageResourceDecorator(final IPackageResource resource) + { + this.resource = resource; + } + + @Override + public Class<?> getScope() + { + return resource.getScope(); + } + + @Override + public String getStyle() + { + return resource.getStyle(); + } + + @Override + public IResourceStream getResourceStream() + { + return resource.getResourceStream(); + } + + @Override + public boolean isCompress() + { + return resource.isCompress(); + } + + @Override + public void setCompress(final boolean compress) + { + resource.setCompress(compress); + } + + @Override + public Serializable getCacheKey() + { + return resource.getCacheKey(); + } + + @Override + public IResourceStream getCacheableResourceStream() + { + return resource.getCacheableResourceStream(); + } + + @Override + public void respond(final Attributes attributes) + { + resource.respond(attributes); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java index 6becc8e..924555b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java @@ -107,7 +107,7 @@ public class PackageResourceReference extends ResourceReference * @see org.apache.wicket.request.resource.ResourceReference#getResource() */ @Override - public PackageResource getResource() + public IPackageResource getResource() { final String extension = getExtension(); http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/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..09f74eb 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 @@ -34,8 +34,9 @@ public interface IStaticCacheableResource extends IResource * get unique caching key for the resource stream produced by * {@link #getCacheableResourceStream()} * - * @return serializable key with properly supports {@link #equals(Object)} and - * {@link #hashCode()} + * @return serializable key with properly implements {@link #equals(Object)} and + * {@link #hashCode()} or {@code null} which indicates the resource + * must not be processed by {@link IResourceCachingStrategy} */ Serializable getCacheKey(); http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/resource/NonCachingPackageResourceDecorator.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/resource/NonCachingPackageResourceDecorator.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/resource/NonCachingPackageResourceDecorator.java new file mode 100644 index 0000000..ac4a8d7 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/resource/NonCachingPackageResourceDecorator.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.request.resource.caching.resource; + +import java.io.Serializable; + +import org.apache.wicket.request.resource.IPackageResource; +import org.apache.wicket.request.resource.PackageResourceDecorator; + +/** + * wraps an existing {@link IPackageResource} and disables caching via + * {@link org.apache.wicket.request.resource.caching.IResourceCachingStrategy} + * by returning {@code null} for the cache key in method + * {@link org.apache.wicket.request.resource.caching.IStaticCacheableResource#getCacheKey()} + * + * @autor Peter Ertl + */ +public class NonCachingPackageResourceDecorator extends PackageResourceDecorator +{ + public NonCachingPackageResourceDecorator(final IPackageResource resource) + { + super(resource); + } + + @Override + public Serializable getCacheKey() + { + // disable caching by returning null + return null; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/91c604d5/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java index dbcec9d..03bd350 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java @@ -81,7 +81,7 @@ public class RequestCycleCachedResourceVersion implements IResourceVersion key = resource.getCacheKey(); // does cache exist within current request cycle? - if (cache == null) + if (cache == null && key != null) { // no, so create it requestCycle.setMetaData(CACHE_KEY, cache = Generics.newHashMap());
