Fixing URL rewrite for projects in MyDashboard page. The GitBlit MyDashboard page contained broken links on the project panel, because of the incorrect rewriting of the URLs to the /static folder. This fix includes an ignore list that excludes summary/ and project/ from the URL rewriting: project URLs are then correct and working. Change-Id: I8baddf2cb033669fe70734c3b9c99b8c3232136b
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GerritToGitBlitWebApp.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GerritToGitBlitWebApp.java index d291279..419487c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GerritToGitBlitWebApp.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GerritToGitBlitWebApp.java
@@ -24,7 +24,7 @@ protected IRequestCycleProcessor newRequestCycleProcessor() { return new WebRequestCycleProcessor() { protected IRequestCodingStrategy newRequestCodingStrategy() { - return new StaticCodingStrategy(); + return new StaticCodingStrategy("summary/", "project/"); } }; }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/StaticCodingStrategy.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/StaticCodingStrategy.java index 5dd9e5f..f196e27 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/StaticCodingStrategy.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/StaticCodingStrategy.java
@@ -17,8 +17,17 @@ import org.apache.wicket.RequestCycle; import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy; import org.apache.wicket.protocol.http.servlet.ServletWebRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class StaticCodingStrategy extends WebRequestCodingStrategy { + private static final Logger LOG = LoggerFactory + .getLogger(StaticCodingStrategy.class); + private String[] ignoreResourceUrlPrefixes; + + public StaticCodingStrategy(String... ignoreResourceUrlPrefixes) { + this.ignoreResourceUrlPrefixes = ignoreResourceUrlPrefixes; + } @Override public String rewriteStaticRelativeUrl(String url) { @@ -28,12 +37,25 @@ return url; } + if(isMatchingIgnoreUrlPrefixes(url)) { + return url; + } + int depth = ((ServletWebRequest) RequestCycle.get().getRequest()) .getDepthRelativeToWicketHandler(); return getRelativeStaticUrl(url, depth); } + private boolean isMatchingIgnoreUrlPrefixes(String url) { + for (String ignoredUrlPrefix : ignoreResourceUrlPrefixes) { + if(url.startsWith(ignoredUrlPrefix)) { + return true; + } + } + return false; + } + public static String getRelativePrefix(Request request) { int depth = ((ServletWebRequest) request).getDepthRelativeToWicketHandler(); @@ -60,6 +82,8 @@ // file urlBuffer.append(url); + LOG.debug("Rewriting URL " + url + " to " + urlBuffer); + return urlBuffer.toString(); } }