package ${package}; import ${package}.error.InternalServerErrorPage; import ${package}.home.HomePage; import ${package}.security.LoginPage; import fiftyfive.wicket.js.JavaScriptDependencySettings; import fiftyfive.wicket.shiro.ShiroWicketPlugin; import fiftyfive.wicket.spring.FoundationSpringApplication; import org.apache.wicket.Application; import org.apache.wicket.request.Request; import org.apache.wicket.request.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Wicket framework configuration for ${project_name}. */ public class WicketApplication extends FoundationSpringApplication { private static final Logger LOGGER = LoggerFactory.getLogger(WicketApplication.class); /** * Returns the instance of {@code WicketApplication} that is currently * running. This method only works inside a Wicket thread. */ public static WicketApplication get() { return (WicketApplication) Application.get(); } @Override public Class<HomePage> getHomePage() { return HomePage.class; } @Override protected void init() { super.init(); // Tell fiftyfive-wicket-js where to find custom JS libs for this app // (i.e. those that can be referenced via //= require "lib"). // This corresponds to src/main/resources/.../scripts. // Note: we configure JavaScriptDependencySettings before using MergedJavaScriptBuilder. JavaScriptDependencySettings.get().addLibraryPath(WicketApplication.class, "scripts"); // -- Configure pretty URL mappings ("routes") -- // Note: merged JavaScript is also configured in WicketMappings. mount(new WicketMappings(this)); // -- Configure resources -- // Wicket will not allow you to use "../" to construct relative paths to resources // (e.g. new PackageResourceReference(MyPage.class, "../common/file.png")) // unless you specify a parentFolderPlaceholder. This is a security precaution. getResourceSettings().setParentFolderPlaceholder("$up$"); // -- Configure error pages -- getApplicationSettings().setPageExpiredErrorPage(getHomePage()); getApplicationSettings().setInternalErrorPage(InternalServerErrorPage.class); // -- Shiro integration -- new ShiroWicketPlugin().mountLoginPage("/login", LoginPage.class).install(this); // -- Configure custom request cycle handling -- getRequestCycleListeners().add(new WicketRequestCycleListener()); // -- Custom initialization goes here -- LOGGER.info("Initialized!"); } /** * Returns our custom {@link WicketSession}. */ @Override public WicketSession newSession(Request request, Response response) { return new WicketSession(request); } }