@Override public Url mapHandler(IRequestHandler requestHandler) { Url url = systemMapper.mapHandler(requestHandler); if (ThreadPortletContext.getPortletRequest() == null) { return url; } if (requestHandler instanceof RenderPageRequestHandler) { if (ThreadPortletContext.isAjax()) { url = encodeRenderUrl(url, true); } } else if (requestHandler instanceof SharedResourceReference) { url = encodeSharedResourceUrl(url); } else if (requestHandler instanceof ResourceReferenceRequestHandler) { ResourceReferenceRequestHandler resourceReferenceRequestHandler = (ResourceReferenceRequestHandler) requestHandler; IResource resource = resourceReferenceRequestHandler.getResource(); if (resource instanceof PackageResource) { url = encodeSharedResourceUrl(url); } else { url = encodeResourceUrl(url); } } else if (requestHandler instanceof BookmarkablePageRequestHandler) { url = encodeRenderUrl(url, true); } else if (requestHandler instanceof ListenerInterfaceRequestHandler) { ListenerInterfaceRequestHandler listenerInterfaceRequestHandler = (ListenerInterfaceRequestHandler) requestHandler; RequestListenerInterface listenerInterface = listenerInterfaceRequestHandler.getListenerInterface(); Class<?> listenerClass = listenerInterface.getMethod().getDeclaringClass(); if ((IResourceListener.class.isAssignableFrom(listenerClass)) || (IBehaviorListener.class.isAssignableFrom(listenerClass))) { url = encodeResourceUrl(url); } else if (IRedirectListener.class.isAssignableFrom(listenerClass)) { if (ThreadPortletContext.isAjax()) { url = encodeRenderUrl(url, true); } else { url = encodeRenderUrl(url, false); } } else { if (ThreadPortletContext.isAjax()) { url = encodeActionUrl(url, true); } else { url = encodeActionUrl(url, false); } } } return url; }
/** * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT. * * <p>In previous versions of Wicket, request listeners were manually registered by calling this * method. Now there is a first class RequestListenerInterface object which should be constructed * as a constant member of the interface to enable automatic interface registration. * * <p>Adds a request listener interface to the map of interfaces that can be invoked by outsiders. * * @param requestListenerInterface The request listener interface object */ private void registerRequestListenerInterface( final RequestListenerInterface requestListenerInterface) { // Check that a different interface method with the same name has not // already been registered final RequestListenerInterface existingInterface = RequestListenerInterface.forName(requestListenerInterface.getName()); if (existingInterface == null) { // Save this interface method by the non-qualified class name interfaces.put(requestListenerInterface.getName(), requestListenerInterface); log.info("registered listener interface " + this); } }
@Override public Url mapHandler(IRequestHandler requestHandler) { if (requestHandler instanceof BrixNodeRequestHandler) { BrixNodeRequestHandler handler = (BrixNodeRequestHandler) requestHandler; String nodeURL = handler.getNodeURL(); return encode(nodeURL, handler.getPageParameters(), null); } else if (requestHandler instanceof ListenerInterfaceRequestHandler) { ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler) requestHandler; if (handler.getPage() instanceof BrixNodeWebPage) { BrixNodeWebPage page = (BrixNodeWebPage) handler.getPage(); String componentPath = handler.getComponentPath(); RequestListenerInterface listenerInterface = handler.getListenerInterface(); Integer renderCount = null; if (listenerInterface.isIncludeRenderCount()) { renderCount = page.getRenderCount(); } PageInfo pageInfo = new PageInfo(page.getPageId()); ComponentInfo componentInfo = new ComponentInfo( renderCount, requestListenerInterfaceToString(listenerInterface), componentPath, handler.getBehaviorIndex()); PageComponentInfo info = new PageComponentInfo(pageInfo, componentInfo); Url url = encode(page); encodePageComponentInfo(url, info); return url; } else { return null; } } else if (requestHandler instanceof RenderPageRequestHandler) { RenderPageRequestHandler handler = (RenderPageRequestHandler) requestHandler; if (handler.getPage() instanceof BrixNodeWebPage) { BrixNodeWebPage page = (BrixNodeWebPage) handler.getPage(); PageInfo i = new PageInfo(page.getPageId()); PageComponentInfo info = new PageComponentInfo(i, null); Url url = encode(page); encodePageComponentInfo(url, info); return url; } else { return null; } } else if (requestHandler instanceof BookmarkableListenerInterfaceRequestHandler) { BookmarkableListenerInterfaceRequestHandler target = (BookmarkableListenerInterfaceRequestHandler) requestHandler; BrixNodeWebPage page = (BrixNodeWebPage) target.getPage(); BrixNode node = page.getModelObject(); PageInfo info = new PageInfo(page.getPageId()); return encode(node, page.getBrixPageParameters(), info); } else if (requestHandler instanceof BookmarkablePageRequestHandler && ((BookmarkablePageRequestHandler) requestHandler) .getPageClass() .equals(HomePage.class)) { BrixNode node = ((BrixRequestCycleProcessor) RequestCycle.get().getActiveRequestHandler()) .getNodeForUriPath(Path.ROOT); return mapHandler(new BrixNodeRequestHandler(new BrixNodeModel(node))); } else { return null; } }