James Moger
2014-05-08 1d2d5efe6d5dafbd2236776bc4667521921e5c8c
src/main/java/com/gitblit/servlet/SyndicationServlet.java
@@ -163,6 +163,15 @@
            searchType = type;
         }
      }
      Constants.FeedObjectType objectType = Constants.FeedObjectType.COMMIT;
      if (!StringUtils.isEmpty(request.getParameter("ot"))) {
         Constants.FeedObjectType type = Constants.FeedObjectType.forName(request.getParameter("ot"));
         if (type != null) {
            objectType = type;
         }
      }
      int length = settings.getInteger(Keys.web.syndicationEntries, 25);
      if (StringUtils.isEmpty(objectId)) {
         objectId = org.eclipse.jgit.lib.Constants.HEAD;
@@ -214,14 +223,7 @@
      boolean mountParameters = settings.getBoolean(Keys.web.mountParameters, true);
      String urlPattern;
      if (mountParameters) {
         // mounted parameters
         urlPattern = "{0}/commit/{1}/{2}";
      } else {
         // parameterized parameters
         urlPattern = "{0}/commit/?r={1}&h={2}";
      }
      String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
      if (StringUtils.isEmpty(gitblitUrl)) {
         gitblitUrl = HttpUtils.getGitblitURL(request);
@@ -247,47 +249,92 @@
            feedDescription = model.description;
         }
         List<RevCommit> commits;
         if (StringUtils.isEmpty(searchString)) {
            // standard log/history lookup
            commits = JGitUtils.getRevLog(repository, objectId, offset, length);
         if (objectType == Constants.FeedObjectType.TAG) {
            String urlPattern;
            if (mountParameters) {
               // mounted parameters
               urlPattern = "{0}/tag/{1}/{2}";
            } else {
               // parameterized parameters
               urlPattern = "{0}/tag/?r={1}&h={2}";
            }
            List<RefModel> tags = JGitUtils.getTags(repository, false, length, offset);
            for (RefModel tag : tags) {
               FeedEntryModel entry = new FeedEntryModel();
               entry.title = tag.getName();
               entry.author = tag.getAuthorIdent().getName();
               entry.link = MessageFormat.format(urlPattern, gitblitUrl,
                     StringUtils.encodeURL(model.name.replace('/', fsc)), tag.getObjectId().getName());
               entry.published = tag.getDate();
               entry.contentType = "text/html";
               entry.content = tag.getFullMessage();
               entry.repository = model.name;
               entry.branch = objectId;
               entry.tags = new ArrayList<String>();
               // add tag id and referenced commit id
               entry.tags.add("tag:" + tag.getObjectId().getName());
               entry.tags.add("commit:" + tag.getReferencedObjectId().getName());
               entries.add(entry);
            }
         } else {
            // repository search
            commits = JGitUtils.searchRevlogs(repository, objectId, searchString, searchType,
                  offset, length);
         }
         Map<ObjectId, List<RefModel>> allRefs = JGitUtils.getAllRefs(repository, model.showRemoteBranches);
         BugtraqProcessor processor = new BugtraqProcessor(settings);
         // convert RevCommit to SyndicatedEntryModel
         for (RevCommit commit : commits) {
            FeedEntryModel entry = new FeedEntryModel();
            entry.title = commit.getShortMessage();
            entry.author = commit.getAuthorIdent().getName();
            entry.link = MessageFormat.format(urlPattern, gitblitUrl,
                  StringUtils.encodeURL(model.name.replace('/', fsc)), commit.getName());
            entry.published = commit.getCommitterIdent().getWhen();
            entry.contentType = "text/html";
            String message = processor.processCommitMessage(repository, model, commit.getFullMessage());
            entry.content = message;
            entry.repository = model.name;
            entry.branch = objectId;
            entry.tags = new ArrayList<String>();
            // add commit id and parent commit ids
            entry.tags.add("commit:" + commit.getName());
            for (RevCommit parent : commit.getParents()) {
               entry.tags.add("parent:" + parent.getName());
            String urlPattern;
            if (mountParameters) {
               // mounted parameters
               urlPattern = "{0}/commit/{1}/{2}";
            } else {
               // parameterized parameters
               urlPattern = "{0}/commit/?r={1}&h={2}";
            }
            // add refs to tabs list
            List<RefModel> refs = allRefs.get(commit.getId());
            if (refs != null && refs.size() > 0) {
               for (RefModel ref : refs) {
                  entry.tags.add("ref:" + ref.getName());
            List<RevCommit> commits;
            if (StringUtils.isEmpty(searchString)) {
               // standard log/history lookup
               commits = JGitUtils.getRevLog(repository, objectId, offset, length);
            } else {
               // repository search
               commits = JGitUtils.searchRevlogs(repository, objectId, searchString, searchType,
                     offset, length);
            }
            Map<ObjectId, List<RefModel>> allRefs = JGitUtils.getAllRefs(repository, model.showRemoteBranches);
            BugtraqProcessor processor = new BugtraqProcessor(settings);
            // convert RevCommit to SyndicatedEntryModel
            for (RevCommit commit : commits) {
               FeedEntryModel entry = new FeedEntryModel();
               entry.title = commit.getShortMessage();
               entry.author = commit.getAuthorIdent().getName();
               entry.link = MessageFormat.format(urlPattern, gitblitUrl,
                     StringUtils.encodeURL(model.name.replace('/', fsc)), commit.getName());
               entry.published = commit.getCommitterIdent().getWhen();
               entry.contentType = "text/html";
               String message = processor.processCommitMessage(repository, model, commit.getFullMessage());
               entry.content = message;
               entry.repository = model.name;
               entry.branch = objectId;
               entry.tags = new ArrayList<String>();
               // add commit id and parent commit ids
               entry.tags.add("commit:" + commit.getName());
               for (RevCommit parent : commit.getParents()) {
                  entry.tags.add("parent:" + parent.getName());
               }
               // add refs to tabs list
               List<RefModel> refs = allRefs.get(commit.getId());
               if (refs != null && refs.size() > 0) {
                  for (RefModel ref : refs) {
                     entry.tags.add("ref:" + ref.getName());
                  }
               }
               entries.add(entry);
            }
            entries.add(entry);
         }
      }