From 1078f80f6999d3a94ca47815a1d9fec471766b1d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 10 Jun 2013 18:43:34 -0400
Subject: [PATCH] Improve error handling within a repository page (issue-252)
---
src/main/java/com/gitblit/wicket/pages/BasePage.java | 32 +++++++++++++++++++-------------
src/main/java/com/gitblit/wicket/pages/RepositoryPage.java | 3 ++-
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties | 3 ++-
3 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
index a278eff..a5485ee 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
+++ b/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
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java
index 192f012..71713cd 100644
--- a/src/main/java/com/gitblit/wicket/pages/BasePage.java
+++ b/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);
}
diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
index fe50927..a15dd91 100644
--- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/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;
--
Gitblit v1.9.1