Commit 37444213 authored by Grogdunn's avatar Grogdunn

enh: formatted code

parent 42bf4d2b
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<groupId>org.gitlab</groupId>
<artifactId>java-gitlab-api</artifactId>
<version>1.1.10-SNAPSHOT</version>
<groupId>org.gitlab</groupId>
<artifactId>java-gitlab-api</artifactId>
<version>1.1.10-SNAPSHOT</version>
<name>Gitlab Java API Wrapper</name>
<description>A Java wrapper for the Gitlab Git Hosting Server API</description>
<name>Gitlab Java API Wrapper</name>
<description>A Java wrapper for the Gitlab Git Hosting Server API</description>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
<developers>
<developer>
<id>timols</id>
<name>Tim Olshansky</name>
<email>tim.olshansky@gmail.com</email>
</developer>
</developers>
<contributors>
<contributor>
<name>Adam Retter</name>
<email>adam.retter@googlemail.com</email>
<organization>Evolved Binary Ltd</organization>
</contributor>
<contributor>
<name>Cesar Aguilar</name>
<email>cesar@fuzzproductions.com</email>
<organization>Fuzz Productions</organization>
</contributor>
<contributor>
<name>Chris Luu</name>
<email>luu@fuzzproductions.com</email>
<organization>Fuzz Productions</organization>
</contributor>
</contributors>
<developers>
<developer>
<id>timols</id>
<name>Tim Olshansky</name>
<email>tim.olshansky@gmail.com</email>
</developer>
</developers>
<contributors>
<contributor>
<name>Adam Retter</name>
<email>adam.retter@googlemail.com</email>
<organization>Evolved Binary Ltd</organization>
</contributor>
<contributor>
<name>Cesar Aguilar</name>
<email>cesar@fuzzproductions.com</email>
<organization>Fuzz Productions</organization>
</contributor>
<contributor>
<name>Chris Luu</name>
<email>luu@fuzzproductions.com</email>
<organization>Fuzz Productions</organization>
</contributor>
</contributors>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:git:ssh://github.com/timols/java-gitlab-api.git</connection>
<developerConnection>scm:git:ssh://git@github.com/timols/java-gitlab-api.git</developerConnection>
<url>https://github.com/timols/java-gitlab-api</url>
</scm>
<scm>
<connection>scm:git:ssh://github.com/timols/java-gitlab-api.git</connection>
<developerConnection>scm:git:ssh://git@github.com/timols/java-gitlab-api.git</developerConnection>
<url>https://github.com/timols/java-gitlab-api</url>
</scm>
<issueManagement>
<system>Github</system>
<url>https://github.com/timols/java-gitlab-api/issues</url>
</issueManagement>
<issueManagement>
<system>Github</system>
<url>https://github.com/timols/java-gitlab-api/issues</url>
</issueManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<id>default-integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>default-verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<id>default-integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>default-verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
......@@ -14,7 +14,6 @@ import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
/**
* Gitlab API Wrapper class
*
......@@ -116,31 +115,32 @@ public class GitlabAPI {
/**
* Create a new User
*
* @param email User email
* @param password Password
* @param username User name
* @param fullName Full name
* @param skypeId Skype Id
* @param linkedIn LinkedIn
* @param twitter Twitter
* @param website_url Website URL
* @param projects_limit Projects limit
* @param extern_uid External User ID
* @param email User email
* @param password Password
* @param username User name
* @param fullName Full name
* @param skypeId Skype Id
* @param linkedIn LinkedIn
* @param twitter Twitter
* @param website_url Website URL
* @param projects_limit Projects limit
* @param extern_uid External User ID
* @param extern_provider_name External Provider Name
* @param bio Bio
* @param isAdmin Is Admin
* @param can_create_group Can Create Group
* @param skip_confirmation Skip Confirmation
* @return A GitlabUser
* @param bio Bio
* @param isAdmin Is Admin
* @param can_create_group Can Create Group
* @param skip_confirmation Skip Confirmation
* @return A GitlabUser
* @throws IOException on gitlab api call error
* @see <a href="http://doc.gitlab.com/ce/api/users.html">http://doc.gitlab.com/ce/api/users.html</a>
* @see
* <a href="http://doc.gitlab.com/ce/api/users.html">http://doc.gitlab.com/ce/api/users.html</a>
*/
public GitlabUser createUser(String email, String password, String username,
String fullName, String skypeId, String linkedIn,
String twitter, String website_url, Integer projects_limit,
String extern_uid, String extern_provider_name,
String bio, Boolean isAdmin, Boolean can_create_group,
Boolean skip_confirmation) throws IOException {
String fullName, String skypeId, String linkedIn,
String twitter, String website_url, Integer projects_limit,
String extern_uid, String extern_provider_name,
String bio, Boolean isAdmin, Boolean can_create_group,
Boolean skip_confirmation) throws IOException {
Query query = new Query()
.append("email", email)
......@@ -164,34 +164,33 @@ public class GitlabAPI {
return dispatch().to(tailUrl, GitlabUser.class);
}
/**
* Update a user
*
* @param targetUserId User ID
* @param email User email
* @param password Password
* @param username User name
* @param fullName Full name
* @param skypeId Skype Id
* @param linkedIn LinkedIn
* @param twitter Twitter
* @param website_url Website URL
* @param projects_limit Projects limit
* @param extern_uid External User ID
* @param targetUserId User ID
* @param email User email
* @param password Password
* @param username User name
* @param fullName Full name
* @param skypeId Skype Id
* @param linkedIn LinkedIn
* @param twitter Twitter
* @param website_url Website URL
* @param projects_limit Projects limit
* @param extern_uid External User ID
* @param extern_provider_name External Provider Name
* @param bio Bio
* @param isAdmin Is Admin
* @param can_create_group Can Create Group
* @param bio Bio
* @param isAdmin Is Admin
* @param can_create_group Can Create Group
* @return The Updated User
* @throws IOException on gitlab api call error
*/
public GitlabUser updateUser(Integer targetUserId,
String email, String password, String username,
String fullName, String skypeId, String linkedIn,
String twitter, String website_url, Integer projects_limit,
String extern_uid, String extern_provider_name,
String bio, Boolean isAdmin, Boolean can_create_group) throws IOException {
String email, String password, String username,
String fullName, String skypeId, String linkedIn,
String twitter, String website_url, Integer projects_limit,
String extern_uid, String extern_provider_name,
String bio, Boolean isAdmin, Boolean can_create_group) throws IOException {
Query query = new Query()
.append("email", email)
......@@ -244,8 +243,8 @@ public class GitlabAPI {
* Create a new ssh key for the user
*
* @param targetUserId The id of the Gitlab user
* @param title The title of the ssh key
* @param key The public key
* @param title The title of the ssh key
* @param key The public key
* @return The new GitlabSSHKey
* @throws IOException on gitlab api call error
*/
......@@ -264,7 +263,7 @@ public class GitlabAPI {
* Delete user's ssh key
*
* @param targetUserId The id of the Gitlab user
* @param targetKeyId The id of the Gitlab ssh key
* @param targetKeyId The id of the Gitlab ssh key
* @throws IOException on gitlab api call error
*/
public void deleteSSHKey(Integer targetUserId, Integer targetKeyId) throws IOException {
......@@ -272,7 +271,6 @@ public class GitlabAPI {
retrieve().method("DELETE").to(tailUrl, Void.class);
}
/**
* Gets all ssh keys for a user
*
......@@ -300,7 +298,7 @@ public class GitlabAPI {
/**
* Delete a user
*
* @param targetUserId The target User ID
* @param targetUserId The target User ID
* @throws IOException on gitlab api call error
*/
public void deleteUser(Integer targetUserId) throws IOException {
......@@ -344,9 +342,8 @@ public class GitlabAPI {
/**
* Creates a Group
*
* @param name The name of the group. The
* name will also be used as the path
* of the group.
* @param name The name of the group. The name will also be used as the path
* of the group.
* @return The GitLab Group
* @throws IOException on gitlab api call error
*/
......@@ -369,9 +366,9 @@ public class GitlabAPI {
/**
* Creates a Group
*
* @param name The name of the group
* @param path The path for the group
* @param ldapCn LDAP Group Name to sync with, null otherwise
* @param name The name of the group
* @param path The path for the group
* @param ldapCn LDAP Group Name to sync with, null otherwise
* @param ldapAccess Access level for LDAP group members, null otherwise
* @return The GitLab Group
* @throws IOException on gitlab api call error
......@@ -392,8 +389,8 @@ public class GitlabAPI {
/**
* Add a group member.
*
* @param group the GitlabGroup
* @param user the GitlabUser
* @param group the GitlabGroup
* @param user the GitlabUser
* @param accessLevel the GitlabAccessLevel
* @return the GitlabGroupMember
* @throws IOException on gitlab api call error
......@@ -405,8 +402,8 @@ public class GitlabAPI {
/**
* Add a group member.
*
* @param groupId the group id
* @param userId the user id
* @param groupId the group id
* @param userId the user id
* @param accessLevel the GitlabAccessLevel
* @return the GitlabGroupMember
* @throws IOException on gitlab api call error
......@@ -424,7 +421,7 @@ public class GitlabAPI {
* Delete a group member.
*
* @param group the GitlabGroup
* @param user the GitlabUser
* @param user the GitlabUser
* @throws IOException on gitlab api call error
*/
public void deleteGroupMember(GitlabGroup group, GitlabUser user) throws IOException {
......@@ -435,7 +432,7 @@ public class GitlabAPI {
* Delete a group member.
*
* @param groupId the group id
* @param userId the user id
* @param userId the user id
* @throws IOException on gitlab api call error
*/
public void deleteGroupMember(Integer groupId, Integer userId) throws IOException {
......@@ -483,17 +480,26 @@ public class GitlabAPI {
/**
* Creates a Project
*
* @param name The name of the project
* @param namespaceId The Namespace for the new project, otherwise null indicates to use the GitLab default (user)
* @param description A description for the project, null otherwise
* @param issuesEnabled Whether Issues should be enabled, otherwise null indicates to use GitLab default
* @param wallEnabled Whether The Wall should be enabled, otherwise null indicates to use GitLab default
* @param mergeRequestsEnabled Whether Merge Requests should be enabled, otherwise null indicates to use GitLab default
* @param wikiEnabled Whether a Wiki should be enabled, otherwise null indicates to use GitLab default
* @param snippetsEnabled Whether Snippets should be enabled, otherwise null indicates to use GitLab default
* @param publik Whether the project is public or private, if true same as setting visibilityLevel = 20, otherwise null indicates to use GitLab default
* @param visibilityLevel The visibility level of the project, otherwise null indicates to use GitLab default
* @param importUrl The Import URL for the project, otherwise null
* @param name The name of the project
* @param namespaceId The Namespace for the new project, otherwise null
* indicates to use the GitLab default (user)
* @param description A description for the project, null otherwise
* @param issuesEnabled Whether Issues should be enabled, otherwise null
* indicates to use GitLab default
* @param wallEnabled Whether The Wall should be enabled, otherwise null
* indicates to use GitLab default
* @param mergeRequestsEnabled Whether Merge Requests should be enabled,
* otherwise null indicates to use GitLab default
* @param wikiEnabled Whether a Wiki should be enabled, otherwise null
* indicates to use GitLab default
* @param snippetsEnabled Whether Snippets should be enabled, otherwise null
* indicates to use GitLab default
* @param publik Whether the project is public or private, if true same as
* setting visibilityLevel = 20, otherwise null indicates to use GitLab
* default
* @param visibilityLevel The visibility level of the project, otherwise
* null indicates to use GitLab default
* @param importUrl The Import URL for the project, otherwise null
* @return the Gitlab Project
* @throws IOException on gitlab api call error
*/
......@@ -520,7 +526,7 @@ public class GitlabAPI {
* Creates a Project for a specific User
*
* @param userId The id of the user to create the project for
* @param name The name of the project
* @param name The name of the project
* @return The GitLab Project
* @throws IOException on gitlab api call error
*/
......@@ -531,17 +537,26 @@ public class GitlabAPI {
/**
* Creates a Project for a specific User
*
* @param userId The id of the user to create the project for
* @param name The name of the project
* @param description A description for the project, null otherwise
* @param defaultBranch The default branch for the project, otherwise null indicates to use GitLab default (master)
* @param issuesEnabled Whether Issues should be enabled, otherwise null indicates to use GitLab default
* @param wallEnabled Whether The Wall should be enabled, otherwise null indicates to use GitLab default
* @param mergeRequestsEnabled Whether Merge Requests should be enabled, otherwise null indicates to use GitLab default
* @param wikiEnabled Whether a Wiki should be enabled, otherwise null indicates to use GitLab default
* @param snippetsEnabled Whether Snippets should be enabled, otherwise null indicates to use GitLab default
* @param publik Whether the project is public or private, if true same as setting visibilityLevel = 20, otherwise null indicates to use GitLab default
* @param visibilityLevel The visibility level of the project, otherwise null indicates to use GitLab default
* @param userId The id of the user to create the project for
* @param name The name of the project
* @param description A description for the project, null otherwise
* @param defaultBranch The default branch for the project, otherwise null
* indicates to use GitLab default (master)
* @param issuesEnabled Whether Issues should be enabled, otherwise null
* indicates to use GitLab default
* @param wallEnabled Whether The Wall should be enabled, otherwise null
* indicates to use GitLab default
* @param mergeRequestsEnabled Whether Merge Requests should be enabled,
* otherwise null indicates to use GitLab default
* @param wikiEnabled Whether a Wiki should be enabled, otherwise null
* indicates to use GitLab default
* @param snippetsEnabled Whether Snippets should be enabled, otherwise null
* indicates to use GitLab default
* @param publik Whether the project is public or private, if true same as
* setting visibilityLevel = 20, otherwise null indicates to use GitLab
* default
* @param visibilityLevel The visibility level of the project, otherwise
* null indicates to use GitLab default
* @return The GitLab Project
* @throws IOException on gitlab api call error
*/
......@@ -566,16 +581,24 @@ public class GitlabAPI {
/**
* Updates a Project
*
* @param projectId The id of the project to update
* @param name The name of the project
* @param description A description for the project, null otherwise
* @param issuesEnabled Whether Issues should be enabled, otherwise null indicates to use GitLab default
* @param wallEnabled Whether The Wall should be enabled, otherwise null indicates to use GitLab default
* @param mergeRequestsEnabled Whether Merge Requests should be enabled, otherwise null indicates to use GitLab default
* @param wikiEnabled Whether a Wiki should be enabled, otherwise null indicates to use GitLab default
* @param snippetsEnabled Whether Snippets should be enabled, otherwise null indicates to use GitLab default
* @param publik Whether the project is public or private, if true same as setting visibilityLevel = 20, otherwise null indicates to use GitLab default
* @param visibilityLevel The visibility level of the project, otherwise null indicates to use GitLab default
* @param projectId The id of the project to update
* @param name The name of the project
* @param description A description for the project, null otherwise
* @param issuesEnabled Whether Issues should be enabled, otherwise null
* indicates to use GitLab default
* @param wallEnabled Whether The Wall should be enabled, otherwise null
* indicates to use GitLab default
* @param mergeRequestsEnabled Whether Merge Requests should be enabled,
* otherwise null indicates to use GitLab default
* @param wikiEnabled Whether a Wiki should be enabled, otherwise null
* indicates to use GitLab default
* @param snippetsEnabled Whether Snippets should be enabled, otherwise null
* indicates to use GitLab default
* @param publik Whether the project is public or private, if true same as
* setting visibilityLevel = 20, otherwise null indicates to use GitLab
* default
* @param visibilityLevel The visibility level of the project, otherwise
* null indicates to use GitLab default
* @return the Gitlab Project
* @throws IOException on gitlab api call error
*/
......@@ -638,8 +661,8 @@ public class GitlabAPI {
}
/**
* @param project The Project
* @param mergeRequestId Merge Request ID
* @param project The Project
* @param mergeRequestId Merge Request ID
* @param mergeCommitMessage optional merge commit message. Null if not set
* @return new merge request status
* @throws IOException on gitlab api call error
......@@ -649,24 +672,25 @@ public class GitlabAPI {
GitlabHTTPRequestor requestor = retrieve().method("PUT");
requestor.with("id", project.getId());
requestor.with("merge_request_id", mergeRequestId);
if (mergeCommitMessage != null)
if (mergeCommitMessage != null) {
requestor.with("merge_commit_message", mergeCommitMessage);
}
return requestor.to(tailUrl, GitlabMergeRequest.class);
}
public List<GitlabNote> getNotes(GitlabMergeRequest mergeRequest) throws IOException {
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() +
GitlabMergeRequest.URL + "/" + mergeRequest.getId() +
GitlabNote.URL;
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId()
+ GitlabMergeRequest.URL + "/" + mergeRequest.getId()
+ GitlabNote.URL;
GitlabNote[] notes = retrieve().to(tailUrl, GitlabNote[].class);
return Arrays.asList(notes);
}
public List<GitlabNote> getAllNotes(GitlabMergeRequest mergeRequest) throws IOException {
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() +
GitlabMergeRequest.URL + "/" + mergeRequest.getId() +
GitlabNote.URL;
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId()
+ GitlabMergeRequest.URL + "/" + mergeRequest.getId()
+ GitlabNote.URL;
return retrieve().getAll(tailUrl, GitlabNote[].class);
}
......@@ -687,8 +711,8 @@ public class GitlabAPI {
Query query = new Query()
.append("ref_name", mergeRequest.getSourceBranch());
String tailUrl = GitlabProject.URL + "/" + projectId +
"/repository" + GitlabCommit.URL + query.toString();
String tailUrl = GitlabProject.URL + "/" + projectId
+ "/repository" + GitlabCommit.URL + query.toString();
GitlabCommit[] commits = retrieve().to(tailUrl, GitlabCommit[].class);
return Arrays.asList(commits);
......@@ -712,8 +736,8 @@ public class GitlabAPI {
* Get raw file content
*
* @param project The Project
* @param sha The commit or branch name
* @param filepath The path of the file
* @param sha The commit or branch name
* @param filepath The path of the file
* @throws IOException on gitlab api call error
*/
public byte[] getRawFileContent(GitlabProject project, String sha, String filepath) throws IOException {
......@@ -728,7 +752,7 @@ public class GitlabAPI {
* Get the raw file contents for a blob by blob SHA.
*
* @param project The Project
* @param sha The commit or branch name
* @param sha The commit or branch name
* @throws IOException on gitlab api call error
*/
public byte[] getRawBlobContent(GitlabProject project, String sha) throws IOException {
......@@ -751,8 +775,10 @@ public class GitlabAPI {
* Get an archive of the repository
*
* @param project The Project
* @param path The path inside the repository. Used to get content of subdirectories (optional)
* @param ref_name The name of a repository branch or tag or if not given the default branch (optional)
* @param path The path inside the repository. Used to get content of
* subdirectories (optional)
* @param ref_name The name of a repository branch or tag or if not given
* the default branch (optional)
* @throws IOException on gitlab api call error
*/
public List<GitlabRepositoryTree> getRepositoryTree(GitlabProject project, String path, String ref_name) throws IOException {
......@@ -763,11 +789,11 @@ public class GitlabAPI {
String tailUrl = GitlabProject.URL + "/" + project.getId() + "/repository" + GitlabRepositoryTree.URL + query.toString();
GitlabRepositoryTree[] tree = retrieve().to(tailUrl, GitlabRepositoryTree[].class);
return Arrays.asList(tree);
}
}
public GitlabNote createNote(GitlabMergeRequest mergeRequest, String body) throws IOException {
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() +
GitlabMergeRequest.URL + "/" + mergeRequest.getId() + GitlabNote.URL;
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId()
+ GitlabMergeRequest.URL + "/" + mergeRequest.getId() + GitlabNote.URL;
return dispatch().with("body", body).to(tailUrl, GitlabNote.class);
}
......@@ -866,7 +892,7 @@ public class GitlabAPI {
}
public GitlabIssue createIssue(int projectId, int assigneeId, int milestoneId, String labels,
String description, String title) throws IOException {
String description, String title) throws IOException {
String tailUrl = GitlabProject.URL + "/" + projectId + GitlabIssue.URL;
GitlabHTTPRequestor requestor = dispatch();
applyIssue(requestor, projectId, assigneeId, milestoneId, labels, description, title);
......@@ -875,7 +901,7 @@ public class GitlabAPI {
}
public GitlabIssue editIssue(int projectId, int issueId, int assigneeId, int milestoneId, String labels,
String description, String title, GitlabIssue.Action action) throws IOException {
String description, String title, GitlabIssue.Action action) throws IOException {
String tailUrl = GitlabProject.URL + "/" + projectId + GitlabIssue.URL + "/" + issueId;
GitlabHTTPRequestor requestor = retrieve().method("PUT");
applyIssue(requestor, projectId, assigneeId, milestoneId, labels, description, title);
......@@ -888,8 +914,8 @@ public class GitlabAPI {
}
private void applyIssue(GitlabHTTPRequestor requestor, int projectId,
int assigneeId, int milestoneId, String labels, String description,
String title) {
int assigneeId, int milestoneId, String labels, String description,
String title) {
requestor.with("title", title)
.with("description", description)
......@@ -929,8 +955,8 @@ public class GitlabAPI {
/**
* Add a project member.
*
* @param project the GitlabProject
* @param user the GitlabUser
* @param project the GitlabProject
* @param user the GitlabUser
* @param accessLevel the GitlabAccessLevel
* @return the GitlabProjectMember
* @throws IOException on gitlab api call error
......@@ -942,8 +968,8 @@ public class GitlabAPI {
/**
* Add a project member.
*
* @param projectId the project id
* @param userId the user id
* @param projectId the project id
* @param userId the user id
* @param accessLevel the GitlabAccessLevel
* @return the GitlabProjectMember
* @throws IOException on gitlab api call error
......@@ -961,7 +987,7 @@ public class GitlabAPI {
* Delete a project team member.
*
* @param project the GitlabProject
* @param user the GitlabUser
* @param user the GitlabUser
* @throws IOException on gitlab api call error
*/
public void deleteProjectMember(GitlabProject project, GitlabUser user) throws IOException {
......@@ -972,7 +998,7 @@ public class GitlabAPI {
* Delete a project team member.
*
* @param projectId the project id
* @param userId the user id
* @param userId the user id
* @throws IOException on gitlab api call error
*/
public void deleteProjectMember(Integer projectId, Integer userId) throws IOException {
......@@ -993,7 +1019,7 @@ public class GitlabAPI {
* This will fail, if the given namespace is a user and not a group
*
* @param namespace The namespace
* @return A list of Gitlab Project members
* @return A list of Gitlab Project members
* @throws IOException on gitlab api call error
*/
public List<GitlabProjectMember> getNamespaceMembers(GitlabNamespace namespace) throws IOException {
......@@ -1004,7 +1030,7 @@ public class GitlabAPI {
* This will fail, if the given namespace is a user and not a group
*
* @param namespaceId Namespace ID
* @return A list of Gitlab Project members
* @return A list of Gitlab Project members
* @throws IOException on gitlab api call error
*/
public List<GitlabProjectMember> getNamespaceMembers(Integer namespaceId) throws IOException {
......@@ -1016,7 +1042,7 @@ public class GitlabAPI {
* Transfer a project to the given namespace
*
* @param namespaceId Namespace ID
* @param projectId Project ID
* @param projectId Project ID
* @throws IOException on gitlab api call error
*/
public void transfer(Integer namespaceId, Integer projectId) throws IOException {
......@@ -1028,8 +1054,8 @@ public class GitlabAPI {
* Create a new deploy key for the project
*
* @param targetProjectId The id of the Gitlab project
* @param title The title of the ssh key
* @param key The public key
* @param title The title of the ssh key
* @param key The public key
* @return The new GitlabSSHKey
* @throws IOException on gitlab api call error
*/
......@@ -1047,7 +1073,7 @@ public class GitlabAPI {
* Delete a deploy key for a project
*
* @param targetProjectId The id of the Gitlab project
* @param targetKeyId The id of the Gitlab ssh key
* @param targetKeyId The id of the Gitlab ssh key
* @throws IOException on gitlab api call error
*/
public void deleteDeployKey(Integer targetProjectId, Integer targetKeyId) throws IOException {
......
package org.gitlab.api;
public enum TokenType {
PRIVATE_TOKEN("private_token")
, ACCESS_TOKEN("access_token"),
;
PRIVATE_TOKEN("private_token"), ACCESS_TOKEN("access_token"),;
private final String tokenParamName;
private final String tokenParamName;
TokenType(String tokenParamName) {
this.tokenParamName = tokenParamName;
}
TokenType(String tokenParamName) {
this.tokenParamName = tokenParamName;
}
public String getTokenParamName() {
return tokenParamName;
}
public String getTokenParamName() {
return tokenParamName;
}
}
......@@ -20,8 +20,8 @@ import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
/**
* Gitlab HTTP Requestor
* Responsible for handling HTTP requests to the Gitlab API
* Gitlab HTTP Requestor Responsible for handling HTTP requests to the Gitlab
* API
*
* @author &#064;timols (Tim O)
*/
......@@ -57,8 +57,8 @@ public class GitlabHTTPRequestor {
}
/**
* Sets the HTTP Request method for the request.
* Has a fluent api for method chaining.
* Sets the HTTP Request method for the request. Has a fluent api for method
* chaining.
*
* @param method The HTTP method
* @return this
......@@ -74,11 +74,11 @@ public class GitlabHTTPRequestor {
}
/**
* Sets the HTTP Form Post parameters for the request
* Has a fluent api for method chaining
* Sets the HTTP Form Post parameters for the request Has a fluent api for
* method chaining
*
* @param key Form parameter Key
* @param value Form parameter Value
* @param key Form parameter Key
* @param value Form parameter Value
* @return this
*/
public GitlabHTTPRequestor with(String key, Object value) {
......@@ -100,10 +100,11 @@ public class GitlabHTTPRequestor {
* Opens the HTTP(S) connection, submits any data and parses the response.
* Will throw an error
*
* @param <T> The return type of the method
* @param tailAPIUrl The url to open a connection to (after the host and namespace)
* @param type The type of the response to be deserialized from
* @param instance The instance to update from the response
* @param <T> The return type of the method
* @param tailAPIUrl The url to open a connection to (after the host and
* namespace)
* @param type The type of the response to be deserialized from
* @param instance The instance to update from the response
* @return An object of type T
* @throws java.io.IOException on gitlab api error
*/
......@@ -113,7 +114,7 @@ public class GitlabHTTPRequestor {
connection = setupConnection(root.getAPIUrl(tailAPIUrl));
if (hasOutput()) {
submitData(connection);
submitData(connection);
} else if ("PUT".equals(method)) {
// PUT requires Content-Length: 0 even when there is no body (eg: API for protecting a branch)
connection.setDoOutput(true);
......@@ -231,17 +232,15 @@ public class GitlabHTTPRequestor {
if (matcher.find()) {
Integer page = Integer.parseInt(matcher.group(2)) + 1;
this.url = new URL(matcher.replaceAll(matcher.group(1) + "page=" + page));
} else if (GitlabCommit[].class == type) {
// there is a bug in the Gitlab CE API
// (https://gitlab.com/gitlab-org/gitlab-ce/issues/759)
// that starts pagination with page=0 for commits
this.url = new URL(url + "&page=1");
} else {
if (GitlabCommit[].class == type) {
// there is a bug in the Gitlab CE API
// (https://gitlab.com/gitlab-org/gitlab-ce/issues/759)
// that starts pagination with page=0 for commits
this.url = new URL(url + "&page=1");
} else {
// Since the page query was not present, its safe to assume that we just
// currently used the first page, so we can default to page 2
this.url = new URL(url + "&page=2");
}
// Since the page query was not present, its safe to assume that we just
// currently used the first page, so we can default to page 2
this.url = new URL(url + "&page=2");
}
}
};
......@@ -286,7 +285,7 @@ public class GitlabHTTPRequestor {
try {
reader = new InputStreamReader(wrapStream(connection, connection.getInputStream()), "UTF-8");
if (byte[].class == type) {
return type.cast(IOUtils.toByteArray(reader));
return type.cast(IOUtils.toByteArray(reader));
}
String data = IOUtils.toString(reader);
if (type != null) {
......@@ -334,19 +333,19 @@ public class GitlabHTTPRequestor {
private void ignoreCertificateErrors() {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
// Added per https://github.com/timols/java-gitlab-api/issues/44
HostnameVerifier nullVerifier = new HostnameVerifier() {
......
......@@ -8,12 +8,12 @@ import java.util.ArrayList;
import java.util.List;
/**
* Models the Query
* aspect of a URL
* Models the Query aspect of a URL
*/
public class Query {
private class Tuple<T1, T2> {
T1 _1;
T2 _2;
......@@ -24,18 +24,19 @@ public class Query {
}
/**
* The type of params is:
* Tuple<name, Tuple<value, URLEncoder.encode(value, "UTF-8")>>
* The type of params is: Tuple<name,
* Tuple<value, URLEncoder.encode(value, "UTF-8")>>
*/
private final List<Tuple<String, Tuple<String, String>>> params = new ArrayList<Tuple<String, Tuple<String, String>>>();
/**
* Appends a parameter to the query
*
* @param name Parameter name
* @param name Parameter name
* @param value Parameter value
* @return this
* @throws java.io.UnsupportedEncodingException If the provided value cannot be URL Encoded
* @throws java.io.UnsupportedEncodingException If the provided value cannot
* be URL Encoded
*/
public Query append(final String name, final String value) throws UnsupportedEncodingException {
params.add(new Tuple<String, Tuple<String, String>>(name, new Tuple<String, String>(value, URLEncoder.encode(value, "UTF-8"))));
......@@ -43,13 +44,14 @@ public class Query {
}
/**
* Conditionally append a parameter to the query
* if the value of the parameter is not null
* Conditionally append a parameter to the query if the value of the
* parameter is not null
*
* @param name Parameter name
* @param name Parameter name
* @param value Parameter value
* @return this
* @throws java.io.UnsupportedEncodingException If the provided value cannot be URL Encoded
* @throws java.io.UnsupportedEncodingException If the provided value cannot
* be URL Encoded
*/
public Query appendIf(final String name, final String value) throws UnsupportedEncodingException {
if (value != null) {
......@@ -59,13 +61,14 @@ public class Query {
}
/**
* Conditionally append a parameter to the query
* if the value of the parameter is not null
* Conditionally append a parameter to the query if the value of the
* parameter is not null
*
* @param name Parameter name
* @param name Parameter name
* @param value Parameter value
* @return this
* @throws java.io.UnsupportedEncodingException If the provided value cannot be URL Encoded
* @throws java.io.UnsupportedEncodingException If the provided value cannot
* be URL Encoded
*/
public Query appendIf(final String name, final Integer value) throws UnsupportedEncodingException {
if (value != null) {
......@@ -75,13 +78,14 @@ public class Query {
}
/**
* Conditionally append a parameter to the query
* if the value of the parameter is not null
* Conditionally append a parameter to the query if the value of the
* parameter is not null
*
* @param name Parameter name
* @param name Parameter name
* @param value Parameter value
* @return this
* @throws java.io.UnsupportedEncodingException If the provided value cannot be URL Encoded
* @throws java.io.UnsupportedEncodingException If the provided value cannot
* be URL Encoded
*/
public Query appendIf(final String name, final Boolean value) throws UnsupportedEncodingException {
if (value != null) {
......@@ -91,13 +95,14 @@ public class Query {
}
/**
* Conditionally append a parameter to the query
* if the value of the parameter is not null
* Conditionally append a parameter to the query if the value of the
* parameter is not null
*
* @param name Parameter name
* @param name Parameter name
* @param value Parameter value
* @return this
* @throws java.io.UnsupportedEncodingException If the provided value cannot be URL Encoded
* @throws java.io.UnsupportedEncodingException If the provided value cannot
* be URL Encoded
*/
public Query appendIf(final String name, final GitlabAccessLevel value) throws UnsupportedEncodingException {
if (value != null) {
......@@ -107,8 +112,7 @@ public class Query {
}
/**
* Returns a Query suitable for appending
* to a URI
* Returns a Query suitable for appending to a URI
*/
@Override
public String toString() {
......
......@@ -3,6 +3,7 @@ package org.gitlab.api.models;
import com.fasterxml.jackson.annotation.JsonProperty;
public class GitlabBranch {
public final static String URL = "/repository/branches/";
@JsonProperty("name")
......
......@@ -5,6 +5,7 @@ import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
public class GitlabBranchCommit {
public static String URL = "/users";
private String id;
......
......@@ -5,6 +5,7 @@ import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
public class GitlabMergeRequest {
public static final String URL = "/merge_requests";
private Integer id;
......
......@@ -5,6 +5,7 @@ import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
public class GitlabNamespace {
public static final String URL = "/groups";
private Integer id;
......
......@@ -10,7 +10,6 @@ public class GitlabProjectAccessLevel {
@JsonProperty("notification_level")
private int notificationLevel;
public GitlabAccessLevel getAccessLevel() {
return GitlabAccessLevel.fromAccessValue(accessLevel);
}
......@@ -19,7 +18,6 @@ public class GitlabProjectAccessLevel {
this.accessLevel = accessLevel.accessValue;
}
public int getNoficationLevel() {
return notificationLevel;
}
......@@ -28,5 +26,4 @@ public class GitlabProjectAccessLevel {
this.accessLevel = notificationLevel;
}
}
package org.gitlab.api.models;
public class GitlabRepositoryTree {
public static String URL = "/tree";
private String name;
private String type;
private String mode;
private String id;
public static String URL = "/tree";
public String getName() {
return name;
}
private String name;
private String type;
private String mode;
private String id;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getType() {
return type;
}
public void setName(String name) {
this.name = name;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public String getMode() {
return mode;
}
public void setType(String type) {
this.type = type;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getMode() {
return mode;
}
public String getId() {
return id;
}
public void setMode(String mode) {
this.mode = mode;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
package org.gitlab.api.models;
public class GitlabSSHKey {
public static String KEYS_URL = "/keys";
private Integer _id;
......
......@@ -5,6 +5,7 @@ import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
public class GitlabUser {
public static String URL = "/users";
public static String USERS_URL = "/users";
public static String USER_URL = "/user"; // for sudo based ops
......
......@@ -24,7 +24,6 @@ public class GitlabAPIT {
String rand = UUID.randomUUID().toString().replace("-", "").substring(0, 8);
@Before
public void setup() throws IOException {
api = GitlabAPI.connect(TEST_URL, TEST_TOKEN);
......@@ -62,7 +61,6 @@ public class GitlabAPIT {
String password = randVal("$%password");
GitlabUser gitUser = api.createUser(randVal("testEmail@gitlabapitest.com"),
password,
randVal("userName"),
......@@ -91,14 +89,11 @@ public class GitlabAPIT {
10 /* project limit does not come back on GET */, gitUser.getExternUid(), gitUser.getExternProviderName(),
gitUser.getBio(), gitUser.isAdmin(), gitUser.isCanCreateGroup());
GitlabUser postUpdate = api.getUserViaSudo(gitUser.getUsername());
assertNotNull(postUpdate);
assertEquals(postUpdate.getSkype(), "newSkypeId");
api.deleteUser(postUpdate.getId());
// expect a 404, but we have no access to it
......@@ -109,7 +104,6 @@ public class GitlabAPIT {
assertTrue(true); // expected
}
}
private String randVal(String postfix) {
......
......@@ -32,7 +32,6 @@ public class QueryTest {
Query query = new Query()
.append("p1", "v1");
query.append("p2", "v2");
query = query.append("p3", "v3");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment