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*Async
variances 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 asrunAtom
but the result of the grouping operation is converted toMap<K, List<V>>
runUnwrapping
: ForcesunwrapLists
behaviour.
- #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
Types
class. - #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
,Crypto
were 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
Types
utility class. With it, you can replace the usage of a anonymousTypeReference
with 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
TypeReference
objects inside the driver withTypes
method calls.- This should be smaller and replace loading an entire class per reference with a few method calls.
- #27 Refactored
Converter
class code (#29 now merged insideInternals
). - #29 Merged a lot of utility classes into a
Internals
class. - #32 Refactored the
HandshakeProtocol
class.Crypto
class was inlined intoHandshakeProtocol
subclasses, 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.run
doesn't returnT
anymore.- 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.Optional
usage was replaced by@Nullable
annotations.- 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
MapObject
now has generics.- Raw usage of MapObject will require generics,
r.hashMap()
will work as usual. GroupedResult
also now has generics.
- Raw usage of MapObject will require generics,
- #7
Connection.Builder
doesn't implementCloneable
anymore.- The
clone()
method was renamed tocopyOf()
, if you need that functionality.
- The
- #7 Internal classes
Query
,Response
,Util
,Crypto
were modified;SocketWrapper
,Handshake
,ScramAtributtes
were deleted. It should be noted that you weren't supposed to use them. - #7 Annotation
@id
was moved fromcom.rethinkdb.converter
tocom.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
CoerceType
to use oncoerceTo
instead 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
assemble
task.
Improvements 👍
- #7
ReqlAst
improvements- 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.properties
file.