From 33fae69c228f69de6c8041f1c4d27b09471eb997 Mon Sep 17 00:00:00 2001 From: Quin Lynch Date: Sat, 8 Jun 2024 15:13:29 -0300 Subject: [PATCH 1/2] fix optional args --- .../com/edgedb/examples/AbstractTypes.java | 30 +++++++++++-------- .../driver/binary/codecs/ObjectCodec.java | 14 +++++---- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java b/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java index e30ce6f3..2de157a7 100644 --- a/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java +++ b/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java @@ -28,19 +28,25 @@ public static class Movie extends Media { @Override public CompletionStage run(EdgeDBClient client) { return client - .execute("insert Movie { title := \"The Matrix\", release_year := 1999 } unless conflict on .title") - .thenCompose(v -> client.execute("insert Show { title := \"The Office\", seasons := 9 } unless conflict on .title")) - .thenCompose(v -> client.query(Media.class, "select Media { title, [is Movie].release_year, [is Show].seasons }")) + .querySingle(String.class, "select $arg") .thenAccept(content -> { - for (var media : content) { - if(media instanceof Show) { - logger.info("Got show {}", media); - } - - if(media instanceof Movie) { - logger.info("Got movie {}", media); - } - } + logger.info("Content: {}", content); }); + +// return client +// .execute("insert Movie { title := \"The Matrix\", release_year := 1999 } unless conflict on .title") +// .thenCompose(v -> client.execute("insert Show { title := \"The Office\", seasons := 9 } unless conflict on .title")) +// .thenCompose(v -> client.query(Media.class, "select Media { title, [is Movie].release_year, [is Show].seasons }")) +// .thenAccept(content -> { +// for (var media : content) { +// if(media instanceof Show) { +// logger.info("Got show {}", media); +// } +// +// if(media instanceof Movie) { +// logger.info("Got movie {}", media); +// } +// } +// }); } } \ No newline at end of file diff --git a/src/driver/src/main/java/com/edgedb/driver/binary/codecs/ObjectCodec.java b/src/driver/src/main/java/com/edgedb/driver/binary/codecs/ObjectCodec.java index c657d901..7d886eea 100644 --- a/src/driver/src/main/java/com/edgedb/driver/binary/codecs/ObjectCodec.java +++ b/src/driver/src/main/java/com/edgedb/driver/binary/codecs/ObjectCodec.java @@ -143,25 +143,27 @@ public final void serializeArguments(@NotNull PacketWriter writer, @Nullable Map @Override public final void serialize(@NotNull PacketWriter writer, @Nullable Object rawValue, @NotNull CodecContext context) throws OperationNotSupportedException, EdgeDBException { if(rawValue == null) { - throw new IllegalArgumentException("Serializable object value cannot be null"); - } - - if(!(rawValue instanceof Map)) { + rawValue = Map.of(); + } else if(!(rawValue instanceof Map)) { throw new EdgeDBException("Expected map type for object serialization"); } var value = (Map)rawValue; - writer.write(value.size()); + writer.write(this.elements.length); var visitor = context.getTypeVisitor(); - for(int i = 0; i != value.size(); i++) { + for(int i = 0; i != this.elements.length; i++) { var element = this.elements[i]; writer.write(0); // reserved if(!value.containsKey(element.name)) { + if (element.cardinality != Cardinality.AT_MOST_ONE) { + throw new EdgeDBException(String.format("Missing required argument '%s'", element.name)); + } + writer.write(-1); continue; } From f1dd9cb5917b421d016ac196a6d30053ca70bc32 Mon Sep 17 00:00:00 2001 From: Quin Lynch Date: Sat, 8 Jun 2024 15:14:03 -0300 Subject: [PATCH 2/2] remove test code --- .../com/edgedb/examples/AbstractTypes.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java b/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java index 2de157a7..e30ce6f3 100644 --- a/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java +++ b/examples/java-examples/src/main/java/com/edgedb/examples/AbstractTypes.java @@ -28,25 +28,19 @@ public static class Movie extends Media { @Override public CompletionStage run(EdgeDBClient client) { return client - .querySingle(String.class, "select $arg") + .execute("insert Movie { title := \"The Matrix\", release_year := 1999 } unless conflict on .title") + .thenCompose(v -> client.execute("insert Show { title := \"The Office\", seasons := 9 } unless conflict on .title")) + .thenCompose(v -> client.query(Media.class, "select Media { title, [is Movie].release_year, [is Show].seasons }")) .thenAccept(content -> { - logger.info("Content: {}", content); + for (var media : content) { + if(media instanceof Show) { + logger.info("Got show {}", media); + } + + if(media instanceof Movie) { + logger.info("Got movie {}", media); + } + } }); - -// return client -// .execute("insert Movie { title := \"The Matrix\", release_year := 1999 } unless conflict on .title") -// .thenCompose(v -> client.execute("insert Show { title := \"The Office\", seasons := 9 } unless conflict on .title")) -// .thenCompose(v -> client.query(Media.class, "select Media { title, [is Movie].release_year, [is Show].seasons }")) -// .thenAccept(content -> { -// for (var media : content) { -// if(media instanceof Show) { -// logger.info("Got show {}", media); -// } -// -// if(media instanceof Movie) { -// logger.info("Got movie {}", media); -// } -// } -// }); } } \ No newline at end of file