package com.hubspot.blazar.resources; import java.util.List; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Optional; import com.hubspot.blazar.base.ModuleActivityPage; import com.hubspot.blazar.base.ModuleBuild; import com.hubspot.blazar.base.RepositoryBuild; import com.hubspot.blazar.data.service.BranchService; import com.hubspot.blazar.data.service.ModuleBuildService; import com.hubspot.blazar.data.service.ModuleService; import com.hubspot.blazar.data.service.RepositoryBuildService; import com.hubspot.jackson.jaxrs.PropertyFiltering; @Path("/builds/history") @Produces(MediaType.APPLICATION_JSON) public class BuildHistoryResource { private final RepositoryBuildService repositoryBuildService; private BranchService branchService; private ModuleService moduleService; private final ModuleBuildService moduleBuildService; private static final Logger LOG = LoggerFactory.getLogger(BuildHistoryResource.class); @Inject public BuildHistoryResource(RepositoryBuildService repositoryBuildService, BranchService branchService, ModuleService moduleService, ModuleBuildService moduleBuildService) { this.repositoryBuildService = repositoryBuildService; this.branchService = branchService; this.moduleService = moduleService; this.moduleBuildService = moduleBuildService; } @GET @Path("/branch/{id}") @PropertyFiltering public List<RepositoryBuild> getByBranch(@PathParam("id") int branchId) { return repositoryBuildService.getByBranch(branchId); } @GET @Path("/branch/{id}/build/{number}") @PropertyFiltering public Optional<RepositoryBuild> getByBranch(@PathParam("id") int branchId, @PathParam("number") int buildNumber) { branchService.checkBranchExists(branchId); return repositoryBuildService.getByBranchAndNumber(branchId, buildNumber); } @GET @Path("/module/{moduleId}") @PropertyFiltering public ModuleActivityPage getByModule(@PathParam("moduleId") int moduleId, @QueryParam("fromBuildNumber") Optional<Integer> maybeFromBuildNumber, @QueryParam("pageSize") Optional<Integer> maybePageSize) { moduleService.checkModuleExists(moduleId); return moduleBuildService.getModuleActivityPage(moduleId, maybeFromBuildNumber, maybePageSize); } @GET @Path("/module/{id}/build/{number}") @PropertyFiltering public Optional<ModuleBuild> getByModule(@PathParam("id") int moduleId, @PathParam("number") int buildNumber) { moduleService.checkModuleExists(moduleId); return moduleBuildService.getByModuleAndNumber(moduleId, buildNumber); } }