diff --git a/java/app/build.gradle b/java/app/build.gradle index 4b91435..217e019 100644 --- a/java/app/build.gradle +++ b/java/app/build.gradle @@ -23,18 +23,16 @@ repositories { sourceSets { main { + java { + srcDirs += './src/main/generated/proto' + srcDirs -= './build/generated' + } proto { srcDir '../../proto' } } } -idea { - module { - generatedSourceDirs.add(file("build/generated/proto/main")) - } -} - group 'org.vss' version '1.0' @@ -81,6 +79,17 @@ protobuf { protoc { artifact = "com.google.protobuf:protoc:$protobufVersion" } + + generatedFilesBaseDir = "${projectDir}/src/" + generateProtoTasks { + all().each { task -> + task.builtins { + java { + outputSubDir = 'generated/proto' + } + } + } + } } jooq { diff --git a/java/app/src/main/generated/proto/org/vss/DeleteObjectRequest.java b/java/app/src/main/generated/proto/org/vss/DeleteObjectRequest.java new file mode 100644 index 0000000..48a68dc --- /dev/null +++ b/java/app/src/main/generated/proto/org/vss/DeleteObjectRequest.java @@ -0,0 +1,1019 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: vss.proto + +package org.vss; + +/** + *
+ * Request payload to be used for `DeleteObject` API call to server. + *+ *
+ * Protobuf type {@code vss.DeleteObjectRequest} + */ +public final class DeleteObjectRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:vss.DeleteObjectRequest) + DeleteObjectRequestOrBuilder { + private static final long serialVersionUID = 0L; + + // Use DeleteObjectRequest.newBuilder() to construct. + private DeleteObjectRequest(com.google.protobuf.GeneratedMessageV3.Builder> builder) { + super(builder); + } + + private DeleteObjectRequest() { + storeId_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeleteObjectRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.vss.Vss.internal_static_vss_DeleteObjectRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.vss.Vss.internal_static_vss_DeleteObjectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.vss.DeleteObjectRequest.class, org.vss.DeleteObjectRequest.Builder.class); + } + + public static final int STORE_ID_FIELD_NUMBER = 1; + private volatile java.lang.Object storeId_; + + /** + *
+ * `store_id` is a keyspace identifier. + * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store) + * All APIs operate within a single `store_id`. + * It is up to clients to use single or multiple stores for their use-case. + * This can be used for client-isolation/ rate-limiting / throttling on the server-side. + * Authorization and billing can also be performed at the `store_id` level. + *+ * + *
string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ @java.lang.Override
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ }
+ }
+
+ /**
+ * + * `store_id` is a keyspace identifier. + * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store) + * All APIs operate within a single `store_id`. + * It is up to clients to use single or multiple stores for their use-case. + * This can be used for client-isolation/ rate-limiting / throttling on the server-side. + * Authorization and billing can also be performed at the `store_id` level. + *+ * + *
string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int KEY_VALUE_FIELD_NUMBER = 2;
+ private org.vss.KeyValue keyValue_;
+
+ /**
+ * + * Item to be deleted as a result of this `DeleteObjectRequest`. + * An item consists of a `key` and its corresponding `version`. + * Key-level Versioning (Conditional Delete): + * The item is only deleted if the current database version against the `key` is the same as + * the `version` specified in the request. + * Skipping key-level versioning (Non-conditional Delete): + * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'. + * This will perform a non-conditional delete query. + * This operation is idempotent, that is, multiple delete calls for the same item will not fail. + * If the requested item does not exist, this operation will not fail. + * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API. + *+ * + *
.vss.KeyValue key_value = 2;
+ *
+ * @return Whether the keyValue field is set.
+ */
+ @java.lang.Override
+ public boolean hasKeyValue() {
+ return keyValue_ != null;
+ }
+
+ /**
+ * + * Item to be deleted as a result of this `DeleteObjectRequest`. + * An item consists of a `key` and its corresponding `version`. + * Key-level Versioning (Conditional Delete): + * The item is only deleted if the current database version against the `key` is the same as + * the `version` specified in the request. + * Skipping key-level versioning (Non-conditional Delete): + * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'. + * This will perform a non-conditional delete query. + * This operation is idempotent, that is, multiple delete calls for the same item will not fail. + * If the requested item does not exist, this operation will not fail. + * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API. + *+ * + *
.vss.KeyValue key_value = 2;
+ *
+ * @return The keyValue.
+ */
+ @java.lang.Override
+ public org.vss.KeyValue getKeyValue() {
+ return keyValue_ == null ? org.vss.KeyValue.getDefaultInstance() : keyValue_;
+ }
+
+ /**
+ * + * Item to be deleted as a result of this `DeleteObjectRequest`. + * An item consists of a `key` and its corresponding `version`. + * Key-level Versioning (Conditional Delete): + * The item is only deleted if the current database version against the `key` is the same as + * the `version` specified in the request. + * Skipping key-level versioning (Non-conditional Delete): + * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'. + * This will perform a non-conditional delete query. + * This operation is idempotent, that is, multiple delete calls for the same item will not fail. + * If the requested item does not exist, this operation will not fail. + * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API. + *+ * + *
.vss.KeyValue key_value = 2;
+ */
+ @java.lang.Override
+ public org.vss.KeyValueOrBuilder getKeyValueOrBuilder() {
+ return getKeyValue();
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, storeId_);
+ }
+ if (keyValue_ != null) {
+ output.writeMessage(2, getKeyValue());
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, storeId_);
+ }
+ if (keyValue_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, getKeyValue());
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.DeleteObjectRequest)) {
+ return super.equals(obj);
+ }
+ org.vss.DeleteObjectRequest other = (org.vss.DeleteObjectRequest) obj;
+
+ if (!getStoreId()
+ .equals(other.getStoreId())) return false;
+ if (hasKeyValue() != other.hasKeyValue()) return false;
+ if (hasKeyValue()) {
+ if (!getKeyValue()
+ .equals(other.getKeyValue())) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + STORE_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getStoreId().hashCode();
+ if (hasKeyValue()) {
+ hash = (37 * hash) + KEY_VALUE_FIELD_NUMBER;
+ hash = (53 * hash) + getKeyValue().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectRequest parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.DeleteObjectRequest parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.DeleteObjectRequest parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.DeleteObjectRequest prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ * + * Request payload to be used for `DeleteObject` API call to server. + *+ *
+ * Protobuf type {@code vss.DeleteObjectRequest}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.DeleteObjectResponse}
+ */
+public final class DeleteObjectResponse extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.DeleteObjectResponse)
+ DeleteObjectResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use DeleteObjectResponse.newBuilder() to construct.
+ private DeleteObjectResponse(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private DeleteObjectResponse() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new DeleteObjectResponse();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_DeleteObjectResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_DeleteObjectResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.DeleteObjectResponse.class, org.vss.DeleteObjectResponse.Builder.class);
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.DeleteObjectResponse)) {
+ return super.equals(obj);
+ }
+ org.vss.DeleteObjectResponse other = (org.vss.DeleteObjectResponse) obj;
+
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectResponse parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.DeleteObjectResponse parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.DeleteObjectResponse parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.DeleteObjectResponse prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Protobuf type {@code vss.DeleteObjectResponse}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.EncryptionMetadata}
+ */
+public final class EncryptionMetadata extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.EncryptionMetadata)
+ EncryptionMetadataOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use EncryptionMetadata.newBuilder() to construct.
+ private EncryptionMetadata(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private EncryptionMetadata() {
+ cipherFormat_ = "";
+ nonce_ = com.google.protobuf.ByteString.EMPTY;
+ tag_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new EncryptionMetadata();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_EncryptionMetadata_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_EncryptionMetadata_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.EncryptionMetadata.class, org.vss.EncryptionMetadata.Builder.class);
+ }
+
+ public static final int CIPHER_FORMAT_FIELD_NUMBER = 1;
+ private volatile java.lang.Object cipherFormat_;
+
+ /**
+ *
+ * Protobuf type {@code vss.EncryptionMetadata}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf enum {@code vss.ErrorCode}
+ */
+public enum ErrorCode
+ implements com.google.protobuf.ProtocolMessageEnum {
+ /**
+ *
+ * Protobuf type {@code vss.ErrorResponse}
+ */
+public final class ErrorResponse extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.ErrorResponse)
+ ErrorResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use ErrorResponse.newBuilder() to construct.
+ private ErrorResponse(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private ErrorResponse() {
+ errorCode_ = 0;
+ message_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new ErrorResponse();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_ErrorResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_ErrorResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.ErrorResponse.class, org.vss.ErrorResponse.Builder.class);
+ }
+
+ public static final int ERROR_CODE_FIELD_NUMBER = 1;
+ private int errorCode_;
+
+ /**
+ *
+ * Protobuf type {@code vss.ErrorResponse}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.GetObjectRequest}
+ */
+public final class GetObjectRequest extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.GetObjectRequest)
+ GetObjectRequestOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use GetObjectRequest.newBuilder() to construct.
+ private GetObjectRequest(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private GetObjectRequest() {
+ storeId_ = "";
+ key_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new GetObjectRequest();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_GetObjectRequest_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_GetObjectRequest_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.GetObjectRequest.class, org.vss.GetObjectRequest.Builder.class);
+ }
+
+ public static final int STORE_ID_FIELD_NUMBER = 1;
+ private volatile java.lang.Object storeId_;
+
+ /**
+ *
+ * Protobuf type {@code vss.GetObjectRequest}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.GetObjectResponse}
+ */
+public final class GetObjectResponse extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.GetObjectResponse)
+ GetObjectResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use GetObjectResponse.newBuilder() to construct.
+ private GetObjectResponse(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private GetObjectResponse() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new GetObjectResponse();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_GetObjectResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_GetObjectResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.GetObjectResponse.class, org.vss.GetObjectResponse.Builder.class);
+ }
+
+ public static final int VALUE_FIELD_NUMBER = 2;
+ private org.vss.KeyValue value_;
+
+ /**
+ *
+ * Protobuf type {@code vss.GetObjectResponse}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.KeyValue}
+ */
+public final class KeyValue extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.KeyValue)
+ KeyValueOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use KeyValue.newBuilder() to construct.
+ private KeyValue(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private KeyValue() {
+ key_ = "";
+ value_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new KeyValue();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_KeyValue_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_KeyValue_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.KeyValue.class, org.vss.KeyValue.Builder.class);
+ }
+
+ public static final int KEY_FIELD_NUMBER = 1;
+ private volatile java.lang.Object key_;
+
+ /**
+ *
+ * Protobuf type {@code vss.KeyValue}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.ListKeyVersionsRequest}
+ */
+public final class ListKeyVersionsRequest extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.ListKeyVersionsRequest)
+ ListKeyVersionsRequestOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use ListKeyVersionsRequest.newBuilder() to construct.
+ private ListKeyVersionsRequest(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private ListKeyVersionsRequest() {
+ storeId_ = "";
+ keyPrefix_ = "";
+ pageToken_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new ListKeyVersionsRequest();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_ListKeyVersionsRequest_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_ListKeyVersionsRequest_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.ListKeyVersionsRequest.class, org.vss.ListKeyVersionsRequest.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int STORE_ID_FIELD_NUMBER = 1;
+ private volatile java.lang.Object storeId_;
+
+ /**
+ *
+ * Protobuf type {@code vss.ListKeyVersionsRequest}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.ListKeyVersionsResponse}
+ */
+public final class ListKeyVersionsResponse extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.ListKeyVersionsResponse)
+ ListKeyVersionsResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use ListKeyVersionsResponse.newBuilder() to construct.
+ private ListKeyVersionsResponse(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private ListKeyVersionsResponse() {
+ keyVersions_ = java.util.Collections.emptyList();
+ nextPageToken_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new ListKeyVersionsResponse();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_ListKeyVersionsResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_ListKeyVersionsResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.ListKeyVersionsResponse.class, org.vss.ListKeyVersionsResponse.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int KEY_VERSIONS_FIELD_NUMBER = 1;
+ private java.util.List
+ * Protobuf type {@code vss.ListKeyVersionsResponse}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.PlaintextBlob}
+ */
+public final class PlaintextBlob extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.PlaintextBlob)
+ PlaintextBlobOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use PlaintextBlob.newBuilder() to construct.
+ private PlaintextBlob(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private PlaintextBlob() {
+ value_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new PlaintextBlob();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_PlaintextBlob_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_PlaintextBlob_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.PlaintextBlob.class, org.vss.PlaintextBlob.Builder.class);
+ }
+
+ public static final int VALUE_FIELD_NUMBER = 1;
+ private com.google.protobuf.ByteString value_;
+
+ /**
+ *
+ * Protobuf type {@code vss.PlaintextBlob}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.PutObjectRequest}
+ */
+public final class PutObjectRequest extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.PutObjectRequest)
+ PutObjectRequestOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use PutObjectRequest.newBuilder() to construct.
+ private PutObjectRequest(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private PutObjectRequest() {
+ storeId_ = "";
+ transactionItems_ = java.util.Collections.emptyList();
+ deleteItems_ = java.util.Collections.emptyList();
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new PutObjectRequest();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_PutObjectRequest_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_PutObjectRequest_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.PutObjectRequest.class, org.vss.PutObjectRequest.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int STORE_ID_FIELD_NUMBER = 1;
+ private volatile java.lang.Object storeId_;
+
+ /**
+ *
+ * Protobuf type {@code vss.PutObjectRequest}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.PutObjectResponse}
+ */
+public final class PutObjectResponse extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.PutObjectResponse)
+ PutObjectResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use PutObjectResponse.newBuilder() to construct.
+ private PutObjectResponse(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private PutObjectResponse() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new PutObjectResponse();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_PutObjectResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_PutObjectResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.PutObjectResponse.class, org.vss.PutObjectResponse.Builder.class);
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.PutObjectResponse)) {
+ return super.equals(obj);
+ }
+ org.vss.PutObjectResponse other = (org.vss.PutObjectResponse) obj;
+
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectResponse parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PutObjectResponse parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PutObjectResponse parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.PutObjectResponse prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Protobuf type {@code vss.PutObjectResponse}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * Protobuf type {@code vss.Storable}
+ */
+public final class Storable extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:vss.Storable)
+ StorableOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ // Use Storable.newBuilder() to construct.
+ private Storable(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+
+ private Storable() {
+ data_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Storable();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.vss.Vss.internal_static_vss_Storable_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.vss.Vss.internal_static_vss_Storable_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.vss.Storable.class, org.vss.Storable.Builder.class);
+ }
+
+ public static final int DATA_FIELD_NUMBER = 1;
+ private com.google.protobuf.ByteString data_;
+
+ /**
+ *
+ * Protobuf type {@code vss.Storable}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreId(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearStoreId() {
+
+ storeId_ = getDefaultInstance().getStoreId();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The bytes for storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreIdBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ private org.vss.KeyValue keyValue_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.KeyValue, org.vss.KeyValue.Builder, org.vss.KeyValueOrBuilder> keyValueBuilder_;
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ *
+ * @return Whether the keyValue field is set.
+ */
+ public boolean hasKeyValue() {
+ return keyValueBuilder_ != null || keyValue_ != null;
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ *
+ * @return The keyValue.
+ */
+ public org.vss.KeyValue getKeyValue() {
+ if (keyValueBuilder_ == null) {
+ return keyValue_ == null ? org.vss.KeyValue.getDefaultInstance() : keyValue_;
+ } else {
+ return keyValueBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ public Builder setKeyValue(org.vss.KeyValue value) {
+ if (keyValueBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ keyValue_ = value;
+ onChanged();
+ } else {
+ keyValueBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ public Builder setKeyValue(
+ org.vss.KeyValue.Builder builderForValue) {
+ if (keyValueBuilder_ == null) {
+ keyValue_ = builderForValue.build();
+ onChanged();
+ } else {
+ keyValueBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ public Builder mergeKeyValue(org.vss.KeyValue value) {
+ if (keyValueBuilder_ == null) {
+ if (keyValue_ != null) {
+ keyValue_ =
+ org.vss.KeyValue.newBuilder(keyValue_).mergeFrom(value).buildPartial();
+ } else {
+ keyValue_ = value;
+ }
+ onChanged();
+ } else {
+ keyValueBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ public Builder clearKeyValue() {
+ if (keyValueBuilder_ == null) {
+ keyValue_ = null;
+ onChanged();
+ } else {
+ keyValue_ = null;
+ keyValueBuilder_ = null;
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ public org.vss.KeyValue.Builder getKeyValueBuilder() {
+
+ onChanged();
+ return getKeyValueFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ public org.vss.KeyValueOrBuilder getKeyValueOrBuilder() {
+ if (keyValueBuilder_ != null) {
+ return keyValueBuilder_.getMessageOrBuilder();
+ } else {
+ return keyValue_ == null ?
+ org.vss.KeyValue.getDefaultInstance() : keyValue_;
+ }
+ }
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.KeyValue, org.vss.KeyValue.Builder, org.vss.KeyValueOrBuilder>
+ getKeyValueFieldBuilder() {
+ if (keyValueBuilder_ == null) {
+ keyValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.KeyValue, org.vss.KeyValue.Builder, org.vss.KeyValueOrBuilder>(
+ getKeyValue(),
+ getParentForChildren(),
+ isClean());
+ keyValue_ = null;
+ }
+ return keyValueBuilder_;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.DeleteObjectRequest)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.DeleteObjectRequest)
+ private static final org.vss.DeleteObjectRequest DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.DeleteObjectRequest();
+ }
+
+ public static org.vss.DeleteObjectRequest getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ java.lang.String getStoreId();
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ com.google.protobuf.ByteString
+ getStoreIdBytes();
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ *
+ * @return Whether the keyValue field is set.
+ */
+ boolean hasKeyValue();
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ *
+ * @return The keyValue.
+ */
+ org.vss.KeyValue getKeyValue();
+
+ /**
+ *
+ * Item to be deleted as a result of this `DeleteObjectRequest`.
+ * An item consists of a `key` and its corresponding `version`.
+ * Key-level Versioning (Conditional Delete):
+ * The item is only deleted if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * This operation is idempotent, that is, multiple delete calls for the same item will not fail.
+ * If the requested item does not exist, this operation will not fail.
+ * If you wish to perform stricter checks while deleting an item, consider using `PutObject` API.
+ *
+ *
+ * .vss.KeyValue key_value = 2;
+ */
+ org.vss.KeyValueOrBuilder getKeyValueOrBuilder();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/DeleteObjectResponse.java b/java/app/src/main/generated/proto/org/vss/DeleteObjectResponse.java
new file mode 100644
index 0000000..dcf3603
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/DeleteObjectResponse.java
@@ -0,0 +1,439 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Server response for `DeleteObject` API.
+ *
+ *
+ * Server response for `DeleteObject` API.
+ *
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return The cipherFormat.
+ */
+ @java.lang.Override
+ public java.lang.String getCipherFormat() {
+ java.lang.Object ref = cipherFormat_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ cipherFormat_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return The bytes for cipherFormat.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getCipherFormatBytes() {
+ java.lang.Object ref = cipherFormat_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ cipherFormat_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int NONCE_FIELD_NUMBER = 2;
+ private com.google.protobuf.ByteString nonce_;
+
+ /**
+ *
+ * The nonce used for encryption. Nonce is a random or unique value used to ensure that the same
+ * plaintext results in different ciphertexts every time it is encrypted.
+ *
+ *
+ * bytes nonce = 2;
+ *
+ * @return The nonce.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getNonce() {
+ return nonce_;
+ }
+
+ public static final int TAG_FIELD_NUMBER = 3;
+ private com.google.protobuf.ByteString tag_;
+
+ /**
+ *
+ * The authentication tag used for encryption. It provides integrity and authenticity assurance
+ * for the encrypted data.
+ *
+ *
+ * bytes tag = 3;
+ *
+ * @return The tag.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getTag() {
+ return tag_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cipherFormat_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, cipherFormat_);
+ }
+ if (!nonce_.isEmpty()) {
+ output.writeBytes(2, nonce_);
+ }
+ if (!tag_.isEmpty()) {
+ output.writeBytes(3, tag_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cipherFormat_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, cipherFormat_);
+ }
+ if (!nonce_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(2, nonce_);
+ }
+ if (!tag_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(3, tag_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.EncryptionMetadata)) {
+ return super.equals(obj);
+ }
+ org.vss.EncryptionMetadata other = (org.vss.EncryptionMetadata) obj;
+
+ if (!getCipherFormat()
+ .equals(other.getCipherFormat())) return false;
+ if (!getNonce()
+ .equals(other.getNonce())) return false;
+ if (!getTag()
+ .equals(other.getTag())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + CIPHER_FORMAT_FIELD_NUMBER;
+ hash = (53 * hash) + getCipherFormat().hashCode();
+ hash = (37 * hash) + NONCE_FIELD_NUMBER;
+ hash = (53 * hash) + getNonce().hashCode();
+ hash = (37 * hash) + TAG_FIELD_NUMBER;
+ hash = (53 * hash) + getTag().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.EncryptionMetadata parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.EncryptionMetadata parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.EncryptionMetadata parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.EncryptionMetadata prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return The cipherFormat.
+ */
+ public java.lang.String getCipherFormat() {
+ java.lang.Object ref = cipherFormat_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ cipherFormat_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return The bytes for cipherFormat.
+ */
+ public com.google.protobuf.ByteString
+ getCipherFormatBytes() {
+ java.lang.Object ref = cipherFormat_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ cipherFormat_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @param value The cipherFormat to set.
+ * @return This builder for chaining.
+ */
+ public Builder setCipherFormat(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ cipherFormat_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearCipherFormat() {
+
+ cipherFormat_ = getDefaultInstance().getCipherFormat();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @param value The bytes for cipherFormat to set.
+ * @return This builder for chaining.
+ */
+ public Builder setCipherFormatBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ cipherFormat_ = value;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString nonce_ = com.google.protobuf.ByteString.EMPTY;
+
+ /**
+ *
+ * The nonce used for encryption. Nonce is a random or unique value used to ensure that the same
+ * plaintext results in different ciphertexts every time it is encrypted.
+ *
+ *
+ * bytes nonce = 2;
+ *
+ * @return The nonce.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getNonce() {
+ return nonce_;
+ }
+
+ /**
+ *
+ * The nonce used for encryption. Nonce is a random or unique value used to ensure that the same
+ * plaintext results in different ciphertexts every time it is encrypted.
+ *
+ *
+ * bytes nonce = 2;
+ *
+ * @param value The nonce to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNonce(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ nonce_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The nonce used for encryption. Nonce is a random or unique value used to ensure that the same
+ * plaintext results in different ciphertexts every time it is encrypted.
+ *
+ *
+ * bytes nonce = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearNonce() {
+
+ nonce_ = getDefaultInstance().getNonce();
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString tag_ = com.google.protobuf.ByteString.EMPTY;
+
+ /**
+ *
+ * The authentication tag used for encryption. It provides integrity and authenticity assurance
+ * for the encrypted data.
+ *
+ *
+ * bytes tag = 3;
+ *
+ * @return The tag.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getTag() {
+ return tag_;
+ }
+
+ /**
+ *
+ * The authentication tag used for encryption. It provides integrity and authenticity assurance
+ * for the encrypted data.
+ *
+ *
+ * bytes tag = 3;
+ *
+ * @param value The tag to set.
+ * @return This builder for chaining.
+ */
+ public Builder setTag(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ tag_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The authentication tag used for encryption. It provides integrity and authenticity assurance
+ * for the encrypted data.
+ *
+ *
+ * bytes tag = 3;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearTag() {
+
+ tag_ = getDefaultInstance().getTag();
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.EncryptionMetadata)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.EncryptionMetadata)
+ private static final org.vss.EncryptionMetadata DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.EncryptionMetadata();
+ }
+
+ public static org.vss.EncryptionMetadata getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return The cipherFormat.
+ */
+ java.lang.String getCipherFormat();
+
+ /**
+ *
+ * The encryption algorithm used for encrypting the `PlaintextBlob`.
+ *
+ *
+ * string cipher_format = 1;
+ *
+ * @return The bytes for cipherFormat.
+ */
+ com.google.protobuf.ByteString
+ getCipherFormatBytes();
+
+ /**
+ *
+ * The nonce used for encryption. Nonce is a random or unique value used to ensure that the same
+ * plaintext results in different ciphertexts every time it is encrypted.
+ *
+ *
+ * bytes nonce = 2;
+ *
+ * @return The nonce.
+ */
+ com.google.protobuf.ByteString getNonce();
+
+ /**
+ *
+ * The authentication tag used for encryption. It provides integrity and authenticity assurance
+ * for the encrypted data.
+ *
+ *
+ * bytes tag = 3;
+ *
+ * @return The tag.
+ */
+ com.google.protobuf.ByteString getTag();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/ErrorCode.java b/java/app/src/main/generated/proto/org/vss/ErrorCode.java
new file mode 100644
index 0000000..2775e69
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/ErrorCode.java
@@ -0,0 +1,221 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * ErrorCodes to be used in `ErrorResponse`
+ *
+ *
+ * Default protobuf Enum value. Will not be used as `ErrorCode` by server.
+ *
+ *
+ * UNKNOWN = 0;
+ */
+ UNKNOWN(0),
+ /**
+ *
+ * Used when the request contains mismatched version (either key or global)
+ * in `PutObjectRequest`. For more info refer `PutObjectRequest`.
+ *
+ *
+ * CONFLICT_EXCEPTION = 1;
+ */
+ CONFLICT_EXCEPTION(1),
+ /**
+ *
+ * Used in the following cases:
+ * - The request was missing a required argument.
+ * - The specified argument was invalid, incomplete or in the wrong format.
+ * - The request body of api cannot be deserialized into corresponding protobuf object.
+ *
+ *
+ * INVALID_REQUEST_EXCEPTION = 2;
+ */
+ INVALID_REQUEST_EXCEPTION(2),
+ /**
+ *
+ * Used when an internal server error occurred, client is probably at no fault and can safely retry
+ * this error with exponential backoff.
+ *
+ *
+ * INTERNAL_SERVER_EXCEPTION = 3;
+ */
+ INTERNAL_SERVER_EXCEPTION(3),
+ /**
+ *
+ * Used when the specified `key` in a `GetObjectRequest` does not exist.
+ *
+ *
+ * NO_SUCH_KEY_EXCEPTION = 4;
+ */
+ NO_SUCH_KEY_EXCEPTION(4),
+ /**
+ *
+ * Used when authentication fails or in case of an unauthorized request.
+ *
+ *
+ * AUTH_EXCEPTION = 5;
+ */
+ AUTH_EXCEPTION(5),
+ UNRECOGNIZED(-1),
+ ;
+
+ /**
+ *
+ * Default protobuf Enum value. Will not be used as `ErrorCode` by server.
+ *
+ *
+ * UNKNOWN = 0;
+ */
+ public static final int UNKNOWN_VALUE = 0;
+ /**
+ *
+ * Used when the request contains mismatched version (either key or global)
+ * in `PutObjectRequest`. For more info refer `PutObjectRequest`.
+ *
+ *
+ * CONFLICT_EXCEPTION = 1;
+ */
+ public static final int CONFLICT_EXCEPTION_VALUE = 1;
+ /**
+ *
+ * Used in the following cases:
+ * - The request was missing a required argument.
+ * - The specified argument was invalid, incomplete or in the wrong format.
+ * - The request body of api cannot be deserialized into corresponding protobuf object.
+ *
+ *
+ * INVALID_REQUEST_EXCEPTION = 2;
+ */
+ public static final int INVALID_REQUEST_EXCEPTION_VALUE = 2;
+ /**
+ *
+ * Used when an internal server error occurred, client is probably at no fault and can safely retry
+ * this error with exponential backoff.
+ *
+ *
+ * INTERNAL_SERVER_EXCEPTION = 3;
+ */
+ public static final int INTERNAL_SERVER_EXCEPTION_VALUE = 3;
+ /**
+ *
+ * Used when the specified `key` in a `GetObjectRequest` does not exist.
+ *
+ *
+ * NO_SUCH_KEY_EXCEPTION = 4;
+ */
+ public static final int NO_SUCH_KEY_EXCEPTION_VALUE = 4;
+ /**
+ *
+ * Used when authentication fails or in case of an unauthorized request.
+ *
+ *
+ * AUTH_EXCEPTION = 5;
+ */
+ public static final int AUTH_EXCEPTION_VALUE = 5;
+
+
+ public final int getNumber() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalArgumentException(
+ "Can't get the number of an unknown enum value.");
+ }
+ return value;
+ }
+
+ /**
+ * @param value The numeric wire value of the corresponding enum entry.
+ * @return The enum associated with the given numeric wire value.
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static ErrorCode valueOf(int value) {
+ return forNumber(value);
+ }
+
+ /**
+ * @param value The numeric wire value of the corresponding enum entry.
+ * @return The enum associated with the given numeric wire value.
+ */
+ public static ErrorCode forNumber(int value) {
+ switch (value) {
+ case 0:
+ return UNKNOWN;
+ case 1:
+ return CONFLICT_EXCEPTION;
+ case 2:
+ return INVALID_REQUEST_EXCEPTION;
+ case 3:
+ return INTERNAL_SERVER_EXCEPTION;
+ case 4:
+ return NO_SUCH_KEY_EXCEPTION;
+ case 5:
+ return AUTH_EXCEPTION;
+ default:
+ return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap
+ * When HttpStatusCode is not ok (200), the response `content` contains a serialized `ErrorResponse`
+ * with the relevant `ErrorCode` and `message`
+ *
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return The enum numeric value on the wire for errorCode.
+ */
+ @java.lang.Override
+ public int getErrorCodeValue() {
+ return errorCode_;
+ }
+
+ /**
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return The errorCode.
+ */
+ @java.lang.Override
+ public org.vss.ErrorCode getErrorCode() {
+ @SuppressWarnings("deprecation")
+ org.vss.ErrorCode result = org.vss.ErrorCode.valueOf(errorCode_);
+ return result == null ? org.vss.ErrorCode.UNRECOGNIZED : result;
+ }
+
+ public static final int MESSAGE_FIELD_NUMBER = 2;
+ private volatile java.lang.Object message_;
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return The message.
+ */
+ @java.lang.Override
+ public java.lang.String getMessage() {
+ java.lang.Object ref = message_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ message_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return The bytes for message.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getMessageBytes() {
+ java.lang.Object ref = message_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ message_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (errorCode_ != org.vss.ErrorCode.UNKNOWN.getNumber()) {
+ output.writeEnum(1, errorCode_);
+ }
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (errorCode_ != org.vss.ErrorCode.UNKNOWN.getNumber()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(1, errorCode_);
+ }
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.ErrorResponse)) {
+ return super.equals(obj);
+ }
+ org.vss.ErrorResponse other = (org.vss.ErrorResponse) obj;
+
+ if (errorCode_ != other.errorCode_) return false;
+ if (!getMessage()
+ .equals(other.getMessage())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + ERROR_CODE_FIELD_NUMBER;
+ hash = (53 * hash) + errorCode_;
+ hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+ hash = (53 * hash) + getMessage().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.ErrorResponse parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ErrorResponse parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ErrorResponse parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.ErrorResponse prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * When HttpStatusCode is not ok (200), the response `content` contains a serialized `ErrorResponse`
+ * with the relevant `ErrorCode` and `message`
+ *
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return The enum numeric value on the wire for errorCode.
+ */
+ @java.lang.Override
+ public int getErrorCodeValue() {
+ return errorCode_;
+ }
+
+ /**
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @param value The enum numeric value on the wire for errorCode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setErrorCodeValue(int value) {
+
+ errorCode_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return The errorCode.
+ */
+ @java.lang.Override
+ public org.vss.ErrorCode getErrorCode() {
+ @SuppressWarnings("deprecation")
+ org.vss.ErrorCode result = org.vss.ErrorCode.valueOf(errorCode_);
+ return result == null ? org.vss.ErrorCode.UNRECOGNIZED : result;
+ }
+
+ /**
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @param value The errorCode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setErrorCode(org.vss.ErrorCode value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ errorCode_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearErrorCode() {
+
+ errorCode_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object message_ = "";
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return The message.
+ */
+ public java.lang.String getMessage() {
+ java.lang.Object ref = message_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ message_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return The bytes for message.
+ */
+ public com.google.protobuf.ByteString
+ getMessageBytes() {
+ java.lang.Object ref = message_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ message_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @param value The message to set.
+ * @return This builder for chaining.
+ */
+ public Builder setMessage(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ message_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearMessage() {
+
+ message_ = getDefaultInstance().getMessage();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @param value The bytes for message to set.
+ * @return This builder for chaining.
+ */
+ public Builder setMessageBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ message_ = value;
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.ErrorResponse)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.ErrorResponse)
+ private static final org.vss.ErrorResponse DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.ErrorResponse();
+ }
+
+ public static org.vss.ErrorResponse getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return The enum numeric value on the wire for errorCode.
+ */
+ int getErrorCodeValue();
+
+ /**
+ *
+ * The error code uniquely identifying an error condition.
+ * It is meant to be read and understood programmatically by code that detects/handles errors by
+ * type.
+ *
+ *
+ * .vss.ErrorCode error_code = 1;
+ *
+ * @return The errorCode.
+ */
+ org.vss.ErrorCode getErrorCode();
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return The message.
+ */
+ java.lang.String getMessage();
+
+ /**
+ *
+ * The error message containing a generic description of the error condition in English.
+ * It is intended for a human audience only and should not be parsed to extract any information
+ * programmatically. Client-side code may use it for logging only.
+ *
+ *
+ * string message = 2;
+ *
+ * @return The bytes for message.
+ */
+ com.google.protobuf.ByteString
+ getMessageBytes();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/GetObjectRequest.java b/java/app/src/main/generated/proto/org/vss/GetObjectRequest.java
new file mode 100644
index 0000000..eb8e69b
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/GetObjectRequest.java
@@ -0,0 +1,888 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Request payload to be used for `GetObject` API call to server.
+ *
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ @java.lang.Override
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int KEY_FIELD_NUMBER = 2;
+ private volatile java.lang.Object key_;
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return The key.
+ */
+ @java.lang.Override
+ public java.lang.String getKey() {
+ java.lang.Object ref = key_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ key_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return The bytes for key.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getKeyBytes() {
+ java.lang.Object ref = key_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ key_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, storeId_);
+ }
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, storeId_);
+ }
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.GetObjectRequest)) {
+ return super.equals(obj);
+ }
+ org.vss.GetObjectRequest other = (org.vss.GetObjectRequest) obj;
+
+ if (!getStoreId()
+ .equals(other.getStoreId())) return false;
+ if (!getKey()
+ .equals(other.getKey())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + STORE_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getStoreId().hashCode();
+ hash = (37 * hash) + KEY_FIELD_NUMBER;
+ hash = (53 * hash) + getKey().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectRequest parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.GetObjectRequest parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.GetObjectRequest parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.GetObjectRequest prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Request payload to be used for `GetObject` API call to server.
+ *
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreId(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearStoreId() {
+
+ storeId_ = getDefaultInstance().getStoreId();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The bytes for storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreIdBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object key_ = "";
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return The key.
+ */
+ public java.lang.String getKey() {
+ java.lang.Object ref = key_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ key_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return The bytes for key.
+ */
+ public com.google.protobuf.ByteString
+ getKeyBytes() {
+ java.lang.Object ref = key_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ key_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @param value The key to set.
+ * @return This builder for chaining.
+ */
+ public Builder setKey(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ key_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearKey() {
+
+ key_ = getDefaultInstance().getKey();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @param value The bytes for key to set.
+ * @return This builder for chaining.
+ */
+ public Builder setKeyBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ key_ = value;
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.GetObjectRequest)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.GetObjectRequest)
+ private static final org.vss.GetObjectRequest DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.GetObjectRequest();
+ }
+
+ public static org.vss.GetObjectRequest getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ java.lang.String getStoreId();
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ com.google.protobuf.ByteString
+ getStoreIdBytes();
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return The key.
+ */
+ java.lang.String getKey();
+
+ /**
+ *
+ * The key of the value to be fetched.
+ * If the specified `key` does not exist, returns `ErrorCode.NO_SUCH_KEY_EXCEPTION` in the
+ * the `ErrorResponse`.
+ * Consistency Guarantee:
+ * Get(read) operations against a `key` are consistent reads and will reflect all previous writes,
+ * since Put/Write provides read-after-write and read-after-update consistency guarantees.
+ * Read Isolation:
+ * Get/Read operations against a `key` are ensured to have read-committed isolation.
+ * Ref: https://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
+ *
+ *
+ * string key = 2;
+ *
+ * @return The bytes for key.
+ */
+ com.google.protobuf.ByteString
+ getKeyBytes();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/GetObjectResponse.java b/java/app/src/main/generated/proto/org/vss/GetObjectResponse.java
new file mode 100644
index 0000000..e4bf9dd
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/GetObjectResponse.java
@@ -0,0 +1,685 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Server response for `GetObject` API.
+ *
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ *
+ * @return Whether the value field is set.
+ */
+ @java.lang.Override
+ public boolean hasValue() {
+ return value_ != null;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ *
+ * @return The value.
+ */
+ @java.lang.Override
+ public org.vss.KeyValue getValue() {
+ return value_ == null ? org.vss.KeyValue.getDefaultInstance() : value_;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ @java.lang.Override
+ public org.vss.KeyValueOrBuilder getValueOrBuilder() {
+ return getValue();
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (value_ != null) {
+ output.writeMessage(2, getValue());
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (value_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, getValue());
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.GetObjectResponse)) {
+ return super.equals(obj);
+ }
+ org.vss.GetObjectResponse other = (org.vss.GetObjectResponse) obj;
+
+ if (hasValue() != other.hasValue()) return false;
+ if (hasValue()) {
+ if (!getValue()
+ .equals(other.getValue())) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasValue()) {
+ hash = (37 * hash) + VALUE_FIELD_NUMBER;
+ hash = (53 * hash) + getValue().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectResponse parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.GetObjectResponse parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.GetObjectResponse parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.GetObjectResponse prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Server response for `GetObject` API.
+ *
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ *
+ * @return Whether the value field is set.
+ */
+ public boolean hasValue() {
+ return valueBuilder_ != null || value_ != null;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ *
+ * @return The value.
+ */
+ public org.vss.KeyValue getValue() {
+ if (valueBuilder_ == null) {
+ return value_ == null ? org.vss.KeyValue.getDefaultInstance() : value_;
+ } else {
+ return valueBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ public Builder setValue(org.vss.KeyValue value) {
+ if (valueBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ value_ = value;
+ onChanged();
+ } else {
+ valueBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ public Builder setValue(
+ org.vss.KeyValue.Builder builderForValue) {
+ if (valueBuilder_ == null) {
+ value_ = builderForValue.build();
+ onChanged();
+ } else {
+ valueBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ public Builder mergeValue(org.vss.KeyValue value) {
+ if (valueBuilder_ == null) {
+ if (value_ != null) {
+ value_ =
+ org.vss.KeyValue.newBuilder(value_).mergeFrom(value).buildPartial();
+ } else {
+ value_ = value;
+ }
+ onChanged();
+ } else {
+ valueBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ public Builder clearValue() {
+ if (valueBuilder_ == null) {
+ value_ = null;
+ onChanged();
+ } else {
+ value_ = null;
+ valueBuilder_ = null;
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ public org.vss.KeyValue.Builder getValueBuilder() {
+
+ onChanged();
+ return getValueFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ public org.vss.KeyValueOrBuilder getValueOrBuilder() {
+ if (valueBuilder_ != null) {
+ return valueBuilder_.getMessageOrBuilder();
+ } else {
+ return value_ == null ?
+ org.vss.KeyValue.getDefaultInstance() : value_;
+ }
+ }
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.KeyValue, org.vss.KeyValue.Builder, org.vss.KeyValueOrBuilder>
+ getValueFieldBuilder() {
+ if (valueBuilder_ == null) {
+ valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.KeyValue, org.vss.KeyValue.Builder, org.vss.KeyValueOrBuilder>(
+ getValue(),
+ getParentForChildren(),
+ isClean());
+ value_ = null;
+ }
+ return valueBuilder_;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.GetObjectResponse)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.GetObjectResponse)
+ private static final org.vss.GetObjectResponse DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.GetObjectResponse();
+ }
+
+ public static org.vss.GetObjectResponse getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ *
+ * @return Whether the value field is set.
+ */
+ boolean hasValue();
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ *
+ * @return The value.
+ */
+ org.vss.KeyValue getValue();
+
+ /**
+ *
+ * Fetched `value` and `version` along with the corresponding `key` in the request.
+ *
+ *
+ * .vss.KeyValue value = 2;
+ */
+ org.vss.KeyValueOrBuilder getValueOrBuilder();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/KeyValue.java b/java/app/src/main/generated/proto/org/vss/KeyValue.java
new file mode 100644
index 0000000..1ef1fa8
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/KeyValue.java
@@ -0,0 +1,831 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Represents a key-value pair to be stored or retrieved.
+ *
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return The key.
+ */
+ @java.lang.Override
+ public java.lang.String getKey() {
+ java.lang.Object ref = key_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ key_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return The bytes for key.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getKeyBytes() {
+ java.lang.Object ref = key_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ key_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int VERSION_FIELD_NUMBER = 2;
+ private long version_;
+
+ /**
+ *
+ * Version field is used for key-level versioning.
+ * For first write of key, `version` should be '0'. If the write succeeds, clients must increment
+ * their corresponding key version (client-side) by 1.
+ * The server increments key version (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return The version.
+ */
+ @java.lang.Override
+ public long getVersion() {
+ return version_;
+ }
+
+ public static final int VALUE_FIELD_NUMBER = 3;
+ private com.google.protobuf.ByteString value_;
+
+ /**
+ *
+ * Object value in bytes which is stored (in put) and fetched (in get).
+ * Clients must encrypt the secret contents of this blob client-side before sending it over the
+ * wire to the server in order to preserve privacy and security.
+ * Clients may use a `Storable` object, serialize it and set it here.
+ *
+ *
+ * bytes value = 3;
+ *
+ * @return The value.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getValue() {
+ return value_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
+ }
+ if (version_ != 0L) {
+ output.writeInt64(2, version_);
+ }
+ if (!value_.isEmpty()) {
+ output.writeBytes(3, value_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
+ }
+ if (version_ != 0L) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(2, version_);
+ }
+ if (!value_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(3, value_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.KeyValue)) {
+ return super.equals(obj);
+ }
+ org.vss.KeyValue other = (org.vss.KeyValue) obj;
+
+ if (!getKey()
+ .equals(other.getKey())) return false;
+ if (getVersion()
+ != other.getVersion()) return false;
+ if (!getValue()
+ .equals(other.getValue())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + KEY_FIELD_NUMBER;
+ hash = (53 * hash) + getKey().hashCode();
+ hash = (37 * hash) + VERSION_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+ getVersion());
+ hash = (37 * hash) + VALUE_FIELD_NUMBER;
+ hash = (53 * hash) + getValue().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.KeyValue parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.KeyValue parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.KeyValue parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.KeyValue parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.KeyValue parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.KeyValue prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Represents a key-value pair to be stored or retrieved.
+ *
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return The key.
+ */
+ public java.lang.String getKey() {
+ java.lang.Object ref = key_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ key_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return The bytes for key.
+ */
+ public com.google.protobuf.ByteString
+ getKeyBytes() {
+ java.lang.Object ref = key_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ key_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @param value The key to set.
+ * @return This builder for chaining.
+ */
+ public Builder setKey(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ key_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearKey() {
+
+ key_ = getDefaultInstance().getKey();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @param value The bytes for key to set.
+ * @return This builder for chaining.
+ */
+ public Builder setKeyBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ key_ = value;
+ onChanged();
+ return this;
+ }
+
+ private long version_;
+
+ /**
+ *
+ * Version field is used for key-level versioning.
+ * For first write of key, `version` should be '0'. If the write succeeds, clients must increment
+ * their corresponding key version (client-side) by 1.
+ * The server increments key version (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return The version.
+ */
+ @java.lang.Override
+ public long getVersion() {
+ return version_;
+ }
+
+ /**
+ *
+ * Version field is used for key-level versioning.
+ * For first write of key, `version` should be '0'. If the write succeeds, clients must increment
+ * their corresponding key version (client-side) by 1.
+ * The server increments key version (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @param value The version to set.
+ * @return This builder for chaining.
+ */
+ public Builder setVersion(long value) {
+
+ version_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * Version field is used for key-level versioning.
+ * For first write of key, `version` should be '0'. If the write succeeds, clients must increment
+ * their corresponding key version (client-side) by 1.
+ * The server increments key version (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearVersion() {
+
+ version_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
+
+ /**
+ *
+ * Object value in bytes which is stored (in put) and fetched (in get).
+ * Clients must encrypt the secret contents of this blob client-side before sending it over the
+ * wire to the server in order to preserve privacy and security.
+ * Clients may use a `Storable` object, serialize it and set it here.
+ *
+ *
+ * bytes value = 3;
+ *
+ * @return The value.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getValue() {
+ return value_;
+ }
+
+ /**
+ *
+ * Object value in bytes which is stored (in put) and fetched (in get).
+ * Clients must encrypt the secret contents of this blob client-side before sending it over the
+ * wire to the server in order to preserve privacy and security.
+ * Clients may use a `Storable` object, serialize it and set it here.
+ *
+ *
+ * bytes value = 3;
+ *
+ * @param value The value to set.
+ * @return This builder for chaining.
+ */
+ public Builder setValue(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ value_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * Object value in bytes which is stored (in put) and fetched (in get).
+ * Clients must encrypt the secret contents of this blob client-side before sending it over the
+ * wire to the server in order to preserve privacy and security.
+ * Clients may use a `Storable` object, serialize it and set it here.
+ *
+ *
+ * bytes value = 3;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearValue() {
+
+ value_ = getDefaultInstance().getValue();
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.KeyValue)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.KeyValue)
+ private static final org.vss.KeyValue DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.KeyValue();
+ }
+
+ public static org.vss.KeyValue getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return The key.
+ */
+ java.lang.String getKey();
+
+ /**
+ *
+ * Key against which the value is stored.
+ *
+ *
+ * string key = 1;
+ *
+ * @return The bytes for key.
+ */
+ com.google.protobuf.ByteString
+ getKeyBytes();
+
+ /**
+ *
+ * Version field is used for key-level versioning.
+ * For first write of key, `version` should be '0'. If the write succeeds, clients must increment
+ * their corresponding key version (client-side) by 1.
+ * The server increments key version (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return The version.
+ */
+ long getVersion();
+
+ /**
+ *
+ * Object value in bytes which is stored (in put) and fetched (in get).
+ * Clients must encrypt the secret contents of this blob client-side before sending it over the
+ * wire to the server in order to preserve privacy and security.
+ * Clients may use a `Storable` object, serialize it and set it here.
+ *
+ *
+ * bytes value = 3;
+ *
+ * @return The value.
+ */
+ com.google.protobuf.ByteString getValue();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/ListKeyVersionsRequest.java b/java/app/src/main/generated/proto/org/vss/ListKeyVersionsRequest.java
new file mode 100644
index 0000000..af516f8
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/ListKeyVersionsRequest.java
@@ -0,0 +1,1303 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Request payload to be used for `ListKeyVersions` API call to server.
+ *
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ @java.lang.Override
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int KEY_PREFIX_FIELD_NUMBER = 2;
+ private volatile java.lang.Object keyPrefix_;
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return Whether the keyPrefix field is set.
+ */
+ @java.lang.Override
+ public boolean hasKeyPrefix() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return The keyPrefix.
+ */
+ @java.lang.Override
+ public java.lang.String getKeyPrefix() {
+ java.lang.Object ref = keyPrefix_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ keyPrefix_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return The bytes for keyPrefix.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getKeyPrefixBytes() {
+ java.lang.Object ref = keyPrefix_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ keyPrefix_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int PAGE_SIZE_FIELD_NUMBER = 3;
+ private int pageSize_;
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return Whether the pageSize field is set.
+ */
+ @java.lang.Override
+ public boolean hasPageSize() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return The pageSize.
+ */
+ @java.lang.Override
+ public int getPageSize() {
+ return pageSize_;
+ }
+
+ public static final int PAGE_TOKEN_FIELD_NUMBER = 4;
+ private volatile java.lang.Object pageToken_;
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return Whether the pageToken field is set.
+ */
+ @java.lang.Override
+ public boolean hasPageToken() {
+ return ((bitField0_ & 0x00000004) != 0);
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return The pageToken.
+ */
+ @java.lang.Override
+ public java.lang.String getPageToken() {
+ java.lang.Object ref = pageToken_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ pageToken_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return The bytes for pageToken.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getPageTokenBytes() {
+ java.lang.Object ref = pageToken_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ pageToken_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, storeId_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, keyPrefix_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ output.writeInt32(3, pageSize_);
+ }
+ if (((bitField0_ & 0x00000004) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 4, pageToken_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, storeId_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, keyPrefix_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(3, pageSize_);
+ }
+ if (((bitField0_ & 0x00000004) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, pageToken_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.ListKeyVersionsRequest)) {
+ return super.equals(obj);
+ }
+ org.vss.ListKeyVersionsRequest other = (org.vss.ListKeyVersionsRequest) obj;
+
+ if (!getStoreId()
+ .equals(other.getStoreId())) return false;
+ if (hasKeyPrefix() != other.hasKeyPrefix()) return false;
+ if (hasKeyPrefix()) {
+ if (!getKeyPrefix()
+ .equals(other.getKeyPrefix())) return false;
+ }
+ if (hasPageSize() != other.hasPageSize()) return false;
+ if (hasPageSize()) {
+ if (getPageSize()
+ != other.getPageSize()) return false;
+ }
+ if (hasPageToken() != other.hasPageToken()) return false;
+ if (hasPageToken()) {
+ if (!getPageToken()
+ .equals(other.getPageToken())) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + STORE_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getStoreId().hashCode();
+ if (hasKeyPrefix()) {
+ hash = (37 * hash) + KEY_PREFIX_FIELD_NUMBER;
+ hash = (53 * hash) + getKeyPrefix().hashCode();
+ }
+ if (hasPageSize()) {
+ hash = (37 * hash) + PAGE_SIZE_FIELD_NUMBER;
+ hash = (53 * hash) + getPageSize();
+ }
+ if (hasPageToken()) {
+ hash = (37 * hash) + PAGE_TOKEN_FIELD_NUMBER;
+ hash = (53 * hash) + getPageToken().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ListKeyVersionsRequest parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.ListKeyVersionsRequest prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Request payload to be used for `ListKeyVersions` API call to server.
+ *
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreId(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearStoreId() {
+
+ storeId_ = getDefaultInstance().getStoreId();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The bytes for storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreIdBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object keyPrefix_ = "";
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return Whether the keyPrefix field is set.
+ */
+ public boolean hasKeyPrefix() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return The keyPrefix.
+ */
+ public java.lang.String getKeyPrefix() {
+ java.lang.Object ref = keyPrefix_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ keyPrefix_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return The bytes for keyPrefix.
+ */
+ public com.google.protobuf.ByteString
+ getKeyPrefixBytes() {
+ java.lang.Object ref = keyPrefix_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ keyPrefix_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @param value The keyPrefix to set.
+ * @return This builder for chaining.
+ */
+ public Builder setKeyPrefix(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ keyPrefix_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearKeyPrefix() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ keyPrefix_ = getDefaultInstance().getKeyPrefix();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @param value The bytes for keyPrefix to set.
+ * @return This builder for chaining.
+ */
+ public Builder setKeyPrefixBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ bitField0_ |= 0x00000001;
+ keyPrefix_ = value;
+ onChanged();
+ return this;
+ }
+
+ private int pageSize_;
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return Whether the pageSize field is set.
+ */
+ @java.lang.Override
+ public boolean hasPageSize() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return The pageSize.
+ */
+ @java.lang.Override
+ public int getPageSize() {
+ return pageSize_;
+ }
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @param value The pageSize to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPageSize(int value) {
+ bitField0_ |= 0x00000002;
+ pageSize_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearPageSize() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ pageSize_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object pageToken_ = "";
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return Whether the pageToken field is set.
+ */
+ public boolean hasPageToken() {
+ return ((bitField0_ & 0x00000004) != 0);
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return The pageToken.
+ */
+ public java.lang.String getPageToken() {
+ java.lang.Object ref = pageToken_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ pageToken_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return The bytes for pageToken.
+ */
+ public com.google.protobuf.ByteString
+ getPageTokenBytes() {
+ java.lang.Object ref = pageToken_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ pageToken_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @param value The pageToken to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPageToken(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000004;
+ pageToken_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearPageToken() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ pageToken_ = getDefaultInstance().getPageToken();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @param value The bytes for pageToken to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPageTokenBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ bitField0_ |= 0x00000004;
+ pageToken_ = value;
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.ListKeyVersionsRequest)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.ListKeyVersionsRequest)
+ private static final org.vss.ListKeyVersionsRequest DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.ListKeyVersionsRequest();
+ }
+
+ public static org.vss.ListKeyVersionsRequest getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ java.lang.String getStoreId();
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ com.google.protobuf.ByteString
+ getStoreIdBytes();
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return Whether the keyPrefix field is set.
+ */
+ boolean hasKeyPrefix();
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return The keyPrefix.
+ */
+ java.lang.String getKeyPrefix();
+
+ /**
+ *
+ * A `key_prefix` is a string of characters at the beginning of the key. Prefixes can be used as
+ * a way to organize key-values in a similar way to directories.
+ * If `key_prefix` is specified, the response results will be limited to those keys that begin with
+ * the specified prefix.
+ * If no `key_prefix` is specified or it is empty (""), all the keys are eligible to be returned in
+ * the response.
+ *
+ *
+ * optional string key_prefix = 2;
+ *
+ * @return The bytes for keyPrefix.
+ */
+ com.google.protobuf.ByteString
+ getKeyPrefixBytes();
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return Whether the pageSize field is set.
+ */
+ boolean hasPageSize();
+
+ /**
+ *
+ * `page_size` is used by clients to specify the maximum number of results that can be returned by
+ * the server.
+ * The server may further constrain the maximum number of results returned in a single page.
+ * If the `page_size` is 0 or not set, the server will decide the number of results to be returned.
+ *
+ *
+ * optional int32 page_size = 3;
+ *
+ * @return The pageSize.
+ */
+ int getPageSize();
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return Whether the pageToken field is set.
+ */
+ boolean hasPageToken();
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return The pageToken.
+ */
+ java.lang.String getPageToken();
+
+ /**
+ *
+ * `page_token` is a pagination token.
+ * To query for the first page of `ListKeyVersions`, `page_token` must not be specified.
+ * For subsequent pages, use the value that was returned as `next_page_token` in the previous
+ * page's `ListKeyVersionsResponse`.
+ *
+ *
+ * optional string page_token = 4;
+ *
+ * @return The bytes for pageToken.
+ */
+ com.google.protobuf.ByteString
+ getPageTokenBytes();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/ListKeyVersionsResponse.java b/java/app/src/main/generated/proto/org/vss/ListKeyVersionsResponse.java
new file mode 100644
index 0000000..7079dd5
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/ListKeyVersionsResponse.java
@@ -0,0 +1,1415 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Server response for `ListKeyVersions` API.
+ *
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ @java.lang.Override
+ public java.util.List
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ @java.lang.Override
+ public java.util.List extends org.vss.KeyValueOrBuilder>
+ getKeyVersionsOrBuilderList() {
+ return keyVersions_;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ @java.lang.Override
+ public int getKeyVersionsCount() {
+ return keyVersions_.size();
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ @java.lang.Override
+ public org.vss.KeyValue getKeyVersions(int index) {
+ return keyVersions_.get(index);
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ @java.lang.Override
+ public org.vss.KeyValueOrBuilder getKeyVersionsOrBuilder(
+ int index) {
+ return keyVersions_.get(index);
+ }
+
+ public static final int NEXT_PAGE_TOKEN_FIELD_NUMBER = 2;
+ private volatile java.lang.Object nextPageToken_;
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return Whether the nextPageToken field is set.
+ */
+ @java.lang.Override
+ public boolean hasNextPageToken() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return The nextPageToken.
+ */
+ @java.lang.Override
+ public java.lang.String getNextPageToken() {
+ java.lang.Object ref = nextPageToken_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ nextPageToken_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return The bytes for nextPageToken.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getNextPageTokenBytes() {
+ java.lang.Object ref = nextPageToken_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ nextPageToken_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int GLOBAL_VERSION_FIELD_NUMBER = 3;
+ private long globalVersion_;
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return Whether the globalVersion field is set.
+ */
+ @java.lang.Override
+ public boolean hasGlobalVersion() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return The globalVersion.
+ */
+ @java.lang.Override
+ public long getGlobalVersion() {
+ return globalVersion_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ for (int i = 0; i < keyVersions_.size(); i++) {
+ output.writeMessage(1, keyVersions_.get(i));
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nextPageToken_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ output.writeInt64(3, globalVersion_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ for (int i = 0; i < keyVersions_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, keyVersions_.get(i));
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nextPageToken_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(3, globalVersion_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.ListKeyVersionsResponse)) {
+ return super.equals(obj);
+ }
+ org.vss.ListKeyVersionsResponse other = (org.vss.ListKeyVersionsResponse) obj;
+
+ if (!getKeyVersionsList()
+ .equals(other.getKeyVersionsList())) return false;
+ if (hasNextPageToken() != other.hasNextPageToken()) return false;
+ if (hasNextPageToken()) {
+ if (!getNextPageToken()
+ .equals(other.getNextPageToken())) return false;
+ }
+ if (hasGlobalVersion() != other.hasGlobalVersion()) return false;
+ if (hasGlobalVersion()) {
+ if (getGlobalVersion()
+ != other.getGlobalVersion()) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (getKeyVersionsCount() > 0) {
+ hash = (37 * hash) + KEY_VERSIONS_FIELD_NUMBER;
+ hash = (53 * hash) + getKeyVersionsList().hashCode();
+ }
+ if (hasNextPageToken()) {
+ hash = (37 * hash) + NEXT_PAGE_TOKEN_FIELD_NUMBER;
+ hash = (53 * hash) + getNextPageToken().hashCode();
+ }
+ if (hasGlobalVersion()) {
+ hash = (37 * hash) + GLOBAL_VERSION_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+ getGlobalVersion());
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.ListKeyVersionsResponse parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.ListKeyVersionsResponse prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Server response for `ListKeyVersions` API.
+ *
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public java.util.List
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public int getKeyVersionsCount() {
+ if (keyVersionsBuilder_ == null) {
+ return keyVersions_.size();
+ } else {
+ return keyVersionsBuilder_.getCount();
+ }
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public org.vss.KeyValue getKeyVersions(int index) {
+ if (keyVersionsBuilder_ == null) {
+ return keyVersions_.get(index);
+ } else {
+ return keyVersionsBuilder_.getMessage(index);
+ }
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder setKeyVersions(
+ int index, org.vss.KeyValue value) {
+ if (keyVersionsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureKeyVersionsIsMutable();
+ keyVersions_.set(index, value);
+ onChanged();
+ } else {
+ keyVersionsBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder setKeyVersions(
+ int index, org.vss.KeyValue.Builder builderForValue) {
+ if (keyVersionsBuilder_ == null) {
+ ensureKeyVersionsIsMutable();
+ keyVersions_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ keyVersionsBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder addKeyVersions(org.vss.KeyValue value) {
+ if (keyVersionsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureKeyVersionsIsMutable();
+ keyVersions_.add(value);
+ onChanged();
+ } else {
+ keyVersionsBuilder_.addMessage(value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder addKeyVersions(
+ int index, org.vss.KeyValue value) {
+ if (keyVersionsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureKeyVersionsIsMutable();
+ keyVersions_.add(index, value);
+ onChanged();
+ } else {
+ keyVersionsBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder addKeyVersions(
+ org.vss.KeyValue.Builder builderForValue) {
+ if (keyVersionsBuilder_ == null) {
+ ensureKeyVersionsIsMutable();
+ keyVersions_.add(builderForValue.build());
+ onChanged();
+ } else {
+ keyVersionsBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder addKeyVersions(
+ int index, org.vss.KeyValue.Builder builderForValue) {
+ if (keyVersionsBuilder_ == null) {
+ ensureKeyVersionsIsMutable();
+ keyVersions_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ keyVersionsBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder addAllKeyVersions(
+ java.lang.Iterable extends org.vss.KeyValue> values) {
+ if (keyVersionsBuilder_ == null) {
+ ensureKeyVersionsIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, keyVersions_);
+ onChanged();
+ } else {
+ keyVersionsBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder clearKeyVersions() {
+ if (keyVersionsBuilder_ == null) {
+ keyVersions_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ } else {
+ keyVersionsBuilder_.clear();
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public Builder removeKeyVersions(int index) {
+ if (keyVersionsBuilder_ == null) {
+ ensureKeyVersionsIsMutable();
+ keyVersions_.remove(index);
+ onChanged();
+ } else {
+ keyVersionsBuilder_.remove(index);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public org.vss.KeyValue.Builder getKeyVersionsBuilder(
+ int index) {
+ return getKeyVersionsFieldBuilder().getBuilder(index);
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public org.vss.KeyValueOrBuilder getKeyVersionsOrBuilder(
+ int index) {
+ if (keyVersionsBuilder_ == null) {
+ return keyVersions_.get(index);
+ } else {
+ return keyVersionsBuilder_.getMessageOrBuilder(index);
+ }
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public java.util.List extends org.vss.KeyValueOrBuilder>
+ getKeyVersionsOrBuilderList() {
+ if (keyVersionsBuilder_ != null) {
+ return keyVersionsBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(keyVersions_);
+ }
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public org.vss.KeyValue.Builder addKeyVersionsBuilder() {
+ return getKeyVersionsFieldBuilder().addBuilder(
+ org.vss.KeyValue.getDefaultInstance());
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public org.vss.KeyValue.Builder addKeyVersionsBuilder(
+ int index) {
+ return getKeyVersionsFieldBuilder().addBuilder(
+ index, org.vss.KeyValue.getDefaultInstance());
+ }
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ public java.util.List
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return Whether the nextPageToken field is set.
+ */
+ public boolean hasNextPageToken() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return The nextPageToken.
+ */
+ public java.lang.String getNextPageToken() {
+ java.lang.Object ref = nextPageToken_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ nextPageToken_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return The bytes for nextPageToken.
+ */
+ public com.google.protobuf.ByteString
+ getNextPageTokenBytes() {
+ java.lang.Object ref = nextPageToken_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ nextPageToken_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @param value The nextPageToken to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNextPageToken(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ nextPageToken_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearNextPageToken() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ nextPageToken_ = getDefaultInstance().getNextPageToken();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @param value The bytes for nextPageToken to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNextPageTokenBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ bitField0_ |= 0x00000002;
+ nextPageToken_ = value;
+ onChanged();
+ return this;
+ }
+
+ private long globalVersion_;
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return Whether the globalVersion field is set.
+ */
+ @java.lang.Override
+ public boolean hasGlobalVersion() {
+ return ((bitField0_ & 0x00000004) != 0);
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return The globalVersion.
+ */
+ @java.lang.Override
+ public long getGlobalVersion() {
+ return globalVersion_;
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @param value The globalVersion to set.
+ * @return This builder for chaining.
+ */
+ public Builder setGlobalVersion(long value) {
+ bitField0_ |= 0x00000004;
+ globalVersion_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearGlobalVersion() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ globalVersion_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.ListKeyVersionsResponse)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.ListKeyVersionsResponse)
+ private static final org.vss.ListKeyVersionsResponse DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.ListKeyVersionsResponse();
+ }
+
+ public static org.vss.ListKeyVersionsResponse getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ java.util.List
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ org.vss.KeyValue getKeyVersions(int index);
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ int getKeyVersionsCount();
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ java.util.List extends org.vss.KeyValueOrBuilder>
+ getKeyVersionsOrBuilderList();
+
+ /**
+ *
+ * Fetched keys and versions.
+ * Even though this API reuses the `KeyValue` struct, the `value` sub-field will not be set by the server.
+ *
+ *
+ * repeated .vss.KeyValue key_versions = 1;
+ */
+ org.vss.KeyValueOrBuilder getKeyVersionsOrBuilder(
+ int index);
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return Whether the nextPageToken field is set.
+ */
+ boolean hasNextPageToken();
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return The nextPageToken.
+ */
+ java.lang.String getNextPageToken();
+
+ /**
+ *
+ * `next_page_token` is a pagination token, used to retrieve the next page of results.
+ * Use this value to query for next-page of paginated `ListKeyVersions` operation, by specifying
+ * this value as the `page_token` in the next request.
+ * If `next_page_token` is empty (""), then the "last page" of results has been processed and
+ * there is no more data to be retrieved.
+ * If `next_page_token` is not empty, it does not necessarily mean that there is more data in the
+ * result set. The only way to know when you have reached the end of the result set is when
+ * `next_page_token` is empty.
+ * Caution: Clients must not assume a specific number of key_versions to be present in a page for
+ * paginated response.
+ *
+ *
+ * optional string next_page_token = 2;
+ *
+ * @return The bytes for nextPageToken.
+ */
+ com.google.protobuf.ByteString
+ getNextPageTokenBytes();
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return Whether the globalVersion field is set.
+ */
+ boolean hasGlobalVersion();
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store.
+ * `global_version` is only returned in response for the first page of the `ListKeyVersionsResponse`
+ * and is guaranteed to be read before reading any key-versions.
+ * In case of refreshing the complete key-version view on the client-side, correct usage for
+ * the returned `global_version` is as following:
+ * 1. Read `global_version` from the first page of paginated response and save it as local variable.
+ * 2. Update all the `key_versions` on client-side from all the pages of paginated response.
+ * 3. Update `global_version` on client_side from the local variable saved in step-1.
+ * This ensures that on client-side, all current `key_versions` were stored at `global_version` or later.
+ * This guarantee is helpful for ensuring the versioning correctness if using the `global_version`
+ * in `PutObject` API and can help avoid the race conditions related to it.
+ *
+ *
+ * optional int64 global_version = 3;
+ *
+ * @return The globalVersion.
+ */
+ long getGlobalVersion();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/PlaintextBlob.java b/java/app/src/main/generated/proto/org/vss/PlaintextBlob.java
new file mode 100644
index 0000000..3be5959
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/PlaintextBlob.java
@@ -0,0 +1,622 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Represents a data blob, which is encrypted, serialized and later used in `Storable.data`.
+ * Since the whole `Storable.data` is client-side encrypted, the server cannot understand this.
+ *
+ *
+ * The unencrypted value.
+ *
+ *
+ * bytes value = 1;
+ *
+ * @return The value.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getValue() {
+ return value_;
+ }
+
+ public static final int VERSION_FIELD_NUMBER = 2;
+ private long version_;
+
+ /**
+ *
+ * The version of the value. Can be used by client to verify version integrity.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return The version.
+ */
+ @java.lang.Override
+ public long getVersion() {
+ return version_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!value_.isEmpty()) {
+ output.writeBytes(1, value_);
+ }
+ if (version_ != 0L) {
+ output.writeInt64(2, version_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!value_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(1, value_);
+ }
+ if (version_ != 0L) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(2, version_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.PlaintextBlob)) {
+ return super.equals(obj);
+ }
+ org.vss.PlaintextBlob other = (org.vss.PlaintextBlob) obj;
+
+ if (!getValue()
+ .equals(other.getValue())) return false;
+ if (getVersion()
+ != other.getVersion()) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + VALUE_FIELD_NUMBER;
+ hash = (53 * hash) + getValue().hashCode();
+ hash = (37 * hash) + VERSION_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+ getVersion());
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.PlaintextBlob parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PlaintextBlob parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PlaintextBlob parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.PlaintextBlob prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Represents a data blob, which is encrypted, serialized and later used in `Storable.data`.
+ * Since the whole `Storable.data` is client-side encrypted, the server cannot understand this.
+ *
+ *
+ * The unencrypted value.
+ *
+ *
+ * bytes value = 1;
+ *
+ * @return The value.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getValue() {
+ return value_;
+ }
+
+ /**
+ *
+ * The unencrypted value.
+ *
+ *
+ * bytes value = 1;
+ *
+ * @param value The value to set.
+ * @return This builder for chaining.
+ */
+ public Builder setValue(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ value_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The unencrypted value.
+ *
+ *
+ * bytes value = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearValue() {
+
+ value_ = getDefaultInstance().getValue();
+ onChanged();
+ return this;
+ }
+
+ private long version_;
+
+ /**
+ *
+ * The version of the value. Can be used by client to verify version integrity.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return The version.
+ */
+ @java.lang.Override
+ public long getVersion() {
+ return version_;
+ }
+
+ /**
+ *
+ * The version of the value. Can be used by client to verify version integrity.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @param value The version to set.
+ * @return This builder for chaining.
+ */
+ public Builder setVersion(long value) {
+
+ version_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * The version of the value. Can be used by client to verify version integrity.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearVersion() {
+
+ version_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.PlaintextBlob)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.PlaintextBlob)
+ private static final org.vss.PlaintextBlob DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.PlaintextBlob();
+ }
+
+ public static org.vss.PlaintextBlob getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * The unencrypted value.
+ *
+ *
+ * bytes value = 1;
+ *
+ * @return The value.
+ */
+ com.google.protobuf.ByteString getValue();
+
+ /**
+ *
+ * The version of the value. Can be used by client to verify version integrity.
+ *
+ *
+ * int64 version = 2;
+ *
+ * @return The version.
+ */
+ long getVersion();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/PutObjectRequest.java b/java/app/src/main/generated/proto/org/vss/PutObjectRequest.java
new file mode 100644
index 0000000..9f6c0f7
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/PutObjectRequest.java
@@ -0,0 +1,2875 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Request payload to be used for `PutObject` API call to server.
+ *
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ @java.lang.Override
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int GLOBAL_VERSION_FIELD_NUMBER = 2;
+ private long globalVersion_;
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return Whether the globalVersion field is set.
+ */
+ @java.lang.Override
+ public boolean hasGlobalVersion() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return The globalVersion.
+ */
+ @java.lang.Override
+ public long getGlobalVersion() {
+ return globalVersion_;
+ }
+
+ public static final int TRANSACTION_ITEMS_FIELD_NUMBER = 3;
+ private java.util.List
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ @java.lang.Override
+ public java.util.List
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ @java.lang.Override
+ public java.util.List extends org.vss.KeyValueOrBuilder>
+ getTransactionItemsOrBuilderList() {
+ return transactionItems_;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ @java.lang.Override
+ public int getTransactionItemsCount() {
+ return transactionItems_.size();
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ @java.lang.Override
+ public org.vss.KeyValue getTransactionItems(int index) {
+ return transactionItems_.get(index);
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ @java.lang.Override
+ public org.vss.KeyValueOrBuilder getTransactionItemsOrBuilder(
+ int index) {
+ return transactionItems_.get(index);
+ }
+
+ public static final int DELETE_ITEMS_FIELD_NUMBER = 4;
+ private java.util.List
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ @java.lang.Override
+ public java.util.List
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ @java.lang.Override
+ public java.util.List extends org.vss.KeyValueOrBuilder>
+ getDeleteItemsOrBuilderList() {
+ return deleteItems_;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ @java.lang.Override
+ public int getDeleteItemsCount() {
+ return deleteItems_.size();
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ @java.lang.Override
+ public org.vss.KeyValue getDeleteItems(int index) {
+ return deleteItems_.get(index);
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ @java.lang.Override
+ public org.vss.KeyValueOrBuilder getDeleteItemsOrBuilder(
+ int index) {
+ return deleteItems_.get(index);
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, storeId_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeInt64(2, globalVersion_);
+ }
+ for (int i = 0; i < transactionItems_.size(); i++) {
+ output.writeMessage(3, transactionItems_.get(i));
+ }
+ for (int i = 0; i < deleteItems_.size(); i++) {
+ output.writeMessage(4, deleteItems_.get(i));
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeId_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, storeId_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(2, globalVersion_);
+ }
+ for (int i = 0; i < transactionItems_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(3, transactionItems_.get(i));
+ }
+ for (int i = 0; i < deleteItems_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(4, deleteItems_.get(i));
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.PutObjectRequest)) {
+ return super.equals(obj);
+ }
+ org.vss.PutObjectRequest other = (org.vss.PutObjectRequest) obj;
+
+ if (!getStoreId()
+ .equals(other.getStoreId())) return false;
+ if (hasGlobalVersion() != other.hasGlobalVersion()) return false;
+ if (hasGlobalVersion()) {
+ if (getGlobalVersion()
+ != other.getGlobalVersion()) return false;
+ }
+ if (!getTransactionItemsList()
+ .equals(other.getTransactionItemsList())) return false;
+ if (!getDeleteItemsList()
+ .equals(other.getDeleteItemsList())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + STORE_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getStoreId().hashCode();
+ if (hasGlobalVersion()) {
+ hash = (37 * hash) + GLOBAL_VERSION_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+ getGlobalVersion());
+ }
+ if (getTransactionItemsCount() > 0) {
+ hash = (37 * hash) + TRANSACTION_ITEMS_FIELD_NUMBER;
+ hash = (53 * hash) + getTransactionItemsList().hashCode();
+ }
+ if (getDeleteItemsCount() > 0) {
+ hash = (37 * hash) + DELETE_ITEMS_FIELD_NUMBER;
+ hash = (53 * hash) + getDeleteItemsList().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectRequest parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PutObjectRequest parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.PutObjectRequest parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.PutObjectRequest prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Request payload to be used for `PutObject` API call to server.
+ *
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ public java.lang.String getStoreId() {
+ java.lang.Object ref = storeId_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ storeId_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ public com.google.protobuf.ByteString
+ getStoreIdBytes() {
+ java.lang.Object ref = storeId_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ storeId_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreId(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearStoreId() {
+
+ storeId_ = getDefaultInstance().getStoreId();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @param value The bytes for storeId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStoreIdBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ storeId_ = value;
+ onChanged();
+ return this;
+ }
+
+ private long globalVersion_;
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return Whether the globalVersion field is set.
+ */
+ @java.lang.Override
+ public boolean hasGlobalVersion() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return The globalVersion.
+ */
+ @java.lang.Override
+ public long getGlobalVersion() {
+ return globalVersion_;
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @param value The globalVersion to set.
+ * @return This builder for chaining.
+ */
+ public Builder setGlobalVersion(long value) {
+ bitField0_ |= 0x00000001;
+ globalVersion_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearGlobalVersion() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ globalVersion_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ private java.util.List
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public java.util.List
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public int getTransactionItemsCount() {
+ if (transactionItemsBuilder_ == null) {
+ return transactionItems_.size();
+ } else {
+ return transactionItemsBuilder_.getCount();
+ }
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public org.vss.KeyValue getTransactionItems(int index) {
+ if (transactionItemsBuilder_ == null) {
+ return transactionItems_.get(index);
+ } else {
+ return transactionItemsBuilder_.getMessage(index);
+ }
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder setTransactionItems(
+ int index, org.vss.KeyValue value) {
+ if (transactionItemsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureTransactionItemsIsMutable();
+ transactionItems_.set(index, value);
+ onChanged();
+ } else {
+ transactionItemsBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder setTransactionItems(
+ int index, org.vss.KeyValue.Builder builderForValue) {
+ if (transactionItemsBuilder_ == null) {
+ ensureTransactionItemsIsMutable();
+ transactionItems_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ transactionItemsBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder addTransactionItems(org.vss.KeyValue value) {
+ if (transactionItemsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureTransactionItemsIsMutable();
+ transactionItems_.add(value);
+ onChanged();
+ } else {
+ transactionItemsBuilder_.addMessage(value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder addTransactionItems(
+ int index, org.vss.KeyValue value) {
+ if (transactionItemsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureTransactionItemsIsMutable();
+ transactionItems_.add(index, value);
+ onChanged();
+ } else {
+ transactionItemsBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder addTransactionItems(
+ org.vss.KeyValue.Builder builderForValue) {
+ if (transactionItemsBuilder_ == null) {
+ ensureTransactionItemsIsMutable();
+ transactionItems_.add(builderForValue.build());
+ onChanged();
+ } else {
+ transactionItemsBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder addTransactionItems(
+ int index, org.vss.KeyValue.Builder builderForValue) {
+ if (transactionItemsBuilder_ == null) {
+ ensureTransactionItemsIsMutable();
+ transactionItems_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ transactionItemsBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder addAllTransactionItems(
+ java.lang.Iterable extends org.vss.KeyValue> values) {
+ if (transactionItemsBuilder_ == null) {
+ ensureTransactionItemsIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, transactionItems_);
+ onChanged();
+ } else {
+ transactionItemsBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder clearTransactionItems() {
+ if (transactionItemsBuilder_ == null) {
+ transactionItems_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ onChanged();
+ } else {
+ transactionItemsBuilder_.clear();
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public Builder removeTransactionItems(int index) {
+ if (transactionItemsBuilder_ == null) {
+ ensureTransactionItemsIsMutable();
+ transactionItems_.remove(index);
+ onChanged();
+ } else {
+ transactionItemsBuilder_.remove(index);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public org.vss.KeyValue.Builder getTransactionItemsBuilder(
+ int index) {
+ return getTransactionItemsFieldBuilder().getBuilder(index);
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public org.vss.KeyValueOrBuilder getTransactionItemsOrBuilder(
+ int index) {
+ if (transactionItemsBuilder_ == null) {
+ return transactionItems_.get(index);
+ } else {
+ return transactionItemsBuilder_.getMessageOrBuilder(index);
+ }
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public java.util.List extends org.vss.KeyValueOrBuilder>
+ getTransactionItemsOrBuilderList() {
+ if (transactionItemsBuilder_ != null) {
+ return transactionItemsBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(transactionItems_);
+ }
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public org.vss.KeyValue.Builder addTransactionItemsBuilder() {
+ return getTransactionItemsFieldBuilder().addBuilder(
+ org.vss.KeyValue.getDefaultInstance());
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public org.vss.KeyValue.Builder addTransactionItemsBuilder(
+ int index) {
+ return getTransactionItemsFieldBuilder().addBuilder(
+ index, org.vss.KeyValue.getDefaultInstance());
+ }
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ public java.util.List
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public java.util.List
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public int getDeleteItemsCount() {
+ if (deleteItemsBuilder_ == null) {
+ return deleteItems_.size();
+ } else {
+ return deleteItemsBuilder_.getCount();
+ }
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public org.vss.KeyValue getDeleteItems(int index) {
+ if (deleteItemsBuilder_ == null) {
+ return deleteItems_.get(index);
+ } else {
+ return deleteItemsBuilder_.getMessage(index);
+ }
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder setDeleteItems(
+ int index, org.vss.KeyValue value) {
+ if (deleteItemsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureDeleteItemsIsMutable();
+ deleteItems_.set(index, value);
+ onChanged();
+ } else {
+ deleteItemsBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder setDeleteItems(
+ int index, org.vss.KeyValue.Builder builderForValue) {
+ if (deleteItemsBuilder_ == null) {
+ ensureDeleteItemsIsMutable();
+ deleteItems_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ deleteItemsBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder addDeleteItems(org.vss.KeyValue value) {
+ if (deleteItemsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureDeleteItemsIsMutable();
+ deleteItems_.add(value);
+ onChanged();
+ } else {
+ deleteItemsBuilder_.addMessage(value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder addDeleteItems(
+ int index, org.vss.KeyValue value) {
+ if (deleteItemsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureDeleteItemsIsMutable();
+ deleteItems_.add(index, value);
+ onChanged();
+ } else {
+ deleteItemsBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder addDeleteItems(
+ org.vss.KeyValue.Builder builderForValue) {
+ if (deleteItemsBuilder_ == null) {
+ ensureDeleteItemsIsMutable();
+ deleteItems_.add(builderForValue.build());
+ onChanged();
+ } else {
+ deleteItemsBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder addDeleteItems(
+ int index, org.vss.KeyValue.Builder builderForValue) {
+ if (deleteItemsBuilder_ == null) {
+ ensureDeleteItemsIsMutable();
+ deleteItems_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ deleteItemsBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder addAllDeleteItems(
+ java.lang.Iterable extends org.vss.KeyValue> values) {
+ if (deleteItemsBuilder_ == null) {
+ ensureDeleteItemsIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, deleteItems_);
+ onChanged();
+ } else {
+ deleteItemsBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder clearDeleteItems() {
+ if (deleteItemsBuilder_ == null) {
+ deleteItems_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000004);
+ onChanged();
+ } else {
+ deleteItemsBuilder_.clear();
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public Builder removeDeleteItems(int index) {
+ if (deleteItemsBuilder_ == null) {
+ ensureDeleteItemsIsMutable();
+ deleteItems_.remove(index);
+ onChanged();
+ } else {
+ deleteItemsBuilder_.remove(index);
+ }
+ return this;
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public org.vss.KeyValue.Builder getDeleteItemsBuilder(
+ int index) {
+ return getDeleteItemsFieldBuilder().getBuilder(index);
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public org.vss.KeyValueOrBuilder getDeleteItemsOrBuilder(
+ int index) {
+ if (deleteItemsBuilder_ == null) {
+ return deleteItems_.get(index);
+ } else {
+ return deleteItemsBuilder_.getMessageOrBuilder(index);
+ }
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public java.util.List extends org.vss.KeyValueOrBuilder>
+ getDeleteItemsOrBuilderList() {
+ if (deleteItemsBuilder_ != null) {
+ return deleteItemsBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(deleteItems_);
+ }
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public org.vss.KeyValue.Builder addDeleteItemsBuilder() {
+ return getDeleteItemsFieldBuilder().addBuilder(
+ org.vss.KeyValue.getDefaultInstance());
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public org.vss.KeyValue.Builder addDeleteItemsBuilder(
+ int index) {
+ return getDeleteItemsFieldBuilder().addBuilder(
+ index, org.vss.KeyValue.getDefaultInstance());
+ }
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ public java.util.List
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The storeId.
+ */
+ java.lang.String getStoreId();
+
+ /**
+ *
+ * `store_id` is a keyspace identifier.
+ * Ref: https://en.wikipedia.org/wiki/Keyspace_(distributed_data_store)
+ * All APIs operate within a single `store_id`.
+ * It is up to clients to use single or multiple stores for their use-case.
+ * This can be used for client-isolation/ rate-limiting / throttling on the server-side.
+ * Authorization and billing can also be performed at the `store_id` level.
+ *
+ *
+ * string store_id = 1;
+ *
+ * @return The bytes for storeId.
+ */
+ com.google.protobuf.ByteString
+ getStoreIdBytes();
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return Whether the globalVersion field is set.
+ */
+ boolean hasGlobalVersion();
+
+ /**
+ *
+ * `global_version` is a sequence-number/version of the whole store. This can be used for versioning
+ * and ensures that multiple updates in case of multiple devices can only be done linearly, even
+ * if those updates did not directly conflict with each other based on keys/`transaction_items`.
+ * If present, the write will only succeed if the current server-side `global_version` against
+ * the `store_id` is same as in the request.
+ * Clients are expected to store (client-side) the global version against `store_id`.
+ * The request must contain their client-side value of `global_version` if global versioning and
+ * conflict detection is desired.
+ * For the first write of the store, global version should be '0'. If the write succeeds, clients
+ * must increment their global version (client-side) by 1.
+ * The server increments `global_version` (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. This updated global version
+ * should be used in subsequent `PutObjectRequest`s for the store.
+ * Requests with a conflicting version will fail with `CONFLICT_EXCEPTION` as ErrorCode.
+ *
+ *
+ * optional int64 global_version = 2;
+ *
+ * @return The globalVersion.
+ */
+ long getGlobalVersion();
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ java.util.List
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ org.vss.KeyValue getTransactionItems(int index);
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ int getTransactionItemsCount();
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ java.util.List extends org.vss.KeyValueOrBuilder>
+ getTransactionItemsOrBuilderList();
+
+ /**
+ *
+ * Items to be written as a result of this `PutObjectRequest`.
+ * In an item, each `key` is supplied with its corresponding `value` and `version`.
+ * Clients can choose to encrypt the keys client-side in order to obfuscate their usage patterns.
+ * If the write is successful, the previous `value` corresponding to the `key` will be overwritten.
+ * Multiple items in `transaction_items` and `delete_items` of a single `PutObjectRequest` are written in
+ * a database-transaction in an all-or-nothing fashion.
+ * All Items in a single `PutObjectRequest` must have distinct keys.
+ * Key-level versioning (Conditional Write):
+ * Clients are expected to store a `version` against every `key`.
+ * The write will succeed if the current DB version against the `key` is the same as in the request.
+ * When initiating a `PutObjectRequest`, the request should contain their client-side `version`
+ * for that key-value.
+ * For the first write of any `key`, the `version` should be '0'. If the write succeeds, the client
+ * must increment their corresponding key versions (client-side) by 1.
+ * The server increments key versions (server-side) for every successful write, hence this
+ * client-side increment is required to ensure matching versions. These updated key versions should
+ * be used in subsequent `PutObjectRequest`s for the keys.
+ * Requests with a conflicting/mismatched version will fail with `CONFLICT_EXCEPTION` as ErrorCode
+ * for conditional writes.
+ * Skipping key-level versioning (Non-conditional Write):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional write query, after which the `version` against the `key`
+ * is reset to '1'. Hence, the next `PutObjectRequest` for the `key` can be either
+ * a non-conditional write or a conditional write with `version` set to `1`.
+ * Considerations for transactions:
+ * Transaction writes of multiple items have a performance overhead, hence it is recommended to use
+ * them only if required by the client application to ensure logic/code correctness.
+ * That is, `transaction_items` are not a substitute for batch-write of multiple unrelated items.
+ * When a write of multiple unrelated items is desired, it is recommended to use separate
+ * `PutObjectRequest`s.
+ * Consistency guarantee:
+ * All `PutObjectRequest`s are strongly consistent i.e. they provide read-after-write and
+ * read-after-update consistency guarantees.
+ *
+ *
+ * repeated .vss.KeyValue transaction_items = 3;
+ */
+ org.vss.KeyValueOrBuilder getTransactionItemsOrBuilder(
+ int index);
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ java.util.List
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ org.vss.KeyValue getDeleteItems(int index);
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ int getDeleteItemsCount();
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ java.util.List extends org.vss.KeyValueOrBuilder>
+ getDeleteItemsOrBuilderList();
+
+ /**
+ *
+ * Items to be deleted as a result of this `PutObjectRequest`.
+ * Each item in the `delete_items` field consists of a `key` and its corresponding `version`.
+ * Key-Level Versioning (Conditional Delete):
+ * The `version` is used to perform a version check before deleting the item.
+ * The delete will only succeed if the current database version against the `key` is the same as
+ * the `version` specified in the request.
+ * Skipping key-level versioning (Non-conditional Delete):
+ * If you wish to skip key-level version checks, set the `version` against the `key` to '-1'.
+ * This will perform a non-conditional delete query.
+ * Fails with `CONFLICT_EXCEPTION` as the ErrorCode if:
+ * * The requested item does not exist.
+ * * The requested item does exist but there is a version-number mismatch (in conditional delete)
+ * with the one in the database.
+ * Multiple items in the `delete_items` field, along with the `transaction_items`, are written in a
+ * database transaction in an all-or-nothing fashion.
+ * All items within a single `PutObjectRequest` must have distinct keys.
+ *
+ *
+ * repeated .vss.KeyValue delete_items = 4;
+ */
+ org.vss.KeyValueOrBuilder getDeleteItemsOrBuilder(
+ int index);
+}
diff --git a/java/app/src/main/generated/proto/org/vss/PutObjectResponse.java b/java/app/src/main/generated/proto/org/vss/PutObjectResponse.java
new file mode 100644
index 0000000..57c2b5f
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/PutObjectResponse.java
@@ -0,0 +1,439 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+/**
+ *
+ * Server response for `PutObject` API.
+ *
+ *
+ * Server response for `PutObject` API.
+ *
+ *
+ * Represents a storable object that can be serialized and stored as `value` in `PutObjectRequest`.
+ * Only provided as a helper object for ease of use by clients.
+ * Clients MUST encrypt the `PlaintextBlob` before using it as `data` in `Storable`.
+ * The server does not use or read anything from `Storable`, Clients may use its fields as
+ * required.
+ *
+ *
+ * Represents an encrypted and serialized `PlaintextBlob`. MUST encrypt the whole `PlaintextBlob`
+ * using client-side encryption before setting here.
+ *
+ *
+ * bytes data = 1;
+ *
+ * @return The data.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getData() {
+ return data_;
+ }
+
+ public static final int ENCRYPTION_METADATA_FIELD_NUMBER = 2;
+ private org.vss.EncryptionMetadata encryptionMetadata_;
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ *
+ * @return Whether the encryptionMetadata field is set.
+ */
+ @java.lang.Override
+ public boolean hasEncryptionMetadata() {
+ return encryptionMetadata_ != null;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ *
+ * @return The encryptionMetadata.
+ */
+ @java.lang.Override
+ public org.vss.EncryptionMetadata getEncryptionMetadata() {
+ return encryptionMetadata_ == null ? org.vss.EncryptionMetadata.getDefaultInstance() : encryptionMetadata_;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ @java.lang.Override
+ public org.vss.EncryptionMetadataOrBuilder getEncryptionMetadataOrBuilder() {
+ return getEncryptionMetadata();
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!data_.isEmpty()) {
+ output.writeBytes(1, data_);
+ }
+ if (encryptionMetadata_ != null) {
+ output.writeMessage(2, getEncryptionMetadata());
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!data_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(1, data_);
+ }
+ if (encryptionMetadata_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, getEncryptionMetadata());
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.vss.Storable)) {
+ return super.equals(obj);
+ }
+ org.vss.Storable other = (org.vss.Storable) obj;
+
+ if (!getData()
+ .equals(other.getData())) return false;
+ if (hasEncryptionMetadata() != other.hasEncryptionMetadata()) return false;
+ if (hasEncryptionMetadata()) {
+ if (!getEncryptionMetadata()
+ .equals(other.getEncryptionMetadata())) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + DATA_FIELD_NUMBER;
+ hash = (53 * hash) + getData().hashCode();
+ if (hasEncryptionMetadata()) {
+ hash = (37 * hash) + ENCRYPTION_METADATA_FIELD_NUMBER;
+ hash = (53 * hash) + getEncryptionMetadata().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.vss.Storable parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.Storable parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.Storable parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.Storable parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.Storable parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static org.vss.Storable parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static org.vss.Storable parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.Storable parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.Storable parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static org.vss.Storable parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static org.vss.Storable parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static org.vss.Storable parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(org.vss.Storable prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ * Represents a storable object that can be serialized and stored as `value` in `PutObjectRequest`.
+ * Only provided as a helper object for ease of use by clients.
+ * Clients MUST encrypt the `PlaintextBlob` before using it as `data` in `Storable`.
+ * The server does not use or read anything from `Storable`, Clients may use its fields as
+ * required.
+ *
+ *
+ * Represents an encrypted and serialized `PlaintextBlob`. MUST encrypt the whole `PlaintextBlob`
+ * using client-side encryption before setting here.
+ *
+ *
+ * bytes data = 1;
+ *
+ * @return The data.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getData() {
+ return data_;
+ }
+
+ /**
+ *
+ * Represents an encrypted and serialized `PlaintextBlob`. MUST encrypt the whole `PlaintextBlob`
+ * using client-side encryption before setting here.
+ *
+ *
+ * bytes data = 1;
+ *
+ * @param value The data to set.
+ * @return This builder for chaining.
+ */
+ public Builder setData(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ data_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ * Represents an encrypted and serialized `PlaintextBlob`. MUST encrypt the whole `PlaintextBlob`
+ * using client-side encryption before setting here.
+ *
+ *
+ * bytes data = 1;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearData() {
+
+ data_ = getDefaultInstance().getData();
+ onChanged();
+ return this;
+ }
+
+ private org.vss.EncryptionMetadata encryptionMetadata_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.EncryptionMetadata, org.vss.EncryptionMetadata.Builder, org.vss.EncryptionMetadataOrBuilder> encryptionMetadataBuilder_;
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ *
+ * @return Whether the encryptionMetadata field is set.
+ */
+ public boolean hasEncryptionMetadata() {
+ return encryptionMetadataBuilder_ != null || encryptionMetadata_ != null;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ *
+ * @return The encryptionMetadata.
+ */
+ public org.vss.EncryptionMetadata getEncryptionMetadata() {
+ if (encryptionMetadataBuilder_ == null) {
+ return encryptionMetadata_ == null ? org.vss.EncryptionMetadata.getDefaultInstance() : encryptionMetadata_;
+ } else {
+ return encryptionMetadataBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ public Builder setEncryptionMetadata(org.vss.EncryptionMetadata value) {
+ if (encryptionMetadataBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ encryptionMetadata_ = value;
+ onChanged();
+ } else {
+ encryptionMetadataBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ public Builder setEncryptionMetadata(
+ org.vss.EncryptionMetadata.Builder builderForValue) {
+ if (encryptionMetadataBuilder_ == null) {
+ encryptionMetadata_ = builderForValue.build();
+ onChanged();
+ } else {
+ encryptionMetadataBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ public Builder mergeEncryptionMetadata(org.vss.EncryptionMetadata value) {
+ if (encryptionMetadataBuilder_ == null) {
+ if (encryptionMetadata_ != null) {
+ encryptionMetadata_ =
+ org.vss.EncryptionMetadata.newBuilder(encryptionMetadata_).mergeFrom(value).buildPartial();
+ } else {
+ encryptionMetadata_ = value;
+ }
+ onChanged();
+ } else {
+ encryptionMetadataBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ public Builder clearEncryptionMetadata() {
+ if (encryptionMetadataBuilder_ == null) {
+ encryptionMetadata_ = null;
+ onChanged();
+ } else {
+ encryptionMetadata_ = null;
+ encryptionMetadataBuilder_ = null;
+ }
+
+ return this;
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ public org.vss.EncryptionMetadata.Builder getEncryptionMetadataBuilder() {
+
+ onChanged();
+ return getEncryptionMetadataFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ public org.vss.EncryptionMetadataOrBuilder getEncryptionMetadataOrBuilder() {
+ if (encryptionMetadataBuilder_ != null) {
+ return encryptionMetadataBuilder_.getMessageOrBuilder();
+ } else {
+ return encryptionMetadata_ == null ?
+ org.vss.EncryptionMetadata.getDefaultInstance() : encryptionMetadata_;
+ }
+ }
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.EncryptionMetadata, org.vss.EncryptionMetadata.Builder, org.vss.EncryptionMetadataOrBuilder>
+ getEncryptionMetadataFieldBuilder() {
+ if (encryptionMetadataBuilder_ == null) {
+ encryptionMetadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ org.vss.EncryptionMetadata, org.vss.EncryptionMetadata.Builder, org.vss.EncryptionMetadataOrBuilder>(
+ getEncryptionMetadata(),
+ getParentForChildren(),
+ isClean());
+ encryptionMetadata_ = null;
+ }
+ return encryptionMetadataBuilder_;
+ }
+
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:vss.Storable)
+ }
+
+ // @@protoc_insertion_point(class_scope:vss.Storable)
+ private static final org.vss.Storable DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new org.vss.Storable();
+ }
+
+ public static org.vss.Storable getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ * Represents an encrypted and serialized `PlaintextBlob`. MUST encrypt the whole `PlaintextBlob`
+ * using client-side encryption before setting here.
+ *
+ *
+ * bytes data = 1;
+ *
+ * @return The data.
+ */
+ com.google.protobuf.ByteString getData();
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ *
+ * @return Whether the encryptionMetadata field is set.
+ */
+ boolean hasEncryptionMetadata();
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ *
+ * @return The encryptionMetadata.
+ */
+ org.vss.EncryptionMetadata getEncryptionMetadata();
+
+ /**
+ *
+ * Represents encryption related metadata
+ *
+ *
+ * .vss.EncryptionMetadata encryption_metadata = 2;
+ */
+ org.vss.EncryptionMetadataOrBuilder getEncryptionMetadataOrBuilder();
+}
diff --git a/java/app/src/main/generated/proto/org/vss/Vss.java b/java/app/src/main/generated/proto/org/vss/Vss.java
new file mode 100644
index 0000000..a768d82
--- /dev/null
+++ b/java/app/src/main/generated/proto/org/vss/Vss.java
@@ -0,0 +1,213 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: vss.proto
+
+package org.vss;
+
+public final class Vss {
+ private Vss() {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_GetObjectRequest_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_GetObjectRequest_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_GetObjectResponse_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_GetObjectResponse_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_PutObjectRequest_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_PutObjectRequest_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_PutObjectResponse_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_PutObjectResponse_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_DeleteObjectRequest_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_DeleteObjectRequest_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_DeleteObjectResponse_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_DeleteObjectResponse_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_ListKeyVersionsRequest_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_ListKeyVersionsRequest_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_ListKeyVersionsResponse_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_ListKeyVersionsResponse_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_ErrorResponse_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_ErrorResponse_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_KeyValue_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_KeyValue_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_Storable_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_Storable_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_EncryptionMetadata_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_EncryptionMetadata_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_vss_PlaintextBlob_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_vss_PlaintextBlob_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\tvss.proto\022\003vss\"1\n\020GetObjectRequest\022\020\n\010" +
+ "store_id\030\001 \001(\t\022\013\n\003key\030\002 \001(\t\"1\n\021GetObject" +
+ "Response\022\034\n\005value\030\002 \001(\0132\r.vss.KeyValue\"\243" +
+ "\001\n\020PutObjectRequest\022\020\n\010store_id\030\001 \001(\t\022\033\n" +
+ "\016global_version\030\002 \001(\003H\000\210\001\001\022(\n\021transactio" +
+ "n_items\030\003 \003(\0132\r.vss.KeyValue\022#\n\014delete_i" +
+ "tems\030\004 \003(\0132\r.vss.KeyValueB\021\n\017_global_ver" +
+ "sion\"\023\n\021PutObjectResponse\"I\n\023DeleteObjec" +
+ "tRequest\022\020\n\010store_id\030\001 \001(\t\022 \n\tkey_value\030" +
+ "\002 \001(\0132\r.vss.KeyValue\"\026\n\024DeleteObjectResp" +
+ "onse\"\240\001\n\026ListKeyVersionsRequest\022\020\n\010store" +
+ "_id\030\001 \001(\t\022\027\n\nkey_prefix\030\002 \001(\tH\000\210\001\001\022\026\n\tpa" +
+ "ge_size\030\003 \001(\005H\001\210\001\001\022\027\n\npage_token\030\004 \001(\tH\002" +
+ "\210\001\001B\r\n\013_key_prefixB\014\n\n_page_sizeB\r\n\013_pag" +
+ "e_token\"\240\001\n\027ListKeyVersionsResponse\022#\n\014k" +
+ "ey_versions\030\001 \003(\0132\r.vss.KeyValue\022\034\n\017next" +
+ "_page_token\030\002 \001(\tH\000\210\001\001\022\033\n\016global_version" +
+ "\030\003 \001(\003H\001\210\001\001B\022\n\020_next_page_tokenB\021\n\017_glob" +
+ "al_version\"D\n\rErrorResponse\022\"\n\nerror_cod" +
+ "e\030\001 \001(\0162\016.vss.ErrorCode\022\017\n\007message\030\002 \001(\t" +
+ "\"7\n\010KeyValue\022\013\n\003key\030\001 \001(\t\022\017\n\007version\030\002 \001" +
+ "(\003\022\r\n\005value\030\003 \001(\014\"N\n\010Storable\022\014\n\004data\030\001 " +
+ "\001(\014\0224\n\023encryption_metadata\030\002 \001(\0132\027.vss.E" +
+ "ncryptionMetadata\"G\n\022EncryptionMetadata\022" +
+ "\025\n\rcipher_format\030\001 \001(\t\022\r\n\005nonce\030\002 \001(\014\022\013\n" +
+ "\003tag\030\003 \001(\014\"/\n\rPlaintextBlob\022\r\n\005value\030\001 \001" +
+ "(\014\022\017\n\007version\030\002 \001(\003*\235\001\n\tErrorCode\022\013\n\007UNK" +
+ "NOWN\020\000\022\026\n\022CONFLICT_EXCEPTION\020\001\022\035\n\031INVALI" +
+ "D_REQUEST_EXCEPTION\020\002\022\035\n\031INTERNAL_SERVER" +
+ "_EXCEPTION\020\003\022\031\n\025NO_SUCH_KEY_EXCEPTION\020\004\022" +
+ "\022\n\016AUTH_EXCEPTION\020\005B\013\n\007org.vssP\001b\006proto3"
+ };
+ descriptor = com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[]{
+ });
+ internal_static_vss_GetObjectRequest_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_vss_GetObjectRequest_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_GetObjectRequest_descriptor,
+ new java.lang.String[]{"StoreId", "Key",});
+ internal_static_vss_GetObjectResponse_descriptor =
+ getDescriptor().getMessageTypes().get(1);
+ internal_static_vss_GetObjectResponse_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_GetObjectResponse_descriptor,
+ new java.lang.String[]{"Value",});
+ internal_static_vss_PutObjectRequest_descriptor =
+ getDescriptor().getMessageTypes().get(2);
+ internal_static_vss_PutObjectRequest_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_PutObjectRequest_descriptor,
+ new java.lang.String[]{"StoreId", "GlobalVersion", "TransactionItems", "DeleteItems", "GlobalVersion",});
+ internal_static_vss_PutObjectResponse_descriptor =
+ getDescriptor().getMessageTypes().get(3);
+ internal_static_vss_PutObjectResponse_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_PutObjectResponse_descriptor,
+ new java.lang.String[]{});
+ internal_static_vss_DeleteObjectRequest_descriptor =
+ getDescriptor().getMessageTypes().get(4);
+ internal_static_vss_DeleteObjectRequest_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_DeleteObjectRequest_descriptor,
+ new java.lang.String[]{"StoreId", "KeyValue",});
+ internal_static_vss_DeleteObjectResponse_descriptor =
+ getDescriptor().getMessageTypes().get(5);
+ internal_static_vss_DeleteObjectResponse_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_DeleteObjectResponse_descriptor,
+ new java.lang.String[]{});
+ internal_static_vss_ListKeyVersionsRequest_descriptor =
+ getDescriptor().getMessageTypes().get(6);
+ internal_static_vss_ListKeyVersionsRequest_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_ListKeyVersionsRequest_descriptor,
+ new java.lang.String[]{"StoreId", "KeyPrefix", "PageSize", "PageToken", "KeyPrefix", "PageSize", "PageToken",});
+ internal_static_vss_ListKeyVersionsResponse_descriptor =
+ getDescriptor().getMessageTypes().get(7);
+ internal_static_vss_ListKeyVersionsResponse_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_ListKeyVersionsResponse_descriptor,
+ new java.lang.String[]{"KeyVersions", "NextPageToken", "GlobalVersion", "NextPageToken", "GlobalVersion",});
+ internal_static_vss_ErrorResponse_descriptor =
+ getDescriptor().getMessageTypes().get(8);
+ internal_static_vss_ErrorResponse_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_ErrorResponse_descriptor,
+ new java.lang.String[]{"ErrorCode", "Message",});
+ internal_static_vss_KeyValue_descriptor =
+ getDescriptor().getMessageTypes().get(9);
+ internal_static_vss_KeyValue_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_KeyValue_descriptor,
+ new java.lang.String[]{"Key", "Version", "Value",});
+ internal_static_vss_Storable_descriptor =
+ getDescriptor().getMessageTypes().get(10);
+ internal_static_vss_Storable_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_Storable_descriptor,
+ new java.lang.String[]{"Data", "EncryptionMetadata",});
+ internal_static_vss_EncryptionMetadata_descriptor =
+ getDescriptor().getMessageTypes().get(11);
+ internal_static_vss_EncryptionMetadata_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_EncryptionMetadata_descriptor,
+ new java.lang.String[]{"CipherFormat", "Nonce", "Tag",});
+ internal_static_vss_PlaintextBlob_descriptor =
+ getDescriptor().getMessageTypes().get(12);
+ internal_static_vss_PlaintextBlob_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_vss_PlaintextBlob_descriptor,
+ new java.lang.String[]{"Value", "Version",});
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}