From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Sat, 30 Apr 2016 04:19:14 -0400
Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates

---
 src/main/java/com/gitblit/utils/RpcUtils.java |  153 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 108 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/gitblit/utils/RpcUtils.java b/src/main/java/com/gitblit/utils/RpcUtils.java
index ed23dab..8220215 100644
--- a/src/main/java/com/gitblit/utils/RpcUtils.java
+++ b/src/main/java/com/gitblit/utils/RpcUtils.java
@@ -25,11 +25,11 @@
 import com.gitblit.Constants;
 import com.gitblit.Constants.RpcRequest;
 import com.gitblit.GitBlitException.UnknownRequestException;
-import com.gitblit.models.RegistrantAccessPermission;
 import com.gitblit.models.FederationModel;
 import com.gitblit.models.FederationProposal;
 import com.gitblit.models.FederationSet;
 import com.gitblit.models.FeedModel;
+import com.gitblit.models.RegistrantAccessPermission;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.ServerSettings;
 import com.gitblit.models.ServerStatus;
@@ -39,9 +39,9 @@
 
 /**
  * Utility methods for rpc calls.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
 public class RpcUtils {
 
@@ -76,7 +76,7 @@
 	}.getType();
 
 	/**
-	 * 
+	 *
 	 * @param remoteURL
 	 *            the url of the remote gitblit instance
 	 * @param req
@@ -88,7 +88,7 @@
 	}
 
 	/**
-	 * 
+	 *
 	 * @param remoteURL
 	 *            the url of the remote gitblit instance
 	 * @param req
@@ -110,7 +110,7 @@
 
 	/**
 	 * Returns the version of the RPC protocol on the server.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -124,7 +124,7 @@
 		try {
 			protocol = JsonUtils.retrieveJson(url, Integer.class, account, password);
 		} catch (UnknownRequestException e) {
-			// v0.7.0 (protocol 1) did not have this request type 
+			// v0.7.0 (protocol 1) did not have this request type
 		}
 		return protocol;
 	}
@@ -132,7 +132,7 @@
 	/**
 	 * Retrieves a map of the repositories at the remote gitblit instance keyed
 	 * by the repository clone url.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -149,7 +149,7 @@
 
 	/**
 	 * Tries to pull the gitblit user accounts from the remote gitblit instance.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -167,7 +167,7 @@
 	/**
 	 * Tries to pull the gitblit team definitions from the remote gitblit
 	 * instance.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -184,7 +184,7 @@
 
 	/**
 	 * Create a repository on the Gitblit server.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -203,9 +203,23 @@
 
 	}
 
-	/**
+    /**
+     * Create a fork of a repository.
+     *
+     * @param repository
+
+     * @return true if the action succeeded
+     * @throws IOException
+     */
+    public static boolean forkRepository(RepositoryModel repository, String serverUrl,
+                                        String account, char[] password) throws IOException {
+        return doAction(RpcRequest.FORK_REPOSITORY, repository.name, null, serverUrl, account, password);
+    }
+
+
+    /**
 	 * Send a revised version of the repository model to the Gitblit server.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -221,7 +235,7 @@
 
 	/**
 	 * Delete a repository from the Gitblit server.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -235,25 +249,56 @@
 				password);
 
 	}
-	
+
 	/**
 	 * Clears the repository cache on the Gitblit server.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
 	 * @return true if the action succeeded
 	 * @throws IOException
 	 */
