Buggy code:
public class WebRequestCodingStrategy implements IRequestCodingStrategy { private static final Comparator lengthComparator = new Comparator ( ) { public int compare ( Object o1 , Object o2 ) { } } ; private static Log log = LogFactory . getLog ( WebRequestCodingStrategy . class ) ; private SortedMap mountsOnPath = new TreeMap ( WebRequestCodingStrategy . lengthComparator ) ; private String urlPrefix ; public WebRequestCodingStrategy ( ) { } public final RequestParameters decode ( Request request ) { } public final String encode ( RequestCycle requestCycle , IRequestTarget requestTarget ) { } public final IRequestTargetUrlCodingStrategy urlCodingStrategyForPath ( String path ) { } public final void mount ( String path , IRequestTargetUrlCodingStrategy encoder ) { } public final String pathForTarget ( IRequestTarget requestTarget ) { } public final IRequestTarget targetForPath ( String path ) { } public final void unmount ( String path ) { } protected void addBookmarkablePageParameters ( Request request , RequestParameters parameters ) { } protected void addPageParameters ( Request request , RequestParameters parameters ) { } protected void addResourceParameters ( Request request , RequestParameters parameters ) { } protected String doEncode ( RequestCycle requestCycle , IRequestTarget requestTarget ) { } protected final String encode ( RequestCycle requestCycle , IBookmarkablePageRequestTarget requestTarget ) { final Class pageClass = requestTarget . getPageClass ( ) ; <START_BUG> final Class homePageClass = requestCycle . getApplication ( ) . getRequiredPageSettings ( ) . getHomePage ( ) ; <END_BUG> final PageParameters parameters = requestTarget . getPageParameters ( ) ; final StringBuffer url = new StringBuffer ( urlPrefix ( requestCycle ) ) ; url . append ( "?bookmarkablePage=" ) ; url . append ( pageClass . getName ( ) ) ; String pageMapName = requestTarget . getPageMapName ( ) ; if ( pageMapName == null ) { IRequestTarget currentTarget = requestCycle . getRequestTarget ( ) ; if ( currentTarget instanceof IPageRequestTarget ) { Page currentPage = ( ( IPageRequestTarget ) ( currentTarget ) ) . getPage ( ) ; final PageMap pageMap = currentPage . getPageMap ( ) ; if ( ! ( pageMap . isDefault ( ) ) ) { url . append ( "&pagemap=" ) ; url . append ( pageMap . getName ( ) ) ; } } } else { url . append ( "&pagemap=" ) ; url . append ( pageMapName ) ; } if ( parameters != null ) { for ( final Iterator iterator = parameters . keySet ( ) . iterator ( ) ; iterator . hasNext ( ) ; ) { final String key = ( ( String ) ( iterator . next ( ) ) ) ; final String value = parameters . getString ( key ) ; if ( value != null ) { String escapedValue = value ; try { escapedValue = URLEncoder . encode ( escapedValue , Application . get ( ) . getRequestCycleSettings ( ) . getResponseRequestEncoding ( ) ) ; } catch ( UnsupportedEncodingException ex ) { WebRequestCodingStrategy . log . error ( ex . getMessage ( ) , ex ) ; } url . append ( '&' ) ; url . append ( key ) ; url . append ( '=' ) ; url . append ( escapedValue ) ; } } } return requestCycle . getResponse ( ) . encodeURL ( url . toString ( ) ) ; } protected final String encode ( RequestCycle requestCycle , IListenerInterfaceRequestTarget requestTarget ) { } protected final String encode ( RequestCycle requestCycle , ISharedResourceRequestTarget requestTarget ) { } protected IRequestTargetUrlCodingStrategy getMountEncoder ( IRequestTarget requestTarget ) { } protected String getRequestPath ( Request request ) { } protected final String urlPrefix ( RequestCycle requestCycle ) { } }

Fix:
final Class homePageClass = requestCycle . getApplication ( ) . getHomePage ( ) ;