We use Semantic Versioning
Backward binary compatibility is ensured by mima
See also mima-filters
- Use com.couchbase.client:scala-client:1.2.3 instead of com.couchbase.client:java-client 2.7.22
See Migrating from SDK2 to SDK3 API And Couchbase Scala SDK - Note: In sdk3, couchbase use Reactor instead of RxJava. So couchbase-scala 10.x also depends on Reactor instead of RxJava.
- Don't support couchbase 4.x
- Don't support bucket-level passwords
You need set config
com.sandinh.couchbase.{user, password}
and give the user corresponding roles DocumentDoesNotExistException
->DocumentNotFoundException
- Deprecated
ScalaBucket
. NowScalaBucket
is aliased toCBBucket
- In sdk 3,
Document
class is removed and the returned value is nowResult
.CBBucket.get[D <: Document[_]](id: String)(implicit tag: ClassTag[D]): Future[D]
is changed to
get(id: String, options: GetOptions = GetOptions()): Future[GetResult]
- Similar to other methods such as
insert, append, prepend,..
getT[T](id: String)(implicit c: Class[_ <: Document[T]]): Future[T]
implicit params change: Instead ofClass[_ <: Document[T]]
, we now needJsonDeserializer[T], WeakTypeTag[T], ClassTag[T]
. Note: Don't need the implicitWeakTypeTag[T]
if this change is merged.
- Deprecated
asJava
ofCBCluster
,CBBucket
. Pls useunderlying
- Use
implicit ec: ExecutionContext
param instead ofExecutionContext.Implicits.global
in:CBBucket.{getJsT, getT}
- Remove the deprecated
CBCluster.getOrElseT
- Remove
StrCao, StrCao1, StrCao2, WithCaoKey1, WithCaoKey2, rx.Implicits, document.*, transcoder.*
- Compatible with 9.0.0 except 9.0.0.backward.excludes
- Update com.couchbase.client:java-client:2.7.20 -> 2.7.22
- Update scala-collection-compat:2.5.0 -> 2.6.0
- (scala3) Update scala 3.0.2 -> 3.1.0
- Break compatible with v8.x but binary compatible with v7.x except 7.4.5.backward.excludes
Some source change may need if you use JsCao1 or StrCao1 or WithCaoKey1
But if compile success then binary compatibility are ensured. - Add support for scala 2.13 & scala3
couchbase-scala
is built against scala 2.11.12, 2.12.15, 2.13.6, 3.0.2
- Add support for playframework 2.8
couchbase-play
for play 2.6 is renamed tocouchbase-play_2_6
and only support scala 2.11 & 2.12 for sbt:libraryDependencies += "com.sandinh" %% "couchbase-play_2_6" % "9.0.0"
- For play 2.8:
libraryDependencies += "com.sandinh" %% "couchbase-play" % "9.0.0"
Only support scala 2.12 & 2.13
- Incompatible dependencies change of couchbase-play_2_6 against couchbase-play:7.4.5:
- guava: 22.0 -> 23.6.1-jre
- ssl-config-core 0.2.2 -> 0.3.8
- scala-parser-combinators 1.0.6 -> 1.1.2
TODO @thanhpv
- Support Concurrent Document Mutations
- Use CAS value
- break change! rename CaoBase.setTWithId -> setWithIdT
- add WithCaoKey1.getOrUpdate convenient method
- change back to normal
version :=
, don't use sbt-git versioning
- update play 2.8.0
- break changes:
- rename CaoBase get/set/update/remove methods by adding
WithId
suffix
- rename CaoBase get/set/update/remove methods by adding
- drop scala 2.11 & add 2.13
- update play 2.8.0-RC5
- update couchbase java-client 2.7.11
- update typesafe config 1.4.0 //same as dependency of akka-actor:2.6.0
- use scala-collection-compat
- update sbt 1.3.4 & some sbt plugins
- use sbt-git for versioning
- update couchbase java-client 2.6.0, play-json 2.6.9 (latest, corresponding with play 2.6.17)
- cross compile for scala 2.12.6, 2.11.12
- update sbt 1.1.6 & some sbt plugins
- update couchbase java-client 2.5.2, play-json 2.6.7
- cross compile for scala 2.12.4, 2.11.11
- add travis test on couchbase 5.0.0
- update sbt 1.0.3 & some sbt plugins
- update couchbase java-client 2.5.0, play-json 2.6.3
- couchbase-play now depends on play instead of play-alone
- cross compile for scala 2.12.3, 2.11.11
- travis test on couchbase 4.6.3, 4.5.0
- update sbt 1.0.1, sbt-sonatype 2.0, sbt-pgp 1.1.0
- use sbt-coursier
- use sbt-scalafmt-coursier instead of sbt-scalariform
- move source code to github.com/ohze/couchbase-scala
- Change in PlayCBCluster:
- now inject (first constructor's param) Config instead of Configuration
disconnectFuture
now returnFuture[lang.Boolean]
instead ofFuture[Unit]
- breaking changes in
CBCluster
:- remove deprecated field
cluster
openBucket
now returnFuture[ScalaBucket]
instead ofScalaBucket
.- Add
openBucketSync
- which is the old synchronousopenBucket
method. @note You should never perform long-running blocking operations inside of an asynchronous stream (e.g. inside of maps or flatMaps). @see JVMCBC-79 - Similar for
disconnect
(now returnFuture[lang.Boolean]
) &disconnectSync
- remove deprecated field
- update couchbase java-client 2.3.1, play-json 2.5.4
- remove config
com.sandinh.couchbase.queryEnabled
becausecom.couchbase.client.core.env.DefaultCoreEnvironment.Builder#queryEnabled
is removed fromcouchbase java-client 2.3.x
- update scala 2.11.8, couchbase client 2.2.7, play-alone 2.5.3
- test on travis for <oraclejdk8, openjdk8> * <couchbase 4.1.1, couchbase 4.5.0-beta>
- update couchbase java-client 2.2.4 & simplify scalacOptions
- minor change: use TranscoderUtils.encodeStringAsUtf8 instead of Unpooled.copiedBuffer
- fix CompatStringSpec. The failed tests is caused by caching mechanism of couchbase bucket
- update java-client 2.2.2, rxjava 1.0.17, play-json 2.4.6, play-alone 2.4.3
- update couchbase java-client 2.2.1, rxjava 1.0.15, play-json 2.4.3, play-alone 2.4.2_1
- note: This version is compatible with couchbase-server 2.x, 3.x, 4.x. see JCBC-880
- add binding:
bind[Config].toInstance(configuration.underlying)
incom.sandinh.couchbase.PlayModule
couchbase-play
can be used with com.sandinh:play-alone or full com.typesafe.play:play- update
com.couchbase.client:java-client:2.1.4
change in CBCluster:
- deprecate cluster. Use asJava instead
- Make
env
public
- update play-json 2.4.2 (require java 8), com.couchbase.client:java-client:2.1.3, rxjava:1.0.12
- add
couchbase-play
module for using couchbase-scala in a play application - support n1ql querry
- add convenience method
JsDocument.as[T: Reads]: T
- (minor break change) move the implicit Doc Classes: com.sandinh.couchbase.{Implicits => Implicit.DocCls}
- add implicit value class DocNotExistFuture, RichJsonObject, RichJsonArray
- update scala 2.11.6, com.couchbase.client:java-client:2.1.1, rxjava:1.0.7
- use specs2-core:3.0
- update play-json 2.3.8, rxjava 1.0.6 (transitive dep at v1.0.4 from couchbase java-client 2.1.0)
- update couchbase java-client 2.1.0 with changes:
- default disconnect timeout is increased from 5s to 25s
- ScalaBucket.query(String) is replaced by query(Statement)
- RichAsyncViewResult.flatFoldRows now use scConcatMap instead of scFlatMap to preserve order of underlying observable items. This fixes the bug in sandinh.com's bank-play project: log rows in bank is out-of-created-order
- RichAsyncViewResult is moved from com.sandinh.rx.Implicits to com.sandinh.couchbase.Implicits
- fixes SI-9121 by removing com.sandinh.rx.Implicits.{RichFunction1, RichFunction2}
- remove some
@inline
annotations - add scalacOptions: -optimise -Ybackend:GenBCode -Ydelambdafy:method ..
- add CompatStringTranscoderLegacy which:
- decoding a stored document in format of StringDocument OR JsonStringDocument.
- encoding a String as StringDocument.
(same as in previous version, CompatStringTranscoder:
- decoding a stored document in format of StringDocument OR JsonStringDocument.
- encoding a String as StringDocument.)
see CompatStringSpec
- CBCluster.openBucket now has
legacyEncodeString: Boolean
param, default = true. In previous version, CBCluster.openBucket("some_bucket") return a bucket which encode String as JsonString (using CompatStringTranscoder). For better compatibility, from v6.0.0 the return bucket will encode String using CompatStringTranscoderLegacy. (This is in-compatible with v5.x, so we bump to v6.0.0).
only update scala 2.11.5, couchbase java-client 2.0.3
only use CompatStringDocument instead of StringDocument for StrCao, StrCao1, StrCao2
- move
def bucket: ScalaBucket
to constructor's param in CaoBase, JsCao, JsCao1, JsCao2, StrCao, StrCao1, StrCao2 - use
com.couchbase.timeout._
keys to config timeout in duration format. see reference.conf for legend - note: from this version, config values
com.couchbase._
will not be set to java system properties (see classDefaultCouchbaseEnvironment
) - add some convenient methods to ScalaBucket: getT, getOrElseT, getJsT
- CBCluster now auto add
com.sandinh.couchbase.transcoder._
transcoders when openBucket - add CompatStringDocument which works exactly like JsonStringDocument permit decoding a stored StringDocument
reverse getOrElse
changes in v4.1.0:
getOrElse(x)(null): type mismatch found Null(null) required XX
is because x is an instance of class X(..) extend AnyVal
note: Do not use this version. see v4.2.0 This version contain some incompatible change:
- getOrElse method in CaoBase, WithCaoKey1, WithCaoKey2: do not use a separate param list for
default
param (fix usage problem when getOrElse(x)(null): type mismatch found Null(null) required XX) - rename RichAsyncViewRow.{document => doc}.
We can't name
document
because scala compiler will not implicitly pick that method.
- some minor change (no bug fix, no new feature)
- remove crossScalaVersions 2.10
WARNING: when implement a real project at http://sandinh.com, we found that RxScala (& RxJava) is VERY VERY complex (compare to scala Future). At first, we have created https://github.com/giabao/scala-future-vs-rxscala to share knowledge to our team. But after several weeks, we have decided to use Future only! (many dangerousness of Rx have not been mentioned in scala-future-vs-rxscala). So, we change couchbase-scala to just expose Future as the API.
- update rxjava 1.0.3
- add com.sandinh.rx.Implicits.RichObs.subscribeError
only update libs:
"com.couchbase.client" % "java-client" % "2.0.2",
"io.reactivex" %% "rxscala" % "0.23.0",
"io.reactivex" % "rxjava" % "1.0.2",
"com.typesafe.play" %% "play-json" % "2.3.7"
- update rxjava 1.0.1
- typeof CBCluster.openBucket & CaoBase.bucket is changed from ScalaBucket to Observable[ScalaBucket]
- typeof CBCluster.disconnect() is changed from Boolean to Observable[Boolean]
- remove CBCluster.disconnect(FiniteDuration)
- setBulk in WithCaoKey1 & WithCaoKey2 now use concatMap instead of flatMap to preserve ordering of result with the params
- fixes http://www.couchbase.com/issues/browse/JCBC-642
narrow dependencies from guice to javax.inject
first public version