From 5200b359257c2ab5e29781c2b05c6092fc8338f8 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 29 Nov 2013 11:05:50 -0500 Subject: [PATCH] Eliminate static singleton calls from user services --- src/main/java/com/gitblit/SparkleShareInviteServlet.java | 59 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gitblit/SparkleShareInviteServlet.java b/src/main/java/com/gitblit/SparkleShareInviteServlet.java index 14d281a..1cd997d 100644 --- a/src/main/java/com/gitblit/SparkleShareInviteServlet.java +++ b/src/main/java/com/gitblit/SparkleShareInviteServlet.java @@ -18,29 +18,54 @@ import java.io.IOException; import java.text.MessageFormat; +import javax.inject.Inject; +import javax.inject.Singleton; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.gitblit.manager.IRepositoryManager; +import com.gitblit.manager.IRuntimeManager; +import com.gitblit.manager.ISessionManager; +import com.gitblit.manager.IUserManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; /** * Handles requests for Sparkleshare Invites - * + * * @author James Moger - * + * */ +@Singleton public class SparkleShareInviteServlet extends HttpServlet { private static final long serialVersionUID = 1L; - public SparkleShareInviteServlet() { + private final IStoredSettings settings; + + private final IUserManager userManager; + + private final ISessionManager sessionManager; + + private final IRepositoryManager repositoryManager; + + @Inject + public SparkleShareInviteServlet( + IRuntimeManager runtimeManager, + IUserManager userManager, + ISessionManager sessionManager, + IRepositoryManager repositoryManager) { + super(); + this.settings = runtimeManager.getSettings(); + this.userManager = userManager; + this.sessionManager = sessionManager; + this.repositoryManager = repositoryManager; } - + @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { @@ -55,8 +80,8 @@ protected void processRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, - java.io.IOException { - + java.io.IOException { + // extract repo name from request String repoUrl = request.getPathInfo().substring(1); @@ -64,11 +89,11 @@ if (repoUrl.endsWith(".xml")) { repoUrl = repoUrl.substring(0, repoUrl.length() - 4); } - + String servletPath = Constants.GIT_PATH; - + int schemeIndex = repoUrl.indexOf("://") + 3; - String host = repoUrl.substring(0, repoUrl.indexOf('/', schemeIndex)); + String host = repoUrl.substring(0, repoUrl.indexOf('/', schemeIndex)); String path = repoUrl.substring(repoUrl.indexOf(servletPath) + servletPath.length()); String username = null; int fetchIndex = repoUrl.indexOf('@'); @@ -77,31 +102,31 @@ } UserModel user; if (StringUtils.isEmpty(username)) { - user = GitBlit.self().authenticate(request); + user = sessionManager.authenticate(request); } else { - user = GitBlit.self().getUserModel(username); + user = userManager.getUserModel(username); } if (user == null) { user = UserModel.ANONYMOUS; username = ""; } - + // ensure that the requested repository exists - RepositoryModel model = GitBlit.self().getRepositoryModel(path); + RepositoryModel model = repositoryManager.getRepositoryModel(path); if (model == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); response.getWriter().append(MessageFormat.format("Repository \"{0}\" not found!", path)); return; } - - StringBuilder sb = new StringBuilder(); + + StringBuilder sb = new StringBuilder(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); sb.append("<sparkleshare><invite>\n"); sb.append(MessageFormat.format("<address>{0}</address>\n", host)); sb.append(MessageFormat.format("<remote_path>{0}{1}</remote_path>\n", servletPath, model.name)); - if (GitBlit.getInteger(Keys.fanout.port, 0) > 0) { + if (settings.getInteger(Keys.fanout.port, 0) > 0) { // Gitblit is running it's own fanout service for pubsub notifications - sb.append(MessageFormat.format("<announcements_url>tcp://{0}:{1}</announcements_url>\n", request.getServerName(), GitBlit.getString(Keys.fanout.port, ""))); + sb.append(MessageFormat.format("<announcements_url>tcp://{0}:{1}</announcements_url>\n", request.getServerName(), settings.getString(Keys.fanout.port, ""))); } sb.append("</invite></sparkleshare>\n"); -- Gitblit v1.9.1