Skip to content

Commit a442d08

Browse files
Upgrade underlying typedb-driver (#211)
## What is the goal of this PR? We upgrade the underlying Java driver to the latest version. ## What are the changes implemented in this PR? Note: the new Rust-backed Java does not currently support async.
1 parent bbecfdd commit a442d08

File tree

9 files changed

+194
-143
lines changed

9 files changed

+194
-143
lines changed

.bazelrc

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717

1818
try-import ./.bazel-remote-cache.rc
1919

20-
build --incompatible_strict_action_env --java_language_version=11 --javacopt='--release 11'
21-
run --incompatible_strict_action_env
22-
test --incompatible_strict_action_env
20+
build --incompatible_strict_action_env --java_language_version=11 --javacopt='--release 11' --enable_runfiles
21+
run --incompatible_strict_action_env --java_runtime_version=remotejdk_11
22+
test --incompatible_strict_action_env --java_runtime_version=remotejdk_11

.bazelversion

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5.1.1
1+
6.2.0

BUILD

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package(default_visibility = ["//visibility:__subpackages__"])
1919

20-
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
20+
load("@rules_pkg//:pkg.bzl", "pkg_tar")
2121
load("@vaticle_bazel_distribution//artifact:rules.bzl", "deploy_artifact")
2222
load("@vaticle_bazel_distribution//common:rules.bzl", "assemble_targz", "java_deps", "assemble_zip", "assemble_versioned")
2323
load("@vaticle_bazel_distribution//github:rules.bzl", "deploy_github")
@@ -42,9 +42,9 @@ java_library(
4242
name = "console",
4343
srcs = glob(["*.java", "*/*.java", "*/*/*.java"], exclude=["bazel-*/*"]) + [":version"],
4444
deps = [
45-
"@vaticle_typedb_client_java//:client-java",
46-
"@vaticle_typedb_client_java//api",
47-
"@vaticle_typedb_client_java//common",
45+
"@vaticle_typedb_client_java//java:client-java",
46+
"@vaticle_typedb_client_java//java/api",
47+
"@vaticle_typedb_client_java//java/common",
4848
"@vaticle_typeql//java:typeql-lang",
4949
"@vaticle_typeql//java/common:common",
5050
"@vaticle_typeql//java/query",

TypeDBConsole.java

+61-75
Large diffs are not rendered by default.

WORKSPACE

+49-10
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ kt_register_toolchains()
4444
load("@vaticle_dependencies//builder/python:deps.bzl", python_deps = "deps")
4545
python_deps()
4646

47+
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
48+
rules_jvm_external_deps()
49+
4750
# Load //builder/antlr
4851
load("@vaticle_dependencies//builder/antlr:deps.bzl", antlr_deps = "deps", "antlr_version")
4952
antlr_deps()
@@ -55,16 +58,50 @@ rules_antlr_dependencies(antlr_version, JAVA)
5558
# Load //builder/grpc
5659
load("@vaticle_dependencies//builder/grpc:deps.bzl", grpc_deps = "deps")
5760
grpc_deps()
58-
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl",
59-
com_github_grpc_grpc_deps = "grpc_deps")
60-
com_github_grpc_grpc_deps()
61-
load("@stackb_rules_proto//java:deps.bzl", "java_grpc_compile")
62-
java_grpc_compile()
61+
62+
load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains")
63+
rules_proto_grpc_toolchains()
64+
rules_proto_grpc_repos()
65+
66+
load("@rules_proto_grpc//java:repositories.bzl", rules_proto_grpc_java_repos = "java_repos")
67+
rules_proto_grpc_java_repos()
68+
69+
load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS")
70+
load("@vaticle_dependencies//library/maven:rules.bzl", "parse_unversioned")
71+
io_grpc_artifacts = [parse_unversioned(c) for c in IO_GRPC_GRPC_JAVA_ARTIFACTS]
6372

6473
# Load //distribution/docker
6574
load("@vaticle_dependencies//distribution/docker:deps.bzl", docker_deps = "deps")
6675
docker_deps()
6776

77+
# Load //builder/rust
78+
load("@vaticle_dependencies//builder/rust:deps.bzl", rust_deps = "deps")
79+
rust_deps()
80+
81+
load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains", "rust_analyzer_toolchain_repository")
82+
load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies")
83+
rules_rust_dependencies()
84+
load("@rules_rust//rust:defs.bzl", "rust_common")
85+
rust_register_toolchains(
86+
edition = "2021",
87+
extra_target_triples = [
88+
"aarch64-apple-darwin",
89+
"aarch64-unknown-linux-gnu",
90+
"x86_64-apple-darwin",
91+
"x86_64-pc-windows-msvc",
92+
"x86_64-unknown-linux-gnu",
93+
],
94+
rust_analyzer_version = rust_common.default_version,
95+
)
96+
97+
load("@vaticle_dependencies//library/crates:crates.bzl", "fetch_crates")
98+
fetch_crates()
99+
load("@crates//:defs.bzl", "crate_repositories")
100+
crate_repositories()
101+
102+
load("@vaticle_dependencies//tool/swig:deps.bzl", swig_deps = "deps")
103+
swig_deps()
104+
68105
# Load //tool/common
69106
load("@vaticle_dependencies//tool/common:deps.bzl", "vaticle_dependencies_ci_pip",
70107
vaticle_dependencies_tool_maven_artifacts = "maven_artifacts")
@@ -112,9 +149,8 @@ load("//dependencies/vaticle:repositories.bzl", "vaticle_typedb_common", "vaticl
112149
vaticle_typedb_common()
113150
vaticle_typedb_client_java()
114151

115-
load("@vaticle_typedb_client_java//dependencies/vaticle:repositories.bzl", "vaticle_factory_tracing", "vaticle_typedb_protocol", "vaticle_typeql")
152+
load("@vaticle_typedb_client_java//dependencies/vaticle:repositories.bzl", "vaticle_typedb_protocol", "vaticle_typeql")
116153
vaticle_typeql()
117-
vaticle_factory_tracing()
118154
vaticle_typedb_protocol()
119155

120156
# Load artifacts
@@ -125,7 +161,6 @@ vaticle_typedb_artifact()
125161
load("@vaticle_typedb_common//dependencies/maven:artifacts.bzl", vaticle_typedb_common_artifacts = "artifacts")
126162
load("@vaticle_typeql//dependencies/maven:artifacts.bzl", vaticle_typeql_artifacts = "artifacts")
127163
load("@vaticle_typedb_client_java//dependencies/maven:artifacts.bzl", vaticle_typedb_client_java_artifacts = "artifacts")
128-
load("@vaticle_factory_tracing//dependencies/maven:artifacts.bzl", vaticle_factory_tracing_artifacts = "artifacts")
129164
load("@vaticle_typedb_console//dependencies/maven:artifacts.bzl", vaticle_typedb_console_artifacts = "artifacts")
130165

131166
###############
@@ -135,13 +170,17 @@ load("@vaticle_typedb_console//dependencies/maven:artifacts.bzl", vaticle_typedb
135170
load("@vaticle_dependencies//library/maven:rules.bzl", "maven")
136171
maven(
137172
vaticle_typedb_common_artifacts +
138-
vaticle_factory_tracing_artifacts +
139173
vaticle_typeql_artifacts +
140174
vaticle_typedb_client_java_artifacts +
141175
vaticle_typedb_console_artifacts +
142-
vaticle_dependencies_tool_maven_artifacts
176+
vaticle_dependencies_tool_maven_artifacts +
177+
io_grpc_artifacts,
178+
generate_compat_repositories = True,
143179
)
144180

181+
load("@maven//:compat.bzl", "compat_repositories")
182+
compat_repositories()
183+
145184
############################################
146185
# Create @vaticle_typedb_console_workspace_refs #
147186
############################################

command/REPLCommand.java

+14-14
Original file line numberDiff line numberDiff line change
@@ -533,16 +533,16 @@ class Options {
533533
public static String token = "transaction-options";
534534

535535
static TypeDBOptions from(String[] optionTokens, boolean isCluster) {
536-
if (isCluster) return parseClusterOptions(optionTokens, TypeDBOptions.cluster());
537-
else return parseCoreOptions(optionTokens, TypeDBOptions.core());
536+
if (isCluster) return parseClusterOptions(optionTokens, new TypeDBOptions());
537+
else return parseCoreOptions(optionTokens, new TypeDBOptions());
538538
}
539539

540-
private static TypeDBOptions.Cluster parseClusterOptions(String[] optionTokens, TypeDBOptions.Cluster options) {
540+
private static TypeDBOptions parseClusterOptions(String[] optionTokens, TypeDBOptions options) {
541541
for (int i = 0; i < optionTokens.length; i += 2) {
542542
String token = optionTokens[i];
543543
String arg = optionTokens[i + 1];
544544
assert token.charAt(0) == '-' && token.charAt(1) == '-';
545-
Option<TypeDBOptions.Cluster> option = Options.Cluster.clusterOption(token.substring(2));
545+
Option<TypeDBOptions> option = Options.Cluster.clusterOption(token.substring(2));
546546
try {
547547
options = option.build(options, arg);
548548
} catch (IllegalArgumentException e) {
@@ -619,7 +619,7 @@ private static List<Option.Cluster> withCoreOptions(Option.Cluster... clusterOpt
619619
return extendedOptions;
620620
}
621621

622-
public static Option<TypeDBOptions.Cluster> clusterOption(String token) throws IllegalArgumentException {
622+
public static Option<TypeDBOptions> clusterOption(String token) throws IllegalArgumentException {
623623
return from(token, options);
624624
}
625625

@@ -646,7 +646,7 @@ static Option.Core core(String name, Arg arg, String description, BiFunction<Typ
646646
return new Option.Core(name, arg, description, builder);
647647
}
648648

649-
static Option.Cluster cluster(String name, Arg arg, String description, BiFunction<TypeDBOptions.Cluster, Object, TypeDBOptions.Cluster> builder) {
649+
static Option.Cluster cluster(String name, Arg arg, String description, BiFunction<TypeDBOptions, Object, TypeDBOptions> builder) {
650650
return new Option.Cluster(name, arg, description, builder);
651651
}
652652

@@ -667,13 +667,13 @@ private Core(String name, Arg arg, String description, BiFunction<TypeDBOptions,
667667
}
668668

669669
Option.Cluster asClusterOption() {
670-
return new Option.Cluster(name, arg, description, (clusterOption, arg) -> builder.apply(clusterOption, arg).asCluster());
670+
return new Option.Cluster(name, arg, description, (clusterOption, arg) -> builder.apply(clusterOption, arg));
671671
}
672672
}
673673

674-
static class Cluster extends Option<TypeDBOptions.Cluster> {
674+
static class Cluster extends Option<TypeDBOptions> {
675675

676-
private Cluster(String name, Arg arg, String description, BiFunction<TypeDBOptions.Cluster, Object, TypeDBOptions.Cluster> builder) {
676+
private Cluster(String name, Arg arg, String description, BiFunction<TypeDBOptions, Object, TypeDBOptions> builder) {
677677
super(name, arg, description, builder);
678678
}
679679
}
@@ -700,9 +700,9 @@ Object parse(String arg) throws IllegalArgumentException {
700700
}
701701
}
702702

703-
static String createHelpMenu(TypeDBClient client) {
703+
static String createHelpMenu(TypeDBClient client, boolean isCluster) {
704704
List<Pair<String, String>> menu = new ArrayList<>();
705-
if (client.isCluster()) {
705+
if (client.users() != null) {
706706
menu.addAll(Arrays.asList(
707707
pair(User.List.helpCommand, User.List.description),
708708
pair(User.Create.helpCommand, User.Create.description),
@@ -717,12 +717,12 @@ static String createHelpMenu(TypeDBClient client) {
717717
pair(Database.Delete.helpCommand, Database.Delete.description),
718718
pair(Database.Schema.helpCommand, Database.Schema.description)));
719719

720-
if (client.isCluster()) {
720+
if (isCluster) {
721721
menu.add(pair(Database.Replicas.helpCommand, Database.Replicas.description));
722722
}
723723

724724
menu.add(pair(Transaction.helpCommand, Transaction.description));
725-
if (client.isCluster()) menu.addAll(Options.Cluster.helpMenu());
725+
if (isCluster) menu.addAll(Options.Cluster.helpMenu());
726726
else menu.addAll(Options.Core.helpMenu());
727727

728728
menu.addAll(Arrays.asList(
@@ -796,7 +796,7 @@ static REPLCommand readREPLCommand(String line, @Nullable LineReader passwordRea
796796
TypeDBTransaction.Type transactionType = tokens[3].equals("read") ? TypeDBTransaction.Type.READ : TypeDBTransaction.Type.WRITE;
797797
TypeDBOptions options;
798798
if (tokens.length > 4) options = Options.from(Arrays.copyOfRange(tokens, 4, tokens.length), isCluster);
799-
else options = isCluster ? TypeDBOptions.cluster() : TypeDBOptions.core();
799+
else options = new TypeDBOptions();
800800
command = new Transaction(database, sessionType, transactionType, options);
801801
}
802802
return command;

common/Printer.java

+24-16
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,19 @@
3030
import com.vaticle.typedb.client.api.concept.type.Type;
3131
import com.vaticle.typedb.client.api.concept.value.Value;
3232
import com.vaticle.typedb.client.api.database.Database;
33+
import com.vaticle.typedb.console.common.exception.TypeDBConsoleException;
3334
import com.vaticle.typeql.lang.common.TypeQLToken;
3435
import org.jline.utils.AttributedString;
3536
import org.jline.utils.AttributedStyle;
3637

3738
import java.io.PrintStream;
3839
import java.util.ArrayList;
3940
import java.util.Arrays;
40-
import java.util.Comparator;
4141
import java.util.List;
4242
import java.util.Map;
43+
import java.util.stream.Collectors;
4344

45+
import static com.vaticle.typedb.console.common.exception.ErrorMessage.Internal.ILLEGAL_CAST;
4446
import static com.vaticle.typeql.lang.common.TypeQLToken.Constraint.ISA;
4547
import static java.util.stream.Collectors.joining;
4648

@@ -67,7 +69,7 @@ public void conceptMap(ConceptMap conceptMap, TypeDBTransaction tx) {
6769

6870
public void conceptMapGroup(ConceptMapGroup answer, TypeDBTransaction tx) {
6971
out.println(conceptDisplayString(answer.owner(), tx) + " => {");
70-
for (ConceptMap conceptMap : answer.conceptMaps()) {
72+
for (ConceptMap conceptMap : answer.conceptMaps().collect(Collectors.toList())) {
7173
out.println(indent(conceptMapDisplayString(conceptMap, tx)));
7274
}
7375
out.println("}");
@@ -91,14 +93,13 @@ public void databaseReplica(Database.Replica replica) {
9193
}
9294

9395
private String conceptMapDisplayString(ConceptMap conceptMap, TypeDBTransaction tx) {
94-
Comparator<Map.Entry<String, Concept>> comparator = Comparator.comparing(e -> e.getValue().isValue());
95-
comparator = comparator.thenComparing(e -> e.getKey().toLowerCase());
96-
String content = conceptMap.map().entrySet().stream().sorted(comparator)
97-
.map(e -> {
98-
if (e.getValue().isValue()) {
99-
return TypeQLToken.Char.QUESTION_MARK + e.getKey() + " = " + conceptDisplayString(e.getValue().asValue(), tx) + ";";
96+
String content = conceptMap.variables()
97+
.map(key -> {
98+
Concept value = conceptMap.get(key);
99+
if (value.isValue()) {
100+
return TypeQLToken.Char.QUESTION_MARK + key + " = " + conceptDisplayString(value.asValue(), tx) + ";";
100101
} else {
101-
return TypeQLToken.Char.$ + e.getKey() + " " + conceptDisplayString(e.getValue(), tx) + ";";
102+
return TypeQLToken.Char.$ + key + " " + conceptDisplayString(value, tx) + ";";
102103
}
103104
}).collect(joining("\n"));
104105
StringBuilder sb = new StringBuilder("{");
@@ -116,7 +117,7 @@ private String conceptDisplayString(Concept concept, TypeDBTransaction tx) {
116117
if (concept.isValue()) return valueDisplayString(concept.asValue());
117118

118119
StringBuilder sb = new StringBuilder();
119-
if (concept instanceof Attribute<?>) {
120+
if (concept instanceof Attribute) {
120121
sb.append(attributeDisplayString(concept.asThing().asAttribute()));
121122
} else if (concept instanceof Type) {
122123
sb.append(typeDisplayString(concept.asType(), tx));
@@ -133,8 +134,15 @@ private String conceptDisplayString(Concept concept, TypeDBTransaction tx) {
133134
return sb.toString();
134135
}
135136

136-
private String valueDisplayString(Value<?> value) {
137-
return com.vaticle.typeql.lang.common.util.Strings.valueToString(value.getValue());
137+
private String valueDisplayString(Value value) {
138+
Object rawValue;
139+
if (value.isLong()) rawValue = value.asLong();
140+
else if (value.isDouble()) rawValue = value.asDouble();
141+
else if (value.isBoolean()) rawValue = value.asBoolean();
142+
else if (value.isString()) rawValue = value.asString();
143+
else if (value.isDateTime()) rawValue = value.asDateTime();
144+
else throw new TypeDBConsoleException(ILLEGAL_CAST);
145+
return com.vaticle.typeql.lang.common.util.Strings.valueToString(rawValue);
138146
}
139147

140148
private String isaDisplayString(Thing thing) {
@@ -146,7 +154,7 @@ private String isaDisplayString(Thing thing) {
146154
private String relationDisplayString(Relation relation, TypeDBTransaction tx) {
147155
StringBuilder sb = new StringBuilder();
148156
List<String> rolePlayerStrings = new ArrayList<>();
149-
Map<? extends RoleType, ? extends List<? extends Thing>> rolePlayers = relation.asRemote(tx).getPlayersByRoleType();
157+
Map<? extends RoleType, ? extends List<? extends Thing>> rolePlayers = relation.getPlayersByRoleType(tx);
150158
for (Map.Entry<? extends RoleType, ? extends List<? extends Thing>> rolePlayer : rolePlayers.entrySet()) {
151159
RoleType role = rolePlayer.getKey();
152160
List<? extends Thing> things = rolePlayer.getValue();
@@ -174,8 +182,8 @@ private String typeDisplayString(Type type, TypeDBTransaction tx) {
174182
.append(" ")
175183
.append(colorType(type.getLabel().toString()));
176184

177-
Type superType = type.asRemote(tx).getSupertype();
178-
if (superType != null) {
185+
if (!type.isRoot()) {
186+
Type superType = type.getSupertype(tx);
179187
sb.append(" ")
180188
.append(colorKeyword(TypeQLToken.Constraint.SUB.toString()))
181189
.append(" ")
@@ -184,7 +192,7 @@ private String typeDisplayString(Type type, TypeDBTransaction tx) {
184192
return sb.toString();
185193
}
186194

187-
private String attributeDisplayString(Attribute<?> attribute) {
195+
private String attributeDisplayString(Attribute attribute) {
188196
return com.vaticle.typeql.lang.common.util.Strings.valueToString(attribute.getValue());
189197
}
190198

0 commit comments

Comments
 (0)