• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

evolvedbinary / elemental / 982

29 Apr 2025 08:34PM UTC coverage: 56.409% (+0.007%) from 56.402%
982

push

circleci

adamretter
[feature] Improve README.md badges

28451 of 55847 branches covered (50.94%)

Branch coverage included in aggregate %.

77468 of 131924 relevant lines covered (58.72%)

0.59 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

29.03
/exist-core/src/main/java/org/exist/util/crypto/digest/DigestInputStream.java
1
/*
2
 * Elemental
3
 * Copyright (C) 2024, Evolved Binary Ltd
4
 *
5
 * admin@evolvedbinary.com
6
 * https://www.evolvedbinary.com | https://www.elemental.xyz
7
 *
8
 * Use of this software is governed by the Business Source License 1.1
9
 * included in the LICENSE file and at www.mariadb.com/bsl11.
10
 *
11
 * Change Date: 2028-04-27
12
 *
13
 * On the date above, in accordance with the Business Source License, use
14
 * of this software will be governed by the Apache License, Version 2.0.
15
 *
16
 * Additional Use Grant: Production use of the Licensed Work for a permitted
17
 * purpose. A Permitted Purpose is any purpose other than a Competing Use.
18
 * A Competing Use means making the Software available to others in a commercial
19
 * product or service that: substitutes for the Software; substitutes for any
20
 * other product or service we offer using the Software that exists as of the
21
 * date we make the Software available; or offers the same or substantially
22
 * similar functionality as the Software.
23
 */
24
package org.exist.util.crypto.digest;
25

26
import java.io.FilterInputStream;
27
import java.io.IOException;
28
import java.io.InputStream;
29

30
/**
31
 * An input stream which calculates a digest of the
32
 * data that is read.
33
 *
34
 * @author <a href="mailto:adam@exist-db.org">Adam Retter</a>
35
 */
36
public class DigestInputStream extends FilterInputStream {
37

38
    private final StreamableDigest streamableDigest;
39

40
    /**
41
     * Creates an input stream filter which calculates a digest
42
     * as the underlying input stream is read.
43
     *
44
     * @param is the input stream
45
     * @param streamableDigest the streamable digest
46
     */
47
    public DigestInputStream(final InputStream is, final StreamableDigest streamableDigest) {
48
        super(is);
1✔
49
        this.streamableDigest = streamableDigest;
1✔
50
    }
1✔
51

52
    @Override
53
    public int read() throws IOException {
54
        int b = in.read();
×
55
        if (b != -1) {
×
56
            streamableDigest.update((byte)(b & 0xFF));
×
57
        }
58
        return b;
×
59
    }
60

61
    @Override
62
    public int read(final byte[] buf, final int off, int len) throws IOException {
63
        len = in.read(buf, off, len);
1✔
64
        if (len != -1) {
1✔
65
            streamableDigest.update(buf, off, len);
1✔
66
        }
67
        return len;
1✔
68
    }
69

70
    @Override
71
    public long skip(final long n) throws IOException {
72
        final byte[] buf = new byte[512];
×
73
        long total = 0;
×
74
        while (total < n) {
×
75
            long len = n - total;
×
76
            len = read(buf, 0, len < buf.length ? (int)len : buf.length);
×
77
            if (len == -1) {
×
78
                return total;
×
79
            }
80
            total += len;
×
81
        }
82
        return total;
×
83
    }
84

85
    public StreamableDigest getStreamableDigest() {
86
        return streamableDigest;
×
87
    }
88
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc