001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.wicket.core.request.handler; 018 019import org.apache.wicket.core.request.handler.logger.PageLogData; 020import org.apache.wicket.request.ILoggableRequestHandler; 021import org.apache.wicket.request.IRequestCycle; 022import org.apache.wicket.request.component.IRequestablePage; 023import org.apache.wicket.request.mapper.parameter.PageParameters; 024import org.apache.wicket.util.lang.Args; 025 026/** 027 * Request handler for bookmarkable pages. This handler is only used to generate URLs. Rendering is 028 * always handled by {@link RenderPageRequestHandler}. 029 * 030 * @author Matej Knopp 031 */ 032public class BookmarkablePageRequestHandler 033 implements 034 IPageClassRequestHandler, 035 ILoggableRequestHandler 036{ 037 private final IPageProvider pageProvider; 038 039 private PageLogData logData; 040 041 /** 042 * Construct. 043 * 044 * @param pageProvider 045 */ 046 public BookmarkablePageRequestHandler(IPageProvider pageProvider) 047 { 048 049 Args.notNull(pageProvider, "pageProvider"); 050 051 this.pageProvider = pageProvider; 052 } 053 054 @Override 055 public Class<? extends IRequestablePage> getPageClass() 056 { 057 return pageProvider.getPageClass(); 058 } 059 060 @Override 061 public PageParameters getPageParameters() 062 { 063 return pageProvider.getPageParameters(); 064 } 065 066 @Override 067 public void respond(IRequestCycle requestCycle) 068 { 069 // not used as BookmarkablePageRequestHandler is only used when generating URLs. 070 // However URL will never be resolved to BookmarkablePageRequestHandler 071 } 072 073 @Override 074 public void detach(IRequestCycle requestCycle) 075 { 076 if (logData == null) 077 logData = new PageLogData(pageProvider); 078 } 079 080 @Override 081 public PageLogData getLogData() 082 { 083 return logData; 084 } 085 086 @Override 087 public String toString() 088 { 089 return "BookmarkablePageRequestHandler{" + 090 "pageProvider=" + pageProvider + 091 '}'; 092 } 093}