James Moger
2013-11-16 a7a0b8ea01dca14602fdb49047d987c36461e861
Refactor access to home page class

Change-Id: Ice5706dc0659a44f54e5bf29ca66580e3be22418
4 files modified
24 ■■■■ changed files
src/main/java/com/gitblit/wicket/AuthorizationStrategy.java 10 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/GitBlitWebApp.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/BasePage.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/DashboardPage.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/AuthorizationStrategy.java
@@ -19,6 +19,7 @@
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.authorization.IUnauthorizedComponentInstantiationListener;
import org.apache.wicket.authorization.strategies.page.AbstractPageAuthorizationStrategy;
import org.apache.wicket.markup.html.WebPage;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
@@ -28,13 +29,16 @@
public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements
        IUnauthorizedComponentInstantiationListener {
    public AuthorizationStrategy() {
    Class<? extends WebPage> homepageClass;
    public AuthorizationStrategy(Class<? extends WebPage> homepageClass) {
        this.homepageClass = homepageClass;
    }
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    protected boolean isPageAuthorized(Class pageClass) {
        if (GitBlitWebApp.HOME_PAGE_CLASS.equals(pageClass)) {
        if (homepageClass.equals(pageClass)) {
            // allow all requests to get to the HomePage with its inline
            // authentication form
            return true;
@@ -79,7 +83,7 @@
    public void onUnauthorizedInstantiation(Component component) {
        if (component instanceof BasePage) {
            throw new RestartResponseException(GitBlitWebApp.HOME_PAGE_CLASS);
            throw new RestartResponseException(homepageClass);
        }
    }
}
src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -20,7 +20,6 @@
import java.util.Map;
import org.apache.wicket.Application;
import org.apache.wicket.Page;
import org.apache.wicket.Request;
import org.apache.wicket.Response;
import org.apache.wicket.Session;
@@ -31,7 +30,6 @@
import com.gitblit.Keys;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.pages.ActivityPage;
import com.gitblit.wicket.pages.BasePage;
import com.gitblit.wicket.pages.BlamePage;
import com.gitblit.wicket.pages.BlobDiffPage;
import com.gitblit.wicket.pages.BlobPage;
@@ -69,7 +67,7 @@
public class GitBlitWebApp extends WebApplication {
    public final static Class<? extends BasePage> HOME_PAGE_CLASS = MyDashboardPage.class;
    private final Class<? extends WebPage> homePageClass = MyDashboardPage.class;
    private final Map<String, CacheControl> cacheablePages = new HashMap<String, CacheControl>();
@@ -81,7 +79,7 @@
        boolean useAuthentication = GitBlit.getBoolean(Keys.web.authenticateViewPages, false)
                || GitBlit.getBoolean(Keys.web.authenticateAdminPages, false);
        if (useAuthentication) {
            AuthorizationStrategy authStrategy = new AuthorizationStrategy();
            AuthorizationStrategy authStrategy = new AuthorizationStrategy(homePageClass);
            getSecuritySettings().setAuthorizationStrategy(authStrategy);
            getSecuritySettings().setUnauthorizedComponentInstantiationListener(authStrategy);
        }
@@ -158,8 +156,8 @@
    }
    @Override
    public Class<? extends Page> getHomePage() {
        return HOME_PAGE_CLASS;
    public Class<? extends WebPage> getHomePage() {
        return homePageClass;
    }
    public boolean isCacheablePage(String mountPoint) {
src/main/java/com/gitblit/wicket/pages/BasePage.java
@@ -212,7 +212,7 @@
            add(new Label("title", siteName));
        }
        String rootLinkUrl = GitBlit.getString(Keys.web.rootLink, urlFor(GitBlitWebApp.HOME_PAGE_CLASS, null).toString());
        String rootLinkUrl = GitBlit.getString(Keys.web.rootLink, urlFor(GitBlitWebApp.get().getHomePage(), null).toString());
        ExternalLink rootLink = new ExternalLink("rootLink", rootLinkUrl);
        WicketUtils.setHtmlTooltip(rootLink, GitBlit.getString(Keys.web.siteName, Constants.NAME));
        add(rootLink);
src/main/java/com/gitblit/wicket/pages/DashboardPage.java
@@ -146,7 +146,7 @@
        PageParameters params = getPageParameters();
        DropDownMenuRegistration menu = new DropDownMenuRegistration("gb.filters",
                GitBlitWebApp.HOME_PAGE_CLASS);
                GitBlitWebApp.get().getHomePage());
        // preserve repository filter option on time choices
        menu.menuItems.addAll(getTimeFilterItems(params));