{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":43029271,"defaultBranch":"main","name":"digg","ownerLogin":"digipost","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-09-23T21:50:51.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1013853?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1722420246.0","currentOid":""},"activityList":{"items":[{"before":"5e5178b480bc865f0f010b9984986377fc13f348","after":"fb5d6c862b826785c2b296c2e91c07843dd0ae3b","ref":"refs/heads/fix-limited-stream-reading-too-far","pushedAt":"2024-08-02T12:18:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"More tests for LimitedInputStream","shortMessageHtmlLink":"More tests for LimitedInputStream"}},{"before":"ecb3a8eafa89b90d59e98c1e238957df413697b3","after":"5e5178b480bc865f0f010b9984986377fc13f348","ref":"refs/heads/fix-limited-stream-reading-too-far","pushedAt":"2024-08-01T15:19:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Ensure exception on chunk reaching beyond limit\n\nThis is a subtle behavior, but previous behavior has been that the first\ninvocation to read(byte[]) with an array that would be filled with more\nelements if not being limited, would actually throw an exception. This\ncommit preserves this behavior.\n\nOne might argue that the most beneficial way to handle reading the \"last\nchunk\" before reaching the limit would be to fill the the array with any\nremaining \"allowed\" bytes, and return an int indicating the amount of\nbytes propagated to the array, though this also indicates that the\nstream reached a normal last chunk of bytes, and one can assume next read\nwould return -1 (EOF).\n\nWhen setting up the LimitedInputStream to throw\nan exception if reading past the limit, this will ensure that\ncode which assume that they can read one chunk of bytes, and\nas long as the read succeeds, they should be given complete and well-formed\ndata. This would not be the case if the LimitedInputStream limits the\nbytes, and if it is set up to throw an exception, this exception must be\nthrown.\n\nIf the LimitedInputStream is set up to \"silently\" yield EOF on reaching\nthe limit, the read chunk is correctly chopped accordinly, and the next read will\nyield EOF as expected.","shortMessageHtmlLink":"Ensure exception on chunk reaching beyond limit"}},{"before":"ad4ecde89f805666b6e0c016c9e54a2d78863fb9","after":"ecb3a8eafa89b90d59e98c1e238957df413697b3","ref":"refs/heads/fix-limited-stream-reading-too-far","pushedAt":"2024-07-31T10:17:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Rewind BufferedInputStream when reaching limit\n\nIf using a LimitedInputStream for reading a certain amount of\n\"header\" data from an InputStream, then rewinding back to start in order\nto process the entire stream. E.g. to persist it somewhere.\n\nThe problem with this approach is that a LimitedInputStream can be\ninstructed to throw an exception if trying to read past the limit (i.e.\nit is expected to finish processing fairly early in the stream, and then\nend reading, and the limit is to protect spooling through a potentially\nhuge amount of data), and in the event of actually reaching the limit, a\nLimitedInputStream _must_ read at least one more byte in order to\ndetermine if the underlying stream is exhausted and yields -1, or if it\nhas more data, and followingly the LimitedInputStream must throw an\nexception.\n\nThis reeks of a design error in LimitedInputStream. Perhaps having the\nvariance of throwing an exception on reaching the \"end\" of a limited\nstream is flawed, and this issue demonstrates that. A LimitedInputStream\nintroduces a potential earlier EOF, and it should perhaps strictly treat\nit like that and yield -1 in any case it reaches the limit (i.e. the end).\nIf detecting if it actually reached the limit is required, it is a\nseparate concern, and must be done externally wrt. the InputStream.","shortMessageHtmlLink":"Rewind BufferedInputStream when reaching limit"}},{"before":null,"after":"ad4ecde89f805666b6e0c016c9e54a2d78863fb9","ref":"refs/heads/fix-limited-stream-reading-too-far","pushedAt":"2024-07-31T10:04:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Rewind BufferedInputStream when reaching limit\n\nTest using a LimitedInputStream for reading a certain amount of\n\"header\" data from an InputStream, then rewinding back to start in order\nto process the entire stream. E.g. to persist it somewhere.\n\nThe problem with this approach is that a LimitedInputStream can be\ninstructed to throw an exception if trying to read past the limit (i.e.\nit is expected to finish processing fairly early in the stream, and then\nend reading, and the limit is to protect spooling through a potentially\nhuge amount of data), and in the event of actually reaching the limit, a\nLimitedInputStream _must_ read at least one more byte in order to\ndetermine if the underlying stream is exhausted and yields -1, or if it\nhas more data, and followingly the LimitedInputStream must throw an\nexception.\n\nThis reeks of a design error in LimitedInputStream. Perhaps having the\nvariance of throwing an exception on reaching the \"end\" of a limited\nstream is flawed, and this issue demonstrates that. A LimitedInputStream\nintroduces a potential earlier EOF, and it should perhaps strictly treat\nit like that and yield -1 in any case it reaches the limit (i.e. the end).\nIf detecting if it actually reached the limit is required, it is a\nseparate concern, and must be done externally wrt. the InputStream.","shortMessageHtmlLink":"Rewind BufferedInputStream when reaching limit"}},{"before":"524aa4919a55f0fb44017a9fc4cbd51e726a9ab0","after":null,"ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T15:14:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"eivinhb","name":"Eivind Bergstøl","path":"/eivinhb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/383121?s=80&v=4"}},{"before":"65db4df7d73f864c5165d9551a939149603e5d15","after":"7390e5f7c51b3d17af8795be9c5b91f93386d312","ref":"refs/heads/main","pushedAt":"2024-06-13T15:14:36.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"eivinhb","name":"Eivind Bergstøl","path":"/eivinhb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/383121?s=80&v=4"},"commit":{"message":"Merge pull request #37 from digipost/inputstreamIterator\n\nAdd InputStreamIterator","shortMessageHtmlLink":"Merge pull request #37 from digipost/inputstreamIterator"}},{"before":"82851d75111deeea545faffe5c7d285e0ca41eb4","after":"524aa4919a55f0fb44017a9fc4cbd51e726a9ab0","ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T15:11:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Some finishing touches\n\nRethrow IOException as UncheckedIOException instead of introducing our\nown exception type.\n\nRemove redundant flag endOfStreamReached, it was actually never\ninspected, as the call to loadNextChunk was guarded by hasNext flag.\n\nSome kaizen refactoring of InputStreamIteratorTest.","shortMessageHtmlLink":"Some finishing touches"}},{"before":"d33ade5d31ba74e109c8d69bf8bb860d3ec7a074","after":"82851d75111deeea545faffe5c7d285e0ca41eb4","ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T14:22:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Add test for inputstreams with multiple entries\n\nBasically to verify that InputStreamIterator will not decide to close\nits wrapped InputStream.\n\nThe rationaly for this can be found in this arbitrarily chosen article:\nhttps://www.bekk.christmas/post/2019/13/good-ol'-io-streams","shortMessageHtmlLink":"Add test for inputstreams with multiple entries"}},{"before":"7059df4078041a51c41cf95b96d92d0c3bba0d0b","after":"d33ade5d31ba74e109c8d69bf8bb860d3ec7a074","ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T14:08:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Add InputStreamIterator\n\nThis iterator wrapps an InputStream and reads chunks\nfrom it returning the chunks in next() if i has more chunks.\n\nI added two constructors. One that takes the chunk size for bytes\nand one that uses DataSize. With DataSize bytes or kiloBytes\nonly should be used, since too big chunks would defeat the purpose\nof this iterator. Its better to read it fully to a byte[].\nDataSize uses long, and thus numbers bigger that Integer.MAX will\nresult in a failing iterator.","shortMessageHtmlLink":"Add InputStreamIterator"}},{"before":"ac241c9ad713674f11aa803184aaabf11cd39a9c","after":"7059df4078041a51c41cf95b96d92d0c3bba0d0b","ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T13:43:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"eivinhb","name":"Eivind Bergstøl","path":"/eivinhb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/383121?s=80&v=4"},"commit":{"message":"Add InputStreamIterator\n\nThis iterator wrapps an InputStream and reads chunks\nfrom it returning the chunks in next() if i has more chunks.\n\nI added two constructors. One that takes the chunk size for bytes\nand one that uses DataSize. With DataSize bytes or kiloBytes\nonly should be used, since too big chunks would defeat the purpose\nof this iterator. Its better to read it fully to a byte[].\nDataSize uses long, and thus numbers bigger that Integer.MAX will\nresult in a failing iterator.","shortMessageHtmlLink":"Add InputStreamIterator"}},{"before":"34a72c29765201a2e5247fc6c924a812117fef0c","after":"ac241c9ad713674f11aa803184aaabf11cd39a9c","ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T12:56:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"eivinhb","name":"Eivind Bergstøl","path":"/eivinhb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/383121?s=80&v=4"},"commit":{"message":"Add InputStreamIterator\n\nThis iterator wrapps an InputStream and reads chunks\nfrom it returning the chunks in next() if i has more chunks.\n\nI added two constructors. One that takes the chunk size for bytes\nand one that uses DataSize. With DataSize bytes or kiloBytes\nonly should be used, since too big chunks would defeat the purpose\nof this iterator. Its better to read it fully to a byte[].\nDataSize uses long, and thus numbers bigger that Integer.MAX will\nresult in a failing iterator.","shortMessageHtmlLink":"Add InputStreamIterator"}},{"before":null,"after":"34a72c29765201a2e5247fc6c924a812117fef0c","ref":"refs/heads/inputstreamIterator","pushedAt":"2024-06-13T10:32:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"eivinhb","name":"Eivind Bergstøl","path":"/eivinhb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/383121?s=80&v=4"},"commit":{"message":"Add InputStreamIterator\n\nThis iterator wrapps an InputStream and reads chunks\nfrom it returning the chunks in next() if i has more chunks.","shortMessageHtmlLink":"Add InputStreamIterator"}},{"before":"e951504d85374e5f42e84e8f4f3c71d6ab3b05df","after":null,"ref":"refs/heads/nonemptylist-copyof-loosen-typing","pushedAt":"2024-02-20T16:27:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"}},{"before":"d6c3f994cabf770163560a21d675a2f25f44950a","after":"65db4df7d73f864c5165d9551a939149603e5d15","ref":"refs/heads/main","pushedAt":"2024-02-20T16:27:40.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Merge pull request #36 from digipost/nonemptylist-copyof-loosen-typing\n\nNonEmptyList copy-constructors accept Collection","shortMessageHtmlLink":"Merge pull request #36 from digipost/nonemptylist-copyof-loosen-typing"}},{"before":"e573b9fd3e4eed80a146de8b14eef7109d044a5c","after":"e951504d85374e5f42e84e8f4f3c71d6ab3b05df","ref":"refs/heads/nonemptylist-copyof-loosen-typing","pushedAt":"2024-02-20T15:59:28.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Upgrade test-dependencies","shortMessageHtmlLink":"Upgrade test-dependencies"}},{"before":"40ed4f45fdd73d733fb83eeec5d61febe12b054b","after":"e573b9fd3e4eed80a146de8b14eef7109d044a5c","ref":"refs/heads/nonemptylist-copyof-loosen-typing","pushedAt":"2024-02-20T15:32:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Upgrade Maven plugins","shortMessageHtmlLink":"Upgrade Maven plugins"}},{"before":null,"after":"40ed4f45fdd73d733fb83eeec5d61febe12b054b","ref":"refs/heads/nonemptylist-copyof-loosen-typing","pushedAt":"2024-02-20T15:19:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Allow copy-constructors applied to Collections\n\nInstead of requiring a List, which is unnecessary strict. This aligns\nwith the JDK copy constructors for lists:\n\npublic ArrayList(Collection c)\nhttps://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-java.util.Collection-\n\nList.copyOf\nhttps://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html#copyOf(java.util.Collection)","shortMessageHtmlLink":"Allow copy-constructors applied to Collections"}},{"before":"8086ac416e97498890607086ae202558bf2862bf","after":"9ec20f0e1b2edcdce82346d313260922b1d4bf9a","ref":"refs/heads/stream-compound-search","pushedAt":"2024-01-05T23:00:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Add support for non-trivial Stream searching","shortMessageHtmlLink":"Add support for non-trivial Stream searching"}},{"before":"a924b73a9c60311d8664e6ba26a50730309a8299","after":null,"ref":"refs/heads/fix-build","pushedAt":"2024-01-05T22:57:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"}},{"before":"c05212a1df7bfd96c7161b06bf765eca66890397","after":"d6c3f994cabf770163560a21d675a2f25f44950a","ref":"refs/heads/main","pushedAt":"2024-01-05T22:57:11.000Z","pushType":"pr_merge","commitsCount":10,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Merge pull request #35 from digipost/fix-build\n\nFix build","shortMessageHtmlLink":"Merge pull request #35 from digipost/fix-build"}},{"before":"a65fc06ebd6220d07b7333288c80eb373f14a877","after":"a924b73a9c60311d8664e6ba26a50730309a8299","ref":"refs/heads/fix-build","pushedAt":"2024-01-05T22:50:50.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Suppress varargs lint warns\n\nThe remaining lint warns (non-serializable assignment to non-transient\nfields, ambiguities) are relevant, but not trivially fixable without\nbreaking API compatibility.","shortMessageHtmlLink":"Suppress varargs lint warns"}},{"before":"26f36b4de8beca2f61820d732fdd01b356ad5c49","after":"a65fc06ebd6220d07b7333288c80eb373f14a877","ref":"refs/heads/fix-build","pushedAt":"2024-01-05T21:35:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"A little GitHub Actions workflow-fu","shortMessageHtmlLink":"A little GitHub Actions workflow-fu"}},{"before":"1c7a74748552284a777a33b2ddda040cac1f9d8c","after":"26f36b4de8beca2f61820d732fdd01b356ad5c49","ref":"refs/heads/fix-build","pushedAt":"2024-01-05T21:31:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"A little GitHub Actions workflow-fu","shortMessageHtmlLink":"A little GitHub Actions workflow-fu"}},{"before":"62393167c3f977d39ab8701f99d5e9291dd43fff","after":"1c7a74748552284a777a33b2ddda040cac1f9d8c","ref":"refs/heads/fix-build","pushedAt":"2024-01-05T21:21:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"A little GitHub Actions workflow-fu","shortMessageHtmlLink":"A little GitHub Actions workflow-fu"}},{"before":null,"after":"62393167c3f977d39ab8701f99d5e9291dd43fff","ref":"refs/heads/fix-build","pushedAt":"2024-01-05T15:40:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Update GitHub build workflow","shortMessageHtmlLink":"Update GitHub build workflow"}},{"before":"ca3a5a75388014f107082b9eddb90b8346ec8b7d","after":"8086ac416e97498890607086ae202558bf2862bf","ref":"refs/heads/stream-compound-search","pushedAt":"2024-01-05T15:36:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Update GitHub build workflow","shortMessageHtmlLink":"Update GitHub build workflow"}},{"before":"5c3452a2a0c0c9e92861132e17c780df3b9b21f6","after":"ca3a5a75388014f107082b9eddb90b8346ec8b7d","ref":"refs/heads/stream-compound-search","pushedAt":"2024-01-05T15:07:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Precedence to equalsverifier for dep-resolving\n\nIn order to get a more recent release of bytebuddy which supports being\nused on Java 21. Mockito depends on older version, but we can not\nupgrade Mockito as long as we want to build on Java 8.","shortMessageHtmlLink":"Precedence to equalsverifier for dep-resolving"}},{"before":"e4ff9d2fc895c0887ccab2e404f28df49384737e","after":"5c3452a2a0c0c9e92861132e17c780df3b9b21f6","ref":"refs/heads/stream-compound-search","pushedAt":"2024-01-05T14:58:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Update GitHub build workflow","shortMessageHtmlLink":"Update GitHub build workflow"}},{"before":"501000dc2a78381a5c428048c6293a1f735b2c61","after":"e4ff9d2fc895c0887ccab2e404f28df49384737e","ref":"refs/heads/stream-compound-search","pushedAt":"2024-01-05T14:49:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Update GitHub build workflow","shortMessageHtmlLink":"Update GitHub build workflow"}},{"before":"f700f768d67cc74165b20d1c74501a22ae86ad37","after":"501000dc2a78381a5c428048c6293a1f735b2c61","ref":"refs/heads/stream-compound-search","pushedAt":"2024-01-05T14:16:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"runeflobakk","name":"Rune Flobakk","path":"/runeflobakk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/174823?s=80&v=4"},"commit":{"message":"Fix concurrency test","shortMessageHtmlLink":"Fix concurrency test"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEkCNjcgA","startCursor":null,"endCursor":null}},"title":"Activity · digipost/digg"}