From 9ec44a5e7c93145dedf4c63d4cfc8fef735eb990 Mon Sep 17 00:00:00 2001
From: YoEight
Date: Mon, 3 Mar 2025 22:27:16 -0500
Subject: [PATCH 1/7] refactor!: move ExpectedRevision to StreamState.
---
.../eventstore/dbclient/AppendToStream.java | 18 +++---
.../com/eventstore/dbclient/GrpcUtils.java | 4 +-
.../OptionsWithExpectedRevisionBase.java | 10 ++--
...ExpectedRevision.java => StreamState.java} | 58 +++++++++----------
.../com/eventstore/dbclient/WriteResult.java | 6 +-
.../WrongExpectedVersionException.java | 12 ++--
.../dbclient/misc/ExpectedRevisionTests.java | 56 +++++++++---------
.../appending_events/AppendingEvents.java | 7 +--
.../opentelemetry/Instrumentation.java | 2 +-
.../dbclient/streams/AppendTests.java | 4 +-
.../dbclient/streams/DeleteTests.java | 2 +-
.../StreamsTracingInstrumentationTests.java | 10 ++--
12 files changed, 94 insertions(+), 95 deletions(-)
rename db-client-java/src/main/java/com/eventstore/dbclient/{ExpectedRevision.java => StreamState.java} (76%)
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
index 2f3a8140..acc5059c 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
@@ -58,28 +58,28 @@ private CompletableFuture append(ManagedChannel channel, List extends OptionsBase {
- private ExpectedRevision expectedRevision;
+ private StreamState expectedRevision;
protected OptionsWithExpectedRevisionBase() {
- this.expectedRevision = ExpectedRevision.any();
+ this.expectedRevision = StreamState.any();
}
- ExpectedRevision getExpectedRevision() {
+ StreamState getExpectedRevision() {
return this.expectedRevision;
}
@@ -18,7 +18,7 @@ ExpectedRevision getExpectedRevision() {
* @return updated options.
*/
@SuppressWarnings("unchecked")
- public T expectedRevision(ExpectedRevision revision) {
+ public T expectedRevision(StreamState revision) {
this.expectedRevision = revision;
return (T) this;
}
@@ -31,6 +31,6 @@ public T expectedRevision(ExpectedRevision revision) {
* @return updated options.
*/
public T expectedRevision(long revision) {
- return expectedRevision(ExpectedRevision.expectedRevision(revision));
+ return expectedRevision(StreamState.streamRevision(revision));
}
}
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/ExpectedRevision.java b/db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java
similarity index 76%
rename from db-client-java/src/main/java/com/eventstore/dbclient/ExpectedRevision.java
rename to db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java
index c04d8271..68210f6f 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/ExpectedRevision.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java
@@ -14,66 +14,66 @@
* guarantee it. Any other ExpectedRevision instances are meant for optimistic concurrency checks.
*
*/
-public abstract class ExpectedRevision {
+public abstract class StreamState {
/**
* This writes should not conflict with anything and should always succeed.
*/
- public static ExpectedRevision any() {
- return new AnyExpectedRevision();
+ public static StreamState any() {
+ return new AnyStreamState();
}
/**
* The stream being written to should not yet exist. If it does exist, treats that as a concurrency problem.
*/
- public static ExpectedRevision noStream() {
- return new NoStreamExpectedRevision();
+ public static StreamState noStream() {
+ return new NoStreamState();
}
/**
* The stream should exist. If it or a metadata stream does not exist, treats that as a concurrency problem.
*/
- public static ExpectedRevision streamExists() {
- return new StreamExistsExpectedRevision();
+ public static StreamState streamExists() {
+ return new StreamExistsState();
}
/**
* States that the last event written to the stream should have an event revision matching your expected value.
*/
- public static ExpectedRevision expectedRevision(long revision) {
- return new SpecificExpectedRevision(revision);
+ public static StreamState streamRevision(long revision) {
+ return new StreamRevisionStreamState(revision);
}
- public static ExpectedRevision fromRawLong(long revision) {
+ public static StreamState fromRawLong(long revision) {
if (revision == -1)
- return ExpectedRevision.noStream();
+ return StreamState.noStream();
if (revision == -2)
- return ExpectedRevision.any();
+ return StreamState.any();
if (revision == -4)
- return ExpectedRevision.streamExists();
+ return StreamState.streamExists();
if (revision < 0)
- throw new RuntimeException(String.format("Invalid expected revision long representation '%s'", revision));
+ throw new RuntimeException(String.format("Invalid stream revision long representation '%s'", revision));
- return ExpectedRevision.expectedRevision(revision);
+ return StreamState.streamRevision(revision);
}
- ExpectedRevision() {}
+ StreamState() {}
abstract StreamsOuterClass.AppendReq.Options.Builder applyOnWire(StreamsOuterClass.AppendReq.Options.Builder options);
abstract StreamsOuterClass.DeleteReq.Options.Builder applyOnWire(StreamsOuterClass.DeleteReq.Options.Builder options);
abstract StreamsOuterClass.TombstoneReq.Options.Builder applyOnWire(StreamsOuterClass.TombstoneReq.Options.Builder options);
public long toRawLong() {
- if (this instanceof NoStreamExpectedRevision)
+ if (this instanceof NoStreamState)
return -1;
- if (this instanceof AnyExpectedRevision)
+ if (this instanceof AnyStreamState)
return -2;
- if (this instanceof StreamExistsExpectedRevision)
+ if (this instanceof StreamExistsState)
return -4;
- SpecificExpectedRevision revision = (SpecificExpectedRevision) this;
+ StreamRevisionStreamState revision = (StreamRevisionStreamState) this;
return revision.version;
}
@@ -89,7 +89,7 @@ public int hashCode() {
return Objects.hash(getClass());
}
- public static class NoStreamExpectedRevision extends ExpectedRevision {
+ public static class NoStreamState extends StreamState {
@Override
public StreamsOuterClass.AppendReq.Options.Builder applyOnWire(StreamsOuterClass.AppendReq.Options.Builder options) {
return options.setNoStream(Shared.Empty.getDefaultInstance());
@@ -107,11 +107,11 @@ public StreamsOuterClass.TombstoneReq.Options.Builder applyOnWire(StreamsOuterCl
@Override
public String toString() {
- return "ExpectedNoStream";
+ return "NoStreamState";
}
}
- public static class AnyExpectedRevision extends ExpectedRevision {
+ public static class AnyStreamState extends StreamState {
@Override
public StreamsOuterClass.AppendReq.Options.Builder applyOnWire(StreamsOuterClass.AppendReq.Options.Builder options) {
return options.setAny(Shared.Empty.getDefaultInstance());
@@ -129,11 +129,11 @@ public StreamsOuterClass.TombstoneReq.Options.Builder applyOnWire(StreamsOuterCl
@Override
public String toString() {
- return "ExpectedAny";
+ return "AnyStreamState";
}
}
- public static class StreamExistsExpectedRevision extends ExpectedRevision {
+ public static class StreamExistsState extends StreamState {
@Override
public StreamsOuterClass.AppendReq.Options.Builder applyOnWire(StreamsOuterClass.AppendReq.Options.Builder options) {
return options.setStreamExists(Shared.Empty.getDefaultInstance());
@@ -151,14 +151,14 @@ public StreamsOuterClass.TombstoneReq.Options.Builder applyOnWire(StreamsOuterCl
@Override
public String toString() {
- return "ExpectedStreamExists";
+ return "StreamsExistsState";
}
}
- public static class SpecificExpectedRevision extends ExpectedRevision {
+ public static class StreamRevisionStreamState extends StreamState {
final long version;
- SpecificExpectedRevision(long version) {
+ StreamRevisionStreamState(long version) {
this.version = version;
}
@@ -166,7 +166,7 @@ public static class SpecificExpectedRevision extends ExpectedRevision {
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- SpecificExpectedRevision that = (SpecificExpectedRevision) o;
+ StreamRevisionStreamState that = (StreamRevisionStreamState) o;
return version == that.version;
}
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/WriteResult.java b/db-client-java/src/main/java/com/eventstore/dbclient/WriteResult.java
index 941fa1d6..87dd82f7 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/WriteResult.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/WriteResult.java
@@ -6,10 +6,10 @@
* Returned after writing to a stream.
*/
public class WriteResult {
- private final ExpectedRevision nextExpectedRevision;
+ private final StreamState nextExpectedRevision;
private final Position logPosition;
- WriteResult(ExpectedRevision nextExpectedRevision, Position logPosition) {
+ WriteResult(StreamState nextExpectedRevision, Position logPosition) {
this.nextExpectedRevision = nextExpectedRevision;
this.logPosition = logPosition;
}
@@ -17,7 +17,7 @@ public class WriteResult {
/**
* Next expected version of the stream.
*/
- public ExpectedRevision getNextExpectedRevision() {
+ public StreamState getNextExpectedRevision() {
return nextExpectedRevision;
}
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/WrongExpectedVersionException.java b/db-client-java/src/main/java/com/eventstore/dbclient/WrongExpectedVersionException.java
index 7c7e31e3..3fc82484 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/WrongExpectedVersionException.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/WrongExpectedVersionException.java
@@ -7,13 +7,13 @@
*/
public class WrongExpectedVersionException extends RuntimeException {
private final String streamName;
- private final ExpectedRevision nextExpectedRevision;
- private final ExpectedRevision actualRevision;
+ private final StreamState nextExpectedRevision;
+ private final StreamState actualRevision;
WrongExpectedVersionException(
@NotNull String streamName,
- @NotNull ExpectedRevision nextExpected,
- @NotNull ExpectedRevision actualRevision) {
+ @NotNull StreamState nextExpected,
+ @NotNull StreamState actualRevision) {
super(String.format("Expected %s but got %s instead", nextExpected, actualRevision));
this.streamName = streamName;
this.nextExpectedRevision = nextExpected;
@@ -30,14 +30,14 @@ public String getStreamName() {
/**
* Returns the expected revision by the request.
*/
- public ExpectedRevision getNextExpectedRevision() {
+ public StreamState getNextExpectedRevision() {
return nextExpectedRevision;
}
/**
* Returns the actual revision of the stream when the check was performed.
*/
- public ExpectedRevision getActualVersion() {
+ public StreamState getActualVersion() {
return actualRevision;
}
}
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
index 8c3c8ed4..9246fac6 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
@@ -1,7 +1,7 @@
package com.eventstore.dbclient.misc;
-import com.eventstore.dbclient.ExpectedRevision;
+import com.eventstore.dbclient.StreamState;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -9,52 +9,52 @@ public class ExpectedRevisionTests {
@Test
public void testExpectedRevisionEquality() {
- Assertions.assertEquals(ExpectedRevision.any(), new ExpectedRevision.AnyExpectedRevision());
- Assertions.assertEquals(ExpectedRevision.noStream(), new ExpectedRevision.NoStreamExpectedRevision());
- Assertions.assertEquals(ExpectedRevision.streamExists(), new ExpectedRevision.StreamExistsExpectedRevision());
- Assertions.assertEquals(ExpectedRevision.expectedRevision(1L), ExpectedRevision.expectedRevision(1L));
+ Assertions.assertEquals(StreamState.any(), new StreamState.AnyStreamState());
+ Assertions.assertEquals(StreamState.noStream(), new StreamState.NoStreamState());
+ Assertions.assertEquals(StreamState.streamExists(), new StreamState.StreamExistsState());
+ Assertions.assertEquals(StreamState.streamRevision(1L), StreamState.streamRevision(1L));
}
@Test
public void testExpectedRevisionNonEquality() {
- Assertions.assertNotEquals(ExpectedRevision.any(), ExpectedRevision.noStream());
- Assertions.assertNotEquals(ExpectedRevision.any(), ExpectedRevision.streamExists());
- Assertions.assertNotEquals(ExpectedRevision.any(), ExpectedRevision.expectedRevision(0L));
- Assertions.assertNotEquals(ExpectedRevision.noStream(), ExpectedRevision.streamExists());
- Assertions.assertNotEquals(ExpectedRevision.noStream(), ExpectedRevision.expectedRevision(0L));
- Assertions.assertNotEquals(ExpectedRevision.streamExists(), ExpectedRevision.expectedRevision(0L));
+ Assertions.assertNotEquals(StreamState.any(), StreamState.noStream());
+ Assertions.assertNotEquals(StreamState.any(), StreamState.streamExists());
+ Assertions.assertNotEquals(StreamState.any(), StreamState.streamRevision(0L));
+ Assertions.assertNotEquals(StreamState.noStream(), StreamState.streamExists());
+ Assertions.assertNotEquals(StreamState.noStream(), StreamState.streamRevision(0L));
+ Assertions.assertNotEquals(StreamState.streamExists(), StreamState.streamRevision(0L));
}
@Test
public void testExpectedRevisionHashCode() {
- Assertions.assertEquals(ExpectedRevision.any().hashCode(), new ExpectedRevision.AnyExpectedRevision().hashCode());
- Assertions.assertEquals(ExpectedRevision.noStream().hashCode(), new ExpectedRevision.NoStreamExpectedRevision().hashCode());
- Assertions.assertEquals(ExpectedRevision.streamExists().hashCode(), new ExpectedRevision.StreamExistsExpectedRevision().hashCode());
- Assertions.assertEquals(ExpectedRevision.expectedRevision(1L).hashCode(), ExpectedRevision.expectedRevision(1L).hashCode());
+ Assertions.assertEquals(StreamState.any().hashCode(), new StreamState.AnyStreamState().hashCode());
+ Assertions.assertEquals(StreamState.noStream().hashCode(), new StreamState.NoStreamState().hashCode());
+ Assertions.assertEquals(StreamState.streamExists().hashCode(), new StreamState.StreamExistsState().hashCode());
+ Assertions.assertEquals(StreamState.streamRevision(1L).hashCode(), StreamState.streamRevision(1L).hashCode());
}
@Test
public void testHumanRepresentation() {
- Assertions.assertEquals("ExpectedAny", ExpectedRevision.any().toString());
- Assertions.assertEquals("ExpectedStreamExists", ExpectedRevision.streamExists().toString());
- Assertions.assertEquals("ExpectedNoStream", ExpectedRevision.noStream().toString());
- Assertions.assertEquals("42", ExpectedRevision.expectedRevision(42).toString());
+ Assertions.assertEquals("ExpectedAny", StreamState.any().toString());
+ Assertions.assertEquals("ExpectedStreamExists", StreamState.streamExists().toString());
+ Assertions.assertEquals("ExpectedNoStream", StreamState.noStream().toString());
+ Assertions.assertEquals("42", StreamState.streamRevision(42).toString());
}
@Test
public void testRawLong() {
- Assertions.assertEquals(-2, ExpectedRevision.any().toRawLong());
- Assertions.assertEquals(-1, ExpectedRevision.noStream().toRawLong());
- Assertions.assertEquals(-4, ExpectedRevision.streamExists().toRawLong());
- Assertions.assertEquals(42, ExpectedRevision.expectedRevision(42).toRawLong());
+ Assertions.assertEquals(-2, StreamState.any().toRawLong());
+ Assertions.assertEquals(-1, StreamState.noStream().toRawLong());
+ Assertions.assertEquals(-4, StreamState.streamExists().toRawLong());
+ Assertions.assertEquals(42, StreamState.streamRevision(42).toRawLong());
}
@Test
public void testRawLongConversion() {
- Assertions.assertEquals(ExpectedRevision.fromRawLong(-2), ExpectedRevision.any());
- Assertions.assertEquals(ExpectedRevision.fromRawLong(-1), ExpectedRevision.noStream());
- Assertions.assertEquals(ExpectedRevision.fromRawLong(-4), ExpectedRevision.streamExists());
- Assertions.assertEquals(ExpectedRevision.fromRawLong(42), ExpectedRevision.expectedRevision(42));
- Assertions.assertThrowsExactly(RuntimeException.class, () -> ExpectedRevision.fromRawLong(-5));
+ Assertions.assertEquals(StreamState.fromRawLong(-2), StreamState.any());
+ Assertions.assertEquals(StreamState.fromRawLong(-1), StreamState.noStream());
+ Assertions.assertEquals(StreamState.fromRawLong(-4), StreamState.streamExists());
+ Assertions.assertEquals(StreamState.fromRawLong(42), StreamState.streamRevision(42));
+ Assertions.assertThrowsExactly(RuntimeException.class, () -> StreamState.fromRawLong(-5));
}
}
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java b/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java
index 9a3e04e8..101af3b5 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java
@@ -3,7 +3,6 @@
import com.eventstore.dbclient.*;
import com.eventstore.dbclient.samples.TestEvent;
-import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
@@ -21,7 +20,7 @@ private static void appendToStream(EventStoreDBClient client) throws ExecutionEx
.build();
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(ExpectedRevision.noStream());
+ .expectedRevision(StreamState.noStream());
client.appendToStream("some-stream", options, eventData)
.get();
@@ -41,7 +40,7 @@ private static void appendWithSameId(EventStoreDBClient client) throws Execution
.build();
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(ExpectedRevision.any());
+ .expectedRevision(StreamState.any());
client.appendToStream("same-event-stream", options, eventData)
.get();
@@ -75,7 +74,7 @@ private static void appendWithNoStream(EventStoreDBClient client) throws Executi
.build();
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(ExpectedRevision.noStream());
+ .expectedRevision(StreamState.noStream());
client.appendToStream("no-stream-stream", options, eventDataOne)
.get();
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java b/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java
index e505eca7..79796baf 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java
@@ -55,7 +55,7 @@ private static void tracing(EventStoreDBClient client) throws ExecutionException
// endregion setup-client-for-tracing
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(ExpectedRevision.any());
+ .expectedRevision(StreamState.any());
WriteResult appendResult = client.appendToStream("some-stream", options, eventData)
.get();
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java
index b2b5ff24..91958985 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java
@@ -24,12 +24,12 @@ default void testAppendSingleEventNoStream() throws Throwable {
.build();
AppendToStreamOptions appendOptions = AppendToStreamOptions.get()
- .expectedRevision(ExpectedRevision.noStream());
+ .expectedRevision(StreamState.noStream());
WriteResult appendResult = client.appendToStream(streamName, appendOptions, event)
.get();
- Assertions.assertEquals(ExpectedRevision.expectedRevision(0), appendResult.getNextExpectedRevision());
+ Assertions.assertEquals(StreamState.streamRevision(0), appendResult.getNextExpectedRevision());
ReadStreamOptions readStreamOptions = ReadStreamOptions.get()
.fromEnd()
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java
index 57f9bd2f..788e77a5 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java
@@ -39,7 +39,7 @@ default void testDeleteStreamWhenDoesntExist() throws Throwable {
String streamName = generateName();
DeleteStreamOptions options = DeleteStreamOptions.get()
- .expectedRevision(ExpectedRevision.streamExists());
+ .expectedRevision(StreamState.streamExists());
Assertions.assertThrows(WrongExpectedVersionException.class, () -> {
try {
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java
index 8cb2fe07..4e9ebdb9 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java
@@ -23,7 +23,7 @@ default void testAppendIsInstrumentedWithTracingAsExpected() throws Throwable {
client.appendToStream(
streamName,
- AppendToStreamOptions.get().expectedRevision(ExpectedRevision.noStream()),
+ AppendToStreamOptions.get().expectedRevision(StreamState.noStream()),
EventData.builderAsJson("TestEvent", mapper.writeValueAsBytes(new Foo()))
.eventId(UUID.randomUUID())
.build())
@@ -42,7 +42,7 @@ default void testTracingContextIsInjectedAsExpectedWhenUserMetadataIsJsonObject(
client.appendToStream(
streamName,
- AppendToStreamOptions.get().expectedRevision(ExpectedRevision.noStream()),
+ AppendToStreamOptions.get().expectedRevision(StreamState.noStream()),
EventData.builderAsJson("TestEvent", mapper.writeValueAsBytes(new Foo()))
.metadataAsBytes(mapper.writeValueAsBytes(new Foo()))
.eventId(UUID.randomUUID())
@@ -82,7 +82,7 @@ default void testTracingContextInjectionIsIgnoredAsExpectedWhenUserMetadataIsNon
client.appendToStream(
streamName,
- AppendToStreamOptions.get().expectedRevision(ExpectedRevision.noStream()),
+ AppendToStreamOptions.get().expectedRevision(StreamState.noStream()),
eventWithValidMetadata,
eventWithInvalidMetadata)
.get();
@@ -132,7 +132,7 @@ default void testAppendInstrumentationHandlesExceptionsAsExpected() throws Throw
client.appendToStream(
streamName,
// Force WrongExpectedVersionException to be thrown.
- AppendToStreamOptions.get().expectedRevision(ExpectedRevision.streamExists()),
+ AppendToStreamOptions.get().expectedRevision(StreamState.streamExists()),
EventData.builderAsJson("TestEvent", mapper.writeValueAsBytes(new Foo()))
.eventId(UUID.randomUUID())
.build())
@@ -263,7 +263,7 @@ default void testCatchupSubscriptionTracingIsNotRestoredOnDeletedEvents() throws
WriteResult appendResult = client.appendToStream(streamName, events).get();
Assertions.assertNotNull(appendResult);
- DeleteResult deleteResult = client.deleteStream(streamName, DeleteStreamOptions.get().expectedRevision(ExpectedRevision.streamExists())).get();
+ DeleteResult deleteResult = client.deleteStream(streamName, DeleteStreamOptions.get().expectedRevision(StreamState.streamExists())).get();
Assertions.assertNotNull(deleteResult);
CountDownLatch subscribeSpansLatch = new CountDownLatch(events.length);
From e336ad5f343272fc733321d282fbd5cb8c53ce45 Mon Sep 17 00:00:00 2001
From: YoEight
Date: Mon, 3 Mar 2025 22:35:52 -0500
Subject: [PATCH 2/7] fixup
---
.../eventstore/dbclient/AppendToStream.java | 2 +-
.../dbclient/AppendToStreamOptions.java | 2 +-
.../com/eventstore/dbclient/DeleteStream.java | 5 ++-
.../dbclient/DeleteStreamOptions.java | 2 +-
.../OptionsWithExpectedRevisionBase.java | 36 -------------------
.../dbclient/OptionsWithStreamStateBase.java | 36 +++++++++++++++++++
.../appending_events/AppendingEvents.java | 8 ++---
.../opentelemetry/Instrumentation.java | 2 +-
.../dbclient/streams/AppendTests.java | 2 +-
.../dbclient/streams/DeleteTests.java | 2 +-
.../StreamsTracingInstrumentationTests.java | 10 +++---
11 files changed, 53 insertions(+), 54 deletions(-)
delete mode 100644 db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithExpectedRevisionBase.java
create mode 100644 db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
index acc5059c..8935dada 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
@@ -42,7 +42,7 @@ public CompletableFuture execute() {
private CompletableFuture append(ManagedChannel channel, List events) {
CompletableFuture result = new CompletableFuture<>();
- StreamsOuterClass.AppendReq.Options.Builder options = this.options.getExpectedRevision().applyOnWire(StreamsOuterClass.AppendReq.Options.newBuilder()
+ StreamsOuterClass.AppendReq.Options.Builder options = this.options.getStreamState().applyOnWire(StreamsOuterClass.AppendReq.Options.newBuilder()
.setStreamIdentifier(Shared.StreamIdentifier.newBuilder()
.setStreamName(ByteString.copyFromUtf8(streamName))
.build()));
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStreamOptions.java b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStreamOptions.java
index 12d657fb..2b572a88 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStreamOptions.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStreamOptions.java
@@ -3,7 +3,7 @@
/**
* Options of the append stream request.
*/
-public class AppendToStreamOptions extends OptionsWithExpectedRevisionBase {
+public class AppendToStreamOptions extends OptionsWithStreamStateBase {
private AppendToStreamOptions() {
}
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStream.java b/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStream.java
index ffd13568..422de9c4 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStream.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStream.java
@@ -4,7 +4,6 @@
import com.eventstore.dbclient.proto.streams.StreamsGrpc;
import com.eventstore.dbclient.proto.streams.StreamsOuterClass;
import com.google.protobuf.ByteString;
-import io.grpc.Metadata;
import java.util.concurrent.CompletableFuture;
@@ -28,7 +27,7 @@ public CompletableFuture execute() {
if (this.softDelete) {
StreamsOuterClass.DeleteReq req = StreamsOuterClass.DeleteReq.newBuilder()
- .setOptions(this.options.getExpectedRevision().applyOnWire(StreamsOuterClass.DeleteReq.Options.newBuilder()
+ .setOptions(this.options.getStreamState().applyOnWire(StreamsOuterClass.DeleteReq.Options.newBuilder()
.setStreamIdentifier(Shared.StreamIdentifier.newBuilder()
.setStreamName(ByteString.copyFromUtf8(streamName))
.build())))
@@ -45,7 +44,7 @@ public CompletableFuture execute() {
}
StreamsOuterClass.TombstoneReq req = StreamsOuterClass.TombstoneReq.newBuilder()
- .setOptions(this.options.getExpectedRevision().applyOnWire(StreamsOuterClass.TombstoneReq.Options.newBuilder()
+ .setOptions(this.options.getStreamState().applyOnWire(StreamsOuterClass.TombstoneReq.Options.newBuilder()
.setStreamIdentifier(Shared.StreamIdentifier.newBuilder()
.setStreamName(ByteString.copyFromUtf8(streamName))
.build())))
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStreamOptions.java b/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStreamOptions.java
index 062af4d4..c2a3928f 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStreamOptions.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/DeleteStreamOptions.java
@@ -3,7 +3,7 @@
/**
* Options of the delete or tombstone stream request.
*/
-public class DeleteStreamOptions extends OptionsWithExpectedRevisionBase {
+public class DeleteStreamOptions extends OptionsWithStreamStateBase {
DeleteStreamOptions() {}
/**
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithExpectedRevisionBase.java b/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithExpectedRevisionBase.java
deleted file mode 100644
index 12e74465..00000000
--- a/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithExpectedRevisionBase.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.eventstore.dbclient;
-
-class OptionsWithExpectedRevisionBase extends OptionsBase {
- private StreamState expectedRevision;
-
- protected OptionsWithExpectedRevisionBase() {
- this.expectedRevision = StreamState.any();
- }
-
- StreamState getExpectedRevision() {
- return this.expectedRevision;
- }
-
- /**
- * Asks the server to check that the stream receiving is at the given expected version.
-
- * @param revision - expected revision.
- * @return updated options.
- */
- @SuppressWarnings("unchecked")
- public T expectedRevision(StreamState revision) {
- this.expectedRevision = revision;
- return (T) this;
- }
-
-
- /**
- * Asks the server to check that the stream receiving is at the given expected version.
-
- * @param revision - expected revision.
- * @return updated options.
- */
- public T expectedRevision(long revision) {
- return expectedRevision(StreamState.streamRevision(revision));
- }
-}
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java b/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java
new file mode 100644
index 00000000..036c208a
--- /dev/null
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java
@@ -0,0 +1,36 @@
+package com.eventstore.dbclient;
+
+class OptionsWithStreamStateBase extends OptionsBase {
+ private StreamState streamState;
+
+ protected OptionsWithStreamStateBase() {
+ this.streamState = StreamState.any();
+ }
+
+ StreamState getStreamState() {
+ return this.streamState;
+ }
+
+ /**
+ * Asks the server to check that the stream receiving is at the expected state.
+
+ * @param state - expected revision.
+ * @return updated options.
+ */
+ @SuppressWarnings("unchecked")
+ public T streamState(StreamState state) {
+ this.streamState = state;
+ return (T) this;
+ }
+
+
+ /**
+ * Asks the server to check that the stream receiving is at the given expected version.
+
+ * @param revision - expected revision.
+ * @return updated options.
+ */
+ public T streamRevision(long revision) {
+ return streamState(StreamState.streamRevision(revision));
+ }
+}
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java b/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java
index 101af3b5..ae157093 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/samples/appending_events/AppendingEvents.java
@@ -20,7 +20,7 @@ private static void appendToStream(EventStoreDBClient client) throws ExecutionEx
.build();
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(StreamState.noStream());
+ .streamState(StreamState.noStream());
client.appendToStream("some-stream", options, eventData)
.get();
@@ -40,7 +40,7 @@ private static void appendWithSameId(EventStoreDBClient client) throws Execution
.build();
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(StreamState.any());
+ .streamState(StreamState.any());
client.appendToStream("same-event-stream", options, eventData)
.get();
@@ -74,7 +74,7 @@ private static void appendWithNoStream(EventStoreDBClient client) throws Executi
.build();
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(StreamState.noStream());
+ .streamState(StreamState.noStream());
client.appendToStream("no-stream-stream", options, eventDataOne)
.get();
@@ -117,7 +117,7 @@ private static void appendWithConcurrencyCheck(EventStoreDBClient client) throws
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(result.getLastStreamPosition());
+ .streamRevision(result.getLastStreamPosition());
client.appendToStream("concurrency-stream", options, clientOneData)
.get();
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java b/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java
index 79796baf..ab1ad3a6 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/samples/opentelemetry/Instrumentation.java
@@ -55,7 +55,7 @@ private static void tracing(EventStoreDBClient client) throws ExecutionException
// endregion setup-client-for-tracing
AppendToStreamOptions options = AppendToStreamOptions.get()
- .expectedRevision(StreamState.any());
+ .streamState(StreamState.any());
WriteResult appendResult = client.appendToStream("some-stream", options, eventData)
.get();
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java
index 91958985..58e76c5a 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/streams/AppendTests.java
@@ -24,7 +24,7 @@ default void testAppendSingleEventNoStream() throws Throwable {
.build();
AppendToStreamOptions appendOptions = AppendToStreamOptions.get()
- .expectedRevision(StreamState.noStream());
+ .streamState(StreamState.noStream());
WriteResult appendResult = client.appendToStream(streamName, appendOptions, event)
.get();
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java
index 788e77a5..3298b781 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/streams/DeleteTests.java
@@ -39,7 +39,7 @@ default void testDeleteStreamWhenDoesntExist() throws Throwable {
String streamName = generateName();
DeleteStreamOptions options = DeleteStreamOptions.get()
- .expectedRevision(StreamState.streamExists());
+ .streamState(StreamState.streamExists());
Assertions.assertThrows(WrongExpectedVersionException.class, () -> {
try {
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java
index 4e9ebdb9..00f762b1 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java
@@ -23,7 +23,7 @@ default void testAppendIsInstrumentedWithTracingAsExpected() throws Throwable {
client.appendToStream(
streamName,
- AppendToStreamOptions.get().expectedRevision(StreamState.noStream()),
+ AppendToStreamOptions.get().streamState(StreamState.noStream()),
EventData.builderAsJson("TestEvent", mapper.writeValueAsBytes(new Foo()))
.eventId(UUID.randomUUID())
.build())
@@ -42,7 +42,7 @@ default void testTracingContextIsInjectedAsExpectedWhenUserMetadataIsJsonObject(
client.appendToStream(
streamName,
- AppendToStreamOptions.get().expectedRevision(StreamState.noStream()),
+ AppendToStreamOptions.get().streamState(StreamState.noStream()),
EventData.builderAsJson("TestEvent", mapper.writeValueAsBytes(new Foo()))
.metadataAsBytes(mapper.writeValueAsBytes(new Foo()))
.eventId(UUID.randomUUID())
@@ -82,7 +82,7 @@ default void testTracingContextInjectionIsIgnoredAsExpectedWhenUserMetadataIsNon
client.appendToStream(
streamName,
- AppendToStreamOptions.get().expectedRevision(StreamState.noStream()),
+ AppendToStreamOptions.get().streamState(StreamState.noStream()),
eventWithValidMetadata,
eventWithInvalidMetadata)
.get();
@@ -132,7 +132,7 @@ default void testAppendInstrumentationHandlesExceptionsAsExpected() throws Throw
client.appendToStream(
streamName,
// Force WrongExpectedVersionException to be thrown.
- AppendToStreamOptions.get().expectedRevision(StreamState.streamExists()),
+ AppendToStreamOptions.get().streamState(StreamState.streamExists()),
EventData.builderAsJson("TestEvent", mapper.writeValueAsBytes(new Foo()))
.eventId(UUID.randomUUID())
.build())
@@ -263,7 +263,7 @@ default void testCatchupSubscriptionTracingIsNotRestoredOnDeletedEvents() throws
WriteResult appendResult = client.appendToStream(streamName, events).get();
Assertions.assertNotNull(appendResult);
- DeleteResult deleteResult = client.deleteStream(streamName, DeleteStreamOptions.get().expectedRevision(StreamState.streamExists())).get();
+ DeleteResult deleteResult = client.deleteStream(streamName, DeleteStreamOptions.get().streamState(StreamState.streamExists())).get();
Assertions.assertNotNull(deleteResult);
CountDownLatch subscribeSpansLatch = new CountDownLatch(events.length);
From 3e1884b157feba05a55bfce68a18c33a265963ad Mon Sep 17 00:00:00 2001
From: YoEight
Date: Mon, 3 Mar 2025 22:37:08 -0500
Subject: [PATCH 3/7] fixup
---
.../com/eventstore/dbclient/OptionsWithStreamStateBase.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java b/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java
index 036c208a..24776b27 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/OptionsWithStreamStateBase.java
@@ -25,7 +25,7 @@ public T streamState(StreamState state) {
/**
- * Asks the server to check that the stream receiving is at the given expected version.
+ * Asks the server to check that the stream receiving is at the given expected revision.
* @param revision - expected revision.
* @return updated options.
From a0e34a3bbf37a0cae43fcbe4486195399b0e1995 Mon Sep 17 00:00:00 2001
From: YoEight
Date: Mon, 3 Mar 2025 22:46:11 -0500
Subject: [PATCH 4/7] fixup
---
.../eventstore/dbclient/AppendToStream.java | 8 +++---
.../WrongExpectedVersionException.java | 26 +++++++++----------
2 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
index 8935dada..bcf93cfa 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/AppendToStream.java
@@ -75,16 +75,16 @@ private CompletableFuture append(ManagedChannel channel, List
Date: Mon, 3 Mar 2025 23:25:04 -0500
Subject: [PATCH 5/7] fixup test
---
.../com/eventstore/dbclient/misc/ExpectedRevisionTests.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
index 9246fac6..32ef06ba 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
@@ -35,9 +35,9 @@ public void testExpectedRevisionHashCode() {
@Test
public void testHumanRepresentation() {
- Assertions.assertEquals("ExpectedAny", StreamState.any().toString());
- Assertions.assertEquals("ExpectedStreamExists", StreamState.streamExists().toString());
- Assertions.assertEquals("ExpectedNoStream", StreamState.noStream().toString());
+ Assertions.assertEquals("AnyStreamState", StreamState.any().toString());
+ Assertions.assertEquals("StreamExistsState", StreamState.streamExists().toString());
+ Assertions.assertEquals("NoStreamStream", StreamState.noStream().toString());
Assertions.assertEquals("42", StreamState.streamRevision(42).toString());
}
From a14483f38efd243da9849a1d300eb49367242445 Mon Sep 17 00:00:00 2001
From: YoEight
Date: Mon, 3 Mar 2025 23:30:25 -0500
Subject: [PATCH 6/7] fixup
---
.../src/main/java/com/eventstore/dbclient/StreamState.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java b/db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java
index 68210f6f..d2598571 100644
--- a/db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java
+++ b/db-client-java/src/main/java/com/eventstore/dbclient/StreamState.java
@@ -151,7 +151,7 @@ public StreamsOuterClass.TombstoneReq.Options.Builder applyOnWire(StreamsOuterCl
@Override
public String toString() {
- return "StreamsExistsState";
+ return "StreamExistsState";
}
}
From 8eadff29b1f504f3f7b596a095983bedca9031be Mon Sep 17 00:00:00 2001
From: YoEight
Date: Mon, 3 Mar 2025 23:32:18 -0500
Subject: [PATCH 7/7] fixup
---
.../com/eventstore/dbclient/misc/ExpectedRevisionTests.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java b/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
index 32ef06ba..e053eb61 100644
--- a/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
+++ b/db-client-java/src/test/java/com/eventstore/dbclient/misc/ExpectedRevisionTests.java
@@ -37,7 +37,7 @@ public void testExpectedRevisionHashCode() {
public void testHumanRepresentation() {
Assertions.assertEquals("AnyStreamState", StreamState.any().toString());
Assertions.assertEquals("StreamExistsState", StreamState.streamExists().toString());
- Assertions.assertEquals("NoStreamStream", StreamState.noStream().toString());
+ Assertions.assertEquals("NoStreamState", StreamState.noStream().toString());
Assertions.assertEquals("42", StreamState.streamRevision(42).toString());
}