@Override public List<Record> apply(RevisionResource rsrc, Input input) throws AuthException, OrmException { if (input == null) { input = new Input(); } if (input.rule != null && !rules.isProjectRulesEnabled()) { throw new AuthException("project rules are disabled"); } input.filters = MoreObjects.firstNonNull(input.filters, filters); SubmitRuleEvaluator evaluator = new SubmitRuleEvaluator(changeDataFactory.create(db.get(), rsrc.getControl())); List<SubmitRecord> records = evaluator .setPatchSet(rsrc.getPatchSet()) .setLogErrors(false) .setSkipSubmitFilters(input.filters == Filters.SKIP) .setRule(input.rule) .evaluate(); List<Record> out = Lists.newArrayListWithCapacity(records.size()); AccountLoader accounts = accountInfoFactory.create(true); for (SubmitRecord r : records) { out.add(new Record(r, accounts)); } if (!out.isEmpty()) { out.get(0).prologReductionCount = evaluator.getReductionsConsumed(); } accounts.fill(); return out; }
@Override public Response<CommentInfo> apply(RevisionResource rsrc, DraftInput in) throws RestApiException, UpdateException, OrmException { if (Strings.isNullOrEmpty(in.path)) { throw new BadRequestException("path must be non-empty"); } else if (in.message == null || in.message.trim().isEmpty()) { throw new BadRequestException("message must be non-empty"); } else if (in.line != null && in.line < 0) { throw new BadRequestException("line must be >= 0"); } else if (in.line != null && in.range != null && in.line != in.range.endLine) { throw new BadRequestException("range endLine must be on the same line as the comment"); } try (BatchUpdate bu = updateFactory.create(db.get(), rsrc.getProject(), rsrc.getUser(), TimeUtil.nowTs())) { Op op = new Op(rsrc.getPatchSet().getId(), in); bu.addOp(rsrc.getChange().getId(), op); bu.execute(); return Response.created( commentJson.get().setFillAccounts(false).newCommentFormatter().format(op.comment)); } }
protected Iterable<PatchLineComment> listComments(RevisionResource rsrc) throws OrmException { return db.get().patchComments().publishedByPatchSet(rsrc.getPatchSet().getId()); }