From 269c5043ab8f66f67d5719ac5149a436ca1baa2b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 29 Nov 2013 11:05:51 -0500 Subject: [PATCH] Extract Federation, Gitblit and Services manager from GitBlit singleton --- src/main/java/com/gitblit/SyndicationServlet.java | 41 +++++++++++++++++++++++++++++++++-------- 1 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gitblit/SyndicationServlet.java b/src/main/java/com/gitblit/SyndicationServlet.java index 6b3c01c..397545f 100644 --- a/src/main/java/com/gitblit/SyndicationServlet.java +++ b/src/main/java/com/gitblit/SyndicationServlet.java @@ -22,6 +22,8 @@ import java.util.List; import java.util.Map; +import javax.inject.Inject; +import javax.inject.Singleton; import javax.servlet.http.HttpServlet; import org.eclipse.jgit.lib.ObjectId; @@ -31,6 +33,9 @@ import org.slf4j.LoggerFactory; import com.gitblit.AuthenticationFilter.AuthenticatedRequest; +import com.gitblit.manager.IProjectManager; +import com.gitblit.manager.IRepositoryManager; +import com.gitblit.manager.IRuntimeManager; import com.gitblit.models.FeedEntryModel; import com.gitblit.models.ProjectModel; import com.gitblit.models.RefModel; @@ -38,6 +43,7 @@ import com.gitblit.models.UserModel; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.JGitUtils; +import com.gitblit.utils.MessageProcessor; import com.gitblit.utils.StringUtils; import com.gitblit.utils.SyndicationUtils; @@ -49,11 +55,30 @@ * @author James Moger * */ +@Singleton public class SyndicationServlet extends HttpServlet { private static final long serialVersionUID = 1L; private transient Logger logger = LoggerFactory.getLogger(SyndicationServlet.class); + + private final IStoredSettings settings; + + private final IRepositoryManager repositoryManager; + + private final IProjectManager projectManager; + + @Inject + public SyndicationServlet( + IRuntimeManager runtimeManager, + IRepositoryManager repositoryManager, + IProjectManager projectManager) { + + super(); + this.settings = runtimeManager.getSettings(); + this.repositoryManager = repositoryManager; + this.projectManager = projectManager; + } /** * Create a feed link for the specified repository and branch/tag/commit id. @@ -143,7 +168,7 @@ searchType = type; } } - int length = GitBlit.getInteger(Keys.web.syndicationEntries, 25); + int length = settings.getInteger(Keys.web.syndicationEntries, 25); if (StringUtils.isEmpty(objectId)) { objectId = org.eclipse.jgit.lib.Constants.HEAD; } @@ -175,7 +200,7 @@ if (request instanceof AuthenticatedRequest) { user = ((AuthenticatedRequest) request).getUser(); } - ProjectModel project = GitBlit.self().getProjectModel(repositoryName, user); + ProjectModel project = projectManager.getProjectModel(repositoryName, user); if (project != null) { isProjectFeed = true; repositories = new ArrayList<String>(project.repositories); @@ -193,7 +218,7 @@ } - boolean mountParameters = GitBlit.getBoolean(Keys.web.mountParameters, true); + boolean mountParameters = settings.getBoolean(Keys.web.mountParameters, true); String urlPattern; if (mountParameters) { // mounted parameters @@ -203,13 +228,13 @@ urlPattern = "{0}/commit/?r={1}&h={2}"; } String gitblitUrl = HttpUtils.getGitblitURL(request); - char fsc = GitBlit.getChar(Keys.web.forwardSlashCharacter, '/'); + char fsc = settings.getChar(Keys.web.forwardSlashCharacter, '/'); List<FeedEntryModel> entries = new ArrayList<FeedEntryModel>(); for (String name : repositories) { - Repository repository = GitBlit.self().getRepository(name); - RepositoryModel model = GitBlit.self().getRepositoryModel(name); + Repository repository = repositoryManager.getRepository(name); + RepositoryModel model = repositoryManager.getRepositoryModel(name); if (repository == null) { if (model.isCollectingGarbage) { @@ -234,6 +259,7 @@ offset, length); } Map<ObjectId, List<RefModel>> allRefs = JGitUtils.getAllRefs(repository, model.showRemoteBranches); + MessageProcessor processor = new MessageProcessor(settings); // convert RevCommit to SyndicatedEntryModel for (RevCommit commit : commits) { @@ -244,8 +270,7 @@ StringUtils.encodeURL(model.name.replace('/', fsc)), commit.getName()); entry.published = commit.getCommitterIdent().getWhen(); entry.contentType = "text/html"; - String message = GitBlit.self().processCommitMessage(model, - commit.getFullMessage()); + String message = processor.processCommitMessage(model, commit.getFullMessage()); entry.content = message; entry.repository = model.name; entry.branch = objectId; -- Gitblit v1.9.1