Author: pete
Date: Thu Jun 30 02:59:56 2011
New Revision: 1141369
URL: http://svn.apache.org/viewvc?rev=1141369&view=rev
Log:
WICKET-3846 fixed : caching of package resources was not aware of the current
locale, style and variation of the resource. same for the message digest
functionality.
Added:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CacheResourceVersionKey.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapper.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IResourceCachingStrategy.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/NoOpResourceCachingStrategy.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CachingResourceVersion.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/IResourceVersion.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/StaticResourceVersion.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractResourceReferenceMapperTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapper.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapper.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapper.java
Thu Jun 30 02:59:56 2011
@@ -26,6 +26,7 @@ import org.apache.wicket.request.handler
import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.MetaInfStaticResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.request.resource.caching.IResourceCachingStrategy;
import org.apache.wicket.request.resource.caching.ResourceUrl;
@@ -191,20 +192,25 @@ class BasicResourceReferenceMapper exten
{
String token = tokens.nextToken();
- // on the last component of the resource path
add the timestamp
+ // on the last component of the resource path
add a version string ...
if (tokens.hasMoreTokens() == false)
{
- ResourceUrl resourceUrl = new
ResourceUrl(token, parameters);
-
getCachingStrategy().decorateUrl(resourceUrl, reference);
- token = resourceUrl.getFileName();
-
- if (Strings.isEmpty(token))
- throw new NullPointerException(
- "caching strategy must
not return an empty filename");
-
- if (parameters.getIndexedCount() > 0)
- throw new IllegalStateException(
- "caching strategy must
not add indexed parameters");
+ // ... but only for package resources
+ if(reference instanceof
PackageResourceReference)
+ {
+ final PackageResourceReference
pkgref = (PackageResourceReference)reference;
+ final ResourceUrl resourceUrl =
new ResourceUrl(token, parameters);
+
getCachingStrategy().decorateUrl(resourceUrl, pkgref);
+ token =
resourceUrl.getFileName();
+
+ if (Strings.isEmpty(token))
+ throw new
NullPointerException(
+ "caching
strategy must not return an empty filename");
+
+ if
(parameters.getIndexedCount() > 0)
+ throw new
IllegalStateException(
+ "caching
strategy must not add indexed parameters");
+ }
}
segments.add(token);
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
Thu Jun 30 02:59:56 2011
@@ -304,7 +304,7 @@ public class PackageResource extends Abs
*
* @return resource stream or <code>null</code> if not found
*/
- public IResourceStream getResourceStream()
+ protected IResourceStream getResourceStream()
{
// Locate resource
return ThreadContext.getApplication()
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
Thu Jun 30 02:59:56 2011
@@ -158,6 +158,11 @@ public class PackageResourceReference ex
return info.stream.lastModifiedTime();
}
+ public StreamInfo getCurrentStreamInfo()
+ {
+ return lookupStream(getCurrentLocale(), getCurrentStyle(),
getVariation());
+ }
+
@Override
public UrlAttributes getUrlAttributes()
{
@@ -181,7 +186,7 @@ public class PackageResourceReference ex
return value;
}
- private static class StreamInfo
+ public static class StreamInfo
{
public final IResourceStream stream;
public final Locale locale;
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/FilenameWithVersionResourceCachingStrategy.java
Thu Jun 30 02:59:56 2011
@@ -18,7 +18,7 @@ package org.apache.wicket.request.resour
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.resource.AbstractResource;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.caching.version.IResourceVersion;
import org.apache.wicket.util.lang.Args;
@@ -91,7 +91,7 @@ public class FilenameWithVersionResource
return versionPrefix;
}
- public void decorateUrl(ResourceUrl url, ResourceReference reference)
+ public void decorateUrl(ResourceUrl url, PackageResourceReference
reference)
{
// get version string for requested resource
final String version =
this.resourceVersion.getVersion(reference);
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IResourceCachingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IResourceCachingStrategy.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IResourceCachingStrategy.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/IResourceCachingStrategy.java
Thu Jun 30 02:59:56 2011
@@ -17,6 +17,7 @@
package org.apache.wicket.request.resource.caching;
import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
/**
@@ -42,11 +43,11 @@ public interface IResourceCachingStrateg
* @param reference
* resource reference
*/
- void decorateUrl(ResourceUrl url, ResourceReference reference);
+ void decorateUrl(ResourceUrl url, PackageResourceReference reference);
/**
* Removes caching related information from filename + parameters. In
essenese this method
- * undoes what {@link #decorateUrl(ResourceUrl, ResourceReference)} did.
+ * undoes what {@link #decorateUrl(ResourceUrl,
PackageResourceReference)} did.
*
* @param url
* parameters that were used to construct the url to the
resource and from which
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/NoOpResourceCachingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/NoOpResourceCachingStrategy.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/NoOpResourceCachingStrategy.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/NoOpResourceCachingStrategy.java
Thu Jun 30 02:59:56 2011
@@ -17,7 +17,7 @@
package org.apache.wicket.request.resource.caching;
import org.apache.wicket.request.resource.AbstractResource;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
/**
* resource caching strategy that does nothing
@@ -35,7 +35,7 @@ public class NoOpResourceCachingStrategy
*/
public static final IResourceCachingStrategy INSTANCE = new
NoOpResourceCachingStrategy();
- public void decorateUrl(ResourceUrl url, ResourceReference reference)
+ public void decorateUrl(ResourceUrl url, PackageResourceReference
reference)
{
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/QueryStringWithVersionResourceCachingStrategy.java
Thu Jun 30 02:59:56 2011
@@ -19,7 +19,7 @@ package org.apache.wicket.request.resour
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.INamedParameters;
import org.apache.wicket.request.resource.AbstractResource;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.caching.version.IResourceVersion;
import org.apache.wicket.util.lang.Args;
@@ -80,7 +80,7 @@ public class QueryStringWithVersionResou
return versionParameter;
}
- public void decorateUrl(ResourceUrl url, final ResourceReference
reference)
+ public void decorateUrl(ResourceUrl url, final PackageResourceReference
reference)
{
String version = resourceVersion.getVersion(reference);
Added:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CacheResourceVersionKey.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CacheResourceVersionKey.java?rev=1141369&view=auto
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CacheResourceVersionKey.java
(added)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CacheResourceVersionKey.java
Thu Jun 30 02:59:56 2011
@@ -0,0 +1,94 @@
+/*
+ * 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.version;
+
+import java.io.Serializable;
+import java.util.Locale;
+
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.util.lang.Args;
+
+public class CacheResourceVersionKey implements Serializable
+{
+ private final Class<?> scope;
+ private final String name;
+ private final Locale locale;
+ private final String style;
+ private final String variation;
+
+ public CacheResourceVersionKey(PackageResourceReference
resourceReference,
+ PackageResourceReference.StreamInfo
streamInfo)
+ {
+ Args.notNull(resourceReference, "resourceReference");
+ Args.notNull(streamInfo, "streamInfo");
+ this.scope = resourceReference.getScope();
+ this.name = resourceReference.getName();
+ this.locale = streamInfo.locale;
+ this.style = streamInfo.style;
+ this.variation = streamInfo.variation;
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ return true;
+
+ if (!(o instanceof CacheResourceVersionKey))
+ return false;
+
+ CacheResourceVersionKey that = (CacheResourceVersionKey)o;
+
+ if (locale != null? !locale.equals(that.locale) : that.locale
!= null)
+ return false;
+ if (!name.equals(that.name))
+ return false;
+ if (!scope.equals(that.scope))
+ return false;
+ if (style != null? !style.equals(that.style) : that.style !=
null)
+ return false;
+ if (variation != null? !variation.equals(that.variation) :
that.variation != null)
+ return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = scope.hashCode();
+ result = 31 * result + name.hashCode();
+ result = 31 * result + (locale != null? locale.hashCode() : 0);
+ result = 31 * result + (style != null? style.hashCode() : 0);
+ result = 31 * result + (variation != null? variation.hashCode()
: 0);
+ return result;
+ }
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("CacheResourceVersionKey");
+ sb.append("{scope=").append(scope);
+ sb.append(", name='").append(name).append('\'');
+ sb.append(", locale=").append(locale);
+ sb.append(", style='").append(style).append('\'');
+ sb.append(", variation='").append(variation).append('\'');
+ sb.append('}');
+ return sb.toString();
+ }
+}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CachingResourceVersion.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CachingResourceVersion.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CachingResourceVersion.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/CachingResourceVersion.java
Thu Jun 30 02:59:56 2011
@@ -16,10 +16,14 @@
*/
package org.apache.wicket.request.resource.caching.version;
+import java.util.Collections;
+import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.collections.MostRecentlyUsedMap;
import org.apache.wicket.util.lang.Args;
/**
@@ -31,20 +35,44 @@ import org.apache.wicket.util.lang.Args;
*/
public class CachingResourceVersion implements IResourceVersion
{
+ private static final int DEFAULT_MAX_CACHE_ENTRIES = 5000;
private static final String NULL_VALUE = "null";
private final IResourceVersion delegate;
- private final ConcurrentMap<ResourceReference, String> cache;
+ private final Map<CacheResourceVersionKey, String> cache;
public CachingResourceVersion(IResourceVersion delegate)
{
+ this(delegate, DEFAULT_MAX_CACHE_ENTRIES);
+ }
+
+ /**
+ * constructor
+ *
+ * @param delegate
+ * resource version provider
+ * @param maxEntries
+ * maximum number of cache entries
+ */
+ public CachingResourceVersion(IResourceVersion delegate, int maxEntries)
+ {
this.delegate = Args.notNull(delegate, "delegate");
- this.cache = new ConcurrentHashMap<ResourceReference, String>();
+ this.cache = Collections.synchronizedMap(
+ new MostRecentlyUsedMap<CacheResourceVersionKey,
String>(maxEntries));
}
- public String getVersion(ResourceReference resourceReference)
+ public String getVersion(PackageResourceReference resourceReference)
{
- String version = cache.get(resourceReference);
+ PackageResourceReference.StreamInfo streamInfo =
resourceReference.getCurrentStreamInfo();
+
+ if(streamInfo == null)
+ {
+ return null;
+ }
+
+ final CacheResourceVersionKey key = new
CacheResourceVersionKey(resourceReference, streamInfo);
+
+ String version = cache.get(key);
if (version == null)
{
@@ -54,7 +82,7 @@ public class CachingResourceVersion impl
{
version = NULL_VALUE;
}
- cache.put(resourceReference, version);
+ cache.put(key, version);
}
//noinspection StringEquality
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/IResourceVersion.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/IResourceVersion.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/IResourceVersion.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/IResourceVersion.java
Thu Jun 30 02:59:56 2011
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.request.resource.caching.version;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
/**
@@ -36,8 +37,8 @@ public interface IResourceVersion
* get unique string identifying the version of the resource
*
* @param resourceReference
- * reference to resource
+ * reference to package resource
* @return unique version string
*/
- String getVersion(ResourceReference resourceReference);
+ String getVersion(PackageResourceReference resourceReference);
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
Thu Jun 30 02:59:56 2011
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.request.resource.caching.version;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.time.Time;
@@ -29,7 +30,7 @@ import org.apache.wicket.util.time.Time;
*/
public class LastModifiedResourceVersion implements IResourceVersion
{
- public String getVersion(ResourceReference resourceReference)
+ public String getVersion(PackageResourceReference resourceReference)
{
final Time lastModified = resourceReference.getLastModified();
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
Thu Jun 30 02:59:56 2011
@@ -18,14 +18,12 @@ package org.apache.wicket.request.resour
import java.io.IOException;
import java.io.InputStream;
-import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.PackageResource;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.resource.IResourceStream;
@@ -94,44 +92,32 @@ public class MessageDigestResourceVersio
this.bufferSize = bufferSize;
}
- public String getVersion(ResourceReference resourceReference)
+ public String getVersion(PackageResourceReference resourceReference)
{
- final IResource resource = resourceReference.getResource();
+ final PackageResourceReference.StreamInfo streamInfo =
resourceReference.getCurrentStreamInfo();
- if (PackageResource.class.isInstance(resource) == false)
+ if (streamInfo == null)
{
- log.warn("message digests are only available with
package " +
- "resource, not with " + resourceReference);
-
- return null;
- }
-
- // get resource data
- final PackageResource packageResource =
(PackageResource)resource;
- final IResourceStream resourceStream =
packageResource.getResourceStream();
-
- if (resourceStream == null)
- {
- log.debug("could not get resource stream for " +
resource);
+ log.debug("could not get stream info for " +
resourceReference);
return null;
}
try
{
// get binary hash
- final byte[] hash = computeDigest(resourceStream);
+ final byte[] hash = computeDigest(streamInfo.stream);
// convert to hexadecimal
return Strings.toHexString(hash);
}
catch (ResourceStreamNotFoundException e)
{
- log.warn("resource stream not found for " + resource);
+ log.warn("resource stream not found for " +
resourceReference);
return null;
}
catch (IOException e)
{
- log.warn("resource stream not be read for " + resource,
e);
+ log.warn("resource stream not be read for " +
resourceReference, e);
return null;
}
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/RequestCycleCachedResourceVersion.java
Thu Jun 30 02:59:56 2011
@@ -21,7 +21,7 @@ import java.util.Map;
import org.apache.wicket.MetaDataKey;
import org.apache.wicket.ThreadContext;
import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.Generics;
@@ -36,8 +36,8 @@ import org.apache.wicket.util.lang.Gener
*/
public class RequestCycleCachedResourceVersion implements IResourceVersion
{
- private static final MetaDataKey<Map<ResourceReference, String>>
CACHE_KEY =
- new MetaDataKey<Map<ResourceReference, String>>()
+ private static final MetaDataKey<Map<CacheResourceVersionKey, String>>
CACHE_KEY =
+ new MetaDataKey<Map<CacheResourceVersionKey, String>>()
{
private static final long serialVersionUID = 1L;
};
@@ -59,12 +59,21 @@ public class RequestCycleCachedResourceV
this.delegate = Args.notNull(delegate, "delegate");
}
- public String getVersion(ResourceReference resourceReference)
+ public String getVersion(PackageResourceReference resourceReference)
{
// get current request cycle
final RequestCycle requestCycle =
ThreadContext.getRequestCycle();
- Map<ResourceReference, String> cache = null;
+ Map<CacheResourceVersionKey, String> cache = null;
+
+ PackageResourceReference.StreamInfo streamInfo =
resourceReference.getCurrentStreamInfo();
+
+ if(streamInfo == null)
+ {
+ return null;
+ }
+
+ final CacheResourceVersionKey key = new
CacheResourceVersionKey(resourceReference, streamInfo);
// is request cycle available?
if (requestCycle != null)
@@ -78,10 +87,10 @@ public class RequestCycleCachedResourceV
// no, so create it
requestCycle.setMetaData(CACHE_KEY, cache =
Generics.newHashMap());
}
- else if (cache.containsKey(resourceReference))
+ else if (cache.containsKey(key))
{
// lookup timestamp from cache (may contain
NULL values which are valid)
- return cache.get(resourceReference);
+ return cache.get(key);
}
}
@@ -91,7 +100,7 @@ public class RequestCycleCachedResourceV
// store value in cache (if it is available)
if (cache != null)
{
- cache.put(resourceReference, version);
+ cache.put(key, version);
}
return version;
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/StaticResourceVersion.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/StaticResourceVersion.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/StaticResourceVersion.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/StaticResourceVersion.java
Thu Jun 30 02:59:56 2011
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.request.resource.caching.version;
+import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.lang.Args;
@@ -41,7 +42,7 @@ public class StaticResourceVersion imple
this.version = Args.notNull(version, "version");
}
- public String getVersion(ResourceReference resourceReference)
+ public String getVersion(PackageResourceReference resourceReference)
{
return version;
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractResourceReferenceMapperTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractResourceReferenceMapperTest.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractResourceReferenceMapperTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractResourceReferenceMapperTest.java
Thu Jun 30 02:59:56 2011
@@ -20,7 +20,6 @@ import java.util.Locale;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.time.Time;
/**
* @author Matej Knopp
@@ -216,34 +215,4 @@ public abstract class AbstractResourceRe
context.getResourceReferenceRegistry().registerResourceReference(reference5);
context.getResourceReferenceRegistry().registerResourceReference(reference6);
}
-
- /**
- * resource reference that monitors and supports the last modified
timestamp
- */
- protected class ResourceReferenceWithTimestamp extends ResourceReference
- {
- private static final long serialVersionUID = 1L;
- protected int lastModifiedInvocationCount = 0;
- private final Time lastModified;
-
- public ResourceReferenceWithTimestamp(Time lastModified)
- {
- super(AbstractResourceReferenceMapperTest.class,
"timestamped", Locale.ENGLISH,
- "style", null);
- this.lastModified = lastModified;
- }
-
- @Override
- public IResource getResource()
- {
- return resource4;
- }
-
- @Override
- public Time getLastModified()
- {
- lastModifiedInvocationCount++;
- return lastModified;
- }
- }
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java?rev=1141369&r1=1141368&r2=1141369&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
Thu Jun 30 02:59:56 2011
@@ -25,16 +25,14 @@ import org.apache.wicket.request.mapper.
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
import org.apache.wicket.request.resource.IResource;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResourceReference;
import
org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy;
import org.apache.wicket.request.resource.caching.IResourceCachingStrategy;
import org.apache.wicket.request.resource.caching.NoOpResourceCachingStrategy;
import org.apache.wicket.request.resource.caching.ResourceUrl;
-import
org.apache.wicket.request.resource.caching.version.LastModifiedResourceVersion;
import
org.apache.wicket.request.resource.caching.version.StaticResourceVersion;
import org.apache.wicket.util.IProvider;
import org.apache.wicket.util.ValueProvider;
-import org.apache.wicket.util.time.Time;
/**
* @author Matej Knopp
@@ -44,10 +42,6 @@ public class BasicResourceReferenceMappe
private static final IProvider<IResourceCachingStrategy> NO_CACHING =
new ValueProvider<IResourceCachingStrategy>(
NoOpResourceCachingStrategy.INSTANCE);
- private static final
IProvider<FilenameWithVersionResourceCachingStrategy>
CACHE_FILENAME_WITH_TIMESTAMP =
- new ValueProvider<FilenameWithVersionResourceCachingStrategy>(
- new FilenameWithVersionResourceCachingStrategy(new
LastModifiedResourceVersion()));
-
/**
* Construct.
*/
@@ -65,16 +59,6 @@ public class BasicResourceReferenceMappe
}
};
- private final BasicResourceReferenceMapper encoderWithTimestamps = new
BasicResourceReferenceMapper(
- new PageParametersEncoder(), CACHE_FILENAME_WITH_TIMESTAMP)
- {
- @Override
- protected IMapperContext getContext()
- {
- return context;
- }
- };
-
/**
*
*/
@@ -445,25 +429,6 @@ public class BasicResourceReferenceMappe
assertEquals("wicket/resource/" + CLASS_NAME +
"/reference5?en--variation", url.toString());
}
- /**
- *
- */
- public void testLastModifiedTimestampIsPartOfUrl()
- {
- long millis = 12345678L;
- final ResourceReferenceWithTimestamp reference = new
ResourceReferenceWithTimestamp(
- Time.millis(millis));
- final IRequestHandler handler = new
ResourceReferenceRequestHandler(reference, null);
-
- // request url with timestamp
- Url url = encoderWithTimestamps.mapHandler(handler);
-
- // check that url contains timestamp
- String timestampPart =
CACHE_FILENAME_WITH_TIMESTAMP.get().getVersionPrefix() +
- Long.toString(millis) + "?";
- assertTrue(url.toString().contains(timestampPart));
- }
-
public void testVersionStringInResourceFilename()
{
final IResource resource = new IResource()
@@ -473,8 +438,8 @@ public class BasicResourceReferenceMappe
}
};
- final ResourceReference reference =
- new ResourceReference(getClass(), "versioned",
Locale.ENGLISH, "style", null)
+ final PackageResourceReference reference =
+ new PackageResourceReference(getClass(), "versioned",
Locale.ENGLISH, "style", null)
{
@Override
public IResource getResource()