From cb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 05 Jan 2012 17:34:05 -0500
Subject: [PATCH] Fixed bug in receive hook for repositories in subfolders

---
 src/com/gitblit/utils/SyndicationUtils.java |   42 +++++++++++++++++++++++++++++-------------
 1 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/src/com/gitblit/utils/SyndicationUtils.java b/src/com/gitblit/utils/SyndicationUtils.java
index 4ba5622..061d12a 100644
--- a/src/com/gitblit/utils/SyndicationUtils.java
+++ b/src/com/gitblit/utils/SyndicationUtils.java
@@ -26,7 +26,7 @@
 
 import com.gitblit.Constants;
 import com.gitblit.GitBlitException;
-import com.gitblit.models.SyndicatedEntryModel;
+import com.gitblit.models.FeedEntryModel;
 import com.sun.syndication.feed.synd.SyndCategory;
 import com.sun.syndication.feed.synd.SyndCategoryImpl;
 import com.sun.syndication.feed.synd.SyndContent;
@@ -63,7 +63,7 @@
 	 * @throws FeedException
 	 */
 	public static void toRSS(String hostUrl, String feedLink, String title, String description,
-			String repository, List<SyndicatedEntryModel> entryModels, OutputStream os)
+			String repository, List<FeedEntryModel> entryModels, OutputStream os)
 			throws IOException, FeedException {
 
 		SyndFeed feed = new SyndFeedImpl();
@@ -79,7 +79,7 @@
 		feed.setImage(image);
 
 		List<SyndEntry> entries = new ArrayList<SyndEntry>();
-		for (SyndicatedEntryModel entryModel : entryModels) {
+		for (FeedEntryModel entryModel : entryModels) {
 			SyndEntry entry = new SyndEntryImpl();
 			entry.setTitle(entryModel.title);
 			entry.setAuthor(entryModel.author);
@@ -97,10 +97,16 @@
 			}
 
 			SyndContent content = new SyndContentImpl();
-			content.setType(entryModel.contentType);
-			content.setValue(entryModel.content);
+			if (StringUtils.isEmpty(entryModel.contentType)
+					|| entryModel.contentType.equalsIgnoreCase("text/plain")) {
+				content.setType("text/html");
+				content.setValue(StringUtils.breakLinesForHtml(entryModel.content));
+			} else {
+				content.setType(entryModel.contentType);
+				content.setValue(entryModel.content);
+			}
 			entry.setDescription(content);
-			
+
 			entries.add(entry);
 		}
 		feed.setEntries(entries);
@@ -123,17 +129,22 @@
 	 * @param numberOfEntries
 	 *            the number of entries to retrieve. if <= 0 the server default
 	 *            is used.
+	 * @param page
+	 *            0-indexed. used to paginate the results.
 	 * @param username
 	 * @param password
 	 * @return a list of SyndicationModel entries
 	 * @throws {@link IOException}
 	 */
-	public static List<SyndicatedEntryModel> readFeed(String url, String repository, String branch,
-			int numberOfEntries, String username, char[] password) throws IOException {
+	public static List<FeedEntryModel> readFeed(String url, String repository, String branch,
+			int numberOfEntries, int page, String username, char[] password) throws IOException {
 		// build feed url
 		List<String> parameters = new ArrayList<String>();
 		if (numberOfEntries > 0) {
 			parameters.add("l=" + numberOfEntries);
+		}
+		if (page > 0) {
+			parameters.add("pg=" + page);
 		}
 		if (!StringUtils.isEmpty(branch)) {
 			parameters.add("h=" + branch);
@@ -155,19 +166,24 @@
 	 * @param numberOfEntries
 	 *            the number of entries to retrieve. if <= 0 the server default
 	 *            is used.
+	 * @param page
+	 *            0-indexed. used to paginate the results.
 	 * @param username
 	 * @param password
 	 * @return a list of SyndicationModel entries
 	 * @throws {@link IOException}
 	 */
-	public static List<SyndicatedEntryModel> readSearchFeed(String url, String repository,
-			String branch, String fragment, Constants.SearchType searchType, int numberOfEntries,
+	public static List<FeedEntryModel> readSearchFeed(String url, String repository, String branch,
+			String fragment, Constants.SearchType searchType, int numberOfEntries, int page,
 			String username, char[] password) throws IOException {
 		// determine parameters
 		List<String> parameters = new ArrayList<String>();
 		parameters.add("s=" + StringUtils.encodeURL(fragment));
 		if (numberOfEntries > 0) {
 			parameters.add("l=" + numberOfEntries);
+		}
+		if (page > 0) {
+			parameters.add("pg=" + page);
 		}
 		if (!StringUtils.isEmpty(branch)) {
 			parameters.add("h=" + branch);
@@ -192,7 +208,7 @@
 	 * @return a list of SyndicationModel entries
 	 * @throws {@link IOException}
 	 */
-	private static List<SyndicatedEntryModel> readFeed(String url, List<String> parameters,
+	private static List<FeedEntryModel> readFeed(String url, List<String> parameters,
 			String repository, String branch, String username, char[] password) throws IOException {
 		// build url
 		StringBuilder sb = new StringBuilder();
@@ -220,10 +236,10 @@
 			throw new GitBlitException(f);
 		}
 		is.close();
-		List<SyndicatedEntryModel> entries = new ArrayList<SyndicatedEntryModel>();
+		List<FeedEntryModel> entries = new ArrayList<FeedEntryModel>();
 		for (Object o : feed.getEntries()) {
 			SyndEntryImpl entry = (SyndEntryImpl) o;
-			SyndicatedEntryModel model = new SyndicatedEntryModel();
+			FeedEntryModel model = new FeedEntryModel();
 			model.repository = repository;
 			model.branch = branch;
 			model.title = entry.getTitle();

--
Gitblit v1.9.1