From 4fea450fd3edfba6bb9e2c3c0a9231c6d227a09c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 23 Feb 2012 19:49:46 -0500 Subject: [PATCH] Fixed nullpointer on pushing to an empty repository (issue 69) --- src/com/gitblit/utils/SyndicationUtils.java | 44 +++++++++++++++++++++++++++++--------------- 1 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/com/gitblit/utils/SyndicationUtils.java b/src/com/gitblit/utils/SyndicationUtils.java index 85d5f8d..061d12a 100644 --- a/src/com/gitblit/utils/SyndicationUtils.java +++ b/src/com/gitblit/utils/SyndicationUtils.java @@ -22,13 +22,11 @@ import java.net.URLConnection; import java.text.MessageFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import com.gitblit.Constants; import com.gitblit.GitBlitException; -import com.gitblit.models.SyndicatedEntryModel; -import com.gitblit.utils.JGitUtils.SearchType; +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; @@ -65,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(); @@ -81,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); @@ -99,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); @@ -125,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); @@ -157,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, 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); @@ -194,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(); @@ -222,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