use of org.apache.wicket.request.mapper.parameter.INamedParameters in project wicket by apache.
the class QueryStringWithVersionResourceCachingStrategy method undecorateUrl.
@Override
public void undecorateUrl(ResourceUrl url) {
final INamedParameters parameters = url.getParameters();
if (parameters != null) {
// store the version in the request cycle
StringValue versionValue = parameters.get(versionParameter);
RequestCycle requestCycle = RequestCycle.get();
if (versionValue.isEmpty() == false && requestCycle != null) {
requestCycle.setMetaData(URL_VERSION, versionValue.toString());
}
// undecorate
parameters.remove(versionParameter);
}
}
use of org.apache.wicket.request.mapper.parameter.INamedParameters in project wicket by apache.
the class BasicResourceReferenceMapperTest method versionStringInResourceFilename.
/**
*/
@Test
public void versionStringInResourceFilename() {
final IStaticCacheableResource resource = new IStaticCacheableResource() {
private static final long serialVersionUID = 1L;
@Override
public Serializable getCacheKey() {
return null;
}
@Override
public IResourceStream getResourceStream() {
return new StringResourceStream("foo-bar");
}
@Override
public void respond(Attributes attributes) {
}
@Override
public boolean isCachingEnabled() {
return true;
}
};
IResourceCachingStrategy strategy = new FilenameWithVersionResourceCachingStrategy("-version-", new AlphaDigitResourceVersion("foobar"));
INamedParameters params = new PageParameters();
ResourceUrl url = new ResourceUrl("test.js", params);
strategy.decorateUrl(url, resource);
assertEquals("test-version-foobar.js", url.getFileName());
strategy.undecorateUrl(url);
assertEquals("test.js", url.getFileName());
url = new ResourceUrl("test", params);
strategy.decorateUrl(url, resource);
assertEquals("test-version-foobar", url.getFileName());
strategy.undecorateUrl(url);
assertEquals("test", url.getFileName());
// this behavior is o.k. since a browser could request an
// previous version of the resource. for example we
// could first have 'test-alpha.txt' which would be later replaced
// by 'test-beta.txt' but in any case will point to
// internal resource 'test.txt'
url = new ResourceUrl("test-version-older.txt", params);
strategy.undecorateUrl(url);
assertEquals("test.txt", url.getFileName());
// weird but valid
url = new ResourceUrl("test-version-.txt", params);
strategy.undecorateUrl(url);
assertEquals("test.txt", url.getFileName());
// weird but valid
url = new ResourceUrl("test-version--------", params);
strategy.undecorateUrl(url);
assertEquals("test", url.getFileName());
// weird but valid
url = new ResourceUrl("test-version-1.0.3-alpha.txt", params);
strategy.undecorateUrl(url);
assertEquals("test.txt", url.getFileName());
// check a version that contains a dot which also marks the filename
// extension
strategy = new FilenameWithVersionResourceCachingStrategy("-version-", new StaticResourceVersion("1.0.4-beta"));
url = new ResourceUrl("test.txt", params);
strategy.decorateUrl(url, resource);
assertEquals("test-version-1.0.4-beta.txt", url.getFileName());
}
Aggregations