Implement Projects.list() method

Change-Id: I9d4d0b746e5b8cdfe7dfa289411742d2bcf9f4a4
This commit is contained in:
Urs Wolfer 2014-05-22 22:07:21 +02:00
parent eeca707cc7
commit c646a8c5ed
2 changed files with 75 additions and 1 deletions

View File

@ -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());
}
}

View File

@ -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());
}
}