James Moger
2013-06-10 1078f80f6999d3a94ca47815a1d9fec471766b1d
Improve error handling within a repository page (issue-252)
3 files modified
38 ■■■■■ changed files
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties 3 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/BasePage.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/RepositoryPage.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -257,7 +257,7 @@
gb.canNotLoadRepository = Can not load repository
gb.commitIsNull = Commit is null
gb.unauthorizedAccessForRepository = Unauthorized access for repository
gb.failedToFindCommit = Failed to find commit \"{0}\" in {1} for {2} page!
gb.failedToFindCommit = Failed to find commit \"{0}\" in {1}!
gb.couldNotFindFederationProposal = Could not find federation proposal!
gb.invalidUsernameOrPassword = Invalid username or password!
gb.OneProposalToReview = There is 1 federation proposal awaiting review. 
@@ -490,3 +490,4 @@
gb.myRepositories = my repositories
gb.noActivity = there has been no recent commit activity
gb.findSomeRepositories = find some repositories
gb.metricAuthorExclusions = author metric exclusions
src/main/java/com/gitblit/wicket/pages/BasePage.java
@@ -32,9 +32,9 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.Application;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.RedirectToUrlException;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.html.CSSPackageResource;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
@@ -333,22 +333,28 @@
    }
    
    public void error(String message, boolean redirect) {
        logger.error(message  + " for " + GitBlitWebSession.get().getUsername());
        if (redirect) {
            GitBlitWebSession.get().cacheErrorMessage(message);
            String relativeUrl = urlFor(RepositoriesPage.class, null).toString();
            String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl);
            throw new RedirectToUrlException(absoluteUrl);
        } else {
            super.error(message);
        }
        error(message, null, redirect ? getApplication().getHomePage() : null);
    }
    public void error(String message, Throwable t, boolean redirect) {
        logger.error(message, t);
        if (redirect) {
        error(message, t, getApplication().getHomePage());
    }
    public void error(String message, Throwable t, Class<? extends Page> toPage) {
        error(message, t, toPage, null);
    }
    public void error(String message, Throwable t, Class<? extends Page> toPage, PageParameters params) {
        if (t == null) {
            logger.error(message  + " for " + GitBlitWebSession.get().getUsername());
        } else {
            logger.error(message  + " for " + GitBlitWebSession.get().getUsername(), t);
        }
        if (toPage != null) {
            GitBlitWebSession.get().cacheErrorMessage(message);
            throw new RestartResponseException(getApplication().getHomePage());
            String relativeUrl = urlFor(toPage, params).toString();
            String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl);
            throw new RedirectToUrlException(absoluteUrl);
        } else {
            super.error(message);
        }
src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -390,7 +390,8 @@
        RevCommit commit = JGitUtils.getCommit(r, objectId);
        if (commit == null) {
            error(MessageFormat.format(getString("gb.failedToFindCommit"),
                    objectId, repositoryName, getPageName()), true);
                    objectId, repositoryName, getPageName()), null, LogPage.class,
                    WicketUtils.newRepositoryParameter(repositoryName));
        }
        getSubmodules(commit);
        return commit;