From 1e59b9646cdca361b6a021f7bf12048468cad3cd Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Mon, 8 May 2023 10:56:03 +0200 Subject: [PATCH 1/2] updated docker images --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 1033df33e..1a7cf548c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -35,12 +35,12 @@ jobs: user-language: - en include: - - docker-img: docker.io/arangodb/arangodb:3.10.5 + - docker-img: docker.io/arangodb/arangodb-preview:3.11.0-beta.1 topology: single db-ext-names: true java-version: 11 user-language: tr - - docker-img: docker.io/arangodb/enterprise:3.10.5 + - docker-img: docker.io/arangodb/enterprise-preview:3.11.0-beta.1 topology: cluster db-ext-names: true java-version: 17 From 4ba3102d90041013538bcc69bc22899fe71ca111 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Tue, 16 May 2023 21:47:44 +0200 Subject: [PATCH 2/2] made AqlQueryOptions cloneable --- .../com/arangodb/model/AqlQueryOptions.java | 39 +++++++++++++++++-- .../arangodb/model/AqlQueryOptionsTest.java | 31 +++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/arangodb/model/AqlQueryOptionsTest.java diff --git a/src/main/java/com/arangodb/model/AqlQueryOptions.java b/src/main/java/com/arangodb/model/AqlQueryOptions.java index c09fd143a..57ad8d77a 100644 --- a/src/main/java/com/arangodb/model/AqlQueryOptions.java +++ b/src/main/java/com/arangodb/model/AqlQueryOptions.java @@ -34,7 +34,7 @@ * @see API * Documentation */ -public class AqlQueryOptions implements Serializable { +public class AqlQueryOptions implements Serializable, Cloneable { private static final long serialVersionUID = 1L; @@ -432,7 +432,18 @@ private Options getOptions() { return options; } - public static class Options implements Serializable { + @Override + public AqlQueryOptions clone() { + try { + AqlQueryOptions clone = (AqlQueryOptions) super.clone(); + clone.options = options != null ? options.clone() : null; + return clone; + } catch (CloneNotSupportedException e) { + throw new AssertionError(); + } + } + + public static class Options implements Serializable, Cloneable { private static final long serialVersionUID = 1L; @@ -467,10 +478,32 @@ protected Collection getShardIds() { return shardIds; } + @Override + public Options clone() { + try { + Options clone = (Options) super.clone(); + clone.optimizer = optimizer != null ? optimizer.clone() : null; + clone.shardIds = shardIds != null ? new ArrayList<>(shardIds) : null; + return clone; + } catch (CloneNotSupportedException e) { + throw new AssertionError(); + } + } } - public static class Optimizer { + public static class Optimizer implements Cloneable { private Collection rules; + + @Override + public Optimizer clone() { + try { + Optimizer clone = (Optimizer) super.clone(); + clone.rules = rules != null ? new ArrayList<>(rules) : null; + return clone; + } catch (CloneNotSupportedException e) { + throw new AssertionError(); + } + } } /** diff --git a/src/test/java/com/arangodb/model/AqlQueryOptionsTest.java b/src/test/java/com/arangodb/model/AqlQueryOptionsTest.java new file mode 100644 index 000000000..39e9c1c43 --- /dev/null +++ b/src/test/java/com/arangodb/model/AqlQueryOptionsTest.java @@ -0,0 +1,31 @@ +package com.arangodb.model; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class AqlQueryOptionsTest { + + @Test + void cloneable() { + List rules = Arrays.asList("foo", "bar"); + AqlQueryOptions options = new AqlQueryOptions() + .cache(true) + .stream(true) + .rules(rules) + .shardIds("a", "b"); + AqlQueryOptions clone = options.clone(); + assertThat(clone.getCache()).isEqualTo(options.getCache()); + assertThat(clone.getStream()).isEqualTo(options.getStream()); + assertThat(clone.getRules()) + .isEqualTo(options.getRules()) + .isNotSameAs(options.getRules()); + assertThat(clone.getShardIds()) + .isEqualTo(options.getShardIds()) + .isNotSameAs(options.getShardIds()); + } + +}