use of org.apache.wicket.request.mapper.parameter.PageParameters in project wicket by apache.
the class AjaxDownloadBehavior method initiate.
/**
* Call this method to initiate the download.
*
* @param handler
* the initiating RequestHandler
*/
public void initiate(IPartialPageRequestHandler handler) {
if (getComponent() == null) {
throw new WicketRuntimeException("not bound to a component");
}
CharSequence url;
if (resourceBehavior == null) {
if (resourceReference.canBeRegistered()) {
getComponent().getApplication().getResourceReferenceRegistry().registerResourceReference(resourceReference);
}
PageParameters parameters = new PageParameters();
if (resourceParameters != null) {
parameters.mergeWith(resourceParameters);
}
parameters.set(RESOURCE_PARAMETER_NAME, getName());
url = getComponent().getRequestCycle().urlFor(new ResourceReferenceRequestHandler(resourceReference, parameters));
} else {
url = resourceBehavior.getUrl();
}
JSONObject settings = new JSONObject();
settings.put("attributes", new JSONFunction(renderAjaxAttributes(getComponent())));
settings.put("name", getName());
settings.put("downloadUrl", url);
settings.put("method", getLocation().name().toLowerCase(Locale.ROOT));
handler.appendJavaScript(String.format("Wicket.AjaxDownload.initiate(%s);", settings));
onBeforeDownload(handler);
}
use of org.apache.wicket.request.mapper.parameter.PageParameters in project wicket by apache.
the class AbstractBookmarkableMapper method mapHandler.
@Override
public Url mapHandler(IRequestHandler requestHandler) {
// eliminate the need for IRequestHandlerDelegate
while (requestHandler instanceof IRequestHandlerDelegate) {
requestHandler = ((IRequestHandlerDelegate) requestHandler).getDelegateHandler();
}
if (requestHandler instanceof BookmarkablePageRequestHandler) {
// simple bookmarkable URL with no page instance information
BookmarkablePageRequestHandler handler = (BookmarkablePageRequestHandler) requestHandler;
if (!checkPageClass(handler.getPageClass())) {
return null;
}
PageInfo info = new PageInfo();
UrlInfo urlInfo = new UrlInfo(new PageComponentInfo(info, null), handler.getPageClass(), handler.getPageParameters());
return buildUrl(urlInfo);
} else if (requestHandler instanceof RenderPageRequestHandler) {
// possibly hybrid URL - bookmarkable URL with page instance information
// but only allowed if the page was created by bookmarkable URL
RenderPageRequestHandler handler = (RenderPageRequestHandler) requestHandler;
if (!checkPageClass(handler.getPageClass())) {
return null;
}
if (!handler.getPageProvider().hasPageInstance()) {
// no existing page instance available, don't bother creating new page instance
PageInfo info = new PageInfo();
UrlInfo urlInfo = new UrlInfo(new PageComponentInfo(info, null), handler.getPageClass(), handler.getPageParameters());
return buildUrl(urlInfo);
}
IRequestablePage page = handler.getPage();
if (checkPageInstance(page) && (!pageMustHaveBeenCreatedBookmarkable() || page.wasCreatedBookmarkable())) {
PageInfo info = getPageInfo(handler);
PageComponentInfo pageComponentInfo = new PageComponentInfo(info, null);
UrlInfo urlInfo = new UrlInfo(pageComponentInfo, page.getClass(), handler.getPageParameters());
return buildUrl(urlInfo);
} else {
return null;
}
} else if (requestHandler instanceof BookmarkableListenerRequestHandler) {
// request listener URL with page class information
BookmarkableListenerRequestHandler handler = (BookmarkableListenerRequestHandler) requestHandler;
Class<? extends IRequestablePage> pageClass = handler.getPageClass();
if (!checkPageClass(pageClass)) {
return null;
}
Integer renderCount = null;
if (handler.includeRenderCount()) {
renderCount = handler.getRenderCount();
}
PageInfo pageInfo = getPageInfo(handler);
ComponentInfo componentInfo = new ComponentInfo(renderCount, handler.getComponentPath(), handler.getBehaviorIndex());
PageParameters parameters = getRecreateMountedPagesAfterExpiry() ? new PageParameters(handler.getPage().getPageParameters()).mergeWith(handler.getPageParameters()) : handler.getPageParameters();
UrlInfo urlInfo = new UrlInfo(new PageComponentInfo(pageInfo, componentInfo), pageClass, parameters);
return buildUrl(urlInfo);
}
return null;
}
use of org.apache.wicket.request.mapper.parameter.PageParameters in project wicket by apache.
the class BookmarkableMapper method parseRequest.
@Override
protected UrlInfo parseRequest(Request request) {
if (Application.exists()) {
if (Application.get().getSecuritySettings().getEnforceMounts()) {
return null;
}
}
if (matches(request)) {
Url url = request.getUrl();
// try to extract page and component information from URL
PageComponentInfo info = getPageComponentInfo(url);
List<String> segments = url.getSegments();
// load the page class
String className;
if (segments.size() >= 3) {
className = segments.get(2);
} else {
className = segments.get(1);
}
if (Strings.isEmpty(className)) {
return null;
}
Class<? extends IRequestablePage> pageClass = getPageClass(className);
if (pageClass != null && IRequestablePage.class.isAssignableFrom(pageClass)) {
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, 3, pageParametersEncoder);
if (pageParameters != null) {
pageParameters.setLocale(resolveLocale());
}
return new UrlInfo(info, pageClass, pageParameters);
}
}
return null;
}
use of org.apache.wicket.request.mapper.parameter.PageParameters in project wicket by apache.
the class BasicResourceReferenceMapper method mapRequest.
@Override
public IRequestHandler mapRequest(Request request) {
Url url = request.getUrl();
if (canBeHandled(url)) {
final int segmentsSize = url.getSegments().size();
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, segmentsSize, pageParametersEncoder);
if (pageParameters != null) {
pageParameters.setLocale(resolveLocale());
}
String className = url.getSegments().get(2);
StringBuilder name = new StringBuilder(segmentsSize * 2);
for (int i = 3; i < segmentsSize; ++i) {
String segment = url.getSegments().get(i);
// ignore invalid segments
if (segment.indexOf('/') > -1) {
return null;
}
// remove caching information
if (i + 1 == segmentsSize && Strings.isEmpty(segment) == false) {
// The filename + parameters eventually contain caching
// related information which needs to be removed
ResourceUrl resourceUrl = new ResourceUrl(segment, pageParameters);
getCachingStrategy().undecorateUrl(resourceUrl);
segment = resourceUrl.getFileName();
Checks.notEmpty(segment, "Caching strategy returned empty name for '%s'", resourceUrl);
}
if (name.length() > 0) {
name.append('/');
}
name.append(segment);
}
ResourceReference.UrlAttributes attributes = ResourceUtil.decodeResourceReferenceAttributes(url);
Class<?> scope = resolveClass(className);
if (scope != null && scope.getPackage() != null) {
ResourceReference res = getContext().getResourceReferenceRegistry().getResourceReference(scope, name.toString(), attributes.getLocale(), attributes.getStyle(), attributes.getVariation(), true, true);
if (res != null) {
return new ResourceReferenceRequestHandler(res, pageParameters);
}
}
}
return null;
}
use of org.apache.wicket.request.mapper.parameter.PageParameters in project wicket by apache.
the class ResourceMapper method getCompatibilityScore.
@Override
public int getCompatibilityScore(Request request) {
Url originalUrl = new Url(request.getUrl());
PageParameters parameters = extractPageParameters(request, mountSegments.length, parametersEncoder);
if (parameters != null) {
parameters.setLocale(resolveLocale());
}
removeCachingDecoration(originalUrl, parameters);
Request requestWithoutDecoration = request.cloneWithUrl(originalUrl);
int score = super.getCompatibilityScore(requestWithoutDecoration);
if (score > 0) {
// pages always have priority over resources
score--;
} else {
score = -1;
}
return score;
}
Aggregations