/* * Copyright 2013 gitblit.com. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gitblit; import java.io.File; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jgit.lib.Repository; import com.gitblit.Constants.FederationRequest; import com.gitblit.Constants.FederationToken; import com.gitblit.manager.IAuthenticationManager; import com.gitblit.manager.IFederationManager; import com.gitblit.manager.IGitblitManager; import com.gitblit.manager.INotificationManager; import com.gitblit.manager.IProjectManager; 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.FederationSet; import com.gitblit.models.ForkModel; import com.gitblit.models.GitClientApplication; import com.gitblit.models.Metric; import com.gitblit.models.ProjectModel; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RepositoryModel; import com.gitblit.models.RepositoryUrl; import com.gitblit.models.SearchResult; import com.gitblit.models.ServerSettings; import com.gitblit.models.ServerStatus; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; /** * GitBlit is an aggregate interface delegate. It implements all the manager * interfaces and delegates all methods calls to the actual manager implementations. * It's primary purpose is to provide complete management control to the git * upload and receive pack functions. * * @author James Moger * */ public class GitBlit implements IRuntimeManager, INotificationManager, IUserManager, IAuthenticationManager, IRepositoryManager, IProjectManager, IGitblitManager, IFederationManager { private final IRuntimeManager runtimeManager; private final INotificationManager notificationManager; private final IUserManager userManager; private final IAuthenticationManager authenticationManager; private final IRepositoryManager repositoryManager; private final IProjectManager projectManager; private final IGitblitManager gitblitManager; private final IFederationManager federationManager; public GitBlit( IRuntimeManager runtimeManager, INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IGitblitManager gitblitManager, IFederationManager federationManager) { this.runtimeManager = runtimeManager; this.notificationManager = notificationManager; this.userManager = userManager; this.authenticationManager = authenticationManager; this.repositoryManager = repositoryManager; this.projectManager = projectManager; this.gitblitManager = gitblitManager; this.federationManager = federationManager; } @Override public GitBlit start() { return this; } @Override public GitBlit stop() { return this; } /* * ISTOREDSETTINGS * * these methods are necessary for (nearly) seamless Groovy hook operation * after the massive refactor. */ public boolean getBoolean(String key, boolean defaultValue) { return runtimeManager.getSettings().getBoolean(key, defaultValue); } public String getString(String key, String defaultValue) { return runtimeManager.getSettings().getString(key, defaultValue); } public int getInteger(String key, int defaultValue) { return runtimeManager.getSettings().getInteger(key, defaultValue); } public List getStrings(String key) { return runtimeManager.getSettings().getStrings(key); } /* * RUNTIME MANAGER */ @Override public File getBaseFolder() { return runtimeManager.getBaseFolder(); } @Override public void setBaseFolder(File folder) { runtimeManager.setBaseFolder(folder); } @Override public Date getBootDate() { return runtimeManager.getBootDate(); } @Override public ServerSettings getSettingsModel() { return runtimeManager.getSettingsModel(); } @Override public boolean isServingRepositories() { return runtimeManager.isServingRepositories(); } @Override public TimeZone getTimezone() { return runtimeManager.getTimezone(); } @Override public boolean isDebugMode() { return runtimeManager.isDebugMode(); } @Override public File getFileOrFolder(String key, String defaultFileOrFolder) { return runtimeManager.getFileOrFolder(key, defaultFileOrFolder); } @Override public File getFileOrFolder(String fileOrFolder) { return runtimeManager.getFileOrFolder(fileOrFolder); } @Override public IStoredSettings getSettings() { return runtimeManager.getSettings(); } @Override public boolean updateSettings(Map updatedSettings) { return runtimeManager.updateSettings(updatedSettings); } @Override public ServerStatus getStatus() { return runtimeManager.getStatus(); } /* * NOTIFICATION MANAGER */ @Override public void sendMailToAdministrators(String subject, String message) { notificationManager.sendMailToAdministrators(subject, message); } @Override public void sendMail(String subject, String message, Collection toAddresses) { notificationManager.sendMail(subject, message, toAddresses); } @Override public void sendMail(String subject, String message, String... toAddresses) { notificationManager.sendMail(subject, message, toAddresses); } @Override public void sendHtmlMail(String subject, String message, Collection toAddresses) { notificationManager.sendHtmlMail(subject, message, toAddresses); } @Override public void sendHtmlMail(String subject, String message, String... toAddresses) { notificationManager.sendHtmlMail(subject, message, toAddresses); } /* * SESSION MANAGER */ @Override public UserModel authenticate(String username, char[] password) { return authenticationManager.authenticate(username, password); } @Override public UserModel authenticate(HttpServletRequest httpRequest) { return authenticationManager.authenticate(httpRequest, false); } @Override public UserModel authenticate(HttpServletRequest httpRequest, boolean requiresCertificate) { return authenticationManager.authenticate(httpRequest, requiresCertificate); } @Override public void setCookie(HttpServletResponse response, UserModel user) { authenticationManager.setCookie(response, user); } @Override public void logout(HttpServletResponse response, UserModel user) { authenticationManager.logout(response, user); } @Override public boolean supportsCredentialChanges(UserModel user) { return authenticationManager.supportsCredentialChanges(user); } @Override public boolean supportsDisplayNameChanges(UserModel user) { return authenticationManager.supportsDisplayNameChanges(user); } @Override public boolean supportsEmailAddressChanges(UserModel user) { return authenticationManager.supportsEmailAddressChanges(user); } @Override public boolean supportsTeamMembershipChanges(UserModel user) { return authenticationManager.supportsTeamMembershipChanges(user); } @Override public boolean supportsTeamMembershipChanges(TeamModel team) { return authenticationManager.supportsTeamMembershipChanges(team); } /* * USER MANAGER */ @Override public void setup(IRuntimeManager runtimeManager) { } @Override public List getAllUsernames() { return userManager.getAllUsernames(); } @Override public List getAllUsers() { return userManager.getAllUsers(); } @Override public boolean deleteUser(String username) { return userManager.deleteUser(username); } @Override public UserModel getUserModel(String username) { return userManager.getUserModel(username); } @Override public List getAllTeams() { return userManager.getAllTeams(); } @Override public TeamModel getTeamModel(String teamname) { return userManager.getTeamModel(teamname); } @Override public String getCookie(UserModel model) { return userManager.getCookie(model); } @Override public UserModel getUserModel(char[] cookie) { return userManager.getUserModel(cookie); } @Override public boolean updateUserModel(UserModel model) { return userManager.updateUserModel(model); } @Override public boolean updateUserModels(Collection models) { return userManager.updateUserModels(models); } @Override public boolean updateUserModel(String username, UserModel model) { return userManager.updateUserModel(username, model); } @Override public boolean deleteUserModel(UserModel model) { return userManager.deleteUserModel(model); } @Override public List getAllTeamNames() { return userManager.getAllTeamNames(); } @Override public List getTeamNamesForRepositoryRole(String role) { return userManager.getTeamNamesForRepositoryRole(role); } @Override public boolean updateTeamModel(TeamModel model) { return userManager.updateTeamModel(model); } @Override public boolean updateTeamModels(Collection models) { return userManager.updateTeamModels(models); } @Override public boolean updateTeamModel(String teamname, TeamModel model) { return userManager.updateTeamModel(teamname, model); } @Override public boolean deleteTeamModel(TeamModel model) { return userManager.deleteTeamModel(model); } @Override public List getUsernamesForRepositoryRole(String role) { return userManager.getUsernamesForRepositoryRole(role); } @Override public boolean renameRepositoryRole(String oldRole, String newRole) { return userManager.renameRepositoryRole(oldRole, newRole); } @Override public boolean deleteRepositoryRole(String role) { return userManager.deleteRepositoryRole(role); } @Override public boolean deleteTeam(String teamname) { return userManager.deleteTeam(teamname); } /* * REPOSITORY MANAGER */ @Override public Date getLastActivityDate() { return repositoryManager.getLastActivityDate(); } @Override public File getRepositoriesFolder() { return repositoryManager.getRepositoriesFolder(); } @Override public File getHooksFolder() { return repositoryManager.getHooksFolder(); } @Override public File getGrapesFolder() { return repositoryManager.getGrapesFolder(); } @Override public List getUserAccessPermissions(UserModel user) { return repositoryManager.getUserAccessPermissions(user); } @Override public List getUserAccessPermissions(RepositoryModel repository) { return repositoryManager.getUserAccessPermissions(repository); } @Override public boolean setUserAccessPermissions(RepositoryModel repository, Collection permissions) { return repositoryManager.setUserAccessPermissions(repository, permissions); } @Override public List getRepositoryUsers(RepositoryModel repository) { return repositoryManager.getRepositoryUsers(repository); } @Override public List getTeamAccessPermissions(RepositoryModel repository) { return repositoryManager.getTeamAccessPermissions(repository); } @Override public boolean setTeamAccessPermissions(RepositoryModel repository, Collection permissions) { return repositoryManager.setTeamAccessPermissions(repository, permissions); } @Override public List getRepositoryTeams(RepositoryModel repository) { return repositoryManager.getRepositoryTeams(repository); } @Override public void addToCachedRepositoryList(RepositoryModel model) { repositoryManager.addToCachedRepositoryList(model); } @Override public void resetRepositoryListCache() { repositoryManager.resetRepositoryListCache(); } @Override public List getRepositoryList() { return repositoryManager.getRepositoryList(); } @Override public Repository getRepository(String repositoryName) { return repositoryManager.getRepository(repositoryName); } @Override public Repository getRepository(String repositoryName, boolean logError) { return repositoryManager.getRepository(repositoryName, logError); } @Override public List getRepositoryModels(UserModel user) { return repositoryManager.getRepositoryModels(user); } @Override public RepositoryModel getRepositoryModel(UserModel user, String repositoryName) { return repositoryManager.getRepositoryModel(repositoryName); } @Override public RepositoryModel getRepositoryModel(String repositoryName) { return repositoryManager.getRepositoryModel(repositoryName); } @Override public long getStarCount(RepositoryModel repository) { return repositoryManager.getStarCount(repository); } @Override public boolean hasRepository(String repositoryName) { return repositoryManager.hasRepository(repositoryName); } @Override public boolean hasRepository(String repositoryName, boolean caseSensitiveCheck) { return repositoryManager.hasRepository(repositoryName, caseSensitiveCheck); } @Override public boolean hasFork(String username, String origin) { return repositoryManager.hasFork(username, origin); } @Override public String getFork(String username, String origin) { return repositoryManager.getFork(username, origin); } @Override public ForkModel getForkNetwork(String repository) { return repositoryManager.getForkNetwork(repository); } @Override public long updateLastChangeFields(Repository r, RepositoryModel model) { return repositoryManager.updateLastChangeFields(r, model); } @Override public List getRepositoryDefaultMetrics(RepositoryModel model, Repository repository) { return repositoryManager.getRepositoryDefaultMetrics(model, repository); } @Override public void updateRepositoryModel(String repositoryName, RepositoryModel repository, boolean isCreate) throws GitBlitException { repositoryManager.updateRepositoryModel(repositoryName, repository, isCreate); } @Override public void updateConfiguration(Repository r, RepositoryModel repository) { repositoryManager.updateConfiguration(r, repository); } @Override public boolean deleteRepositoryModel(RepositoryModel model) { return repositoryManager.deleteRepositoryModel(model); } @Override public boolean deleteRepository(String repositoryName) { return repositoryManager.deleteRepository(repositoryName); } @Override public List getAllScripts() { return repositoryManager.getAllScripts(); } @Override public List getPreReceiveScriptsInherited(RepositoryModel repository) { return repositoryManager.getPreReceiveScriptsInherited(repository); } @Override public List getPreReceiveScriptsUnused(RepositoryModel repository) { return repositoryManager.getPreReceiveScriptsUnused(repository); } @Override public List getPostReceiveScriptsInherited(RepositoryModel repository) { return repositoryManager.getPostReceiveScriptsInherited(repository); } @Override public List getPostReceiveScriptsUnused(RepositoryModel repository) { return repositoryManager.getPostReceiveScriptsUnused(repository); } @Override public List search(String query, int page, int pageSize, List repositories) { return repositoryManager.search(query, page, pageSize, repositories); } @Override public boolean isCollectingGarbage() { return repositoryManager.isCollectingGarbage(); } @Override public boolean isCollectingGarbage(String repositoryName) { return repositoryManager.isCollectingGarbage(repositoryName); } /* * PROJECT MANAGER */ @Override public List getProjectModels(UserModel user, boolean includeUsers) { return projectManager.getProjectModels(user, includeUsers); } @Override public ProjectModel getProjectModel(String name, UserModel user) { return projectManager.getProjectModel(name, user); } @Override public ProjectModel getProjectModel(String name) { return projectManager.getProjectModel(name); } @Override public List getProjectModels(List repositoryModels, boolean includeUsers) { return projectManager.getProjectModels(repositoryModels, includeUsers); } /* * FEDERATION MANAGER */ @Override public File getProposalsFolder() { return federationManager.getProposalsFolder(); } @Override public UserModel getFederationUser() { return federationManager.getFederationUser(); } @Override public boolean canFederate() { return federationManager.canFederate(); } @Override public List getFederationRegistrations() { return federationManager.getFederationRegistrations(); } @Override public FederationModel getFederationRegistration(String url, String name) { return federationManager.getFederationRegistration(url, name); } @Override public List getFederationSets(String gitblitUrl) { return federationManager.getFederationSets(gitblitUrl); } @Override public List getFederationTokens() { return federationManager.getFederationTokens(); } @Override public String getFederationToken(FederationToken type) { return federationManager.getFederationToken(type); } @Override public String getFederationToken(String value) { return federationManager.getFederationToken(value); } @Override public boolean validateFederationRequest(FederationRequest req, String token) { return federationManager.validateFederationRequest(req, token); } @Override public boolean acknowledgeFederationStatus(String identification, FederationModel registration) { return federationManager.acknowledgeFederationStatus(identification, registration); } @Override public List getFederationResultRegistrations() { return federationManager.getFederationResultRegistrations(); } @Override public boolean submitFederationProposal(FederationProposal proposal, String gitblitUrl) { return federationManager.submitFederationProposal(proposal, gitblitUrl); } @Override public List getPendingFederationProposals() { return federationManager.getPendingFederationProposals(); } @Override public Map getRepositories(String gitblitUrl, String token) { return federationManager.getRepositories(gitblitUrl, token); } @Override public FederationProposal createFederationProposal(String gitblitUrl, String token) { return federationManager.createFederationProposal(gitblitUrl, token); } @Override public FederationProposal getPendingFederationProposal(String token) { return federationManager.getPendingFederationProposal(token); } @Override public boolean deletePendingFederationProposal(FederationProposal proposal) { return federationManager.deletePendingFederationProposal(proposal); } /* * GITBLIT MANAGER */ @Override public RepositoryModel fork(RepositoryModel repository, UserModel user) throws GitBlitException { return gitblitManager.fork(repository, user); } @Override public void updateTeamModel(String teamname, TeamModel team, boolean isCreate) throws GitBlitException { gitblitManager.updateTeamModel(teamname, team, isCreate); } @Override public void updateUserModel(String username, UserModel user, boolean isCreate) throws GitBlitException { gitblitManager.updateUserModel(username, user, isCreate); } @Override public List getRepositoryUrls(HttpServletRequest request, UserModel user, RepositoryModel repository) { return gitblitManager.getRepositoryUrls(request, user, repository); } @Override public Collection getClientApplications() { return gitblitManager.getClientApplications(); } }