Releases: rethinkdb/rethinkdb-java
Releases · rethinkdb/rethinkdb-java
Version 2.4.4
This version attempts to fix partial sequences locking. Also adds a cause to the "Response pump is closed" exception.
Version 2.4.3
Version 2.4.3
This release brings in some internal refactoring to the driver, including a lot of method inlining and logic rewriting.
Breaking Changes ⚠️
No beaking changes.
New Features 🚀
- #42 Connection Builders now can generate db-urls.
- #42 Add support to java-only flags on db-url parsing/generation.
- #44 Implement run helpers, as well as
run*Asyncvariances of them. (Inspired by the RethinkDB C# Driver)runAtom<T>: Returns the atom value, possibly converted, or throws if not an atomrunGrouping<K, V>: Same asrunAtombut the result of the grouping operation is converted toMap<K, List<V>>runUnwrapping: ForcesunwrapListsbehaviour.
- #46 Asynchronous connect/reconnect/close methods.
Bug Fixes 🔧
- #48 Fixes bug on the grouped result pseudotype.
Improvements 👍
- #46 Support for daemon threads on the response pump.
- #46 Detaching response parsing from the read loop.
- #46 ReqlAst queries are more resource efficient by replacing empty OptArgs with null.
Other Changes 🗒️
- #42 [TESTS] Implements db-url tests.
- #43 [TESTS] Implement tests for the
Typesclass. - #46 Deprecated auth keys support.
- #48 [TESTS] Added tests for the run helpers.
Dependencies 📦
No dependency changes.
Version 2.4.2
Version 2.4.2
This release brings in some internal refactoring to the driver, including a lot of method inlining and logic rewriting.
Breaking Changes ⚠️
- #29, #32 Internal classes
Util,Converter,Cryptowere deleted. It should be noted that you weren't supposed to use them. - #29 The Internal mapper available at
RethinkDB.getInternalMapper()was moved.- If you need to access the mapper that reads and writes to the RethinkDB server, use
Internals.getInternalMapper().
- If you need to access the mapper that reads and writes to the RethinkDB server, use
New Features 🚀
- #26 New
Typesutility class. With it, you can replace the usage of a anonymousTypeReferencewith a method call.
Bug Fixes 🔧
- #31 The default connection socket implementation could hang even with timeout. This is now fixed.
Improvements 👍
- #26, #33 Replaced all usages of anonymous
TypeReferenceobjects inside the driver withTypesmethod calls.- This should be smaller and replace loading an entire class per reference with a few method calls.
- #27 Refactored
Converterclass code (#29 now merged insideInternals). - #29 Merged a lot of utility classes into a
Internalsclass. - #32 Refactored the
HandshakeProtocolclass.Cryptoclass was inlined intoHandshakeProtocolsubclasses, since they're the only classes to use it.
Other Changes 🗒️
- #30 [TESTS] Broken generated tests were removed. This makes Travis-CI more useful to the driver since now we can know if something breaks.
- #34 [TESTS] Refactored the test framework code. Unused framework code was commented.
Dependencies 📦
No dependency changes.
v2.4.1.1
Fixes POM "packaging" value, previous version may cause problems with any build tool.
(Note: Gradle doesn't seem to care)
v2.4.1 - Overhaul
Overhaul
This release brings in the two week effort to rewrite of driver, bringing in some breaking changes as well as new features and bug fixes.
Breaking Changes ⚠️
- #7
ReqlAst.rundoesn't returnTanymore.- Now it always returns
Result<T>, no matter if it's an atom or sequence.
- Now it always returns
- #7
Cursor<T>was removed.- Replaced with
Result<T>, which implements the same functionality.
- Replaced with
- #7
java.util.Optionalusage was replaced by@Nullableannotations.- Code that previously looked like
conn.db().get()orconn.db().orElse(null), will now look likeconn.db(). Use null checks (Objects.requireNotNull,if (value != null) { }) instead of the Optional API.
- Code that previously looked like
- #7
MapObjectnow has generics.- Raw usage of MapObject will require generics,
r.hashMap()will work as usual. GroupedResultalso now has generics.
- Raw usage of MapObject will require generics,
- #7
Connection.Builderdoesn't implementCloneableanymore.- The
clone()method was renamed tocopyOf(), if you need that functionality.
- The
- #7 Internal classes
Query,Response,Util,Cryptowere modified;SocketWrapper,Handshake,ScramAtributteswere deleted. It should be noted that you weren't supposed to use them. - #7 Annotation
@idwas moved fromcom.rethinkdb.convertertocom.rethinkdb.annotations.
New Features 🚀
- #7 New
Result<T>, the replacement class forCursor<T>ReqlAsr.run()always returnsResult<T>, which covers all result types and implementsIterator<T>,Iterable<T>andCloseable.toList(),collect(Collector),stream(),parallelStream(),first(),single(),forEach(Consumer)methods.- Those methods automatically close the Result, so you don't need to worry about closing it.
- Auto-closing: If
result.hasNext()return false, the result was automatically closd. - Fetch modes for partial sequences, which can be set on the connection or overwritten manually.
- If enabled, unwraps atom responses which are lists (
Result<List<T>>, with a single result, will be unwrapped toResult<T>, with multiple results) - Exposed Response's Profile to the Result
- Pending, leaking Results can be closed from the Connection
- #7 The connection and the response pump are now wrapped in an interface and custom factories can be set in the builder, with the default factories implemented at
DefaultConnectionFactory - #7 Added
r.pathspec(...)(Implements #16) - #7 Implemented
CoerceTypeto use oncoerceToinstead of strings. - #7 Added support for db-urls (Implements rethinkdb/rethinkdb#4101)
- #7 New
Connection.noreplyWaitAsync(), which returnsCompletableFuture<Void>, so you can asynchronous wait your noreply. - #7 New
Connection.server()andConnection.serverAsync()(Implements #14)
Bug Fixes 🔧
- #7 Fixes
Util.toReqlAst()wrongly resetting the remaining depth. - #7 Now
Util.toReqlAst()properly serializes primitive arrays and other Collections as well. - #22 [GRADLE] Fixed signing being required on Gradle
assembletask.
Improvements 👍
- #7
ReqlAstimprovements- Support for Jackson's
TypeReference<T>onReqlAst.run(), so you can pass anew TypeReference<Map<String,List<PersonalStuff>>>(){}instead of a poorMap.class - New
ReqlAst.runAsync(), which returnsCompletableFuture<Result<T>>, for all the async goodness. ReqlAst.toString()now pretty-prints the AST
- Support for Jackson's
- #7 Connection rewrite
- Use of ConnectionSocket and ResponsePump
- The handshake is entirely handled by the HandshakeProtocol class instead of the connection socket.
- #7 Documentation for most public methods
- #7 A lot of small performance improvements.
Other Changes 🗒️
- #7 [GRADLE] Added option to generate main files out of local json files.
- #7 [GRADLE] Added Bintray support.
- #19 [GRADLE] Replaced email address.
- #20 [GRADLE] Travis CI initial configuration.
- #24 [GRADLE] Added support for
confidential.propertiesfile.
