From f9e51f3896597f0f6adfcd51beea20315414d730 Mon Sep 17 00:00:00 2001 From: Belonogov Nikolay Date: Wed, 6 Sep 2023 11:53:15 +0300 Subject: [PATCH] Fix CRUD mode values to enum Needed for #107 --- .../options/OperationWithModeOptions.java | 14 +++++----- .../api/space/options/enums/crud/Mode.java | 27 +++++++++++++++++++ .../options/enums/crud/package-info.java | 6 +++++ .../proxy/ProxyOperationBuildersTest.java | 5 ++-- .../options/ProxySpaceSelectOptionsIT.java | 9 ++++--- 5 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 src/main/java/io/tarantool/driver/api/space/options/enums/crud/Mode.java create mode 100644 src/main/java/io/tarantool/driver/api/space/options/enums/crud/package-info.java 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 70255474..cd44a730 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,5 +1,7 @@ package io.tarantool.driver.api.space.options; +import io.tarantool.driver.api.space.options.enums.crud.Mode; + import java.util.Optional; /** @@ -17,12 +19,8 @@ public interface OperationWithModeOptions> * @param mode mode for operations (select, get, count). * @return this options instance. */ - default T withMode(String mode) { - if (!mode.equals("read") && !mode.equals("write")) { - throw new IllegalArgumentException("Mode should be \"read\" or \"write\""); - } - - addOption(MODE, mode); + default T withMode(Mode mode) { + addOption(MODE, mode.value()); return self(); } @@ -31,8 +29,8 @@ default T withMode(String mode) { * * @return mode. */ - default Optional getMode() { - return getOption(MODE, String.class); + default Optional getMode() { + return getOption(MODE, Mode.class); } } 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 new file mode 100644 index 00000000..0b270279 --- /dev/null +++ b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/Mode.java @@ -0,0 +1,27 @@ +package io.tarantool.driver.api.space.options.enums.crud; + +/** + * Enum represents the CRUD predefined mode option values. + * + * @author Belonogov Nikolay. + * @see tarantool/crud. + */ +public enum Mode { + WRITE("write"), + READ("read"); + + private final String value; + + Mode(String value) { + this.value = value; + } + + public String value() { + return this.value; + } + + @Override + public String toString() { + return this.value; + } +} diff --git a/src/main/java/io/tarantool/driver/api/space/options/enums/crud/package-info.java b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/package-info.java new file mode 100644 index 00000000..4d7a7ad5 --- /dev/null +++ b/src/main/java/io/tarantool/driver/api/space/options/enums/crud/package-info.java @@ -0,0 +1,6 @@ +/** + * Contains enums for CRUD option values. + * + * @author Belonogov Nikolay + */ +package io.tarantool.driver.api.space.options.enums.crud; diff --git a/src/test/java/io/tarantool/driver/core/proxy/ProxyOperationBuildersTest.java b/src/test/java/io/tarantool/driver/core/proxy/ProxyOperationBuildersTest.java index b26395e3..1961a668 100644 --- a/src/test/java/io/tarantool/driver/core/proxy/ProxyOperationBuildersTest.java +++ b/src/test/java/io/tarantool/driver/core/proxy/ProxyOperationBuildersTest.java @@ -3,6 +3,7 @@ import io.tarantool.driver.api.SingleValueCallResult; import io.tarantool.driver.api.TarantoolResult; import io.tarantool.driver.api.conditions.Conditions; +import io.tarantool.driver.api.space.options.enums.crud.Mode; import io.tarantool.driver.api.space.options.proxy.ProxyDeleteOptions; import io.tarantool.driver.api.space.options.proxy.ProxyInsertManyOptions; import io.tarantool.driver.api.space.options.proxy.ProxyInsertOptions; @@ -220,7 +221,7 @@ public void selectOperationBuilderTest() { .withOptions(ProxySelectOptions.create() .withTimeout(client.getConfig().getRequestTimeout()) .withBatchSize(123456) - .withMode("write") + .withMode(Mode.WRITE) ) .build(); @@ -228,7 +229,7 @@ public void selectOperationBuilderTest() { options.put(CRUDBaseOptions.TIMEOUT, client.getConfig().getRequestTimeout()); options.put(CRUDSelectOptions.SELECT_BATCH_SIZE, 123456); options.put(CRUDSelectOptions.SELECT_LIMIT, 100L); - options.put(CRUDSelectOptions.MODE, "write"); + options.put(CRUDSelectOptions.MODE, Mode.WRITE.value()); assertEquals(client, op.getClient()); assertEquals("function1", op.getFunctionName()); diff --git a/src/test/java/io/tarantool/driver/integration/proxy/options/ProxySpaceSelectOptionsIT.java b/src/test/java/io/tarantool/driver/integration/proxy/options/ProxySpaceSelectOptionsIT.java index 56431c78..20f42cce 100644 --- a/src/test/java/io/tarantool/driver/integration/proxy/options/ProxySpaceSelectOptionsIT.java +++ b/src/test/java/io/tarantool/driver/integration/proxy/options/ProxySpaceSelectOptionsIT.java @@ -6,6 +6,7 @@ import io.tarantool.driver.api.conditions.Conditions; import io.tarantool.driver.api.space.TarantoolSpaceOperations; import io.tarantool.driver.api.space.options.SelectOptions; +import io.tarantool.driver.api.space.options.enums.crud.Mode; import io.tarantool.driver.api.space.options.proxy.ProxySelectOptions; import io.tarantool.driver.api.tuple.DefaultTarantoolTupleFactory; import io.tarantool.driver.api.tuple.TarantoolTuple; @@ -95,7 +96,7 @@ public void withBatchSizeTest() throws ExecutionException, InterruptedException } @Test - public void withTimeout() throws ExecutionException, InterruptedException { + public void withTimeoutTest() throws ExecutionException, InterruptedException { TarantoolSpaceOperations> profileSpace = client.space(TEST_SPACE_NAME); @@ -154,7 +155,7 @@ public void withFieldsTest() throws ExecutionException, InterruptedException { } @Test - public void withMode() throws ExecutionException, InterruptedException { + public void withModeTest() throws ExecutionException, InterruptedException { TarantoolSpaceOperations> operations = client.space(TEST_SPACE_NAME); @@ -167,8 +168,8 @@ public void withMode() throws ExecutionException, InterruptedException { crudSelectOpts = client.eval("return crud_select_opts").get(); assertNull(((HashMap) crudSelectOpts.get(0)).get("mode")); - operations.select(Conditions.any(), ProxySelectOptions.create().withMode("write")).get(); + operations.select(Conditions.any(), ProxySelectOptions.create().withMode(Mode.WRITE)).get(); crudSelectOpts = client.eval("return crud_select_opts").get(); - assertEquals("write", ((HashMap) crudSelectOpts.get(0)).get("mode")); + assertEquals(Mode.WRITE, ((HashMap) crudSelectOpts.get(0)).get("mode")); } }