From 869b8f2a066a2db62e9adbbac3240ec6c1d82bc3 Mon Sep 17 00:00:00 2001 From: Belonogov Nikolay Date: Tue, 12 Sep 2023 15:21:47 +0300 Subject: [PATCH] Change inner API for proxy options - Delete NAME field from Mode, RollbackOnError, StopOnError classes. - Change inner API in OperationWith, Options interfaces, ProxySelectOptions, BaseOptions classes for using ProxyOption enum. - Change Map to EnumMap in BaseOptions class. Needed for #420. --- .../driver/api/space/options/BaseOptions.java | 11 ++++++----- .../space/options/OperationWithBucketIdOptions.java | 8 ++++---- .../api/space/options/OperationWithFieldsOptions.java | 8 ++++---- .../api/space/options/OperationWithModeOptions.java | 5 +++-- .../options/OperationWithRollbackOnErrorOptions.java | 6 ++++-- .../options/OperationWithStopOnErrorOptions.java | 5 +++-- .../space/options/OperationWithTimeoutOptions.java | 8 ++++---- .../tarantool/driver/api/space/options/Options.java | 6 ++++-- .../driver/api/space/options/enums/crud/Mode.java | 1 - .../api/space/options/enums/crud/RollbackOnError.java | 1 - .../api/space/options/enums/crud/StopOnError.java | 1 - .../api/space/options/proxy/ProxySelectOptions.java | 7 +++---- 12 files changed, 35 insertions(+), 32 deletions(-) diff --git a/src/main/java/io/tarantool/driver/api/space/options/BaseOptions.java b/src/main/java/io/tarantool/driver/api/space/options/BaseOptions.java index ccec767d6..84073a24c 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/BaseOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/BaseOptions.java @@ -1,7 +1,8 @@ package io.tarantool.driver.api.space.options; -import java.util.HashMap; -import java.util.Map; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; + +import java.util.EnumMap; import java.util.Optional; /** @@ -12,7 +13,7 @@ */ public abstract class BaseOptions implements Options { - private final Map resultMap = new HashMap<>(); + private final EnumMap resultMap = new EnumMap<>(ProxyOption.class); /** * Add an option value. @@ -20,7 +21,7 @@ public abstract class BaseOptions implements Options { * @param option option name * @param value option value */ - public void addOption(String option, Object value) { + public void addOption(ProxyOption option, Object value) { resultMap.put(option, value); } @@ -31,7 +32,7 @@ public void addOption(String option, Object value) { * @param optionClass option value type */ @SuppressWarnings("unchecked") - public Optional getOption(String option, Class optionClass) { + public Optional getOption(ProxyOption option, Class optionClass) { return Optional.ofNullable((T) resultMap.get(option)); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/OperationWithBucketIdOptions.java b/src/main/java/io/tarantool/driver/api/space/options/OperationWithBucketIdOptions.java index 0d268ea8e..41091980e 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/OperationWithBucketIdOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/OperationWithBucketIdOptions.java @@ -1,5 +1,7 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; + import java.util.Optional; /** @@ -10,8 +12,6 @@ public interface OperationWithBucketIdOptions> extends Options, Self { - String BUCKET_ID = "bucket_id"; - /** * Specifies bucket id for an operation to perform it on storage with this bucket. It may be useful * if a non-default sharding function is used or in other specific cases. @@ -26,7 +26,7 @@ public interface OperationWithBucketIdOptionscrud */ default T withBucketId(Integer bucketId) { - addOption(BUCKET_ID, bucketId); + addOption(ProxyOption.BUCKET_ID, bucketId); return self(); } @@ -36,6 +36,6 @@ default T withBucketId(Integer bucketId) { * @return bucket id */ default Optional getBucketId() { - return getOption(BUCKET_ID, Integer.class); + return getOption(ProxyOption.BUCKET_ID, Integer.class); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/OperationWithFieldsOptions.java b/src/main/java/io/tarantool/driver/api/space/options/OperationWithFieldsOptions.java index 4778e8b71..4f4dcc8bc 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/OperationWithFieldsOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/OperationWithFieldsOptions.java @@ -1,5 +1,7 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; + import java.util.List; import java.util.Optional; @@ -11,8 +13,6 @@ public interface OperationWithFieldsOptions> extends Options, Self { - String FIELDS = "fields"; - /** * Specifies list of fields names for getting only a subset of fields. * By default, all fields are returned. @@ -21,7 +21,7 @@ public interface OperationWithFieldsOptions fields) { - addOption(FIELDS, fields); + addOption(ProxyOption.FIELDS, fields); return self(); } @@ -31,6 +31,6 @@ default T withFields(List fields) { * @return list of fields string names */ default Optional getFields() { - return getOption(FIELDS, List.class); + return getOption(ProxyOption.FIELDS, List.class); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/OperationWithModeOptions.java b/src/main/java/io/tarantool/driver/api/space/options/OperationWithModeOptions.java index ecd79a0a9..163c85644 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/OperationWithModeOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/OperationWithModeOptions.java @@ -1,6 +1,7 @@ package io.tarantool.driver.api.space.options; import io.tarantool.driver.api.space.options.enums.crud.Mode; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; import java.util.Optional; @@ -19,7 +20,7 @@ public interface OperationWithModeOptions> * @return this options instance. */ default T withMode(Mode mode) { - addOption(Mode.NAME, mode.value()); + addOption(ProxyOption.MODE, mode.value()); return self(); } @@ -29,7 +30,7 @@ default T withMode(Mode mode) { * @return mode. */ default Optional getMode() { - return getOption(Mode.NAME, Mode.class); + return getOption(ProxyOption.MODE, Mode.class); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/OperationWithRollbackOnErrorOptions.java b/src/main/java/io/tarantool/driver/api/space/options/OperationWithRollbackOnErrorOptions.java index 76c279f90..dd2379f3f 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/OperationWithRollbackOnErrorOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/OperationWithRollbackOnErrorOptions.java @@ -1,6 +1,7 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; import io.tarantool.driver.api.space.options.enums.crud.RollbackOnError; import java.util.Optional; @@ -12,6 +13,7 @@ */ public interface OperationWithRollbackOnErrorOptions> extends Options, Self { + /** * Specifies whether to not save any changes in the space if any tuple replace operation * is unsuccesful. Default value is true. @@ -20,7 +22,7 @@ public interface OperationWithRollbackOnErrorOptions getRollbackOnError() { - return getOption(RollbackOnError.NAME, Boolean.class); + return getOption(ProxyOption.ROLLBACK_ON_ERROR, Boolean.class); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/OperationWithStopOnErrorOptions.java b/src/main/java/io/tarantool/driver/api/space/options/OperationWithStopOnErrorOptions.java index 1b5e2cd20..806c5fdde 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/OperationWithStopOnErrorOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/OperationWithStopOnErrorOptions.java @@ -1,5 +1,6 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; import io.tarantool.driver.api.space.options.enums.crud.StopOnError; import java.util.Optional; @@ -20,7 +21,7 @@ public interface OperationWithStopOnErrorOptions getStopOnError() { - return getOption(StopOnError.NAME, Boolean.class); + return getOption(ProxyOption.STOP_ON_ERROR, Boolean.class); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/OperationWithTimeoutOptions.java b/src/main/java/io/tarantool/driver/api/space/options/OperationWithTimeoutOptions.java index a4090ba63..93ba16bf1 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/OperationWithTimeoutOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/OperationWithTimeoutOptions.java @@ -1,5 +1,7 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; + import java.util.Optional; /** @@ -9,8 +11,6 @@ */ public interface OperationWithTimeoutOptions> extends Options, Self { - String TIMEOUT = "timeout"; - /** * Specifies timeout for waiting for a server response for the operation. * Configured request timeout for that client will be used by default. @@ -22,7 +22,7 @@ default T withTimeout(int timeout) { if (timeout <= 0) { throw new IllegalArgumentException("Timeout should be greater than 0"); } - addOption(TIMEOUT, timeout); + addOption(ProxyOption.TIMEOUT, timeout); return self(); } @@ -32,6 +32,6 @@ default T withTimeout(int timeout) { * @return timeout, in milliseconds. */ default Optional getTimeout() { - return getOption(TIMEOUT, Integer.class); + return getOption(ProxyOption.TIMEOUT, Integer.class); } } diff --git a/src/main/java/io/tarantool/driver/api/space/options/Options.java b/src/main/java/io/tarantool/driver/api/space/options/Options.java index e06a3ec49..17f05720f 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/Options.java +++ b/src/main/java/io/tarantool/driver/api/space/options/Options.java @@ -1,5 +1,7 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; + import java.util.Optional; /** @@ -16,7 +18,7 @@ public interface Options { * @param option name of option * @param value value of option */ - void addOption(String option, Object value); + void addOption(ProxyOption option, Object value); /** * Return option value by name. @@ -26,5 +28,5 @@ public interface Options { * @param option value type * @return option value */ - Optional getOption(String option, Class optionClass); + Optional getOption(ProxyOption option, Class optionClass); } diff --git a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/Mode.java b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/Mode.java index 6f4bb0364..0b270279a 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/Mode.java +++ b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/Mode.java @@ -10,7 +10,6 @@ public enum Mode { WRITE("write"), READ("read"); - public static final String NAME = "mode"; private final String value; Mode(String value) { diff --git a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/RollbackOnError.java b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/RollbackOnError.java index 2dec6b384..2c9c4d4d7 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/RollbackOnError.java +++ b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/RollbackOnError.java @@ -12,7 +12,6 @@ public enum RollbackOnError { FALSE(false); - public static final String NAME = "rollback_on_error"; private final boolean value; RollbackOnError(boolean value) { diff --git a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/StopOnError.java b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/StopOnError.java index 03492c913..e546115cf 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/StopOnError.java +++ b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/StopOnError.java @@ -12,7 +12,6 @@ public enum StopOnError { FALSE(false); - public static final String NAME = "stop_on_error"; private final boolean value; StopOnError(boolean value) { diff --git a/src/main/java/io/tarantool/driver/api/space/options/proxy/ProxySelectOptions.java b/src/main/java/io/tarantool/driver/api/space/options/proxy/ProxySelectOptions.java index 179f85b2c..575aa8260 100644 --- a/src/main/java/io/tarantool/driver/api/space/options/proxy/ProxySelectOptions.java +++ b/src/main/java/io/tarantool/driver/api/space/options/proxy/ProxySelectOptions.java @@ -2,6 +2,7 @@ import io.tarantool.driver.api.space.options.BaseOptions; import io.tarantool.driver.api.space.options.SelectOptions; +import io.tarantool.driver.api.space.options.enums.crud.ProxyOption; import java.util.Optional; @@ -13,8 +14,6 @@ */ public final class ProxySelectOptions extends BaseOptions implements SelectOptions { - public static final String BATCH_SIZE = "batch_size"; - private ProxySelectOptions() { } @@ -37,7 +36,7 @@ public ProxySelectOptions withBatchSize(int batchSize) { if (batchSize <= 0) { throw new IllegalArgumentException("Batch size should be greater than 0"); } - addOption(BATCH_SIZE, batchSize); + addOption(ProxyOption.BATCH_SIZE, batchSize); return self(); } @@ -48,6 +47,6 @@ public ProxySelectOptions self() { @Override public Optional getBatchSize() { - return getOption(BATCH_SIZE, Integer.class); + return getOption(ProxyOption.BATCH_SIZE, Integer.class); } }