-	public static boolean clearRepositoryCache(String serverUrl, String account, 
+	public static boolean clearRepositoryCache(String serverUrl, String account,
 			char[] password) throws IOException {
 		return doAction(RpcRequest.CLEAR_REPOSITORY_CACHE, null, null, serverUrl, account,
 				password);
 	}
 
 	/**
+	 * Reindex all tickets on the Gitblit server.
+	 *
+	 * @param serverUrl
+	 * @param account
+	 * @param password
+	 * @return true if the action succeeded
+	 * @throws IOException
+	 */
+	public static boolean reindexTickets(String serverUrl, String account,
+			char[] password) throws IOException {
+		return doAction(RpcRequest.REINDEX_TICKETS, null, null, serverUrl, account,
+				password);
+	}
+
+	/**
+	 * Reindex tickets for the specified repository on the Gitblit server.
+	 *
+	 * @param serverUrl
+	 * @param repositoryName
+	 * @param account
+	 * @param password
+	 * @return true if the action succeeded
+	 * @throws IOException
+	 */
+	public static boolean reindexTickets(String serverUrl, String repositoryName,
+			String account, char[] password) throws IOException {
+		return doAction(RpcRequest.REINDEX_TICKETS, repositoryName, null, serverUrl,
+				account, password);
+	}
+
+	/**
 	 * Create a user on the Gitblit server.
-	 * 
+	 *
 	 * @param user
 	 * @param serverUrl
 	 * @param account
@@ -269,7 +314,7 @@
 
 	/**
 	 * Send a revised version of the user model to the Gitblit server.
-	 * 
+	 *
 	 * @param user
 	 * @param serverUrl
 	 * @param account
@@ -285,7 +330,7 @@
 
 	/**
 	 * Deletes a user from the Gitblit server.
-	 * 
+	 *
 	 * @param user
 	 * @param serverUrl
 	 * @param account
@@ -299,8 +344,26 @@
 	}
 
 	/**
+	 * Tries to get the specified gitblit user account from the remote gitblit instance.
+	 * If the username is null or empty, the current user is returned.
+	 *
+	 * @param username
+	 * @param serverUrl
+	 * @param account
+	 * @param password
+	 * @return a UserModel or null
+	 * @throws IOException
+	 */
+	public static UserModel getUser(String username, String serverUrl, String account, char[] password)
+			throws IOException {
+		String url = asLink(serverUrl, RpcRequest.GET_USER);
+		UserModel model = JsonUtils.retrieveJson(url, UserModel.class, account, password);
+		return model;
+	}
+
+	/**
 	 * Create a team on the Gitblit server.
-	 * 
+	 *
 	 * @param team
 	 * @param serverUrl
 	 * @param account
@@ -316,7 +379,7 @@
 
 	/**
 	 * Send a revised version of the team model to the Gitblit server.
-	 * 
+	 *
 	 * @param team
 	 * @param serverUrl
 	 * @param account
@@ -332,7 +395,7 @@
 
 	/**
 	 * Deletes a team from the Gitblit server.
-	 * 
+	 *
 	 * @param team
 	 * @param serverUrl
 	 * @param account
@@ -347,7 +410,7 @@
 
 	/**
 	 * Retrieves the list of users that can access the specified repository.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -361,10 +424,10 @@
 		Collection<String> list = JsonUtils.retrieveJson(url, NAMES_TYPE, account, password);
 		return new ArrayList<String>(list);
 	}
-	
+
 	/**
 	 * Retrieves the list of user access permissions for the specified repository.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -372,7 +435,7 @@
 	 * @return list of User-AccessPermission tuples
 	 * @throws IOException
 	 */
-	public static List<RegistrantAccessPermission> getRepositoryMemberPermissions(RepositoryModel repository, 
+	public static List<RegistrantAccessPermission> getRepositoryMemberPermissions(RepositoryModel repository,
 			String serverUrl, String account, char [] password) throws IOException {
 		String url = asLink(serverUrl, RpcRequest.LIST_REPOSITORY_MEMBER_PERMISSIONS, repository.name);
 		Collection<RegistrantAccessPermission> list = JsonUtils.retrieveJson(url, REGISTRANT_PERMISSIONS_TYPE, account, password);
@@ -381,7 +444,7 @@
 
 	/**
 	 * Sets the repository user access permissions
-	 * 
+	 *
 	 * @param repository
 	 * @param permissions
 	 * @param serverUrl
@@ -396,10 +459,10 @@
 		return doAction(RpcRequest.SET_REPOSITORY_MEMBER_PERMISSIONS, repository.name, permissions, serverUrl,
 				account, password);
 	}
-	
+
 	/**
 	 * Retrieves the list of teams that can access the specified repository.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -413,10 +476,10 @@
 		Collection<String> list = JsonUtils.retrieveJson(url, NAMES_TYPE, account, password);
 		return new ArrayList<String>(list);
 	}
-	
+
 	/**
 	 * Retrieves the list of team access permissions for the specified repository.
-	 * 
+	 *
 	 * @param repository
 	 * @param serverUrl
 	 * @param account
@@ -424,7 +487,7 @@
 	 * @return list of Team-AccessPermission tuples
 	 * @throws IOException
 	 */
-	public static List<RegistrantAccessPermission> getRepositoryTeamPermissions(RepositoryModel repository, 
+	public static List<RegistrantAccessPermission> getRepositoryTeamPermissions(RepositoryModel repository,
 			String serverUrl, String account, char [] password) throws IOException {
 		String url = asLink(serverUrl, RpcRequest.LIST_REPOSITORY_TEAM_PERMISSIONS, repository.name);
 		Collection<RegistrantAccessPermission> list = JsonUtils.retrieveJson(url, REGISTRANT_PERMISSIONS_TYPE, account, password);
@@ -433,7 +496,7 @@
 
 	/**
 	 * Sets the repository team access permissions
-	 * 
+	 *
 	 * @param repository
 	 * @param permissions
 	 * @param serverUrl
@@ -448,11 +511,11 @@
 		return doAction(RpcRequest.SET_REPOSITORY_TEAM_PERMISSIONS, repository.name, permissions, serverUrl,
 				account, password);
 	}
-	
+
 	/**
 	 * Retrieves the list of federation registrations. These are the list of
 	 * registrations that this Gitblit instance is pulling from.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -471,7 +534,7 @@
 	/**
 	 * Retrieves the list of federation result registrations. These are the
 	 * results reported back to this Gitblit instance from a federation client.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -489,7 +552,7 @@
 
 	/**
 	 * Retrieves the list of federation proposals.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -507,7 +570,7 @@
 
 	/**
 	 * Retrieves the list of federation repository sets.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -524,7 +587,7 @@
 
 	/**
 	 * Retrieves the settings of the Gitblit server.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -541,7 +604,7 @@
 
 	/**
 	 * Update the settings on the Gitblit server.
-	 * 
+	 *
 	 * @param settings
 	 *            the settings to update
 	 * @param serverUrl
@@ -558,7 +621,7 @@
 
 	/**
 	 * Retrieves the server status object.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -575,7 +638,7 @@
 	/**
 	 * Retrieves a map of local branches in the Gitblit server keyed by
 	 * repository.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -592,7 +655,7 @@
 
 	/**
 	 * Retrieves a list of available branch feeds in the Gitblit server.
-	 * 
+	 *
 	 * @param serverUrl
 	 * @param account
 	 * @param password
@@ -616,7 +679,7 @@
 
 	/**
 	 * Do the specified administrative action on the Gitblit server.
-	 * 
+	 *
 	 * @param request
 	 * @param name
 	 *            the name of the object (may be null)

--
Gitblit v1.9.1