Implement Projects.list() method
Change-Id: I9d4d0b746e5b8cdfe7dfa289411742d2bcf9f4a4
This commit is contained in:
parent
eeca707cc7
commit
c646a8c5ed
@ -15,11 +15,14 @@
|
||||
package com.google.gerrit.acceptance.api.project;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.NoHttpd;
|
||||
import com.google.gerrit.extensions.api.projects.BranchInput;
|
||||
import com.google.gerrit.extensions.api.projects.ProjectInput;
|
||||
import com.google.gerrit.extensions.common.ProjectInfo;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
|
||||
@ -27,6 +30,7 @@ import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@NoHttpd
|
||||
public class ProjectIT extends AbstractDaemonTest {
|
||||
@ -71,4 +75,45 @@ public class ProjectIT extends AbstractDaemonTest {
|
||||
.branch("foo")
|
||||
.create(new BranchInput());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void listProjects() throws Exception {
|
||||
List<ProjectInfo> initialProjects = gApi.projects().list().get();
|
||||
|
||||
gApi.projects().name("foo").create();
|
||||
gApi.projects().name("bar").create();
|
||||
|
||||
List<ProjectInfo> allProjects = gApi.projects().list().get();
|
||||
assertEquals(initialProjects.size() + 2, allProjects.size());
|
||||
|
||||
List<ProjectInfo> projectsWithDescription = gApi.projects().list()
|
||||
.withDescription(true)
|
||||
.get();
|
||||
assertNotNull(projectsWithDescription.get(0).description);
|
||||
|
||||
List<ProjectInfo> projectsWithoutDescription = gApi.projects().list()
|
||||
.withDescription(false)
|
||||
.get();
|
||||
assertNull(projectsWithoutDescription.get(0).description);
|
||||
|
||||
List<ProjectInfo> noMatchingProjects = gApi.projects().list()
|
||||
.withPrefix("fox")
|
||||
.get();
|
||||
assertEquals(0, noMatchingProjects.size());
|
||||
|
||||
List<ProjectInfo> matchingProject = gApi.projects().list()
|
||||
.withPrefix("fo")
|
||||
.get();
|
||||
assertEquals(1, matchingProject.size());
|
||||
|
||||
List<ProjectInfo> limitOneProject = gApi.projects().list()
|
||||
.withLimit(1)
|
||||
.get();
|
||||
assertEquals(1, limitOneProject.size());
|
||||
|
||||
List<ProjectInfo> startAtOneProjects = gApi.projects().list()
|
||||
.withStart(1)
|
||||
.get();
|
||||
assertEquals(allProjects.size() - 1, startAtOneProjects.size());
|
||||
}
|
||||
}
|
||||
|
@ -14,23 +14,32 @@
|
||||
|
||||
package com.google.gerrit.server.api.projects;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gerrit.extensions.api.projects.ProjectApi;
|
||||
import com.google.gerrit.extensions.api.projects.Projects;
|
||||
import com.google.gerrit.extensions.common.ProjectInfo;
|
||||
import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
|
||||
import com.google.gerrit.server.project.ListProjects;
|
||||
import com.google.gerrit.server.project.ProjectsCollection;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
class ProjectsImpl extends Projects.NotImplemented implements Projects {
|
||||
private final ProjectsCollection projects;
|
||||
private final ProjectApiImpl.Factory api;
|
||||
private final Provider<ListProjects> listProvider;
|
||||
|
||||
@Inject
|
||||
ProjectsImpl(ProjectsCollection projects, ProjectApiImpl.Factory api) {
|
||||
ProjectsImpl(ProjectsCollection projects,
|
||||
ProjectApiImpl.Factory api,
|
||||
Provider<ListProjects> listProvider) {
|
||||
this.projects = projects;
|
||||
this.api = api;
|
||||
this.listProvider = listProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -43,4 +52,24 @@ class ProjectsImpl extends Projects.NotImplemented implements Projects {
|
||||
throw new RestApiException("Cannot retrieve project");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ListRequest list() {
|
||||
return new ListRequest() {
|
||||
@Override
|
||||
public List<ProjectInfo> get() throws RestApiException {
|
||||
return list(this);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private List<ProjectInfo> list(ListRequest request) throws RestApiException {
|
||||
ListProjects lp = listProvider.get();
|
||||
lp.setShowDescription(request.getDescription());
|
||||
lp.setLimit(request.getLimit());
|
||||
lp.setStart(request.getStart());
|
||||
lp.setMatchPrefix(request.getPrefix());
|
||||
|
||||
return ImmutableList.copyOf(lp.apply().values());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user