From 38688b1f17bb2d43a144e92b086768e3e2523d2a Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 01 Nov 2011 17:21:09 -0400
Subject: [PATCH] Refactored monolithic GitblitPanel into pieces. Revised feed generation.

---
 src/com/gitblit/SyndicationServlet.java |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/com/gitblit/SyndicationServlet.java b/src/com/gitblit/SyndicationServlet.java
index f1c474f..694b9cc 100644
--- a/src/com/gitblit/SyndicationServlet.java
+++ b/src/com/gitblit/SyndicationServlet.java
@@ -16,6 +16,7 @@
 package com.gitblit;
 
 import java.text.MessageFormat;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServlet;
@@ -26,10 +27,13 @@
 import org.slf4j.LoggerFactory;
 
 import com.gitblit.models.RepositoryModel;
+import com.gitblit.models.SyndicatedEntryModel;
 import com.gitblit.utils.HttpUtils;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.utils.SyndicationUtils;
+import com.sun.syndication.feed.synd.SyndContent;
+import com.sun.syndication.feed.synd.SyndContentImpl;
 
 /**
  * SyndicationServlet generates RSS 2.0 feeds and feed links.
@@ -139,9 +143,26 @@
 		Repository repository = GitBlit.self().getRepository(repositoryName);
 		RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
 		List<RevCommit> commits = JGitUtils.getRevLog(repository, objectId, 0, length);
+		List<SyndicatedEntryModel> entries = new ArrayList<SyndicatedEntryModel>();
+
+		String gitblitUrl = HttpUtils.getGitblitURL(request);
+		// convert RevCommit to SyndicatedEntryModel
+		for (RevCommit commit : commits) {
+			SyndicatedEntryModel entry = new SyndicatedEntryModel();
+			entry.title = commit.getShortMessage();
+			entry.author = commit.getAuthorIdent().getName();
+			entry.link = MessageFormat.format("{0}/commit/{1}/{2}", gitblitUrl,
+					StringUtils.encodeURL(model.name), commit.getName());
+			entry.published = commit.getCommitterIdent().getWhen();
+			entry.contentType = "text/plain";
+			entry.content = commit.getFullMessage();
+			entry.repository = model.name;
+			entry.branch = objectId;
+			entries.add(entry);
+		}
 		try {
-			SyndicationUtils.toRSS(HttpUtils.getGitblitURL(request), getTitle(model.name, objectId), model.description,
-					model.name, commits, response.getOutputStream());
+			SyndicationUtils.toRSS(gitblitUrl, getTitle(model.name, objectId), model.description,
+					model.name, entries, response.getOutputStream());
 		} catch (Exception e) {
 			logger.error("An error occurred during feed generation", e);
 		}

--
Gitblit v1.9.1