diff options
author | James Moger <james.moger@gitblit.com> | 2013-11-17 16:15:24 -0500 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-11-26 16:07:04 -0500 |
commit | db4f6b5740c6ea45d9e2209dc569bc18904a8b4d (patch) | |
tree | 8dd6c651876359ea2d66e844b77af29394f8cd1e /src/main/java/com/gitblit/manager/IFederationManager.java | |
parent | 99d0d4fd66f3490b61c700065b7d16bc4e73f226 (diff) | |
download | gitblit-db4f6b5740c6ea45d9e2209dc569bc18904a8b4d.tar.gz gitblit-db4f6b5740c6ea45d9e2209dc569bc18904a8b4d.zip |
Define manager interfaces and update all of Gitblit to use managers
These manager interfaces define how the GitBlit singleton will
eventually be split into smaller component managers. The Wicket app and
all servlets have been updated to request the needed managers. There
are _very_ few method signature changes - although there are a handful.
This is a surgical sharding of responsibility based on a proof of
concept refactor. Instead of random references to GittBlit.self()
there are now precise references to the manager interface required to
accomplish some task. Some tasks may require references to multiple
managers.
The code is now littered with calls to GitBlit.getManager(class) and
those familiar with the code-base will no doubt notice the duplication
of methods from IUserService in IUserManager and the addition of
implementation methods in the GitBlit context class. When the
GitBlit class is broken apart and the existing external authentication
user service classes are refactored to AuthenticationService classes,
this will again simplify and flatten. But in order to safely and
cleanly modularize the stable code-base we will have to live with a
little duplication for a short while.
Change-Id: I7314ec8acaab2dcc6092785ed4434cc09fdbbe16
Diffstat (limited to 'src/main/java/com/gitblit/manager/IFederationManager.java')
-rw-r--r-- | src/main/java/com/gitblit/manager/IFederationManager.java | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/manager/IFederationManager.java b/src/main/java/com/gitblit/manager/IFederationManager.java new file mode 100644 index 00000000..debe362b --- /dev/null +++ b/src/main/java/com/gitblit/manager/IFederationManager.java @@ -0,0 +1,177 @@ +/* + * 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.manager; + +import java.io.File; +import java.util.List; +import java.util.Map; + +import com.gitblit.Constants.FederationRequest; +import com.gitblit.Constants.FederationToken; +import com.gitblit.models.FederationModel; +import com.gitblit.models.FederationProposal; +import com.gitblit.models.FederationSet; +import com.gitblit.models.RepositoryModel; +import com.gitblit.models.UserModel; + +public interface IFederationManager { + + /** + * Returns the path of the proposals folder. This method checks to see if + * Gitblit is running on a cloud service and may return an adjusted path. + * + * @return the proposals folder path + */ + File getProposalsFolder(); + + UserModel getFederationUser(); + + boolean canFederate(); + + /** + * Returns the list of federated gitblit instances that this instance will + * try to pull. + * + * @return list of registered gitblit instances + */ + List<FederationModel> getFederationRegistrations(); + + /** + * Retrieve the specified federation registration. + * + * @param name + * the name of the registration + * @return a federation registration + */ + FederationModel getFederationRegistration(String url, String name); + + /** + * Returns the list of federation sets. + * + * @return list of federation sets + */ + List<FederationSet> getFederationSets(String gitblitUrl); + + /** + * Returns the list of possible federation tokens for this Gitblit instance. + * + * @return list of federation tokens + */ + List<String> getFederationTokens(); + + /** + * Returns the specified federation token for this Gitblit instance. + * + * @param type + * @return a federation token + */ + String getFederationToken(FederationToken type); + + /** + * Returns the specified federation token for this Gitblit instance. + * + * @param value + * @return a federation token + */ + String getFederationToken(String value); + + /** + * Compares the provided token with this Gitblit instance's tokens and + * determines if the requested permission may be granted to the token. + * + * @param req + * @param token + * @return true if the request can be executed + */ + boolean validateFederationRequest(FederationRequest req, String token); + + /** + * Acknowledge and cache the status of a remote Gitblit instance. + * + * @param identification + * the identification of the pulling Gitblit instance + * @param registration + * the registration from the pulling Gitblit instance + * @return true if acknowledged + */ + boolean acknowledgeFederationStatus(String identification, FederationModel registration); + + /** + * Returns the list of registration results. + * + * @return the list of registration results + */ + List<FederationModel> getFederationResultRegistrations(); + + /** + * Submit a federation proposal. The proposal is cached locally and the + * Gitblit administrator(s) are notified via email. + * + * @param proposal + * the proposal + * @param gitblitUrl + * the url of your gitblit instance to send an email to + * administrators + * @return true if the proposal was submitted + */ + boolean submitFederationProposal(FederationProposal proposal, String gitblitUrl); + + /** + * Returns the list of pending federation proposals + * + * @return list of federation proposals + */ + List<FederationProposal> getPendingFederationProposals(); + + /** + * Get repositories for the specified token. + * + * @param gitblitUrl + * the base url of this gitblit instance + * @param token + * the federation token + * @return a map of <cloneurl, RepositoryModel> + */ + Map<String, RepositoryModel> getRepositories(String gitblitUrl, String token); + + /** + * Creates a proposal from the token. + * + * @param gitblitUrl + * the url of this Gitblit instance + * @param token + * @return a potential proposal + */ + FederationProposal createFederationProposal(String gitblitUrl, String token); + + /** + * Returns the proposal identified by the supplied token. + * + * @param token + * @return the specified proposal or null + */ + FederationProposal getPendingFederationProposal(String token); + + /** + * Deletes a pending federation proposal. + * + * @param a + * proposal + * @return true if the proposal was deleted + */ + boolean deletePendingFederationProposal(FederationProposal proposal); + +}
\ No newline at end of file |