使用Bitbucket API方法从InputStream读取内容

时间:2018-09-25 12:30:05

标签: java git bitbucket inputstream bitbucket-api

我正在尝试使用bitbucket api读取预接收钩子的文件。关键是,我需要检查一些具体的文件和内容,以确认或拒绝提交。您可以在此处查看代码:

xandareva/lpc-arm

问题是,我从 BulkContentCallback request.getRefChanges().stream() .filter(change -> change.getRef().getId().equalsIgnoreCase("refs/heads/master")) .forEach(refChange -> { scmService.getBulkContentCommandFactory(request.getRepository()) .contents(new BulkContentCommandParameters.Builder(refChange.getToHash()) .sinceCommitId(refChange.getFromHash()) .build(), new BulkContentCallback() { @Override public void onFile(@Nonnull BulkFile file, @Nonnull InputStream content) { this.processFile(file, content); } private void processFile(BulkFile file, InputStream content) { log.info("Streaming file {} with content id {}, file: {}, size: {}", file.getPath(), file.getContentId(), file.getSize()); try { StringWriter writer = new StringWriter(); //IOUtils.copy(content, writer, "UTF-8"); log.info("file content: {}", readSB(content)); } catch (IOException e) { // TODO Auto-generated catch block log.error(e.getMessage(), e); } } }).call();}); 方法获得的InputStream就像只是给我文件的第一行。我已经尝试过在readSB方法中使用不同的实现,例如 InputStream的第一个实现

onFile

InputStream第二实施

    StringBuilder textBuilder = new StringBuilder();
    try (Reader reader = new BufferedReader(new InputStreamReader
              (inputStream, Charset.forName(StandardCharsets.UTF_8.name())))) {
                int c = 0;
                while ((c = reader.read()) != -1) {
                    textBuilder.append((char) c);
                }
            }

    return textBuilder.toString();

InputStream第三实施

 ByteArrayOutputStream buffer = new ByteArrayOutputStream();
 int nRead;
 byte[] data = new byte[1024];
 while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
            buffer.write(data, 0, nRead);
        }

 buffer.flush();
 byte[] byteArray = buffer.toByteArray();

 String text = new String(byteArray, StandardCharsets.UTF_8);

 return text;

但是结果总是相同的,只是打印第一行。

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

在Bitbucket版本 5.13.0 和更低版本中被检测为 bug (在 5.10.1 和更高版本中进行了测试,无法正常工作) 。我刚刚更新为 5.14.0 ,并且可以正常工作。

希望有帮助。