Skip to content

Commit 6f27b3e

Browse files
committed
Add support for "vshard_router" option
Closes #463
1 parent 14e051a commit 6f27b3e

18 files changed

+218
-9
lines changed

src/main/java/io/tarantool/driver/api/space/options/DeleteOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
44
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
6+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
67

78
/**
89
* Marker interface for space delete operation options
@@ -11,5 +12,6 @@
1112
* @author Alexey Kuzin
1213
*/
1314
public interface DeleteOptions<T extends DeleteOptions<T>>
14-
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T> {
15+
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
16+
OperationWithVshardRouterOptions<T> {
1517
}

src/main/java/io/tarantool/driver/api/space/options/InsertManyOptions.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.tarantool.driver.api.space.options.crud.OperationWithRollbackOnErrorOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithStopOnErrorOptions;
66
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
7+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
78

89
/**
910
* Marker interface for space insert_many operation options
@@ -12,5 +13,5 @@
1213
*/
1314
public interface InsertManyOptions<T extends InsertManyOptions<T>>
1415
extends OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>, OperationWithRollbackOnErrorOptions<T>,
15-
OperationWithStopOnErrorOptions<T> {
16+
OperationWithStopOnErrorOptions<T>, OperationWithVshardRouterOptions<T> {
1617
}

src/main/java/io/tarantool/driver/api/space/options/InsertOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
44
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
6+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
67

78
/**
89
* Marker interface for space insert operation options
@@ -11,5 +12,6 @@
1112
* @author Alexey Kuzin
1213
*/
1314
public interface InsertOptions<T extends InsertOptions<T>>
14-
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T> {
15+
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
16+
OperationWithVshardRouterOptions<T> {
1517
}

src/main/java/io/tarantool/driver/api/space/options/ReplaceManyOptions.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.tarantool.driver.api.space.options.crud.OperationWithRollbackOnErrorOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithStopOnErrorOptions;
66
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
7+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
78

89
/**
910
* Marker interface for space replace_many operation options
@@ -12,5 +13,5 @@
1213
*/
1314
public interface ReplaceManyOptions<T extends ReplaceManyOptions<T>>
1415
extends OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>, OperationWithRollbackOnErrorOptions<T>,
15-
OperationWithStopOnErrorOptions<T> {
16+
OperationWithStopOnErrorOptions<T>, OperationWithVshardRouterOptions<T> {
1617
}

src/main/java/io/tarantool/driver/api/space/options/ReplaceOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
44
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
6+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
67

78
/**
89
* Marker interface for space replace operation options
@@ -11,5 +12,6 @@
1112
* @author Alexey Kuzin
1213
*/
1314
public interface ReplaceOptions<T extends ReplaceOptions<T>>
14-
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T> {
15+
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
16+
OperationWithVshardRouterOptions<T> {
1517
}

src/main/java/io/tarantool/driver/api/space/options/SelectOptions.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
66
import io.tarantool.driver.api.space.options.crud.OperationWithModeOptions;
77
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
8+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
89

910
/**
1011
* Marker interface for space select operation options
@@ -16,5 +17,5 @@
1617
*/
1718
public interface SelectOptions<T extends SelectOptions<T>>
1819
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
19-
OperationWithModeOptions<T>, OperationWithBatchSizeOptions<T> {
20+
OperationWithModeOptions<T>, OperationWithBatchSizeOptions<T>, OperationWithVshardRouterOptions<T> {
2021
}

src/main/java/io/tarantool/driver/api/space/options/UpdateOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
44
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
6+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
67

78
/**
89
* Marker interface for space update operation options
@@ -11,5 +12,6 @@
1112
* @author Alexey Kuzin
1213
*/
1314
public interface UpdateOptions<T extends UpdateOptions<T>>
14-
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T> {
15+
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
16+
OperationWithVshardRouterOptions<T> {
1517
}

src/main/java/io/tarantool/driver/api/space/options/UpsertOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
44
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
6+
import io.tarantool.driver.api.space.options.crud.OperationWithVshardRouterOptions;
67

78
/**
89
* Marker interface for space upsert operation options
@@ -11,5 +12,6 @@
1112
* @author Alexey Kuzin
1213
*/
1314
public interface UpsertOptions<T extends UpsertOptions<T>>
14-
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T> {
15+
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
16+
OperationWithVshardRouterOptions<T> {
1517
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.tarantool.driver.api.space.options.crud;
2+
3+
import java.util.Optional;
4+
5+
import io.tarantool.driver.api.space.options.Options;
6+
import io.tarantool.driver.api.space.options.Self;
7+
import io.tarantool.driver.api.space.options.crud.enums.ProxyOption;
8+
9+
/**
10+
* Base interface for all operation options that may have a configurable "vshard_router" value.
11+
*/
12+
public interface OperationWithVshardRouterOptions<T extends OperationWithVshardRouterOptions<T>>
13+
extends Options, Self<T> {
14+
15+
/**
16+
* Sets "vshard_router" option value. Cartridge vshard group name or vshard router instance. Set this parameter
17+
* if your space is not a part of the default vshard cluster.
18+
*
19+
* @param vshardRouter cartridge vshard group name or vshard router instance. Set this parameter if your space
20+
* is not a part of the default vshard cluster.
21+
* @return this options instance.
22+
* @throws IllegalArgumentException if vshardRouter is null or consists only of spaces.
23+
*/
24+
default T withVshardRouter(String vshardRouter) throws IllegalArgumentException {
25+
if (vshardRouter.trim().isEmpty()) {
26+
throw new IllegalArgumentException("\"vshardRouter\" parameter cannot be empty or consist only of spaces.");
27+
}
28+
addOption(ProxyOption.VSHARD_ROUTER, vshardRouter);
29+
return self();
30+
}
31+
32+
/**
33+
* @return "vshard_router" option value.
34+
*/
35+
default Optional<String> getVshardRouter() {
36+
return getOption(ProxyOption.VSHARD_ROUTER, String.class);
37+
}
38+
}

src/main/java/io/tarantool/driver/api/space/options/crud/enums/ProxyOption.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public enum ProxyOption {
2323

2424
AFTER("after"),
2525

26-
FIRST("first");
26+
FIRST("first"),
27+
28+
VSHARD_ROUTER("vshard_router");
2729

2830
private final String name;
2931

0 commit comments

Comments
 (0)