This is an automated email from the ASF dual-hosted git repository.
eolivelli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/curator.git
The following commit(s) were added to refs/heads/master by this push:
new ed3cc84 CURATOR-606: ModeledFrameworkImpl.update(T model, int
version): Use version in all cases. (#393)
ed3cc84 is described below
commit ed3cc848f51b309db69f4e453d0509a48e9212d6
Author: Matthew E. Dawson <[email protected]>
AuthorDate: Mon Oct 4 16:32:07 2021 -0400
CURATOR-606: ModeledFrameworkImpl.update(T model, int version): Use version
in all cases. (#393)
---
.../x/async/modeled/details/ModeledFrameworkImpl.java | 4 +++-
.../curator/x/async/modeled/TestModeledFramework.java | 13 ++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git
a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledFrameworkImpl.java
b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledFrameworkImpl.java
index dbbf3cb..99568ac 100644
---
a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledFrameworkImpl.java
+++
b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledFrameworkImpl.java
@@ -33,6 +33,7 @@ import org.apache.curator.x.async.WatchMode;
import org.apache.curator.x.async.api.AsyncCuratorFrameworkDsl;
import org.apache.curator.x.async.api.AsyncPathAndBytesable;
import org.apache.curator.x.async.api.AsyncPathable;
+import org.apache.curator.x.async.api.AsyncSetDataBuilder;
import org.apache.curator.x.async.api.AsyncTransactionSetDataBuilder;
import org.apache.curator.x.async.api.CreateOption;
import org.apache.curator.x.async.api.WatchableAsyncCuratorFramework;
@@ -205,7 +206,8 @@ public class ModeledFrameworkImpl<T> implements
ModeledFramework<T>
try
{
byte[] bytes = modelSpec.serializer().serialize(item);
- AsyncPathAndBytesable<AsyncStage<Stat>> next = isCompressed() ?
dslClient.setData().compressedWithVersion(version) : dslClient.setData();
+ AsyncSetDataBuilder dataBuilder = dslClient.setData();
+ AsyncPathAndBytesable<AsyncStage<Stat>> next = isCompressed() ?
dataBuilder.compressedWithVersion(version) : dataBuilder.withVersion(version);
return next.forPath(resolveForSet(item), bytes);
}
catch ( Exception e )
diff --git
a/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestModeledFramework.java
b/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestModeledFramework.java
index 0b64b1c..6daca59 100644
---
a/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestModeledFramework.java
+++
b/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestModeledFramework.java
@@ -151,11 +151,18 @@ public class TestModeledFramework extends
TestModeledFrameworkBase
complete(versioned.read().whenComplete((v, e) -> {
assertNull(e);
assertTrue(v.version() > 0);
- }).thenCompose(versioned::set), (s, e) -> assertNull(e)); // version
is correct should succeed
-
+ }).thenCompose(versioned::set), (s, e) -> assertNull(e)); // read
version is correct; set moves version to 2
+
Versioned<TestModel> badVersion = Versioned.from(model, 100000);
complete(versioned.set(badVersion), (v, e) -> assertTrue(e instanceof
KeeperException.BadVersionException));
-
+ complete(versioned.update(badVersion), (v, e) -> assertTrue(e
instanceof KeeperException.BadVersionException));
+
+ final Versioned<TestModel> goodVersion = Versioned.from(model, 2);
+ complete(versioned.update(goodVersion).whenComplete((v, e) -> {
+ assertNull(e);
+ assertEquals(3, v.getVersion());
+ }));
+
final Stat stat = new Stat();
complete(client.read(stat));
// wrong version, needs to fail