ActiveJ v4.0 was released Feb 16, 2021 (see on Maven). This release included major refactoring of exceptions. This release also introduces asynchronous high-performance ActiveJ Redis client. Other components were optimized for the performance.
- Exceptions refactoring
- All public constant exceptions were removed/hidden.
- StacklessException was removed. Classes that extended StacklessException now extend regular Exception,
some of them are still stackless. Stackless exceptions provide the ability to include stack trace for debugging purposes.
This can be achieved by setting exception's ApplicationSetting
withStackTrace
to true. - Renamed exceptions:
- ParseException -> MalformedDataException
- HttpException -> HttpError (HttpException is now a parent class for other HTTP exceptions)
- OTTransformException -> TransformException
- OTNoCommitException -> NoCommitException
- Added new exceptions for top-level components, etc.
- Introduced asynchronous lightweight high-performance ActiveJ Redis Client with extendable API. Examples and benchmarks for Redis client were added as well.
- Optimizations in network code, HTTP processing (especially in pipelining mode), and data serialization.
- Renamed ByteBufQueue -> ByteBufs.
Added byte index to ByteScanner, refactored
ByteBufs::scanBytes
. AddedByteBufs::consumeBytes
method that works likeByteBufs::scanBytes
, but actually consumes scanned bytes/bufs. - Removed StreamMapper, now stream mapping can be achieved via
StreamFilter.mapper(Function<I, O>)
- Removed Transducer, StreamTransducer, AbstractStreamReducer, StreamMerger classes. Merging of streams can be done via StreamReducer
- Renamed MergeSortReducer -> MergeReducer, MergeDistinctReducer -> DeduplicateReducer
- Added ability to obtain irrelevant chunks from Cube
by calling
Cube::getIrrelevantChunks
. Irrelevant chunks can be cleaned up by callingCubeConsolidationController::cleanupIrrelevantChunks
. - Added JUnit test rule ClassBuilderConstantsRule which validates that all of the ClassBuilder's static constants are cleared after test passes.
- Renamed most classes/methods that contained parse to contain decode instead.