use of sonia.scm.repository.Repository in project scm-review-plugin by scm-manager.
the class BranchDetailsEnricher method enrich.
@Override
public void enrich(HalEnricherContext context, HalAppender appender) {
Repository repository = context.oneRequireByType(Repository.class);
String branchName = context.oneRequireByType(BranchDetails.class).getBranchName();
if (service.supportsPullRequests(repository)) {
List<HalRepresentation> pullRequestDtos = getPullRequestDtos(repository, branchName);
appender.appendEmbedded("pullRequests", pullRequestDtos);
}
}
use of sonia.scm.repository.Repository in project scm-review-plugin by scm-manager.
the class RepositoryLinkEnricher method enrich.
@Override
public void enrich(HalEnricherContext context, HalAppender appender) {
Repository repository = context.oneRequireByType(Repository.class);
if (pullRequestService.supportsPullRequests(repository)) {
if (mayRead(repository)) {
LinkBuilder linkBuilder = new LinkBuilder(scmPathInfoStore.get().get(), PullRequestRootResource.class);
appender.appendLink("pullRequest", linkBuilder.method("getAll").parameters(repository.getNamespace(), repository.getName()).href());
}
if (mayCreate(repository)) {
LinkBuilder linkBuilder = new LinkBuilder(scmPathInfoStore.get().get(), PullRequestRootResource.class);
appender.appendLink("pullRequestCheck", linkBuilder.method("check").parameters(repository.getNamespace(), repository.getName()).href());
}
if (mayConfigure(repository) && !configService.getGlobalPullRequestConfig().isDisableRepositoryConfiguration()) {
LinkBuilder linkBuilder = new LinkBuilder(scmPathInfoStore.get().get(), RepositoryConfigResource.class);
appender.appendLink("pullRequestConfig", linkBuilder.method("getRepositoryConfig").parameters(repository.getNamespace(), repository.getName()).href());
}
if (isWorkflowEngineConfigurable(repository)) {
LinkBuilder linkBuilder = new LinkBuilder(scmPathInfoStore.get().get(), RepositoryEngineConfigResource.class);
appender.appendLink("workflowConfig", linkBuilder.method("getRepositoryEngineConfig").parameters(repository.getNamespace(), repository.getName()).href());
}
}
}
use of sonia.scm.repository.Repository in project scm-review-plugin by scm-manager.
the class CommentResource method getReply.
@GET
@Path("replies/{replyId}")
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Pull request comment reply", description = "Returns a single pull request comment reply.", tags = "Pull Request Comment")
@ApiResponse(responseCode = "200", description = "success", content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ReplyDto.class)))
@ApiResponse(responseCode = "401", description = "not authenticated / invalid credentials")
@ApiResponse(responseCode = "403", description = "not authorized, the current user does not have the \"commentPullRequest\" privilege")
@ApiResponse(responseCode = "404", description = "not found, a reply with the given id is not available for this pull request")
@ApiResponse(responseCode = "500", description = "internal server error", content = @Content(mediaType = VndMediaType.ERROR_TYPE, schema = @Schema(implementation = ErrorDto.class)))
public ReplyDto getReply(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("pullRequestId") String pullRequestId, @PathParam("commentId") String commentId, @PathParam("replyId") String replyId, @QueryParam("sourceRevision") String expectedSourceRevision, @QueryParam("targetRevision") String expectedTargetRevision) {
checkRevision(branchRevisionResolver, namespace, name, pullRequestId, expectedSourceRevision, expectedTargetRevision);
Repository repository = repositoryResolver.resolve(new NamespaceAndName(namespace, name));
BranchRevisionResolver.RevisionResult revisions = branchRevisionResolver.getRevisions(namespace, name, pullRequestId);
Comment comment = service.get(namespace, name, pullRequestId, commentId);
Reply reply = service.getReply(namespace, name, pullRequestId, commentId, replyId);
return replyMapper.map(reply, repository, pullRequestId, comment, revisions);
}
use of sonia.scm.repository.Repository in project scm-review-plugin by scm-manager.
the class CommentRootResource method getAll.
@GET
@Path("")
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Get all pull request comments", description = "Returns all pull request comments.", tags = "Pull Request Comment", operationId = "review_get_comments")
@ApiResponse(responseCode = "200", description = "success", content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = HalRepresentation.class)))
@ApiResponse(responseCode = "401", description = "not authenticated / invalid credentials")
@ApiResponse(responseCode = "403", description = "not authorized, the current user does not have the \"commentPullRequest\" privilege")
@ApiResponse(responseCode = "500", description = "internal server error", content = @Content(mediaType = VndMediaType.ERROR_TYPE, schema = @Schema(implementation = ErrorDto.class)))
public HalRepresentation getAll(@Context UriInfo uriInfo, @PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("pullRequestId") String pullRequestId) {
PullRequestResourceLinks resourceLinks = new PullRequestResourceLinks(uriInfo::getBaseUri);
Repository repository = repositoryResolver.resolve(new NamespaceAndName(namespace, name));
PullRequest pullRequest = pullRequestService.get(namespace, name, pullRequestId);
BranchRevisionResolver.RevisionResult revisions = branchRevisionResolver.getRevisions(new NamespaceAndName(namespace, name), pullRequest);
List<Comment> list = service.getAll(namespace, name, pullRequestId);
List<CommentDto> dtoList = list.stream().map(comment -> mapper.map(comment, repository, pullRequestId, service.possibleTransitions(namespace, name, pullRequestId, comment.getId()), revisions)).collect(Collectors.toList());
boolean permission = PermissionCheck.mayComment(repository);
return createCollection(permission, resourceLinks.pullRequestComments().all(namespace, name, pullRequestId), resourceLinks.pullRequestComments().create(namespace, name, pullRequestId, revisions), dtoList, "pullRequestComments");
}
use of sonia.scm.repository.Repository in project scm-review-plugin by scm-manager.
the class CommentIndexer method handleEvent.
@Subscribe
public void handleEvent(CommentEvent event) {
Comment comment = event.getItem();
PullRequest pullRequest = event.getPullRequest();
Repository repository = event.getRepository();
if (event.getEventType() == HandlerEventType.CREATE || event.getEventType() == HandlerEventType.MODIFY) {
updateIndexedComment(repository, pullRequest, IndexedComment.transform(pullRequest.getId(), comment));
} else if (event.getEventType() == HandlerEventType.DELETE) {
Comment deletedComment = event.getOldItem();
searchEngine.forType(IndexedComment.class).update(index -> index.delete().byId(createCommentId(deletedComment.getId(), pullRequest.getId(), repository.getId())));
}
}
Aggregations