Skip to content

Releases: rethinkdb/rethinkdb-java

Version 2.4.4

04 Jun 16:31
01b17f8
Compare
Choose a tag to compare

This version attempts to fix partial sequences locking. Also adds a cause to the "Response pump is closed" exception.

Version 2.4.3

19 May 14:56
a25c392
Compare
Choose a tag to compare

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 atom
    • runGrouping<K, V>: Same as runAtom but the result of the grouping operation is converted to Map<K, List<V>>
    • runUnwrapping: Forces unwrapLists 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

29 Mar 02:24
f1e1ddb
Compare
Choose a tag to compare

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().

New Features 🚀

  • #26 New Types utility class. With it, you can replace the usage of a anonymous TypeReference 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 with Types 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 inside Internals).
  • #29 Merged a lot of utility classes into a Internals class.
  • #32 Refactored the HandshakeProtocol class.
    • Crypto class was inlined into HandshakeProtocol 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

04 Mar 17:20
Compare
Choose a tag to compare

Fixes POM "packaging" value, previous version may cause problems with any build tool.
(Note: Gradle doesn't seem to care)

v2.4.1 - Overhaul

04 Mar 17:17
c312908
Compare
Choose a tag to compare

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 return T anymore.
    • Now it always returns Result<T>, no matter if it's an atom or sequence.
  • #7 Cursor<T> was removed.
    • Replaced with Result<T>, which implements the same functionality.
  • #7 java.util.Optional usage was replaced by @Nullable annotations.
    • Code that previously looked like conn.db().get() or conn.db().orElse(null), will now look like conn.db(). Use null checks (Objects.requireNotNull, if (value != null) { }) instead of the Optional API.
  • #7 MapObject now has generics.
    • Raw usage of MapObject will require generics, r.hashMap() will work as usual.
    • GroupedResult also now has generics.
  • #7 Connection.Builder doesn't implement Cloneable anymore.
    • The clone() method was renamed to copyOf(), if you need that functionality.
  • #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 from com.rethinkdb.converter to com.rethinkdb.annotations.

New Features 🚀

  • #7 New Result<T>, the replacement class for Cursor<T>
    • ReqlAsr.run() always returns Result<T>, which covers all result types and implements Iterator<T>, Iterable<T> and Closeable.
    • 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 to Result<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 on coerceTo instead of strings.
  • #7 Added support for db-urls (Implements rethinkdb/rethinkdb#4101)
  • #7 New Connection.noreplyWaitAsync(), which returns CompletableFuture<Void>, so you can asynchronous wait your noreply.
  • #7 New Connection.server() and Connection.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> on ReqlAst.run(), so you can pass a new TypeReference<Map<String,List<PersonalStuff>>>(){} instead of a poor Map.class
    • New ReqlAst.runAsync(), which returns CompletableFuture<Result<T>>, for all the async goodness.
    • ReqlAst.toString() now pretty-prints the AST
  • #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.

Dependencies 📦

  • #7 Removed json-simple dependency (Jackson provides all functionality)
  • #7 Bumped jackson-databind to 2.10.2
  • #7 Added annotations by JetBrains
  • #7 Bumped slf4j-api to 1.7.30
  • #7 Bumped concurrentunit (test dependency) to 0.4.6
  • #7 Bumped logback-classic (test dependency) to 1.2.3

v2.4.0 - Night Of The (Late) Living Dead

15 Feb 13:27
Compare
Choose a tag to compare

RethinkDB 2.4.0: Night Of The Living Dead

This is the first release of the Java driver in years, and sadly so much stuff happened that we don't have a way to do a changelog. We promise that the next version will have one.