James Moger
2011-04-13 61b094152515532b42aa5e918f5405d82cde0440
src/com/gitblit/wicket/RepositoryPage.java
@@ -15,71 +15,78 @@
import com.gitblit.StoredSettings;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.pages.RepositoriesPage;
import com.gitblit.wicket.panels.PageFooter;
import com.gitblit.wicket.panels.PageHeader;
import com.gitblit.wicket.panels.PageLinksPanel;
import com.gitblit.wicket.panels.RefsPanel;
public abstract class RepositoryPage extends BasePage {
   protected final String repositoryName;
   protected final String commitId;
   protected final String objectId;
   protected String description;
   public RepositoryPage(PageParameters params, String pageName) {
   private transient Repository r = null;
   public RepositoryPage(PageParameters params) {
      super(params);
      if (!params.containsKey("p")) {
      if (!params.containsKey("r")) {
         error("Repository not specified!");
         redirectToInterceptPage(new RepositoriesPage());
      }
      repositoryName = params.getString("p", "");
      commitId = params.getString("h", "");
      repositoryName = WicketUtils.getRepositoryName(params);
      objectId = WicketUtils.getObject(params);
      add(new PageHeader("pageHeader", repositoryName, "/ " + pageName));
      add(new PageLinksPanel("pageLinks", repositoryName, pageName));
      Repository r = getRepository();
      // setup the page links and disable this page's link
      PageLinksPanel pageLinks = new PageLinksPanel("pageLinks", r, repositoryName, getPageName());
      add(pageLinks);
      pageLinks.disablePageLink(getPageName());
      setStatelessHint(true);
   }
   protected Repository getRepository() {
      ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest();
      HttpServletRequest req = servletWebRequest.getHttpServletRequest();
      req.getServerName();
      Repository r = GitBlitWebApp.get().getRepository(req, repositoryName);
      if (r == null) {
         error("Can not load repository " + repositoryName);
         redirectToInterceptPage(new RepositoriesPage());
         return null;
         ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest();
         HttpServletRequest req = servletWebRequest.getHttpServletRequest();
         req.getServerName();
         Repository r = GitBlitWebApp.get().getRepository(req, repositoryName);
         if (r == null) {
            error("Can not load repository " + repositoryName);
            redirectToInterceptPage(new RepositoriesPage());
            return null;
         }
         description = JGitUtils.getRepositoryDescription(r);
         this.r = r;
      }
      description = JGitUtils.getRepositoryDescription(r);
      return r;
   }
   protected void addRefs(Repository r, RevCommit c) {
      add(new RefsPanel("refsPanel", r, c));
      add(new RefsPanel("refsPanel", repositoryName,  c, JGitUtils.getAllRefs(r)));
   }
   protected void addFullText(String wicketId, String text, boolean substituteRegex) {
      String html = WicketUtils.breakLines(text);
      if (substituteRegex) {
         Map<String, String> map = new HashMap<String, String>();
         // global regex keys
         // global regex keys
         for (String key : StoredSettings.getAllKeys("regex.global")) {
            String subKey = key.substring(key.lastIndexOf('.') + 1);
            map.put(subKey, StoredSettings.getString(key, ""));
         }
         // repository-specific regex keys
         List<String> keys = StoredSettings.getAllKeys("regex." + repositoryName.toLowerCase());
         for (String key : keys) {
            String subKey = key.substring(key.lastIndexOf('.') + 1);
            map.put(subKey, StoredSettings.getString(key, ""));
         }
         for (String key : map.keySet()) {
            String definition = map.get(key).trim();
            String [] chunks = definition.split("!!!");
            String[] chunks = definition.split("!!!");
            if (chunks.length == 2) {
               html = html.replaceAll(chunks[0], chunks[1]);
            } else {
@@ -90,29 +97,33 @@
      add(new Label(wicketId, html).setEscapeModelStrings(false));
   }
   protected void addFooter() {
      add(new PageFooter("pageFooter", description));
   protected abstract String getPageName();
   @Override
   protected void onBeforeRender() {
      // dispose of repository object
      if (r != null) {
         r.close();
         r = null;
      }
      // setup page header and footer
      setupPage(repositoryName, "/ " + getPageName());
      super.onBeforeRender();
   }
   protected PageParameters newRepositoryParameter() {
      return new PageParameters("p=" + repositoryName);
   }
   protected PageParameters newCommitParameter() {
      return newCommitParameter(commitId);
   }
   protected PageParameters newCommitParameter(String commitId) {
      if (commitId == null || commitId.trim().length() == 0) {
         return newRepositoryParameter();
      }
      return new PageParameters("p=" + repositoryName + ",h=" + commitId);
      return WicketUtils.newRepositoryParameter(repositoryName);
   }
   protected PageParameters newPathParameter(String path) {
      if (path == null || path.trim().length() == 0) {
         return newCommitParameter();
      }
      return new PageParameters("p=" + repositoryName + ",h=" + commitId + ",f=" + path);
   protected PageParameters newCommitParameter() {
      return WicketUtils.newObjectParameter(repositoryName, objectId);
   }
   protected PageParameters newCommitParameter(String commitId) {
      return WicketUtils.newObjectParameter(repositoryName, commitId);
   }
   protected PageParameters newPathParameter(String path) {
      return WicketUtils.newPathParameter(repositoryName, objectId, path);
   }
}