package fr.openwide.core.wicket.request.mapper;
import org.apache.wicket.core.util.resource.PackageResourceStream;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
import org.apache.wicket.request.mapper.AbstractMapper;
import org.apache.wicket.util.lang.Args;
public class StaticResourceMapper extends AbstractMapper {
private final String[] mountSegments;
private final Class<?> scope;
public StaticResourceMapper(String path, Class<?> scope) {
Args.notEmpty(path, "path");
Args.notNull(scope, "scope");
this.scope = scope;
this.mountSegments = getMountSegments(path);
}
@Override
public IRequestHandler mapRequest(Request request) {
final Url url = new Url(request.getUrl());
if (!urlStartsWith(url, mountSegments)) {
return null;
}
url.removeLeadingSegments(mountSegments.length);
return new ResourceStreamRequestHandler(new PackageResourceStream(scope, url.getPath()));
}
@Override
public int getCompatibilityScore(Request request) {
return 0;
}
@Override
public Url mapHandler(IRequestHandler requestHandler) {
return null;
}
}