diff options
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 |