From db4f6b5740c6ea45d9e2209dc569bc18904a8b4d Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 26 Nov 2013 16:07:04 -0500 Subject: [PATCH] Define manager interfaces and update all of Gitblit to use managers --- src/main/java/com/gitblit/FederationServlet.java | 56 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/gitblit/FederationServlet.java b/src/main/java/com/gitblit/FederationServlet.java index 5db9645..0d83b4f 100644 --- a/src/main/java/com/gitblit/FederationServlet.java +++ b/src/main/java/com/gitblit/FederationServlet.java @@ -28,6 +28,10 @@ import javax.servlet.http.HttpServletResponse; import com.gitblit.Constants.FederationRequest; +import com.gitblit.manager.IFederationManager; +import com.gitblit.manager.IRepositoryManager; +import com.gitblit.manager.IRuntimeManager; +import com.gitblit.manager.IUserManager; import com.gitblit.models.FederationModel; import com.gitblit.models.FederationProposal; import com.gitblit.models.TeamModel; @@ -65,6 +69,12 @@ protected void processRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException { + + IStoredSettings settings = GitBlit.getManager(IRuntimeManager.class).getSettings(); + IUserManager userManager = GitBlit.getManager(IUserManager.class); + IRepositoryManager repositoryManager = GitBlit.getManager(IRepositoryManager.class); + IFederationManager federationManager = GitBlit.getManager(IFederationManager.class); + FederationRequest reqType = FederationRequest.fromName(request.getParameter("req")); logger.info(MessageFormat.format("Federation {0} request from {1}", reqType, request.getRemoteAddr())); @@ -75,13 +85,13 @@ return; } - if (!GitBlit.getBoolean(Keys.git.enableGitServlet, true)) { + if (!settings.getBoolean(Keys.git.enableGitServlet, true)) { logger.warn(Keys.git.enableGitServlet + " must be set TRUE for federation requests."); response.sendError(HttpServletResponse.SC_FORBIDDEN); return; } - String uuid = GitBlit.getString(Keys.federation.passphrase, ""); + String uuid = settings.getString(Keys.federation.passphrase, ""); if (StringUtils.isEmpty(uuid)) { logger.warn(Keys.federation.passphrase + " is not properly set! Federation request denied."); @@ -97,7 +107,7 @@ } // reject proposal, if not receipt prohibited - if (!GitBlit.getBoolean(Keys.federation.allowProposals, false)) { + if (!settings.getBoolean(Keys.federation.allowProposals, false)) { logger.error(MessageFormat.format("Rejected {0} federation proposal from {1}", proposal.tokenType.name(), proposal.url)); response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); @@ -119,7 +129,7 @@ } String url = HttpUtils.getGitblitURL(request); - GitBlit.self().submitFederationProposal(proposal, url); + federationManager.submitFederationProposal(proposal, url); logger.info(MessageFormat.format( "Submitted {0} federation proposal to pull {1} repositories from {2}", proposal.tokenType.name(), proposal.repositories.size(), proposal.url)); @@ -145,7 +155,7 @@ results.nextPull = new Date(System.currentTimeMillis() + (mins * 60 * 1000L)); // acknowledge the receipt of status - GitBlit.self().acknowledgeFederationStatus(identification, results); + federationManager.acknowledgeFederationStatus(identification, results); logger.info(MessageFormat.format( "Received status of {0} federated repositories from {1}", results .getStatusList().size(), identification)); @@ -155,7 +165,7 @@ // Determine the federation tokens for this gitblit instance String token = request.getParameter("token"); - List<String> tokens = GitBlit.self().getFederationTokens(); + List<String> tokens = federationManager.getFederationTokens(); if (!tokens.contains(token)) { logger.warn(MessageFormat.format( "Received Federation token ''{0}'' does not match the server tokens", token)); @@ -166,11 +176,11 @@ Object result = null; if (FederationRequest.PULL_REPOSITORIES.equals(reqType)) { String gitblitUrl = HttpUtils.getGitblitURL(request); - result = GitBlit.self().getRepositories(gitblitUrl, token); + result = federationManager.getRepositories(gitblitUrl, token); } else { if (FederationRequest.PULL_SETTINGS.equals(reqType)) { // pull settings - if (!GitBlit.self().validateFederationRequest(reqType, token)) { + if (!federationManager.validateFederationRequest(reqType, token)) { // invalid token to pull users or settings logger.warn(MessageFormat.format( "Federation token from {0} not authorized to pull SETTINGS", @@ -178,15 +188,15 @@ response.sendError(HttpServletResponse.SC_FORBIDDEN); return; } - Map<String, String> settings = new HashMap<String, String>(); - List<String> keys = GitBlit.getAllKeys(null); + Map<String, String> map = new HashMap<String, String>(); + List<String> keys = settings.getAllKeys(null); for (String key : keys) { - settings.put(key, GitBlit.getString(key, "")); + map.put(key, settings.getString(key, "")); } - result = settings; + result = map; } else if (FederationRequest.PULL_USERS.equals(reqType)) { // pull users - if (!GitBlit.self().validateFederationRequest(reqType, token)) { + if (!federationManager.validateFederationRequest(reqType, token)) { // invalid token to pull users or settings logger.warn(MessageFormat.format( "Federation token from {0} not authorized to pull USERS", @@ -194,10 +204,10 @@ response.sendError(HttpServletResponse.SC_FORBIDDEN); return; } - List<String> usernames = GitBlit.self().getAllUsernames(); + List<String> usernames = userManager.getAllUsernames(); List<UserModel> users = new ArrayList<UserModel>(); for (String username : usernames) { - UserModel user = GitBlit.self().getUserModel(username); + UserModel user = userManager.getUserModel(username); if (!user.excludeFromFederation) { users.add(user); } @@ -205,7 +215,7 @@ result = users; } else if (FederationRequest.PULL_TEAMS.equals(reqType)) { // pull teams - if (!GitBlit.self().validateFederationRequest(reqType, token)) { + if (!federationManager.validateFederationRequest(reqType, token)) { // invalid token to pull teams logger.warn(MessageFormat.format( "Federation token from {0} not authorized to pull TEAMS", @@ -213,16 +223,16 @@ response.sendError(HttpServletResponse.SC_FORBIDDEN); return; } - List<String> teamnames = GitBlit.self().getAllTeamnames(); + List<String> teamnames = userManager.getAllTeamNames(); List<TeamModel> teams = new ArrayList<TeamModel>(); for (String teamname : teamnames) { - TeamModel user = GitBlit.self().getTeamModel(teamname); + TeamModel user = userManager.getTeamModel(teamname); teams.add(user); } result = teams; } else if (FederationRequest.PULL_SCRIPTS.equals(reqType)) { // pull scripts - if (!GitBlit.self().validateFederationRequest(reqType, token)) { + if (!federationManager.validateFederationRequest(reqType, token)) { // invalid token to pull script logger.warn(MessageFormat.format( "Federation token from {0} not authorized to pull SCRIPTS", @@ -233,13 +243,13 @@ Map<String, String> scripts = new HashMap<String, String>(); Set<String> names = new HashSet<String>(); - names.addAll(GitBlit.getStrings(Keys.groovy.preReceiveScripts)); - names.addAll(GitBlit.getStrings(Keys.groovy.postReceiveScripts)); - for (TeamModel team : GitBlit.self().getAllTeams()) { + names.addAll(settings.getStrings(Keys.groovy.preReceiveScripts)); + names.addAll(settings.getStrings(Keys.groovy.postReceiveScripts)); + for (TeamModel team : userManager.getAllTeams()) { names.addAll(team.preReceiveScripts); names.addAll(team.postReceiveScripts); } - File scriptsFolder = GitBlit.getFileOrFolder(Keys.groovy.scriptsFolder, "groovy"); + File scriptsFolder = repositoryManager.getHooksFolder(); for (String name : names) { File file = new File(scriptsFolder, name); if (!file.exists() && !file.getName().endsWith(".groovy")) { -- Gitblit v1.9.1