package fr.openwide.maven.artifact.notifier.web.application; import org.apache.wicket.Page; import org.apache.wicket.RuntimeConfigurationType; import org.apache.wicket.authroles.authentication.AuthenticatedWebSession; import org.apache.wicket.devutils.stateless.StatelessChecker; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.request.Url; import org.apache.wicket.request.resource.UrlResourceReference; import org.apache.wicket.resource.JQueryResourceReference; import fr.openwide.core.wicket.more.application.CoreWicketAuthenticatedApplication; import fr.openwide.core.wicket.more.console.common.model.ConsoleMenuItem; import fr.openwide.core.wicket.more.console.common.model.ConsoleMenuSection; import fr.openwide.core.wicket.more.console.template.ConsoleConfiguration; import fr.openwide.core.wicket.more.link.descriptor.parameter.CommonParameters; import fr.openwide.core.wicket.more.markup.html.pages.monitoring.DatabaseMonitoringPage; import fr.openwide.core.wicket.more.security.page.LoginFailurePage; import fr.openwide.core.wicket.more.security.page.LoginSuccessPage; import fr.openwide.core.wicket.more.security.page.LogoutPage; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationArtifactDescriptionPage; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationArtifactPortfolioPage; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationUserDescriptionPage; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationUserGroupDescriptionPage; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationUserGroupPortfolioPage; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationUserPortfolioPage; import fr.openwide.maven.artifact.notifier.web.application.artifact.page.ArtifactDescriptionPage; import fr.openwide.maven.artifact.notifier.web.application.artifact.page.ArtifactPomSearchPage; import fr.openwide.maven.artifact.notifier.web.application.artifact.page.ArtifactSearchPage; import fr.openwide.maven.artifact.notifier.web.application.common.template.MainTemplate; import fr.openwide.maven.artifact.notifier.web.application.console.importation.page.ConsoleImportProjectPage; import fr.openwide.maven.artifact.notifier.web.application.console.notification.page.ConsoleNotificationIndexPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.link.parameter.mapping.ArtifactLinkParameterMappingEntry; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.AboutPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.DashboardPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.ForgottenPasswordPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.HomePage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.Pac4jLoginSuccessPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.RegisterPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.ViewProfilePage; import fr.openwide.maven.artifact.notifier.web.application.navigation.util.LinkUtils; import fr.openwide.maven.artifact.notifier.web.application.notification.page.ConfirmEmailNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.notification.page.ConfirmRegistrationNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.notification.page.DeleteEmailNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.notification.page.ResetPasswordNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.project.page.ProjectDescriptionPage; import fr.openwide.maven.artifact.notifier.web.application.project.page.ProjectListPage; public class MavenArtifactNotifierApplication extends CoreWicketAuthenticatedApplication { /** * This is the name used in the filter definition. Wicket uses the filter name to set the name of the application. */ public static final String NAME = "MavenArtifactNotifierApplication"; public static final String REGISTER_URL = "/register/"; public static final String PAC4J_LOGIN_SUCCESS_URL = "/login/pac4j/success/"; @Override public void init() { super.init(); if (RuntimeConfigurationType.DEVELOPMENT.equals(getConfigurationType())) { getComponentPostOnBeforeRenderListeners().add(new StatelessChecker()); } if (RuntimeConfigurationType.DEPLOYMENT.equals(getConfigurationType())) { addResourceReplacement(JQueryResourceReference.get(), new UrlResourceReference(Url.parse("//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"))); } } @Override protected void mountApplicationPages() { // Public mountUnversionedPage("/about/", AboutPage.class); mountPage(REGISTER_URL, RegisterPage.class); mountPage("/forgotten-password/", ForgottenPasswordPage.class); // Sign in mountPage("/login/failure/", LoginFailurePage.class); mountPage("/login/success/", LoginSuccessPage.class); mountPage(PAC4J_LOGIN_SUCCESS_URL, Pac4jLoginSuccessPage.class); // Dashboard mountPage("/dashboard/", DashboardPage.class); // Profile mountPage("/profile/", ViewProfilePage.class); // Artifact mountPage("/search/", ArtifactSearchPage.class); mountPage("/search/pom/", ArtifactPomSearchPage.class); mountParameterizedPage("/artifact/${" + ArtifactLinkParameterMappingEntry.GROUP_ID_PARAMETER + "}/${" + ArtifactLinkParameterMappingEntry.ARTIFACT_ID_PARAMETER + "}/", ArtifactDescriptionPage.class); // Project mountPage("/projects/", ProjectListPage.class); mountParameterizedPage("/project/${" + CommonParameters.NATURAL_ID + "}/", ProjectDescriptionPage.class); // Notification mountParameterizedPage("/notification/account/confirm/${" + LinkUtils.HASH_PARAMETER + "}/", ConfirmRegistrationNotificationPage.class); mountParameterizedPage("/notification/account/reset/${" + LinkUtils.HASH_PARAMETER + "}/", ResetPasswordNotificationPage.class); mountParameterizedPage("/notification/email/confirm/${" + LinkUtils.HASH_PARAMETER + "}/", ConfirmEmailNotificationPage.class); mountParameterizedPage("/notification/email/delete/${" + LinkUtils.HASH_PARAMETER + "}/", DeleteEmailNotificationPage.class); // Administration mountPage("/administration/user/", AdministrationUserPortfolioPage.class); mountParameterizedPage("/administration/user/${" + CommonParameters.ID + "}/", AdministrationUserDescriptionPage.class); mountPage("/administration/user-group/", AdministrationUserGroupPortfolioPage.class); mountParameterizedPage("/administration/user-group/${" + CommonParameters.ID + "}/", AdministrationUserGroupDescriptionPage.class); mountPage("/administration/artifact/", AdministrationArtifactPortfolioPage.class); mountParameterizedPage("/administration/artifact/${" + ArtifactLinkParameterMappingEntry.GROUP_ID_PARAMETER + "}/${" + ArtifactLinkParameterMappingEntry.ARTIFACT_ID_PARAMETER + "}/", AdministrationArtifactDescriptionPage.class); // Console ConsoleConfiguration consoleConfiguration = ConsoleConfiguration.build("console"); consoleConfiguration.addMenuSection(new ConsoleMenuSection("notificationMenuSection", "console.notifications", "notifications", ConsoleNotificationIndexPage.class)); ConsoleMenuSection importMenuSection = new ConsoleMenuSection("importMenuSection", "console.import", "import", ConsoleImportProjectPage.class); importMenuSection.addMenuItem(new ConsoleMenuItem("importProjectMenuItem", "console.import.project", "project", ConsoleImportProjectPage.class)); consoleConfiguration.addMenuSection(importMenuSection); consoleConfiguration.mountPages(this); // Monitoring mountPage("/monitoring/db-access/", DatabaseMonitoringPage.class); } @Override protected void mountCommonPages() { mountPage("/logout/", LogoutPage.class); } @Override protected void mountApplicationResources() { mountStaticResourceDirectory("/application", MainTemplate.class); mountStaticResourceDirectory("/console/import/project", ConsoleImportProjectPage.class); } @Override protected Class<? extends AuthenticatedWebSession> getWebSessionClass() { return MavenArtifactNotifierSession.class; } @Override public Class<? extends WebPage> getSignInPageClass() { return HomePage.class; } @Override public Class<? extends Page> getHomePage() { return HomePage.class; } }