diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2edee03..29c3d7d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -55,13 +55,13 @@ jobs: git checkout gh-pages git pull origin gh-pages - mkdir -p "javadocs/s2/${VERSION}" - cp -r s2/build/docs/javadoc/* "javadocs/s2/${VERSION}" + mkdir -p "javadocs/s2-sdk/${VERSION}" + cp -r s2-sdk/build/docs/javadoc/* "javadocs/s2-sdk/${VERSION}" mkdir -p "javadocs/s2-internal/${VERSION}" cp -r s2-internal/build/docs/javadoc/* "javadocs/s2-internal/${VERSION}" - git add "javadocs/s2/${VERSION}" + git add "javadocs/s2-sdk/${VERSION}" git add "javadocs/s2-internal/${VERSION}" git commit -m "Add JavaDoc for version ${VERSION}" || echo "No changes to commit" diff --git a/README.md b/README.md index 52c3da6..a37bc89 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ A Java SDK for interacting with the S2 streaming service. #### Current Java API Documentation -- [s2 @ 0.0.11](https://s2-streamstore.github.io/s2-sdk-java/javadocs/s2/0.0.11/) -- [s2-internal @ 0.0.11](https://s2-streamstore.github.io/s2-sdk-java/javadocs/s2-internal/0.0.11/) +- [s2-sdk @ 0.0.12](https://s2-streamstore.github.io/s2-sdk-java/javadocs/s2-sdk/0.0.12/) +- [s2-internal @ 0.0.12](https://s2-streamstore.github.io/s2-sdk-java/javadocs/s2-internal/0.0.12/) ## Prerequisites @@ -82,7 +82,7 @@ dependencies { ## Project Structure -- `s2/` - The main SDK module. +- `s2-sdk/` - The main SDK module. - `s2-internal/` - Code and types generated from the [S2 protobuf definitions](https://github.com/s2-streamstore/s2-protos). - `app/` - Example application demonstrating SDK usage. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c0b9b30..5b3191e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -18,7 +18,7 @@ repositories { val grpcVersion = "1.64.0" dependencies { - implementation(project(":s2")) + implementation(project(":s2-sdk")) implementation("io.grpc:grpc-protobuf:$grpcVersion") implementation("io.grpc:grpc-stub:$grpcVersion") implementation("javax.annotation:javax.annotation-api:1.3.2") diff --git a/app/src/main/java/org/example/app/ManagedAppendSessionDemo.java b/app/src/main/java/org/example/app/ManagedAppendSessionDemo.java index d5ad356..90833b5 100644 --- a/app/src/main/java/org/example/app/ManagedAppendSessionDemo.java +++ b/app/src/main/java/org/example/app/ManagedAppendSessionDemo.java @@ -102,7 +102,7 @@ public static void main(String[] args) throws Exception { .withRecords( List.of( AppendRecord.newBuilder() - .withBytes(payload.getBytes(StandardCharsets.UTF_8)) + .withBody(payload.getBytes(StandardCharsets.UTF_8)) .build())) .build(), // Duration is how long we are willing to wait to receive a future. diff --git a/gradle.properties b/gradle.properties index 44b60c8..5e640e1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=0.0.11 +version=0.0.12 \ No newline at end of file diff --git a/s2/build.gradle.kts b/s2-sdk/build.gradle.kts similarity index 100% rename from s2/build.gradle.kts rename to s2-sdk/build.gradle.kts diff --git a/s2/src/main/java/s2/auth/BearerTokenCallCredentials.java b/s2-sdk/src/main/java/s2/auth/BearerTokenCallCredentials.java similarity index 100% rename from s2/src/main/java/s2/auth/BearerTokenCallCredentials.java rename to s2-sdk/src/main/java/s2/auth/BearerTokenCallCredentials.java diff --git a/s2/src/main/java/s2/auth/package-info.java b/s2-sdk/src/main/java/s2/auth/package-info.java similarity index 100% rename from s2/src/main/java/s2/auth/package-info.java rename to s2-sdk/src/main/java/s2/auth/package-info.java diff --git a/s2/src/main/java/s2/client/BaseClient.java b/s2-sdk/src/main/java/s2/client/BaseClient.java similarity index 100% rename from s2/src/main/java/s2/client/BaseClient.java rename to s2-sdk/src/main/java/s2/client/BaseClient.java diff --git a/s2/src/main/java/s2/client/BasinClient.java b/s2-sdk/src/main/java/s2/client/BasinClient.java similarity index 100% rename from s2/src/main/java/s2/client/BasinClient.java rename to s2-sdk/src/main/java/s2/client/BasinClient.java diff --git a/s2/src/main/java/s2/client/Client.java b/s2-sdk/src/main/java/s2/client/Client.java similarity index 100% rename from s2/src/main/java/s2/client/Client.java rename to s2-sdk/src/main/java/s2/client/Client.java diff --git a/s2/src/main/java/s2/client/ManagedAppendSession.java b/s2-sdk/src/main/java/s2/client/ManagedAppendSession.java similarity index 100% rename from s2/src/main/java/s2/client/ManagedAppendSession.java rename to s2-sdk/src/main/java/s2/client/ManagedAppendSession.java diff --git a/s2/src/main/java/s2/client/ManagedReadSession.java b/s2-sdk/src/main/java/s2/client/ManagedReadSession.java similarity index 100% rename from s2/src/main/java/s2/client/ManagedReadSession.java rename to s2-sdk/src/main/java/s2/client/ManagedReadSession.java diff --git a/s2/src/main/java/s2/client/ReadSession.java b/s2-sdk/src/main/java/s2/client/ReadSession.java similarity index 100% rename from s2/src/main/java/s2/client/ReadSession.java rename to s2-sdk/src/main/java/s2/client/ReadSession.java diff --git a/s2/src/main/java/s2/client/StreamClient.java b/s2-sdk/src/main/java/s2/client/StreamClient.java similarity index 100% rename from s2/src/main/java/s2/client/StreamClient.java rename to s2-sdk/src/main/java/s2/client/StreamClient.java diff --git a/s2/src/main/java/s2/client/package-info.java b/s2-sdk/src/main/java/s2/client/package-info.java similarity index 100% rename from s2/src/main/java/s2/client/package-info.java rename to s2-sdk/src/main/java/s2/client/package-info.java diff --git a/s2/src/main/java/s2/config/Address.java b/s2-sdk/src/main/java/s2/config/Address.java similarity index 100% rename from s2/src/main/java/s2/config/Address.java rename to s2-sdk/src/main/java/s2/config/Address.java diff --git a/s2/src/main/java/s2/config/AppendRetryPolicy.java b/s2-sdk/src/main/java/s2/config/AppendRetryPolicy.java similarity index 100% rename from s2/src/main/java/s2/config/AppendRetryPolicy.java rename to s2-sdk/src/main/java/s2/config/AppendRetryPolicy.java diff --git a/s2/src/main/java/s2/config/BasinEndpoint.java b/s2-sdk/src/main/java/s2/config/BasinEndpoint.java similarity index 94% rename from s2/src/main/java/s2/config/BasinEndpoint.java rename to s2-sdk/src/main/java/s2/config/BasinEndpoint.java index 61b7faf..6cce94b 100644 --- a/s2/src/main/java/s2/config/BasinEndpoint.java +++ b/s2-sdk/src/main/java/s2/config/BasinEndpoint.java @@ -3,7 +3,7 @@ import java.util.Objects; public abstract sealed class BasinEndpoint permits ParentZone, Direct { - final Address address; + public final Address address; BasinEndpoint(Address address) { this.address = address; diff --git a/s2/src/main/java/s2/config/Cloud.java b/s2-sdk/src/main/java/s2/config/Cloud.java similarity index 100% rename from s2/src/main/java/s2/config/Cloud.java rename to s2-sdk/src/main/java/s2/config/Cloud.java diff --git a/s2/src/main/java/s2/config/Config.java b/s2-sdk/src/main/java/s2/config/Config.java similarity index 95% rename from s2/src/main/java/s2/config/Config.java rename to s2-sdk/src/main/java/s2/config/Config.java index 882ffcc..78f1286 100644 --- a/s2/src/main/java/s2/config/Config.java +++ b/s2-sdk/src/main/java/s2/config/Config.java @@ -6,31 +6,31 @@ public class Config { public final String token; + public final AppendRetryPolicy appendRetryPolicy; public final Endpoints endpoints; - public final String userAgent; + public final Integer maxAppendInflightBytes; public final Integer maxRetries; - public final Duration retryDelay; public final Duration requestTimeout; - public final AppendRetryPolicy appendRetryPolicy; - public final Integer maxAppendInflightBytes; + public final Duration retryDelay; + public final String userAgent; private Config( String token, + AppendRetryPolicy appendRetryPolicy, Endpoints endpoints, - String userAgent, + Integer maxAppendInflightBytes, Integer maxRetries, - Duration retryDelay, Duration requestTimeout, - AppendRetryPolicy appendRetryPolicy, - Integer maxAppendInflightBytes) { + Duration retryDelay, + String userAgent) { this.token = token; + this.appendRetryPolicy = appendRetryPolicy; this.endpoints = endpoints; - this.userAgent = userAgent; + this.maxAppendInflightBytes = maxAppendInflightBytes; this.maxRetries = maxRetries; - this.retryDelay = retryDelay; this.requestTimeout = requestTimeout; - this.appendRetryPolicy = appendRetryPolicy; - this.maxAppendInflightBytes = maxAppendInflightBytes; + this.retryDelay = retryDelay; + this.userAgent = userAgent; } public static ConfigBuilder newBuilder(String token) { @@ -39,50 +39,50 @@ public static ConfigBuilder newBuilder(String token) { public static final class ConfigBuilder { private final String token; - private Optional userAgent = Optional.empty(); + private Optional appendRetryPolicy = Optional.empty(); private Optional endpoints = Optional.empty(); - private Optional requestTimeout = Optional.empty(); + private Optional maxAppendInflightBytes = Optional.empty(); private Optional maxRetries = Optional.empty(); + private Optional requestTimeout = Optional.empty(); private Optional retryDelay = Optional.empty(); - private Optional appendRetryPolicy = Optional.empty(); - private Optional maxAppendInflightBytes = Optional.empty(); + private Optional userAgent = Optional.empty(); ConfigBuilder(String token) { this.token = token; } - public ConfigBuilder withUserAgent(String userAgent) { - this.userAgent = Optional.of(userAgent); + public ConfigBuilder withAppendRetryPolicy(AppendRetryPolicy appendRetryPolicy) { + this.appendRetryPolicy = Optional.of(appendRetryPolicy); return this; } - public ConfigBuilder withRequestTimeout(long timeout, TemporalUnit unit) { - this.requestTimeout = Optional.of(Duration.of(timeout, unit)); + public ConfigBuilder withEndpoints(Endpoints endpoints) { + this.endpoints = Optional.of(endpoints); return this; } - public ConfigBuilder withMaxRetries(int retries) { - this.maxRetries = Optional.of(retries); + public ConfigBuilder withMaxAppendInflightBytes(int maxAppendInflightBytes) { + this.maxAppendInflightBytes = Optional.of(maxAppendInflightBytes); return this; } - public ConfigBuilder withRetryDelay(Duration delay) { - this.retryDelay = Optional.of(delay); + public ConfigBuilder withMaxRetries(int retries) { + this.maxRetries = Optional.of(retries); return this; } - public ConfigBuilder withEndpoints(Endpoints endpoints) { - this.endpoints = Optional.of(endpoints); + public ConfigBuilder withRequestTimeout(long timeout, TemporalUnit unit) { + this.requestTimeout = Optional.of(Duration.of(timeout, unit)); return this; } - public ConfigBuilder withAppendRetryPolicy(AppendRetryPolicy appendRetryPolicy) { - this.appendRetryPolicy = Optional.of(appendRetryPolicy); + public ConfigBuilder withRetryDelay(Duration delay) { + this.retryDelay = Optional.of(delay); return this; } - public ConfigBuilder withMaxAppendInflightBytes(int maxAppendInflightBytes) { - this.maxAppendInflightBytes = Optional.of(maxAppendInflightBytes); + public ConfigBuilder withUserAgent(String userAgent) { + this.userAgent = Optional.of(userAgent); return this; } @@ -90,13 +90,13 @@ public Config build() { validate(); return new Config( this.token, + this.appendRetryPolicy.orElse(AppendRetryPolicy.ALL), this.endpoints.orElse(Endpoints.forCloud(Cloud.AWS)), - this.userAgent.orElse("s2-sdk-java"), + this.maxAppendInflightBytes.orElse(Integer.MAX_VALUE), this.maxRetries.orElse(3), - this.retryDelay.orElse(Duration.ofMillis(50)), this.requestTimeout.orElse(Duration.ofSeconds(10)), - this.appendRetryPolicy.orElse(AppendRetryPolicy.ALL), - this.maxAppendInflightBytes.orElse(Integer.MAX_VALUE)); + this.retryDelay.orElse(Duration.ofMillis(50)), + this.userAgent.orElse("s2-sdk-java")); } private void validate() { diff --git a/s2/src/main/java/s2/config/Direct.java b/s2-sdk/src/main/java/s2/config/Direct.java similarity index 100% rename from s2/src/main/java/s2/config/Direct.java rename to s2-sdk/src/main/java/s2/config/Direct.java diff --git a/s2/src/main/java/s2/config/Endpoints.java b/s2-sdk/src/main/java/s2/config/Endpoints.java similarity index 100% rename from s2/src/main/java/s2/config/Endpoints.java rename to s2-sdk/src/main/java/s2/config/Endpoints.java diff --git a/s2/src/main/java/s2/config/ParentZone.java b/s2-sdk/src/main/java/s2/config/ParentZone.java similarity index 100% rename from s2/src/main/java/s2/config/ParentZone.java rename to s2-sdk/src/main/java/s2/config/ParentZone.java diff --git a/s2/src/main/java/s2/config/package-info.java b/s2-sdk/src/main/java/s2/config/package-info.java similarity index 100% rename from s2/src/main/java/s2/config/package-info.java rename to s2-sdk/src/main/java/s2/config/package-info.java diff --git a/s2/src/main/java/s2/types/Age.java b/s2-sdk/src/main/java/s2/types/Age.java similarity index 83% rename from s2/src/main/java/s2/types/Age.java rename to s2-sdk/src/main/java/s2/types/Age.java index 8cce5a8..6a511a9 100644 --- a/s2/src/main/java/s2/types/Age.java +++ b/s2-sdk/src/main/java/s2/types/Age.java @@ -3,7 +3,7 @@ import java.time.Duration; public final class Age extends RetentionPolicy { - final Duration age; + public final Duration age; public Age(Duration age) { this.age = age; diff --git a/s2/src/main/java/s2/types/AppendInput.java b/s2-sdk/src/main/java/s2/types/AppendInput.java similarity index 100% rename from s2/src/main/java/s2/types/AppendInput.java rename to s2-sdk/src/main/java/s2/types/AppendInput.java diff --git a/s2/src/main/java/s2/types/AppendOutput.java b/s2-sdk/src/main/java/s2/types/AppendOutput.java similarity index 100% rename from s2/src/main/java/s2/types/AppendOutput.java rename to s2-sdk/src/main/java/s2/types/AppendOutput.java diff --git a/s2/src/main/java/s2/types/AppendRecord.java b/s2-sdk/src/main/java/s2/types/AppendRecord.java similarity index 61% rename from s2/src/main/java/s2/types/AppendRecord.java rename to s2-sdk/src/main/java/s2/types/AppendRecord.java index de5fe67..546e798 100644 --- a/s2/src/main/java/s2/types/AppendRecord.java +++ b/s2-sdk/src/main/java/s2/types/AppendRecord.java @@ -8,67 +8,57 @@ public class AppendRecord implements MeteredBytes, Serializable { - private final List
headers; - private final byte[] bytes; + public final List
headers; + public final ByteString body; - // Private constructor to prevent direct instantiation - private AppendRecord(List
headers, byte[] bytes) { + private AppendRecord(List
headers, ByteString body) { this.headers = headers; - this.bytes = bytes; + this.body = body; } - // Factory method to create a builder public static AppendRecordBuilder newBuilder() { return new AppendRecordBuilder(); } - public List
getHeaders() { - return headers; - } - - public byte[] getBytes() { - return bytes; - } - @Override public long meteredBytes() { return 8 + (2L * this.headers.size()) + this.headers.stream().map(h -> h.name().size() + h.value().size()).reduce(0, Integer::sum) - + this.bytes.length; + + this.body.size(); } public s2.v1alpha.AppendRecord toProto() { return s2.v1alpha.AppendRecord.newBuilder() .addAllHeaders(() -> this.headers.stream().map(Header::toProto).iterator()) - .setBody(ByteString.copyFrom(this.bytes)) + .setBody(this.body) .build(); } - // Builder class for constructing AppendRecord public static class AppendRecordBuilder { private Optional> headers = Optional.empty(); - private Optional bytes = Optional.empty(); + private Optional body = Optional.empty(); - // Set the headers with validation (if needed) public AppendRecordBuilder withHeaders(List
headers) { this.headers = Optional.of(new ArrayList<>(headers)); return this; } - // Set the bytes with validation (if needed) - public AppendRecordBuilder withBytes(byte[] bytes) { - this.bytes = Optional.of(bytes); + public AppendRecordBuilder withBody(byte[] body) { + this.body = Optional.of(ByteString.copyFrom(body)); + return this; + } + + public AppendRecordBuilder withBody(ByteString body) { + this.body = Optional.of(body); return this; } - // Build the AppendRecord with optional validation before returning public AppendRecord build() { List
validatedHeaders = headers.orElse(new ArrayList<>()); - byte[] validatedBytes = bytes.orElse(new byte[0]); + ByteString validatedBody = body.orElse(ByteString.EMPTY); - // Example validation: check that the headers are not empty or that bytes are not empty - var provisional = new AppendRecord(validatedHeaders, validatedBytes); + var provisional = new AppendRecord(validatedHeaders, validatedBody); var meteredBytes = provisional.meteredBytes(); if (meteredBytes > 1024 * 1024) { throw new IllegalStateException( diff --git a/s2/src/main/java/s2/types/BasinConfig.java b/s2-sdk/src/main/java/s2/types/BasinConfig.java similarity index 100% rename from s2/src/main/java/s2/types/BasinConfig.java rename to s2-sdk/src/main/java/s2/types/BasinConfig.java diff --git a/s2/src/main/java/s2/types/BasinInfo.java b/s2-sdk/src/main/java/s2/types/BasinInfo.java similarity index 100% rename from s2/src/main/java/s2/types/BasinInfo.java rename to s2-sdk/src/main/java/s2/types/BasinInfo.java diff --git a/s2/src/main/java/s2/types/BasinState.java b/s2-sdk/src/main/java/s2/types/BasinState.java similarity index 100% rename from s2/src/main/java/s2/types/BasinState.java rename to s2-sdk/src/main/java/s2/types/BasinState.java diff --git a/s2/src/main/java/s2/types/Batch.java b/s2-sdk/src/main/java/s2/types/Batch.java similarity index 99% rename from s2/src/main/java/s2/types/Batch.java rename to s2-sdk/src/main/java/s2/types/Batch.java index 35fb79d..a043a11 100644 --- a/s2/src/main/java/s2/types/Batch.java +++ b/s2-sdk/src/main/java/s2/types/Batch.java @@ -3,6 +3,7 @@ import java.util.Optional; public record Batch(SequencedRecordBatch sequencedRecordBatch) implements ReadOutput, MeteredBytes { + public Optional firstSeqNum() { return this.sequencedRecordBatch.records().stream().findFirst().map(SequencedRecord::seqNum); } diff --git a/s2/src/main/java/s2/types/CreateBasinRequest.java b/s2-sdk/src/main/java/s2/types/CreateBasinRequest.java similarity index 93% rename from s2/src/main/java/s2/types/CreateBasinRequest.java rename to s2-sdk/src/main/java/s2/types/CreateBasinRequest.java index 90d2aaa..aa26119 100644 --- a/s2/src/main/java/s2/types/CreateBasinRequest.java +++ b/s2-sdk/src/main/java/s2/types/CreateBasinRequest.java @@ -5,9 +5,9 @@ public class CreateBasinRequest { - final Optional basin; - final BasinConfig config; - final Optional assignment; + public final Optional basin; + public final BasinConfig config; + public final Optional assignment; private CreateBasinRequest( Optional basin, BasinConfig config, Optional assignment) { @@ -27,7 +27,7 @@ public s2.v1alpha.CreateBasinRequest toProto() { } abstract static sealed class BasinAssignment permits Scope, Cell { - final String value; + public final String value; BasinAssignment(String value) { this.value = value; @@ -35,14 +35,12 @@ abstract static sealed class BasinAssignment permits Scope, Cell { } static final class Scope extends BasinAssignment { - Scope(String value) { super(value); } } static final class Cell extends BasinAssignment { - Cell(String value) { super(value); } diff --git a/s2/src/main/java/s2/types/CreateStreamRequest.java b/s2-sdk/src/main/java/s2/types/CreateStreamRequest.java similarity index 100% rename from s2/src/main/java/s2/types/CreateStreamRequest.java rename to s2-sdk/src/main/java/s2/types/CreateStreamRequest.java diff --git a/s2/src/main/java/s2/types/FirstSeqNum.java b/s2-sdk/src/main/java/s2/types/FirstSeqNum.java similarity index 100% rename from s2/src/main/java/s2/types/FirstSeqNum.java rename to s2-sdk/src/main/java/s2/types/FirstSeqNum.java diff --git a/s2/src/main/java/s2/types/Header.java b/s2-sdk/src/main/java/s2/types/Header.java similarity index 100% rename from s2/src/main/java/s2/types/Header.java rename to s2-sdk/src/main/java/s2/types/Header.java diff --git a/s2/src/main/java/s2/types/ListBasinsRequest.java b/s2-sdk/src/main/java/s2/types/ListBasinsRequest.java similarity index 93% rename from s2/src/main/java/s2/types/ListBasinsRequest.java rename to s2-sdk/src/main/java/s2/types/ListBasinsRequest.java index 0a5f331..d33e33b 100644 --- a/s2/src/main/java/s2/types/ListBasinsRequest.java +++ b/s2-sdk/src/main/java/s2/types/ListBasinsRequest.java @@ -3,9 +3,9 @@ import java.util.Optional; public class ListBasinsRequest { - final String prefix; - final String startAfter; - final Optional limit; + public final String prefix; + public final String startAfter; + public final Optional limit; ListBasinsRequest(String prefix, String startAfter, Optional limit) { this.prefix = prefix; diff --git a/s2/src/main/java/s2/types/ListStreamsRequest.java b/s2-sdk/src/main/java/s2/types/ListStreamsRequest.java similarity index 93% rename from s2/src/main/java/s2/types/ListStreamsRequest.java rename to s2-sdk/src/main/java/s2/types/ListStreamsRequest.java index 50e3afb..6d27ee4 100644 --- a/s2/src/main/java/s2/types/ListStreamsRequest.java +++ b/s2-sdk/src/main/java/s2/types/ListStreamsRequest.java @@ -3,9 +3,9 @@ import java.util.Optional; public class ListStreamsRequest { - final String prefix; - final String startAfter; - final Optional limit; + public final String prefix; + public final String startAfter; + public final Optional limit; ListStreamsRequest(String prefix, String startAfter, Optional limit) { this.prefix = prefix; diff --git a/s2/src/main/java/s2/types/MeteredBytes.java b/s2-sdk/src/main/java/s2/types/MeteredBytes.java similarity index 100% rename from s2/src/main/java/s2/types/MeteredBytes.java rename to s2-sdk/src/main/java/s2/types/MeteredBytes.java diff --git a/s2/src/main/java/s2/types/NextSeqNum.java b/s2-sdk/src/main/java/s2/types/NextSeqNum.java similarity index 100% rename from s2/src/main/java/s2/types/NextSeqNum.java rename to s2-sdk/src/main/java/s2/types/NextSeqNum.java diff --git a/s2/src/main/java/s2/types/Paginated.java b/s2-sdk/src/main/java/s2/types/Paginated.java similarity index 100% rename from s2/src/main/java/s2/types/Paginated.java rename to s2-sdk/src/main/java/s2/types/Paginated.java diff --git a/s2/src/main/java/s2/types/ReadLimit.java b/s2-sdk/src/main/java/s2/types/ReadLimit.java similarity index 91% rename from s2/src/main/java/s2/types/ReadLimit.java rename to s2-sdk/src/main/java/s2/types/ReadLimit.java index 5616500..d9a35df 100644 --- a/s2/src/main/java/s2/types/ReadLimit.java +++ b/s2-sdk/src/main/java/s2/types/ReadLimit.java @@ -5,6 +5,7 @@ public class ReadLimit { public static final ReadLimit NONE = new ReadLimit(Optional.empty(), Optional.empty()); + public final Optional count; public final Optional bytes; @@ -13,10 +14,9 @@ private ReadLimit(Optional count, Optional bytes) { this.bytes = bytes; } - // Static factory methods for different ways to instantiate ReadLimit public static ReadLimit count(long count) { if (count < 0) { - throw new IllegalArgumentException("Bytes must be positive"); + throw new IllegalArgumentException("Count must be positive"); } return new ReadLimit(Optional.of(count), Optional.empty()); } @@ -33,7 +33,7 @@ public static ReadLimit countOrBytes(long count, long bytes) { throw new IllegalArgumentException("Bytes must be positive"); } if (count < 0) { - throw new IllegalArgumentException("Bytes must be positive"); + throw new IllegalArgumentException("Count must be positive"); } return new ReadLimit(Optional.of(count), Optional.of(bytes)); } diff --git a/s2/src/main/java/s2/types/ReadOutput.java b/s2-sdk/src/main/java/s2/types/ReadOutput.java similarity index 100% rename from s2/src/main/java/s2/types/ReadOutput.java rename to s2-sdk/src/main/java/s2/types/ReadOutput.java diff --git a/s2/src/main/java/s2/types/ReadRequest.java b/s2-sdk/src/main/java/s2/types/ReadRequest.java similarity index 80% rename from s2/src/main/java/s2/types/ReadRequest.java rename to s2-sdk/src/main/java/s2/types/ReadRequest.java index 449ed54..7671d9d 100644 --- a/s2/src/main/java/s2/types/ReadRequest.java +++ b/s2-sdk/src/main/java/s2/types/ReadRequest.java @@ -4,9 +4,8 @@ public class ReadRequest { - public static final ReadRequest DEFAULT = new ReadRequest(0L, ReadLimit.NONE); - protected final long startSeqNum; - protected final ReadLimit readLimit; + public final long startSeqNum; + public final ReadLimit readLimit; protected ReadRequest(long startSeqNum, ReadLimit readLimit) { this.startSeqNum = startSeqNum; @@ -26,8 +25,8 @@ public s2.v1alpha.ReadRequest toProto(String streamName) { } public static class ReadRequestBuilder { - Optional startSeqNum = Optional.empty(); - Optional readLimit = Optional.empty(); + private Optional startSeqNum = Optional.empty(); + private Optional readLimit = Optional.empty(); public ReadRequestBuilder withStartSeqNum(long startSeqNum) { this.startSeqNum = Optional.of(startSeqNum); diff --git a/s2/src/main/java/s2/types/ReadSessionRequest.java b/s2-sdk/src/main/java/s2/types/ReadSessionRequest.java similarity index 92% rename from s2/src/main/java/s2/types/ReadSessionRequest.java rename to s2-sdk/src/main/java/s2/types/ReadSessionRequest.java index 33f2a58..47af245 100644 --- a/s2/src/main/java/s2/types/ReadSessionRequest.java +++ b/s2-sdk/src/main/java/s2/types/ReadSessionRequest.java @@ -37,8 +37,8 @@ public s2.v1alpha.ReadSessionRequest toProto(String streamName) { } public static class ReadSessionRequestBuilder { - Optional startSeqNum = Optional.empty(); - Optional readLimit = Optional.empty(); + private Optional startSeqNum = Optional.empty(); + private Optional readLimit = Optional.empty(); public ReadSessionRequestBuilder withStartSeqNum(long startSeqNum) { this.startSeqNum = Optional.of(startSeqNum); diff --git a/s2/src/main/java/s2/types/ReconfigureBasinRequest.java b/s2-sdk/src/main/java/s2/types/ReconfigureBasinRequest.java similarity index 94% rename from s2/src/main/java/s2/types/ReconfigureBasinRequest.java rename to s2-sdk/src/main/java/s2/types/ReconfigureBasinRequest.java index 8e5ee9d..ae91fb8 100644 --- a/s2/src/main/java/s2/types/ReconfigureBasinRequest.java +++ b/s2-sdk/src/main/java/s2/types/ReconfigureBasinRequest.java @@ -6,9 +6,9 @@ import s2.utils.BasinUtils; public class ReconfigureBasinRequest { - final String basin; - final BasinConfig basinConfig; - final List fieldMask; + public final String basin; + public final BasinConfig basinConfig; + public final List fieldMask; private ReconfigureBasinRequest(String basin, BasinConfig basinConfig, List fieldMask) { this.basin = basin; diff --git a/s2/src/main/java/s2/types/ReconfigureStreamRequest.java b/s2-sdk/src/main/java/s2/types/ReconfigureStreamRequest.java similarity index 94% rename from s2/src/main/java/s2/types/ReconfigureStreamRequest.java rename to s2-sdk/src/main/java/s2/types/ReconfigureStreamRequest.java index ab14a04..cfcc523 100644 --- a/s2/src/main/java/s2/types/ReconfigureStreamRequest.java +++ b/s2-sdk/src/main/java/s2/types/ReconfigureStreamRequest.java @@ -6,9 +6,9 @@ import s2.utils.StreamUtils; public class ReconfigureStreamRequest { - final String stream; - final StreamConfig streamConfig; - final List fieldMask; + public final String stream; + public final StreamConfig streamConfig; + public final List fieldMask; private ReconfigureStreamRequest( String stream, StreamConfig streamConfig, List fieldMask) { diff --git a/s2/src/main/java/s2/types/RetentionPolicy.java b/s2-sdk/src/main/java/s2/types/RetentionPolicy.java similarity index 100% rename from s2/src/main/java/s2/types/RetentionPolicy.java rename to s2-sdk/src/main/java/s2/types/RetentionPolicy.java diff --git a/s2/src/main/java/s2/types/SequencedRecord.java b/s2-sdk/src/main/java/s2/types/SequencedRecord.java similarity index 100% rename from s2/src/main/java/s2/types/SequencedRecord.java rename to s2-sdk/src/main/java/s2/types/SequencedRecord.java diff --git a/s2/src/main/java/s2/types/SequencedRecordBatch.java b/s2-sdk/src/main/java/s2/types/SequencedRecordBatch.java similarity index 100% rename from s2/src/main/java/s2/types/SequencedRecordBatch.java rename to s2-sdk/src/main/java/s2/types/SequencedRecordBatch.java diff --git a/s2/src/main/java/s2/types/StorageClass.java b/s2-sdk/src/main/java/s2/types/StorageClass.java similarity index 100% rename from s2/src/main/java/s2/types/StorageClass.java rename to s2-sdk/src/main/java/s2/types/StorageClass.java diff --git a/s2/src/main/java/s2/types/StreamConfig.java b/s2-sdk/src/main/java/s2/types/StreamConfig.java similarity index 92% rename from s2/src/main/java/s2/types/StreamConfig.java rename to s2-sdk/src/main/java/s2/types/StreamConfig.java index d505e2a..5eb73b1 100644 --- a/s2/src/main/java/s2/types/StreamConfig.java +++ b/s2-sdk/src/main/java/s2/types/StreamConfig.java @@ -38,8 +38,8 @@ public s2.v1alpha.StreamConfig toProto() { } public static class StreamConfigBuilder { - Optional storageClass = Optional.empty(); - Optional retentionPolicy = Optional.empty(); + private Optional storageClass = Optional.empty(); + private Optional retentionPolicy = Optional.empty(); public StreamConfigBuilder withStorageClass(StorageClass storageClass) { this.storageClass = Optional.of(storageClass); diff --git a/s2/src/main/java/s2/types/StreamInfo.java b/s2-sdk/src/main/java/s2/types/StreamInfo.java similarity index 100% rename from s2/src/main/java/s2/types/StreamInfo.java rename to s2-sdk/src/main/java/s2/types/StreamInfo.java diff --git a/s2/src/main/java/s2/types/package-info.java b/s2-sdk/src/main/java/s2/types/package-info.java similarity index 100% rename from s2/src/main/java/s2/types/package-info.java rename to s2-sdk/src/main/java/s2/types/package-info.java diff --git a/s2/src/main/java/s2/utils/BasinUtils.java b/s2-sdk/src/main/java/s2/utils/BasinUtils.java similarity index 100% rename from s2/src/main/java/s2/utils/BasinUtils.java rename to s2-sdk/src/main/java/s2/utils/BasinUtils.java diff --git a/s2/src/main/java/s2/utils/StreamUtils.java b/s2-sdk/src/main/java/s2/utils/StreamUtils.java similarity index 100% rename from s2/src/main/java/s2/utils/StreamUtils.java rename to s2-sdk/src/main/java/s2/utils/StreamUtils.java diff --git a/s2/src/main/java/s2/utils/package-info.java b/s2-sdk/src/main/java/s2/utils/package-info.java similarity index 100% rename from s2/src/main/java/s2/utils/package-info.java rename to s2-sdk/src/main/java/s2/utils/package-info.java diff --git a/s2/src/test/java/s2/auth/BearerTokenCallCredentialsTest.java b/s2-sdk/src/test/java/s2/auth/BearerTokenCallCredentialsTest.java similarity index 100% rename from s2/src/test/java/s2/auth/BearerTokenCallCredentialsTest.java rename to s2-sdk/src/test/java/s2/auth/BearerTokenCallCredentialsTest.java diff --git a/s2/src/test/java/s2/client/ReadSessionTest.java b/s2-sdk/src/test/java/s2/client/ReadSessionTest.java similarity index 100% rename from s2/src/test/java/s2/client/ReadSessionTest.java rename to s2-sdk/src/test/java/s2/client/ReadSessionTest.java diff --git a/s2/src/test/java/s2/config/EndpointsTest.java b/s2-sdk/src/test/java/s2/config/EndpointsTest.java similarity index 100% rename from s2/src/test/java/s2/config/EndpointsTest.java rename to s2-sdk/src/test/java/s2/config/EndpointsTest.java diff --git a/s2/src/test/java/s2/v1alpha/StreamService/MockReadSessionStreamService.java b/s2-sdk/src/test/java/s2/v1alpha/StreamService/MockReadSessionStreamService.java similarity index 100% rename from s2/src/test/java/s2/v1alpha/StreamService/MockReadSessionStreamService.java rename to s2-sdk/src/test/java/s2/v1alpha/StreamService/MockReadSessionStreamService.java diff --git a/settings.gradle.kts b/settings.gradle.kts index f433692..5c22631 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,4 +12,4 @@ plugins { } rootProject.name = "s2-sdk-java" -include("app", "s2", "s2-internal") +include("app", "s2-sdk", "s2-internal")