From df932603a7834416c60207035c009bb8c41f68bb Mon Sep 17 00:00:00 2001 From: hkernbach Date: Thu, 25 Jul 2019 14:04:19 +0200 Subject: [PATCH 1/4] added inBackground option to all indices --- .../com/arangodb/entity/ArangoDBVersion.java | 2 +- .../java/com/arangodb/entity/IndexEntity.java | 5 ++ .../java/com/arangodb/entity/ServerRole.java | 2 +- .../arangodb/model/FulltextIndexOptions.java | 17 +---- .../com/arangodb/model/GeoIndexOptions.java | 17 +---- .../com/arangodb/model/HashIndexOptions.java | 18 +---- .../java/com/arangodb/model/IndexOptions.java | 66 +++++++++++++++++++ .../model/PersistentIndexOptions.java | 17 +---- .../arangodb/model/SkiplistIndexOptions.java | 18 +---- 9 files changed, 78 insertions(+), 84 deletions(-) create mode 100644 src/main/java/com/arangodb/model/IndexOptions.java diff --git a/src/main/java/com/arangodb/entity/ArangoDBVersion.java b/src/main/java/com/arangodb/entity/ArangoDBVersion.java index 6eceef582..6f5db7a35 100644 --- a/src/main/java/com/arangodb/entity/ArangoDBVersion.java +++ b/src/main/java/com/arangodb/entity/ArangoDBVersion.java @@ -58,4 +58,4 @@ public License getLicense() { return license; } -} +} \ No newline at end of file diff --git a/src/main/java/com/arangodb/entity/IndexEntity.java b/src/main/java/com/arangodb/entity/IndexEntity.java index fdea737f4..0a11fbe06 100644 --- a/src/main/java/com/arangodb/entity/IndexEntity.java +++ b/src/main/java/com/arangodb/entity/IndexEntity.java @@ -40,6 +40,7 @@ public class IndexEntity implements Entity { private Boolean geoJson; private Boolean constraint; private Boolean deduplicate; + private Boolean inBackground; public IndexEntity() { super(); @@ -49,6 +50,10 @@ public String getId() { return id; } + public Boolean getInBackground() { + return inBackground; + } + public String getName() { return name; } diff --git a/src/main/java/com/arangodb/entity/ServerRole.java b/src/main/java/com/arangodb/entity/ServerRole.java index 5976e1107..276ac6ef4 100644 --- a/src/main/java/com/arangodb/entity/ServerRole.java +++ b/src/main/java/com/arangodb/entity/ServerRole.java @@ -26,4 +26,4 @@ */ public enum ServerRole { SINGLE, AGENT, COORDINATOR, PRIMARY, SECONDARY, UNDEFINED -} +} \ No newline at end of file diff --git a/src/main/java/com/arangodb/model/FulltextIndexOptions.java b/src/main/java/com/arangodb/model/FulltextIndexOptions.java index a7154afdd..81a56cc0d 100644 --- a/src/main/java/com/arangodb/model/FulltextIndexOptions.java +++ b/src/main/java/com/arangodb/model/FulltextIndexOptions.java @@ -28,12 +28,11 @@ * @see API * Documentation */ -public class FulltextIndexOptions { +public class FulltextIndexOptions extends IndexOptions { private Iterable fields; private final IndexType type = IndexType.fulltext; private Integer minLength; - private String name; public FulltextIndexOptions() { super(); @@ -61,20 +60,6 @@ public Integer getMinLength() { return minLength; } - /** - * @param name - * the name of the index - * @return options - */ - public FulltextIndexOptions name(final String name) { - this.name = name; - return this; - } - - protected String getName() { - return name; - } - /** * @param minLength * Minimum character length of words to index. Will default to a server-defined value if unspecified. It diff --git a/src/main/java/com/arangodb/model/GeoIndexOptions.java b/src/main/java/com/arangodb/model/GeoIndexOptions.java index be02489c8..68be48a6c 100644 --- a/src/main/java/com/arangodb/model/GeoIndexOptions.java +++ b/src/main/java/com/arangodb/model/GeoIndexOptions.java @@ -27,12 +27,11 @@ * * @see API Documentation */ -public class GeoIndexOptions { +public class GeoIndexOptions extends IndexOptions { private Iterable fields; private final IndexType type = IndexType.geo; private Boolean geoJson; - private String name; public GeoIndexOptions() { super(); @@ -56,20 +55,6 @@ protected IndexType getType() { return type; } - /** - * @param name - * the name of the index - * @return options - */ - public GeoIndexOptions name(final String name) { - this.name = name; - return this; - } - - protected String getName() { - return name; - } - public Boolean getGeoJson() { return geoJson; } diff --git a/src/main/java/com/arangodb/model/HashIndexOptions.java b/src/main/java/com/arangodb/model/HashIndexOptions.java index 20dd13c44..8c6ecd159 100644 --- a/src/main/java/com/arangodb/model/HashIndexOptions.java +++ b/src/main/java/com/arangodb/model/HashIndexOptions.java @@ -27,14 +27,13 @@ * * @see API Documentation */ -public class HashIndexOptions { +public class HashIndexOptions extends IndexOptions { private Iterable fields; private final IndexType type = IndexType.hash; private Boolean unique; private Boolean sparse; private Boolean deduplicate; - private String name; public HashIndexOptions() { super(); @@ -99,19 +98,4 @@ public HashIndexOptions deduplicate(final Boolean deduplicate) { this.deduplicate = deduplicate; return this; } - - /** - * @param name - * the name of the index - * @return options - */ - public HashIndexOptions name(final String name) { - this.name = name; - return this; - } - - protected String getName() { - return name; - } - } diff --git a/src/main/java/com/arangodb/model/IndexOptions.java b/src/main/java/com/arangodb/model/IndexOptions.java new file mode 100644 index 000000000..ea7b641cb --- /dev/null +++ b/src/main/java/com/arangodb/model/IndexOptions.java @@ -0,0 +1,66 @@ +/* + * DISCLAIMER + * + * Copyright 2019 ArangoDB GmbH, Cologne, Germany + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Copyright holder is ArangoDB GmbH, Cologne, Germany + */ + +package com.arangodb.model; + +import com.arangodb.entity.IndexType; + +/** + * @author Heiko Kernbach + * + * This class is used for all index similarities + */ +public class IndexOptions { + + private Boolean inBackground; + private String name; + + public IndexOptions() { + super(); + } + + /** + * @param inBackground + * create the the index in the background + * @return options + */ + public IndexOptions inBackground(final Boolean inBackground) { + this.inBackground = inBackground; + return this; + } + + public Boolean getInBackground() { + return inBackground; + } + + /** + * @param name + * the name of the index + * @return options + */ + public IndexOptions name(final String name) { + this.name = name; + return this; + } + + protected String getName() { + return name; + } +} diff --git a/src/main/java/com/arangodb/model/PersistentIndexOptions.java b/src/main/java/com/arangodb/model/PersistentIndexOptions.java index fbf9a24ee..6a73bd6d8 100644 --- a/src/main/java/com/arangodb/model/PersistentIndexOptions.java +++ b/src/main/java/com/arangodb/model/PersistentIndexOptions.java @@ -28,11 +28,10 @@ * @see API * Documentation */ -public class PersistentIndexOptions { +public class PersistentIndexOptions extends IndexOptions { private Iterable fields; protected IndexType type = IndexType.persistent; - private String name; private Boolean unique; private Boolean sparse; @@ -72,20 +71,6 @@ public PersistentIndexOptions unique(final Boolean unique) { return this; } - /** - * @param name - * the name of the index - * @return options - */ - public PersistentIndexOptions name(final String name) { - this.name = name; - return this; - } - - protected String getName() { - return name; - } - public Boolean getSparse() { return sparse; } diff --git a/src/main/java/com/arangodb/model/SkiplistIndexOptions.java b/src/main/java/com/arangodb/model/SkiplistIndexOptions.java index b6bcd754b..e77c3cca0 100644 --- a/src/main/java/com/arangodb/model/SkiplistIndexOptions.java +++ b/src/main/java/com/arangodb/model/SkiplistIndexOptions.java @@ -27,14 +27,13 @@ * * @see API Documentation */ -public class SkiplistIndexOptions { +public class SkiplistIndexOptions extends IndexOptions { private Iterable fields; private final IndexType type = IndexType.skiplist; private Boolean unique; private Boolean sparse; private Boolean deduplicate; - private String name; public SkiplistIndexOptions() { super(); @@ -99,19 +98,4 @@ public SkiplistIndexOptions deduplicate(final Boolean deduplicate) { this.deduplicate = deduplicate; return this; } - - /** - * @param name - * the name of the index - * @return options - */ - public SkiplistIndexOptions name(final String name) { - this.name = name; - return this; - } - - protected String getName() { - return name; - } - } From e400ed9b8f330af431190d0f1b8033e39d65ad59 Mon Sep 17 00:00:00 2001 From: hkernbach Date: Thu, 25 Jul 2019 14:13:38 +0200 Subject: [PATCH 2/4] add info about rocksdb --- .../java/com/arangodb/model/IndexOptions.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/com/arangodb/model/IndexOptions.java b/src/main/java/com/arangodb/model/IndexOptions.java index ea7b641cb..d40720e55 100644 --- a/src/main/java/com/arangodb/model/IndexOptions.java +++ b/src/main/java/com/arangodb/model/IndexOptions.java @@ -39,6 +39,32 @@ public IndexOptions() { /** * @param inBackground * create the the index in the background + * this is a RocksDB only flag. + * @return options + */ + public IndexOptions inBackground(final Boolean inBackground) { + this.inBackground = inBackground; + return this; + } + + public Boolean getInBackground() { + return inBackground; + } + + /** + * @param name + * the name of the index + * @return options + */ + public IndexOptions name(final String name) { + this.name = name; + return this; + } + + protected String getName() { + return name; + } +} * @return options */ public IndexOptions inBackground(final Boolean inBackground) { From 15ea87ff214f636da291cb5b826f728f90915f1c Mon Sep 17 00:00:00 2001 From: hkernbach Date: Thu, 1 Aug 2019 16:14:21 +0200 Subject: [PATCH 3/4] fixed merge error --- .../java/com/arangodb/model/IndexOptions.java | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/src/main/java/com/arangodb/model/IndexOptions.java b/src/main/java/com/arangodb/model/IndexOptions.java index d40720e55..fbf6f431f 100644 --- a/src/main/java/com/arangodb/model/IndexOptions.java +++ b/src/main/java/com/arangodb/model/IndexOptions.java @@ -65,28 +65,3 @@ protected String getName() { return name; } } - * @return options - */ - public IndexOptions inBackground(final Boolean inBackground) { - this.inBackground = inBackground; - return this; - } - - public Boolean getInBackground() { - return inBackground; - } - - /** - * @param name - * the name of the index - * @return options - */ - public IndexOptions name(final String name) { - this.name = name; - return this; - } - - protected String getName() { - return name; - } -} From eeaa3232cd1eeff48926f90b8598f88b65b8677f Mon Sep 17 00:00:00 2001 From: michele Date: Fri, 2 Aug 2019 17:26:27 +0200 Subject: [PATCH 4/4] test vpack serialization for null values --- .../java/com/arangodb/util/ArangoSerializationTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/test/java/com/arangodb/util/ArangoSerializationTest.java b/src/test/java/com/arangodb/util/ArangoSerializationTest.java index 780ac39ff..f4fda0c41 100644 --- a/src/test/java/com/arangodb/util/ArangoSerializationTest.java +++ b/src/test/java/com/arangodb/util/ArangoSerializationTest.java @@ -76,6 +76,14 @@ public void serializeNullValues() { assertThat(vpack.get("foo").isNull(), is(true)); } + @Test + public void skipSerializeNullValues() { + final BaseDocument entity = new BaseDocument(); + entity.addAttribute("bar", null); + final VPackSlice vpack = util.serialize(entity); + assertThat(vpack.get("bar").isNone(), is(true)); + } + @Test public void serializeType() { final Collection list = new ArrayList();