From 4a147542d4c20a981712568aebaaf446341f34f0 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 12:53:35 +0200 Subject: [PATCH 1/9] remove MMFiles related APIs --- .../java/com/arangodb/ArangoCollection.java | 25 ------------------- .../arangodb/async/ArangoCollectionAsync.java | 23 ----------------- .../internal/ArangoCollectionAsyncImpl.java | 10 -------- .../internal/ArangoCollectionImpl.java | 10 -------- .../internal/InternalArangoCollection.java | 8 ------ .../com/arangodb/ArangoCollectionTest.java | 15 ----------- .../arangodb/async/ArangoCollectionTest.java | 14 ----------- 7 files changed, 105 deletions(-) diff --git a/src/main/java/com/arangodb/ArangoCollection.java b/src/main/java/com/arangodb/ArangoCollection.java index 40a5cdfd7..2073ff689 100644 --- a/src/main/java/com/arangodb/ArangoCollection.java +++ b/src/main/java/com/arangodb/ArangoCollection.java @@ -654,31 +654,6 @@ MultiDocumentEntity> deleteDocuments( */ void drop(boolean isSystem) throws ArangoDBException; - /** - * Tells the server to load the collection into memory. - * - * @return information about the collection - * @throws ArangoDBException - * @see API - * Documentation - * @deprecated MMFiles only - */ - @Deprecated - CollectionEntity load() throws ArangoDBException; - - /** - * Tells the server to remove the collection from memory. This call does not delete any documents. You can use the - * collection afterwards; in which case it will be loaded into memory, again. - * - * @return information about the collection - * @throws ArangoDBException - * @see API - * Documentation - * @deprecated MMFiles only - */ - @Deprecated - CollectionEntity unload() throws ArangoDBException; - /** * Returns information about the collection * diff --git a/src/main/java/com/arangodb/async/ArangoCollectionAsync.java b/src/main/java/com/arangodb/async/ArangoCollectionAsync.java index c54a7c8e1..91837285b 100644 --- a/src/main/java/com/arangodb/async/ArangoCollectionAsync.java +++ b/src/main/java/com/arangodb/async/ArangoCollectionAsync.java @@ -609,29 +609,6 @@ CompletableFuture ensureFulltextIndex( */ CompletableFuture drop(final boolean isSystem); - /** - * Loads a collection into memory. - * - * @return information about the collection - * @see API - * Documentation - * @deprecated MMFiles only - */ - @Deprecated - CompletableFuture load(); - - /** - * Removes a collection from memory. This call does not delete any documents. You can use the collection afterwards; - * in which case it will be loaded into memory, again. - * - * @return information about the collection - * @see API - * Documentation - * @deprecated MMFiles only - */ - @Deprecated - CompletableFuture unload(); - /** * Returns information about the collection * diff --git a/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java b/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java index 036f16da2..b5be30c1c 100644 --- a/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java +++ b/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java @@ -360,16 +360,6 @@ public CompletableFuture drop(final boolean isSystem) { return executor.execute(dropRequest(isSystem), Void.class); } - @Override - public CompletableFuture load() { - return executor.execute(loadRequest(), CollectionEntity.class); - } - - @Override - public CompletableFuture unload() { - return executor.execute(unloadRequest(), CollectionEntity.class); - } - @Override public CompletableFuture getInfo() { return executor.execute(getInfoRequest(), CollectionEntity.class); diff --git a/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java b/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java index ef362803b..6dded7789 100644 --- a/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java @@ -361,16 +361,6 @@ public void drop(final boolean isSystem) throws ArangoDBException { executor.execute(dropRequest(isSystem), Void.class); } - @Override - public CollectionEntity load() throws ArangoDBException { - return executor.execute(loadRequest(), CollectionEntity.class); - } - - @Override - public CollectionEntity unload() throws ArangoDBException { - return executor.execute(unloadRequest(), CollectionEntity.class); - } - @Override public CollectionEntity getInfo() throws ArangoDBException { return executor.execute(getInfoRequest(), CollectionEntity.class); diff --git a/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/src/main/java/com/arangodb/internal/InternalArangoCollection.java index a30525543..d52560aec 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoCollection.java +++ b/src/main/java/com/arangodb/internal/InternalArangoCollection.java @@ -636,14 +636,6 @@ protected Request dropRequest(final Boolean isSystem) { return request(db.dbName(), RequestType.DELETE, PATH_API_COLLECTION, name).putQueryParam("isSystem", isSystem); } - protected Request loadRequest() { - return request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "load"); - } - - protected Request unloadRequest() { - return request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "unload"); - } - protected Request getInfoRequest() { return request(db.dbName(), RequestType.GET, PATH_API_COLLECTION, name); } diff --git a/src/test/java/com/arangodb/ArangoCollectionTest.java b/src/test/java/com/arangodb/ArangoCollectionTest.java index f1467ce72..187d7df81 100644 --- a/src/test/java/com/arangodb/ArangoCollectionTest.java +++ b/src/test/java/com/arangodb/ArangoCollectionTest.java @@ -2804,21 +2804,6 @@ void replaceDocumentsJson(ArangoCollection collection) { assertThat(updateResult.getDocuments()).hasSize(2); assertThat(updateResult.getErrors()).isEmpty(); } - - @ParameterizedTest(name = "{index}") - @MethodSource("cols") - void load(ArangoCollection collection) { - final CollectionEntity result = collection.load(); - assertThat(result.getName()).isEqualTo(COLLECTION_NAME); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("cols") - void unload(ArangoCollection collection) { - final CollectionEntity result = collection.unload(); - assertThat(result.getName()).isEqualTo(COLLECTION_NAME); - } - @ParameterizedTest(name = "{index}") @MethodSource("cols") void getInfo(ArangoCollection collection) { diff --git a/src/test/java/com/arangodb/async/ArangoCollectionTest.java b/src/test/java/com/arangodb/async/ArangoCollectionTest.java index 541d147ae..f0c42c419 100644 --- a/src/test/java/com/arangodb/async/ArangoCollectionTest.java +++ b/src/test/java/com/arangodb/async/ArangoCollectionTest.java @@ -2105,20 +2105,6 @@ void replaceDocumentsWithoutKey() throws InterruptedException, ExecutionExceptio .get(); } - @Test - void load() throws InterruptedException, ExecutionException { - db.collection(COLLECTION_NAME).load() - .whenComplete((result, ex) -> assertThat(result.getName()).isEqualTo(COLLECTION_NAME)) - .get(); - } - - @Test - void unload() throws InterruptedException, ExecutionException { - db.collection(COLLECTION_NAME).unload() - .whenComplete((result, ex) -> assertThat(result.getName()).isEqualTo(COLLECTION_NAME)) - .get(); - } - @Test void getInfo() throws InterruptedException, ExecutionException { db.collection(COLLECTION_NAME).getInfo() From f25c007000dd438d1c968edcf5c4d7fde50d4a54 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 13:53:54 +0200 Subject: [PATCH 2/9] removed executeTraversal API --- .../java/com/arangodb/ArangoDatabase.java | 16 - .../arangodb/async/ArangoDatabaseAsync.java | 17 - .../internal/ArangoDatabaseAsyncImpl.java | 10 - .../arangodb/internal/ArangoDatabaseImpl.java | 8 - .../internal/InternalArangoDatabase.java | 47 --- .../velocypack/VPackDriverModule.java | 2 - .../internal/velocypack/VPackSerializers.java | 10 - .../com/arangodb/model/TraversalOptions.java | 353 ------------------ .../java/com/arangodb/ArangoDatabaseTest.java | 47 --- .../arangodb/async/ArangoDatabaseTest.java | 53 --- 10 files changed, 563 deletions(-) delete mode 100644 src/main/java/com/arangodb/model/TraversalOptions.java diff --git a/src/main/java/com/arangodb/ArangoDatabase.java b/src/main/java/com/arangodb/ArangoDatabase.java index f0cfede5f..d9d2a8eff 100644 --- a/src/main/java/com/arangodb/ArangoDatabase.java +++ b/src/main/java/com/arangodb/ArangoDatabase.java @@ -623,22 +623,6 @@ GraphEntity createGraph(String name, Collection edgeDefinitions, */ DatabaseEntity getInfo() throws ArangoDBException; - /** - * Execute a server-side traversal - * - * @param vertexClass The type of the vertex documents (POJO class, VPackSlice or String for JSON) - * @param edgeClass The type of the edge documents (POJO class, VPackSlice or String for JSON) - * @param options Additional options - * @return Result of the executed traversal - * @throws ArangoDBException - * @see API - * Documentation - * @deprecated use {@link this#query(String, Map, AqlQueryOptions, Class)} - */ - @Deprecated - TraversalEntity executeTraversal(Class vertexClass, Class edgeClass, TraversalOptions options) - throws ArangoDBException; - /** * Reads a single document * diff --git a/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java b/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java index 420034655..d5d391fbe 100644 --- a/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java +++ b/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java @@ -603,23 +603,6 @@ CompletableFuture createGraph( */ CompletableFuture getInfo(); - /** - * Execute a server-side traversal - * - * @param vertexClass The type of the vertex documents (POJO class, VPackSlice or String for Json) - * @param edgeClass The type of the edge documents (POJO class, VPackSlice or String for Json) - * @param options Additional options - * @return Result of the executed traversal - * @see API - * Documentation - * @deprecated use {@link this#query(String, Map, AqlQueryOptions, Class)} - */ - @Deprecated - CompletableFuture> executeTraversal( - final Class vertexClass, - final Class edgeClass, - final TraversalOptions options); - /** * Reads a single document * diff --git a/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java b/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java index 61fed58d9..1ff2ede2e 100644 --- a/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java +++ b/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java @@ -48,7 +48,6 @@ import com.arangodb.model.GraphCreateOptions; import com.arangodb.model.StreamTransactionOptions; import com.arangodb.model.TransactionOptions; -import com.arangodb.model.TraversalOptions; import com.arangodb.model.arangosearch.AnalyzerDeleteOptions; import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; import com.arangodb.velocypack.Type; @@ -401,15 +400,6 @@ public CompletableFuture getInfo() { return executor.execute(getInfoRequest(), getInfoResponseDeserializer()); } - @Override - public CompletableFuture> executeTraversal( - final Class vertexClass, - final Class edgeClass, - final TraversalOptions options) { - final Request request = executeTraversalRequest(options); - return executor.execute(request, executeTraversalResponseDeserializer(vertexClass, edgeClass)); - } - @Override public CompletableFuture getDocument(final String id, final Class type) throws ArangoDBException { DocumentUtil.validateDocumentId(id); diff --git a/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java b/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java index 6b38136ac..cebbe794b 100644 --- a/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java @@ -360,14 +360,6 @@ public DatabaseEntity getInfo() throws ArangoDBException { return executor.execute(getInfoRequest(), getInfoResponseDeserializer()); } - @Override - public TraversalEntity executeTraversal( - final Class vertexClass, final Class edgeClass, final TraversalOptions options) - throws ArangoDBException { - final Request request = executeTraversalRequest(options); - return executor.execute(request, executeTraversalResponseDeserializer(vertexClass, edgeClass)); - } - @Override public T getDocument(final String id, final Class type) throws ArangoDBException { DocumentUtil.validateDocumentId(id); diff --git a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java index 933b5c175..71a3f0099 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java @@ -35,13 +35,10 @@ import com.arangodb.util.ArangoSerializer; import com.arangodb.velocypack.Type; import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.Map; /** @@ -65,7 +62,6 @@ public abstract class InternalArangoDatabase getInfoResponseDeserializer() { return response -> util().deserialize(response.getBody().get(ArangoResponseField.RESULT), DatabaseEntity.class); } - protected Request executeTraversalRequest(final TraversalOptions options) { - return request(dbName, RequestType.POST, PATH_API_TRAVERSAL) - .setBody(util().serialize(options != null ? options : new TransactionOptions())); - } - - protected ResponseDeserializer> executeTraversalResponseDeserializer( - final Class vertexClass, final Class edgeClass) { - return response -> { - final TraversalEntity result = new TraversalEntity<>(); - final VPackSlice visited = response.getBody().get(ArangoResponseField.RESULT).get("visited"); - result.setVertices(deserializeVertices(vertexClass, visited)); - - final Collection> paths = new ArrayList<>(); - for (final Iterator iterator = visited.get("paths").arrayIterator(); iterator.hasNext(); ) { - final PathEntity path = new PathEntity<>(); - final VPackSlice next = iterator.next(); - path.setEdges(deserializeEdges(edgeClass, next)); - path.setVertices(deserializeVertices(vertexClass, next)); - paths.add(path); - } - result.setPaths(paths); - return result; - }; - } - - protected Collection deserializeVertices(final Class vertexClass, final VPackSlice vpack) - throws VPackException { - final Collection vertices = new ArrayList<>(); - for (final Iterator iterator = vpack.get("vertices").arrayIterator(); iterator.hasNext(); ) { - vertices.add(util(Serializer.CUSTOM).deserialize(iterator.next(), vertexClass)); - } - return vertices; - } - - protected Collection deserializeEdges(final Class edgeClass, final VPackSlice next) - throws VPackException { - final Collection edges = new ArrayList<>(); - for (final Iterator iteratorEdge = next.get("edges").arrayIterator(); iteratorEdge.hasNext(); ) { - edges.add(util(Serializer.CUSTOM).deserialize(iteratorEdge.next(), edgeClass)); - } - return edges; - } - protected Request reloadRoutingRequest() { return request(dbName, RequestType.POST, PATH_API_ADMIN_ROUTING_RELOAD); } diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java b/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java index 4bd3e84f9..056f97b66 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java @@ -30,7 +30,6 @@ import com.arangodb.internal.velocystream.internal.AuthenticationRequest; import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.model.CollectionSchema; -import com.arangodb.model.TraversalOptions; import com.arangodb.model.ZKDIndexOptions; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; import com.arangodb.velocypack.VPackModule; @@ -74,7 +73,6 @@ public > void setup(final C context) { context.registerSerializer(CollectionType.class, VPackSerializers.COLLECTION_TYPE); context.registerSerializer(BaseDocument.class, VPackSerializers.BASE_DOCUMENT); context.registerSerializer(BaseEdgeDocument.class, VPackSerializers.BASE_EDGE_DOCUMENT); - context.registerSerializer(TraversalOptions.Order.class, VPackSerializers.TRAVERSAL_ORDER); context.registerSerializer(LogLevel.class, VPackSerializers.LOG_LEVEL); context.registerSerializer(Permissions.class, VPackSerializers.PERMISSIONS); context.registerSerializer(ReplicationFactor.class, VPackSerializers.REPLICATION_FACTOR); diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java index 4d786183d..43a9d088d 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java @@ -26,8 +26,6 @@ import com.arangodb.internal.velocystream.internal.AuthenticationRequest; import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.model.CollectionSchema; -import com.arangodb.model.TraversalOptions; -import com.arangodb.model.TraversalOptions.Order; import com.arangodb.model.ZKDIndexOptions; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; import com.arangodb.velocypack.*; @@ -103,14 +101,6 @@ public class VPackSerializers { context.serialize(builder, attribute, doc); }; - public static final VPackSerializer TRAVERSAL_ORDER = (builder, attribute, value, context) -> { - if (Order.preorder_expander == value) { - builder.add(attribute, "preorder-expander"); - } else { - builder.add(attribute, value.name()); - } - }; - public static final VPackSerializer LOG_LEVEL = (builder, attribute, value, context) -> builder.add(attribute, value.getLevel()); public static final VPackSerializer PERMISSIONS = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase(Locale.ENGLISH)); diff --git a/src/main/java/com/arangodb/model/TraversalOptions.java b/src/main/java/com/arangodb/model/TraversalOptions.java deleted file mode 100644 index 1d7abada7..000000000 --- a/src/main/java/com/arangodb/model/TraversalOptions.java +++ /dev/null @@ -1,353 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2016 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; - -/** - * @author Mark Vollmary - * @see API Documentation - */ -@Deprecated -public class TraversalOptions { - - public enum Direction { - outbound, inbound, any - } - - public enum ItemOrder { - forward, backward - } - - public enum Strategy { - depthfirst, breadthfirst - } - - public enum UniquenessType { - none, global, path - } - - public enum Order { - preorder, postorder, preorder_expander - } - - private String sort; - private Direction direction; - private Integer minDepth; - private String startVertex; - private String visitor; - private ItemOrder itemOrder; - private Strategy strategy; - private String filter; - private String init; - private Integer maxIterations; - private Integer maxDepth; - private Uniqueness uniqueness; - private Order order; - private String graphName; - private String expander; - private String edgeCollection; - - public String getSort() { - return sort; - } - - /** - * @param sort JavaScript code of a custom comparison function for the edges. The signature of this function is (l, - * r) -> integer (where l and r are edges) and must return -1 if l is smaller than, +1 if l is greater - * than, and 0 if l and r are equal. The reason for this is the following: The order of edges returned - * for a certain vertex is undefined. This is because there is no natural order of edges for a vertex - * with multiple connected edges. To explicitly define the order in which edges on the vertex are - * followed, you can specify an edge comparator function with this attribute. Note that the value here - * has to be a string to conform to the JSON standard, which in turn is parsed as function body on the - * server side. Furthermore note that this attribute is only used for the standard expanders. If you use - * your custom expander you have to do the sorting yourself within the expander code. - * @return options - */ - public TraversalOptions sort(final String sort) { - this.sort = sort; - return this; - } - - public Direction getDirection() { - return direction; - } - - /** - * @param direction direction for traversal - *

- * if set, must be either "outbound", "inbound", or "any" - *

- * if not set, the expander attribute must be specified - * @return options - */ - public TraversalOptions direction(final Direction direction) { - this.direction = direction; - return this; - } - - public Integer getMinDepth() { - return minDepth; - } - - /** - * @param minDepth ANDed with any existing filters): visits only nodes in at least the given depth - * @return options - */ - public TraversalOptions minDepth(final Integer minDepth) { - this.minDepth = minDepth; - return this; - } - - public String getStartVertex() { - return startVertex; - } - - /** - * @param startVertex The id of the startVertex, e.g. "users/foo". - * @return options - */ - public TraversalOptions startVertex(final String startVertex) { - this.startVertex = startVertex; - return this; - } - - public String getVisitor() { - return visitor; - } - - /** - * @param visitor JavaScript code of custom visitor function function signature: (config, result, vertex, path, - * connected) -> void The visitor function can do anything, but its return value is ignored. To populate - * a result, use the result variable by reference. Note that the connected argument is only populated - * when the order attribute is set to "preorder-expander". - * @return options - */ - public TraversalOptions visitor(final String visitor) { - this.visitor = visitor; - return this; - } - - public ItemOrder getItemOrder() { - return itemOrder; - } - - /** - * @param itemOrder The item iteration order can be "forward" or "backward" - * @return options - */ - public TraversalOptions itemOrder(final ItemOrder itemOrder) { - this.itemOrder = itemOrder; - return this; - } - - public Strategy getStrategy() { - return strategy; - } - - /** - * @param strategy The traversal strategy can be "depthfirst" or "breadthfirst" - * @return options - */ - public TraversalOptions strategy(final Strategy strategy) { - this.strategy = strategy; - return this; - } - - public String getFilter() { - return filter; - } - - /** - * @param filter default is to include all nodes: body (JavaScript code) of custom filter function function signature: - * (config, vertex, path) -> mixed can return four different string values: - *

- * "exclude" -> this vertex will not be visited. - *

- * "prune" -> the edges of this vertex will not be followed. - *

- * "" or undefined -> visit the vertex and follow it's edges. - *

- * Array -> containing any combination of the above. - *

- * If there is at least one "exclude" or "prune" respectivly is contained, it's effect will occur. - * @return options - */ - public TraversalOptions filter(final String filter) { - this.filter = filter; - return this; - } - - public String getInit() { - return init; - } - - /** - * @param init JavaScript code of custom result initialization function function signature: (config, result) -> void - * initialize any values in result with what is required - * @return options - */ - public TraversalOptions init(final String init) { - this.init = init; - return this; - } - - public Integer getMaxIterations() { - return maxIterations; - } - - /** - * @param maxIterations Maximum number of iterations in each traversal. This number can be set to prevent endless loops in - * traversal of cyclic graphs. When a traversal performs as many iterations as the maxIterations value, - * the traversal will abort with an error. If maxIterations is not set, a server-defined value may be - * used. - * @return options - */ - public TraversalOptions maxIterations(final Integer maxIterations) { - this.maxIterations = maxIterations; - return this; - } - - public Integer getMaxDepth() { - return maxDepth; - } - - /** - * @param maxDepth ANDed with any existing filters visits only nodes in at most the given depth. - * @return options - */ - public TraversalOptions maxDepth(final Integer maxDepth) { - this.maxDepth = maxDepth; - return this; - } - - public UniquenessType getVerticesUniqueness() { - return uniqueness != null ? uniqueness.vertices : null; - } - - /** - * @param vertices Specifies uniqueness for vertices can be "none", "global" or "path" - * @return options - */ - public TraversalOptions verticesUniqueness(final UniquenessType vertices) { - getUniqueness().setVertices(vertices); - return this; - } - - public UniquenessType getEdgesUniqueness() { - return uniqueness != null ? uniqueness.edges : null; - } - - /** - * @param edges Specifies uniqueness for edges can be "none", "global" or "path" - * @return options - */ - public TraversalOptions edgesUniqueness(final UniquenessType edges) { - getUniqueness().setEdges(edges); - return this; - } - - public Order getOrder() { - return order; - } - - /** - * @param order The traversal order can be "preorder", "postorder" or "preorder-expander" - * @return options - */ - public TraversalOptions order(final Order order) { - this.order = order; - return this; - } - - public String getGraphName() { - return graphName; - } - - /** - * @param graphName The name of the graph that contains the edges. Either edgeCollection or graphName has to be given. In - * case both values are set the graphName is prefered. - * @return options - */ - public TraversalOptions graphName(final String graphName) { - this.graphName = graphName; - return this; - } - - public String getExpander() { - return expander; - } - - /** - * @param expander JavaScript code of custom expander function must be set if direction attribute is not set function - * signature: (config, vertex, path) -> array expander must return an array of the connections for vertex - * each connection is an object with the attributes edge and vertex - * @return options - */ - public TraversalOptions expander(final String expander) { - this.expander = expander; - return this; - } - - public String getEdgeCollection() { - return edgeCollection; - } - - /** - * @param edgeCollection The name of the collection that contains the edges. - * @return options - */ - public TraversalOptions edgeCollection(final String edgeCollection) { - this.edgeCollection = edgeCollection; - return this; - } - - public static class Uniqueness { - - private UniquenessType vertices; - private UniquenessType edges; - - public UniquenessType getVertices() { - return vertices; - } - - public void setVertices(final UniquenessType vertices) { - this.vertices = vertices; - } - - public UniquenessType getEdges() { - return edges; - } - - public void setEdges(final UniquenessType edges) { - this.edges = edges; - } - } - - private Uniqueness getUniqueness() { - if (uniqueness == null) { - uniqueness = new Uniqueness(); - uniqueness.vertices = UniquenessType.none; - uniqueness.edges = UniquenessType.none; - } - - return uniqueness; - } - -} diff --git a/src/test/java/com/arangodb/ArangoDatabaseTest.java b/src/test/java/com/arangodb/ArangoDatabaseTest.java index 4d6c5b10d..35073c24b 100644 --- a/src/test/java/com/arangodb/ArangoDatabaseTest.java +++ b/src/test/java/com/arangodb/ArangoDatabaseTest.java @@ -25,7 +25,6 @@ import com.arangodb.entity.CursorEntity.Warning; import com.arangodb.entity.QueryCachePropertiesEntity.CacheMode; import com.arangodb.model.*; -import com.arangodb.model.TraversalOptions.Direction; import com.arangodb.util.MapBuilder; import com.arangodb.velocypack.VPackBuilder; import com.arangodb.velocypack.VPackSlice; @@ -1297,52 +1296,6 @@ void getInfo(ArangoDatabase db) { } } - @ParameterizedTest(name = "{index}") - @MethodSource("dbs") - void executeTraversal(ArangoDatabase db) { - String k1 = "key-" + rnd(); - String k2 = "key-" + rnd(); - String k3 = "key-" + rnd(); - String k4 = "key-" + rnd(); - String k5 = "key-" + rnd(); - - for (final String e : new String[]{ - k1, k2, k3, k4, k5 - }) { - db.collection(CNAME1).insertDocument(new BaseDocument(e), null); - } - for (final String[] e : new String[][]{ - new String[]{k1, k2}, new String[]{k2, k3}, - new String[]{k2, k4}, new String[]{k5, k1}, new String[]{k5, k2} - }) { - final BaseEdgeDocument edge = new BaseEdgeDocument(); - edge.setKey(e[0] + "_knows_" + e[1]); - edge.setFrom(CNAME1 + "/" + e[0]); - edge.setTo(CNAME1 + "/" + e[1]); - db.collection(ENAMES).insertDocument(edge, null); - } - - final TraversalOptions options = new TraversalOptions().edgeCollection(ENAMES).startVertex(CNAME1 + "/" + k1).direction(Direction.outbound); - final TraversalEntity traversal = db.executeTraversal(BaseDocument.class, BaseEdgeDocument.class, options); - assertThat(traversal).isNotNull(); - - final Collection vertices = traversal.getVertices(); - assertThat(vertices).hasSize(4); - - final Iterator verticesIterator = vertices.iterator(); - final Collection v = Arrays.asList(k1, k2, k3, k4); - while (verticesIterator.hasNext()) { - assertThat(v).contains(verticesIterator.next().getKey()); - } - - final Collection> paths = traversal.getPaths(); - assertThat(paths).hasSize(4); - final PathEntity first = paths.iterator().next(); - assertThat(first.getEdges()).isEmpty(); - assertThat(first.getVertices()).hasSize(1); - assertThat(first.getVertices().iterator().next().getKey()).isEqualTo(k1); - } - @ParameterizedTest(name = "{index}") @MethodSource("dbs") void getDocument(ArangoDatabase db) { diff --git a/src/test/java/com/arangodb/async/ArangoDatabaseTest.java b/src/test/java/com/arangodb/async/ArangoDatabaseTest.java index de76da620..b58e1e6ef 100644 --- a/src/test/java/com/arangodb/async/ArangoDatabaseTest.java +++ b/src/test/java/com/arangodb/async/ArangoDatabaseTest.java @@ -27,7 +27,6 @@ import com.arangodb.entity.AqlParseEntity.AstNode; import com.arangodb.entity.QueryCachePropertiesEntity.CacheMode; import com.arangodb.model.*; -import com.arangodb.model.TraversalOptions.Direction; import com.arangodb.velocypack.VPackBuilder; import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.exception.VPackException; @@ -966,58 +965,6 @@ void getInfo() throws InterruptedException, ExecutionException { f.get(); } - @Test - void executeTraversal() throws InterruptedException, ExecutionException { - try { - db.createCollection("person", null).get(); - db.createCollection("knows", new CollectionCreateOptions().type(CollectionType.EDGES)).get(); - for (final String e : new String[]{"Alice", "Bob", "Charlie", "Dave", "Eve"}) { - final BaseDocument doc = new BaseDocument(); - doc.setKey(e); - db.collection("person").insertDocument(doc, null).get(); - } - for (final String[] e : new String[][]{new String[]{"Alice", "Bob"}, new String[]{"Bob", "Charlie"}, - new String[]{"Bob", "Dave"}, new String[]{"Eve", "Alice"}, new String[]{"Eve", "Bob"}}) { - final BaseEdgeDocument edge = new BaseEdgeDocument(); - edge.setKey(e[0] + "_knows_" + e[1]); - edge.setFrom("person/" + e[0]); - edge.setTo("person/" + e[1]); - db.collection("knows").insertDocument(edge, null).get(); - } - final TraversalOptions options = new TraversalOptions().edgeCollection("knows").startVertex("person/Alice") - .direction(Direction.outbound); - db.executeTraversal(BaseDocument.class, BaseEdgeDocument.class, options) - .whenComplete((traversal, ex) -> { - assertThat(traversal).isNotNull(); - - final Collection vertices = traversal.getVertices(); - assertThat(vertices).isNotNull(); - assertThat(vertices.size()).isEqualTo(4); - - final Iterator verticesIterator = vertices.iterator(); - final Collection v = Arrays.asList("Alice", "Bob", "Charlie", "Dave"); - while (verticesIterator.hasNext()) { - assertThat(v.contains(verticesIterator.next().getKey())).isEqualTo(true); - } - - final Collection> paths = traversal.getPaths(); - assertThat(paths).isNotNull(); - assertThat(paths.size()).isEqualTo(4); - - assertThat(paths.iterator().hasNext()).isEqualTo(true); - final PathEntity first = paths.iterator().next(); - assertThat(first).isNotNull(); - assertThat(first.getEdges().size()).isEqualTo(0); - assertThat(first.getVertices().size()).isEqualTo(1); - assertThat(first.getVertices().iterator().next().getKey()).isEqualTo("Alice"); - }) - .get(); - } finally { - db.collection("person").drop().get(); - db.collection("knows").drop().get(); - } - } - @Test void getDocument() throws InterruptedException, ExecutionException { String collectionName = COLLECTION_NAME + "getDocument"; From c7c98d765063ad472e6330e909219e4eea498704 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:00:52 +0200 Subject: [PATCH 3/9] removed getLogs API --- src/main/java/com/arangodb/ArangoDB.java | 13 -- .../com/arangodb/async/ArangoDBAsync.java | 12 -- .../async/internal/ArangoDBAsyncImpl.java | 5 - .../java/com/arangodb/entity/LogEntity.java | 75 ---------- .../com/arangodb/internal/ArangoDBImpl.java | 5 - .../arangodb/internal/InternalArangoDB.java | 12 -- src/test/java/com/arangodb/ArangoDBTest.java | 100 ------------- .../java/com/arangodb/async/ArangoDBTest.java | 136 ------------------ 8 files changed, 358 deletions(-) delete mode 100644 src/main/java/com/arangodb/entity/LogEntity.java diff --git a/src/main/java/com/arangodb/ArangoDB.java b/src/main/java/com/arangodb/ArangoDB.java index bb149d55c..d429754b3 100644 --- a/src/main/java/com/arangodb/ArangoDB.java +++ b/src/main/java/com/arangodb/ArangoDB.java @@ -1001,19 +1001,6 @@ default Boolean createDatabase(String name) throws ArangoDBException { */ Response execute(Request request, HostHandle hostHandle) throws ArangoDBException; - /** - * Returns fatal, error, warning or info log messages from the server's global log. - * - * @param options Additional options, can be null - * @return the log messages - * @throws ArangoDBException - * @see API - * Documentation - * @deprecated use {@link #getLogEntries(LogOptions)} instead - */ - @Deprecated - LogEntity getLogs(LogOptions options) throws ArangoDBException; - /** * Returns the server logs * diff --git a/src/main/java/com/arangodb/async/ArangoDBAsync.java b/src/main/java/com/arangodb/async/ArangoDBAsync.java index ed4eb8ed3..f809f78d8 100644 --- a/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -299,18 +299,6 @@ default CompletableFuture createDatabase(final String name) { */ CompletableFuture execute(final Request request); - /** - * Returns fatal, error, warning or info log messages from the server's global log. - * - * @param options Additional options, can be null - * @return the log messages - * @see API - * Documentation - * @deprecated use {@link #getLogEntries(LogOptions)} instead - */ - @Deprecated - CompletableFuture getLogs(final LogOptions options); - /** * Returns the server logs * diff --git a/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java index 170e4d1a7..23cf6af31 100644 --- a/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java +++ b/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java @@ -221,11 +221,6 @@ public CompletableFuture execute(final Request request) { return executor.execute(request, response -> response); } - @Override - public CompletableFuture getLogs(final LogOptions options) { - return executor.execute(getLogsRequest(options), LogEntity.class); - } - @Override public CompletableFuture getLogEntries(final LogOptions options) { return executor.execute(getLogEntriesRequest(options), LogEntriesEntity.class); diff --git a/src/main/java/com/arangodb/entity/LogEntity.java b/src/main/java/com/arangodb/entity/LogEntity.java deleted file mode 100644 index fe4e52ea8..000000000 --- a/src/main/java/com/arangodb/entity/LogEntity.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2016 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.entity; - -import java.util.List; - -/** - * @author Mark Vollmary - * @see API - * Documentation - */ -public class LogEntity implements Entity { - - private List lid; - private List level; - private List timestamp; - private List text; - private Long totalAmount; - - /** - * @return a list of log entry identifiers. Each log message is uniquely identified by its @LIT{lid} and the - * identifiers are in ascending order - */ - public List getLid() { - return lid; - } - - /** - * @return a list of the log-levels for all log entries - */ - public List getLevel() { - return level; - } - - /** - * @return a list of the timestamps as seconds since 1970-01-01 for all log entries - */ - public List getTimestamp() { - return timestamp; - } - - /** - * @return a list of the texts of all log entries - */ - public List getText() { - return text; - } - - /** - * @return the total amount of log entries before pagination - */ - public Long getTotalAmount() { - return totalAmount; - } - -} diff --git a/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/src/main/java/com/arangodb/internal/ArangoDBImpl.java index be0ffd48c..ea980dede 100644 --- a/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -249,11 +249,6 @@ public Response execute(final Request request, final HostHandle hostHandle) thro return executor.execute(request, response -> response, hostHandle); } - @Override - public LogEntity getLogs(final LogOptions options) throws ArangoDBException { - return executor.execute(getLogsRequest(options), LogEntity.class); - } - @Override public LogEntriesEntity getLogEntries(final LogOptions options) throws ArangoDBException { return executor.execute(getLogEntriesRequest(options), LogEntriesEntity.class); diff --git a/src/main/java/com/arangodb/internal/InternalArangoDB.java b/src/main/java/com/arangodb/internal/InternalArangoDB.java index 017ddab6b..db5d9135d 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDB.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDB.java @@ -164,18 +164,6 @@ protected Request updateUserDefaultCollectionAccessRequest(final String user, fi "*", "*").setBody(util().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } - protected Request getLogsRequest(final LogOptions options) { - final LogOptions params = options != null ? options : new LogOptions(); - return request(DbName.SYSTEM, RequestType.GET, PATH_API_ADMIN_LOG) - .putQueryParam(LogOptions.PROPERTY_UPTO, params.getUpto()) - .putQueryParam(LogOptions.PROPERTY_LEVEL, params.getLevel()) - .putQueryParam(LogOptions.PROPERTY_START, params.getStart()) - .putQueryParam(LogOptions.PROPERTY_SIZE, params.getSize()) - .putQueryParam(LogOptions.PROPERTY_OFFSET, params.getOffset()) - .putQueryParam(LogOptions.PROPERTY_SEARCH, params.getSearch()) - .putQueryParam(LogOptions.PROPERTY_SORT, params.getSort()); - } - protected Request getLogEntriesRequest(final LogOptions options) { final LogOptions params = options != null ? options : new LogOptions(); return request(DbName.SYSTEM, RequestType.GET, PATH_API_ADMIN_LOG_ENTRIES) diff --git a/src/test/java/com/arangodb/ArangoDBTest.java b/src/test/java/com/arangodb/ArangoDBTest.java index eadb0806c..76d991e6a 100644 --- a/src/test/java/com/arangodb/ArangoDBTest.java +++ b/src/test/java/com/arangodb/ArangoDBTest.java @@ -31,7 +31,6 @@ import com.arangodb.velocystream.Response; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -400,105 +399,6 @@ void execute(ArangoDB arangoDB) throws VPackException { assertThat(response.getBody().get("version").isString()).isTrue(); } - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogs(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null); - assertThat(logs.getTotalAmount()).isPositive(); - assertThat(logs.getLid()).hasSize(logs.getTotalAmount().intValue()); - assertThat(logs.getLevel()).hasSize(logs.getTotalAmount().intValue()); - assertThat(logs.getTimestamp()).hasSize(logs.getTotalAmount().intValue()); - assertThat(logs.getText()).hasSize(logs.getTotalAmount().intValue()); - } - - @Disabled - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsUpto(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logsUpto = arangoDB.getLogs(new LogOptions().upto(LogLevel.WARNING)); - assertThat(logsUpto.getLevel()) - .isNotEmpty() - .doesNotContain(LogLevel.INFO); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsLevel(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logsInfo = arangoDB.getLogs(new LogOptions().level(LogLevel.INFO)); - assertThat(logsInfo.getLevel()).containsOnly(LogLevel.INFO); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsStart(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null); - assertThat(logs.getLid()).isNotEmpty(); - final LogEntity logsStart = arangoDB.getLogs(new LogOptions().start(logs.getLid().get(0) + 1)); - assertThat(logsStart.getLid()) - .isNotEmpty() - .doesNotContain(logs.getLid().get(0)); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsSize(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null); - assertThat(logs.getLid()).isNotEmpty(); - final LogEntity logsSize = arangoDB.getLogs(new LogOptions().size(logs.getLid().size() - 1)); - assertThat(logsSize.getLid()).hasSize(logs.getLid().size() - 1); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsOffset(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - assumeTrue(isLessThanVersion(3, 9)); // deprecated - final LogEntity logs = arangoDB.getLogs(null); - assertThat(logs.getTotalAmount()).isPositive(); - final LogEntity logsOffset = arangoDB.getLogs(new LogOptions().offset(1)); - assertThat(logsOffset.getLid()) - .isNotEmpty() - .doesNotContain(logs.getLid().get(0)); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsSearch(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null); - final LogEntity logsSearch = arangoDB.getLogs(new LogOptions().search(TEST_DB.get())); - assertThat(logs.getTotalAmount()).isGreaterThan(logsSearch.getTotalAmount()); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsSortAsc(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(new LogOptions().sort(SortOrder.asc)); - long lastId = -1; - for (final Long id : logs.getLid()) { - assertThat(id).isGreaterThan(lastId); - lastId = id; - } - } - - @ParameterizedTest(name = "{index}") - @MethodSource("arangos") - void getLogsSortDesc(ArangoDB arangoDB) { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(new LogOptions().sort(SortOrder.desc)); - long lastId = Long.MAX_VALUE; - for (final Long id : logs.getLid()) { - assertThat(lastId).isGreaterThan(id); - lastId = id; - } - } - @ParameterizedTest(name = "{index}") @MethodSource("arangos") void getLogEntries(ArangoDB arangoDB) { diff --git a/src/test/java/com/arangodb/async/ArangoDBTest.java b/src/test/java/com/arangodb/async/ArangoDBTest.java index 89ea13f5f..6b7f7321c 100644 --- a/src/test/java/com/arangodb/async/ArangoDBTest.java +++ b/src/test/java/com/arangodb/async/ArangoDBTest.java @@ -24,7 +24,6 @@ import com.arangodb.entity.*; import com.arangodb.mapping.ArangoJack; import com.arangodb.model.*; -import com.arangodb.model.LogOptions.SortOrder; import com.arangodb.util.TestUtils; import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; @@ -460,129 +459,6 @@ void execute_acquireHostList_enabled() throws VPackException, InterruptedExcepti .get(); } - @Test - void getLogs() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - arangoDB.getLogs(null) - .whenComplete((logs, ex) -> { - assertThat(logs).isNotNull(); - assertThat(logs.getTotalAmount()).isPositive(); - assertThat((long) logs.getLid().size()).isEqualTo(logs.getTotalAmount()); - assertThat((long) logs.getLevel().size()).isEqualTo(logs.getTotalAmount()); - assertThat((long) logs.getTimestamp().size()).isEqualTo(logs.getTotalAmount()); - assertThat((long) logs.getText().size()).isEqualTo(logs.getTotalAmount()); - }) - .get(); - } - - @Test - void getLogsUpto() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null).get(); - arangoDB.getLogs(new LogOptions().upto(LogLevel.WARNING)) - .whenComplete((logsUpto, ex) -> { - assertThat(logsUpto).isNotNull(); - assertThat(logs.getTotalAmount() >= logsUpto.getTotalAmount()).isTrue(); - assertThat(logsUpto.getLevel()).doesNotContain(LogLevel.INFO); - }) - .get(); - } - - @Test - void getLogsLevel() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null).get(); - arangoDB.getLogs(new LogOptions().level(LogLevel.INFO)) - .whenComplete((logsInfo, ex) -> { - assertThat(logsInfo).isNotNull(); - assertThat(logs.getTotalAmount() >= logsInfo.getTotalAmount()).isTrue(); - assertThat(logsInfo.getLevel()).containsOnly(LogLevel.INFO); - }) - .get(); - } - - @Test - void getLogsStart() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null).get(); - assertThat(logs.getLid()).isNotEmpty(); - arangoDB.getLogs(new LogOptions().start(logs.getLid().get(0) + 1)) - .whenComplete((logsStart, ex) -> { - assertThat(logsStart).isNotNull(); - assertThat(logsStart.getLid()).doesNotContain(logs.getLid().get(0)); - }) - .get(); - } - - @Test - void getLogsSize() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null).get(); - assertThat(logs.getLid()).isNotEmpty(); - arangoDB.getLogs(new LogOptions().size(logs.getLid().size() - 1)) - .whenComplete((logsSize, ex) -> { - assertThat(logsSize).isNotNull(); - assertThat(logsSize.getLid()).hasSize(logs.getLid().size() - 1); - }) - .get(); - } - - @Test - void getLogsOffset() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - assumeTrue(isLessThanVersion(3, 9)); // deprecated - final LogEntity logs = arangoDB.getLogs(null).get(); - assertThat(logs.getTotalAmount()).isPositive(); - arangoDB.getLogs(new LogOptions().offset((int) (logs.getTotalAmount() - 1))) - .whenComplete((logsOffset, ex) -> { - assertThat(logsOffset).isNotNull(); - assertThat(logsOffset.getLid()).hasSize(1); - }) - .get(); - } - - @Test - void getLogsSearch() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - final LogEntity logs = arangoDB.getLogs(null).get(); - arangoDB.getLogs(new LogOptions().search(BaseTest.TEST_DB.get())) - .whenComplete((logsSearch, ex) -> { - assertThat(logsSearch).isNotNull(); - assertThat(logs.getTotalAmount()).isGreaterThan(logsSearch.getTotalAmount()); - }) - .get(); - } - - @Test - void getLogsSortAsc() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - arangoDB.getLogs(new LogOptions().sort(SortOrder.asc)) - .whenComplete((logs, ex) -> { - assertThat(logs).isNotNull(); - long lastId = -1; - for (final Long id : logs.getLid()) { - assertThat(id).isGreaterThan(lastId); - lastId = id; - } - }) - .get(); - } - - @Test - void getLogsSortDesc() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) - arangoDB.getLogs(new LogOptions().sort(SortOrder.desc)) - .whenComplete((logs, ex) -> { - assertThat(logs).isNotNull(); - long lastId = Long.MAX_VALUE; - for (final Long id : logs.getLid()) { - assertThat(lastId).isGreaterThan(id); - lastId = id; - } - }) - .get(); - } - @Test void getLogEntries() throws InterruptedException, ExecutionException { assumeTrue(isAtLeastVersion(3, 8)); @@ -595,18 +471,6 @@ void getLogEntries() throws InterruptedException, ExecutionException { .get(); } - @Test - void getLogEntriesSearch() throws InterruptedException, ExecutionException { - assumeTrue(isAtLeastVersion(3, 8)); - final LogEntriesEntity logs = arangoDB.getLogEntries(null).get(); - arangoDB.getLogs(new LogOptions().search(BaseTest.TEST_DB.get())) - .whenComplete((logsSearch, ex) -> { - assertThat(logsSearch).isNotNull(); - assertThat(logs.getTotal()).isGreaterThan(logsSearch.getTotalAmount()); - }) - .get(); - } - @Test void getLogLevel() throws InterruptedException, ExecutionException { assumeTrue(isAtLeastVersion(3, 7)); // it fails in 3.6 active-failover (BTS-362) From 372e217ec72a867b338449ae49ae50fd4c813866 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:06:02 +0200 Subject: [PATCH 4/9] removed invalid deprecation on collection id --- src/main/java/com/arangodb/entity/CollectionEntity.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/arangodb/entity/CollectionEntity.java b/src/main/java/com/arangodb/entity/CollectionEntity.java index c9b1a0e47..4f6c9cd5c 100644 --- a/src/main/java/com/arangodb/entity/CollectionEntity.java +++ b/src/main/java/com/arangodb/entity/CollectionEntity.java @@ -41,11 +41,6 @@ public CollectionEntity() { super(); } - /** - * @deprecated Accessing collections by their internal ID instead of accessing them by name is deprecated and highly - * discouraged. This functionality may be removed in future versions of ArangoDB. - */ - @Deprecated public String getId() { return id; } From a38526602d4cc16a356aa03757d2bd7cca945a82 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:12:55 +0200 Subject: [PATCH 5/9] removed minReplicationFactor --- .../entity/CollectionPropertiesEntity.java | 18 -------- .../arangodb/entity/MinReplicationFactor.java | 46 ------------------- .../velocypack/VPackDeserializers.java | 7 --- .../velocypack/VPackDriverModule.java | 2 - .../internal/velocypack/VPackSerializers.java | 6 --- .../model/CollectionCreateOptions.java | 29 ------------ 6 files changed, 108 deletions(-) delete mode 100644 src/main/java/com/arangodb/entity/MinReplicationFactor.java diff --git a/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java b/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java index 506e3d49e..488265313 100644 --- a/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java +++ b/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java @@ -37,7 +37,6 @@ public class CollectionPropertiesEntity extends CollectionEntity { private Integer numberOfShards; private Collection shardKeys; private final ReplicationFactor replicationFactor; - private final MinReplicationFactor minReplicationFactor; private Integer writeConcern; private String shardingStrategy; // cluster option private String smartJoinAttribute; // enterprise option @@ -45,7 +44,6 @@ public class CollectionPropertiesEntity extends CollectionEntity { public CollectionPropertiesEntity() { super(); replicationFactor = new ReplicationFactor(); - minReplicationFactor = new MinReplicationFactor(); } public Boolean getDoCompact() { @@ -119,22 +117,6 @@ public void setReplicationFactor(final Integer replicationFactor) { this.replicationFactor.setReplicationFactor(replicationFactor); } - /** - * @deprecated use {@link #getWriteConcern()} instead - */ - @Deprecated - public Integer getMinReplicationFactor() { - return minReplicationFactor.getMinReplicationFactor(); - } - - /** - * @deprecated use {@link #setWriteConcern(Integer)} instead - */ - @Deprecated - public void setMinReplicationFactor(final Integer minReplicationFactor) { - this.minReplicationFactor.setMinReplicationFactor(minReplicationFactor); - } - public Integer getWriteConcern() { return writeConcern; } diff --git a/src/main/java/com/arangodb/entity/MinReplicationFactor.java b/src/main/java/com/arangodb/entity/MinReplicationFactor.java deleted file mode 100644 index 5a1bfa915..000000000 --- a/src/main/java/com/arangodb/entity/MinReplicationFactor.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.entity; - -import com.arangodb.model.CollectionCreateOptions; - -/** - * @author Heiko Kernbach - * @deprecated use {@link CollectionCreateOptions#writeConcern(Integer)} instead - */ -@Deprecated -public class MinReplicationFactor { - - private Integer minReplicationFactor; - - public MinReplicationFactor() { - super(); - } - - public Integer getMinReplicationFactor() { - return minReplicationFactor; - } - - public void setMinReplicationFactor(final Integer minReplicationFactor) { - this.minReplicationFactor = minReplicationFactor; - } - -} \ No newline at end of file diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java index 3a5a32084..2e8849214 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java @@ -26,7 +26,6 @@ import com.arangodb.entity.CollectionType; import com.arangodb.entity.License; import com.arangodb.entity.LogLevel; -import com.arangodb.entity.MinReplicationFactor; import com.arangodb.entity.Permissions; import com.arangodb.entity.QueryExecutionState; import com.arangodb.entity.ReplicationFactor; @@ -150,12 +149,6 @@ public class VPackDeserializers { return replicationFactor; }; - public static final VPackDeserializer MIN_REPLICATION_FACTOR = (parent, vpack, context) -> { - final MinReplicationFactor minReplicationFactor = new MinReplicationFactor(); - minReplicationFactor.setMinReplicationFactor(vpack.getAsInt()); - return minReplicationFactor; - }; - public static final VPackDeserializer VIEW_TYPE = (parent, vpack, context) -> "arangosearch".equals(vpack.getAsString()) ? ViewType.ARANGO_SEARCH : ViewType.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH)); diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java b/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java index 056f97b66..46a18784b 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java @@ -76,7 +76,6 @@ public > void setup(final C context) { context.registerSerializer(LogLevel.class, VPackSerializers.LOG_LEVEL); context.registerSerializer(Permissions.class, VPackSerializers.PERMISSIONS); context.registerSerializer(ReplicationFactor.class, VPackSerializers.REPLICATION_FACTOR); - context.registerSerializer(MinReplicationFactor.class, VPackSerializers.MIN_REPLICATION_FACTOR); context.registerSerializer(ViewType.class, VPackSerializers.VIEW_TYPE); context.registerSerializer(ArangoSearchPropertiesOptions.class, VPackSerializers.ARANGO_SEARCH_PROPERTIES_OPTIONS); context.registerSerializer(ArangoSearchProperties.class, VPackSerializers.ARANGO_SEARCH_PROPERTIES); @@ -96,7 +95,6 @@ public > void setup(final C context) { context.registerDeserializer(Permissions.class, VPackDeserializers.PERMISSIONS); context.registerDeserializer(QueryExecutionState.class, VPackDeserializers.QUERY_EXECUTION_STATE); context.registerDeserializer(ReplicationFactor.class, VPackDeserializers.REPLICATION_FACTOR); - context.registerDeserializer(MinReplicationFactor.class, VPackDeserializers.MIN_REPLICATION_FACTOR); context.registerDeserializer(ViewType.class, VPackDeserializers.VIEW_TYPE); context.registerDeserializer(ArangoSearchProperties.class, VPackDeserializers.ARANGO_SEARCH_PROPERTIES); context.registerDeserializer(ArangoSearchPropertiesEntity.class, VPackDeserializers.ARANGO_SEARCH_PROPERTIES_ENTITY); diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java index 43a9d088d..399c8c8b5 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java @@ -114,12 +114,6 @@ public class VPackSerializers { } }; - public static final VPackSerializer MIN_REPLICATION_FACTOR = (builder, attribute, value, context) -> { - if (value.getMinReplicationFactor() != null) { - builder.add(attribute, value.getMinReplicationFactor()); - } - }; - public static final VPackSerializer VIEW_TYPE = (builder, attribute, value, context) -> { final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase(Locale.ENGLISH); builder.add(attribute, type); diff --git a/src/main/java/com/arangodb/model/CollectionCreateOptions.java b/src/main/java/com/arangodb/model/CollectionCreateOptions.java index 63d7c5627..a1c34a9a8 100644 --- a/src/main/java/com/arangodb/model/CollectionCreateOptions.java +++ b/src/main/java/com/arangodb/model/CollectionCreateOptions.java @@ -23,7 +23,6 @@ import com.arangodb.entity.CollectionType; import com.arangodb.entity.KeyOptions; import com.arangodb.entity.KeyType; -import com.arangodb.entity.MinReplicationFactor; import com.arangodb.entity.ReplicationFactor; /** @@ -36,7 +35,6 @@ public class CollectionCreateOptions { private String name; private Long journalSize; private final ReplicationFactor replicationFactor; - private final MinReplicationFactor minReplicationFactor; private Integer writeConcern; private KeyOptions keyOptions; private Boolean waitForSync; @@ -57,7 +55,6 @@ public class CollectionCreateOptions { public CollectionCreateOptions() { super(); replicationFactor = new ReplicationFactor(); - minReplicationFactor = new MinReplicationFactor(); } protected String getName() { @@ -90,14 +87,6 @@ public Integer getReplicationFactor() { return replicationFactor.getReplicationFactor(); } - /** - * @deprecated use {@link #getWriteConcern()} instead - */ - @Deprecated - public Integer getMinReplicationFactor() { - return minReplicationFactor.getMinReplicationFactor(); - } - /** * @param replicationFactor (The default is 1): in a cluster, this attribute determines how many copies of each shard are kept on * different DBServers. The value 1 means that only one copy (no synchronous replication) is kept. A @@ -113,24 +102,6 @@ public CollectionCreateOptions replicationFactor(final Integer replicationFactor return this; } - /** - * @param minReplicationFactor (optional, default is 1): in a cluster, this attribute determines how many desired copies of each - * shard are kept on different DBServers. The value 1 means that only one copy (no synchronous - * replication) is kept. A value of k means that desired k-1 replicas are kept. If in a failover scenario - * a shard of a collection has less than minReplicationFactor many insync followers it will go into - * "read-only" mode and will reject writes until enough followers are insync again. In more detail: - * Having `minReplicationFactor == 1` means as soon as a "master-copy" is available of the data writes - * are allowed. Having `minReplicationFactor > 1` requires additional insync copies on follower servers - * to allow writes. - * @return options - * @deprecated use {@link #writeConcern(Integer)} instead - */ - @Deprecated - public CollectionCreateOptions minReplicationFactor(final Integer minReplicationFactor) { - this.minReplicationFactor.setMinReplicationFactor(minReplicationFactor); - return this; - } - public Integer getWriteConcern() { return writeConcern; } From 4dc1b4211efd85f02f7d752a743afa46a55cf788 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:25:07 +0200 Subject: [PATCH 6/9] remove MMFiles related APIs --- .../com/arangodb/entity/CollectionEntity.java | 5 -- .../entity/CollectionPropertiesEntity.java | 27 -------- .../com/arangodb/entity/CollectionStatus.java | 2 +- .../model/CollectionCreateOptions.java | 68 ------------------- .../model/CollectionPropertiesOptions.java | 16 ----- .../arangodb/async/ArangoCollectionTest.java | 1 - 6 files changed, 1 insertion(+), 118 deletions(-) diff --git a/src/main/java/com/arangodb/entity/CollectionEntity.java b/src/main/java/com/arangodb/entity/CollectionEntity.java index 4f6c9cd5c..72530c808 100644 --- a/src/main/java/com/arangodb/entity/CollectionEntity.java +++ b/src/main/java/com/arangodb/entity/CollectionEntity.java @@ -31,7 +31,6 @@ public class CollectionEntity implements Entity { private String id; private String name; private Boolean waitForSync; - private Boolean isVolatile; private Boolean isSystem; private CollectionStatus status; private CollectionType type; @@ -53,10 +52,6 @@ public Boolean getWaitForSync() { return waitForSync; } - public Boolean getIsVolatile() { - return isVolatile; - } - public Boolean getIsSystem() { return isSystem; } diff --git a/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java b/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java index 488265313..73f55d758 100644 --- a/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java +++ b/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java @@ -29,9 +29,6 @@ */ public class CollectionPropertiesEntity extends CollectionEntity { - private Boolean doCompact; - private Long journalSize; - private Integer indexBuckets; private KeyOptions keyOptions; private Long count; private Integer numberOfShards; @@ -46,30 +43,6 @@ public CollectionPropertiesEntity() { replicationFactor = new ReplicationFactor(); } - public Boolean getDoCompact() { - return doCompact; - } - - public void setDoCompact(final Boolean doCompact) { - this.doCompact = doCompact; - } - - public Long getJournalSize() { - return journalSize; - } - - public void setJournalSize(final Long journalSize) { - this.journalSize = journalSize; - } - - public Integer getIndexBuckets() { - return indexBuckets; - } - - public void setIndexBuckets(final Integer indexBuckets) { - this.indexBuckets = indexBuckets; - } - public KeyOptions getKeyOptions() { return keyOptions; } diff --git a/src/main/java/com/arangodb/entity/CollectionStatus.java b/src/main/java/com/arangodb/entity/CollectionStatus.java index 43fc338bd..7cfa65c9d 100644 --- a/src/main/java/com/arangodb/entity/CollectionStatus.java +++ b/src/main/java/com/arangodb/entity/CollectionStatus.java @@ -25,7 +25,7 @@ */ public enum CollectionStatus { - NEW_BORN_COLLECTION(1), UNLOADED(2), LOADED(3), IN_THE_PROCESS_OF_BEING_UNLOADED(4), DELETED(5); + LOADED(3),DELETED(5); private final int status; diff --git a/src/main/java/com/arangodb/model/CollectionCreateOptions.java b/src/main/java/com/arangodb/model/CollectionCreateOptions.java index a1c34a9a8..4e69ea8f9 100644 --- a/src/main/java/com/arangodb/model/CollectionCreateOptions.java +++ b/src/main/java/com/arangodb/model/CollectionCreateOptions.java @@ -33,18 +33,14 @@ public class CollectionCreateOptions { private String name; - private Long journalSize; private final ReplicationFactor replicationFactor; private Integer writeConcern; private KeyOptions keyOptions; private Boolean waitForSync; - private Boolean doCompact; - private Boolean isVolatile; private String[] shardKeys; private Integer numberOfShards; private Boolean isSystem; private CollectionType type; - private Integer indexBuckets; private String distributeShardsLike; private String shardingStrategy; // cluster option @@ -70,19 +66,6 @@ protected CollectionCreateOptions name(final String name) { return this; } - public Long getJournalSize() { - return journalSize; - } - - /** - * @param journalSize The maximal size of a journal or datafile in bytes. The value must be at least 1048576 (1 MiB). - * @return options - */ - public CollectionCreateOptions journalSize(final Long journalSize) { - this.journalSize = journalSize; - return this; - } - public Integer getReplicationFactor() { return replicationFactor.getReplicationFactor(); } @@ -170,38 +153,6 @@ public CollectionCreateOptions waitForSync(final Boolean waitForSync) { return this; } - public Boolean getDoCompact() { - return doCompact; - } - - /** - * @param doCompact whether or not the collection will be compacted (default is true) - * @return options - */ - public CollectionCreateOptions doCompact(final Boolean doCompact) { - this.doCompact = doCompact; - return this; - } - - public Boolean getIsVolatile() { - return isVolatile; - } - - /** - * @param isVolatile If true then the collection data is kept in-memory only and not made persistent. Unloading the - * collection will cause the collection data to be discarded. Stopping or re-starting the server will - * also cause full loss of data in the collection. Setting this option will make the resulting collection - * be slightly faster than regular collections because ArangoDB does not enforce any synchronization to - * disk and does not calculate any CRC checksums for datafiles (as there are no datafiles). This option - * should therefore be used for cache-type collections only, and not for data that cannot be re-created - * otherwise. (The default is false) - * @return options - */ - public CollectionCreateOptions isVolatile(final Boolean isVolatile) { - this.isVolatile = isVolatile; - return this; - } - public String[] getShardKeys() { return shardKeys; } @@ -288,25 +239,6 @@ public CollectionCreateOptions type(final CollectionType type) { return this; } - public Integer getIndexBuckets() { - return indexBuckets; - } - - /** - * @param indexBuckets The number of buckets into which indexes using a hash table are split. The default is 16 and this - * number has to be a power of 2 and less than or equal to 1024. For very large collections one should - * increase this to avoid long pauses when the hash table has to be initially built or resized, since - * buckets are resized individually and can be initially built in parallel. For example, 64 might be a - * sensible value for a collection with 100 000 000 documents. Currently, only the edge index respects - * this value, but other index types might follow in future ArangoDB versions. Changes (see below) are - * applied when the collection is loaded the next time. - * @return options - */ - public CollectionCreateOptions indexBuckets(final Integer indexBuckets) { - this.indexBuckets = indexBuckets; - return this; - } - public String getDistributeShardsLike() { return distributeShardsLike; } diff --git a/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java b/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java index 35e218787..d4ca9ac8e 100644 --- a/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java +++ b/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java @@ -28,7 +28,6 @@ public class CollectionPropertiesOptions { private Boolean waitForSync; - private Long journalSize; private CollectionSchema schema; public CollectionPropertiesOptions() { @@ -48,21 +47,6 @@ public CollectionPropertiesOptions waitForSync(final Boolean waitForSync) { return this; } - public Long getJournalSize() { - return journalSize; - } - - /** - * @param journalSize The maximal size of a journal or datafile in bytes. The value must be at least 1048576 (1 MB). Note - * that when changing the journalSize value, it will only have an effect for additional journals or - * datafiles that are created. Already existing journals or datafiles will not be affected. - * @return options - */ - public CollectionPropertiesOptions journalSize(final Long journalSize) { - this.journalSize = journalSize; - return this; - } - public CollectionSchema getSchema() { return schema; } diff --git a/src/test/java/com/arangodb/async/ArangoCollectionTest.java b/src/test/java/com/arangodb/async/ArangoCollectionTest.java index f0c42c419..d7dfbdec2 100644 --- a/src/test/java/com/arangodb/async/ArangoCollectionTest.java +++ b/src/test/java/com/arangodb/async/ArangoCollectionTest.java @@ -2131,7 +2131,6 @@ void changeProperties() throws InterruptedException, ExecutionException { assertThat(properties.getWaitForSync()).isNotNull(); final CollectionPropertiesOptions options = new CollectionPropertiesOptions(); options.waitForSync(!properties.getWaitForSync()); - options.journalSize(2000000L); db.collection(collection).changeProperties(options) .whenComplete((changedProperties, ex) -> { assertThat(changedProperties.getWaitForSync()).isNotNull(); From 3d324e9e72575851ac42f87c988779505ef5ad8b Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:35:24 +0200 Subject: [PATCH 7/9] removed DocumentCreateOptions#overwrite APIs --- .../internal/InternalArangoCollection.java | 5 +- .../arangodb/model/DocumentCreateOptions.java | 22 +------- .../com/arangodb/ArangoCollectionTest.java | 52 ------------------- 3 files changed, 2 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/src/main/java/com/arangodb/internal/InternalArangoCollection.java index d52560aec..5099a443c 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoCollection.java +++ b/src/main/java/com/arangodb/internal/InternalArangoCollection.java @@ -56,7 +56,6 @@ public abstract class InternalArangoCollection, D private static final String RETURN_NEW = "returnNew"; private static final String NEW = "new"; private static final String RETURN_OLD = "returnOld"; - private static final String OVERWRITE = "overwrite"; private static final String OVERWRITE_MODE = "overwriteMode"; private static final String OLD = "old"; private static final String SILENT = "silent"; @@ -87,7 +86,6 @@ protected Request insertDocumentRequest(final T value, final DocumentCreateO request.putQueryParam(RETURN_NEW, params.getReturnNew()); request.putQueryParam(RETURN_OLD, params.getReturnOld()); request.putQueryParam(SILENT, params.getSilent()); - request.putQueryParam(OVERWRITE, params.getOverwrite()); request.putQueryParam(OVERWRITE_MODE, params.getOverwriteMode() != null ? params.getOverwriteMode().getValue() : null); request.putQueryParam(MERGE_OBJECTS, params.getMergeObjects()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -127,7 +125,6 @@ protected Request insertDocumentsRequest(final Collection values, final D request.putQueryParam(RETURN_NEW, params.getReturnNew()); request.putQueryParam(RETURN_OLD, params.getReturnOld()); request.putQueryParam(SILENT, params.getSilent()); - request.putQueryParam(OVERWRITE, params.getOverwrite()); request.putQueryParam(OVERWRITE_MODE, params.getOverwriteMode() != null ? params.getOverwriteMode().getValue() : null); request.putQueryParam(MERGE_OBJECTS, params.getMergeObjects()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -195,7 +192,7 @@ protected Request importDocumentsRequest(final DocumentImportOptions options) { return request(db.dbName(), RequestType.POST, PATH_API_IMPORT).putQueryParam(COLLECTION, name) .putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()) .putQueryParam("fromPrefix", params.getFromPrefix()).putQueryParam("toPrefix", params.getToPrefix()) - .putQueryParam(OVERWRITE, params.getOverwrite()).putQueryParam("onDuplicate", params.getOnDuplicate()) + .putQueryParam("onDuplicate", params.getOnDuplicate()) .putQueryParam("complete", params.getComplete()).putQueryParam("details", params.getDetails()); } diff --git a/src/main/java/com/arangodb/model/DocumentCreateOptions.java b/src/main/java/com/arangodb/model/DocumentCreateOptions.java index 3c8a52337..057a382e7 100644 --- a/src/main/java/com/arangodb/model/DocumentCreateOptions.java +++ b/src/main/java/com/arangodb/model/DocumentCreateOptions.java @@ -31,7 +31,6 @@ public class DocumentCreateOptions { private Boolean waitForSync; private Boolean returnNew; private Boolean returnOld; - private Boolean overwrite; private OverwriteMode overwriteMode; private Boolean silent; private String streamTransactionId; @@ -73,8 +72,7 @@ public Boolean getReturnOld() { } /** - * @param returnOld Additionally return the complete old document under the attribute old in the result. Only - * available if the {@code overwrite} option is used. + * @param returnOld Additionally return the complete old document under the attribute old in the result. * @return options * @since ArangoDB 3.4 */ @@ -83,24 +81,6 @@ public DocumentCreateOptions returnOld(final Boolean returnOld) { return this; } - public Boolean getOverwrite() { - return overwrite; - } - - /** - * @param overwrite If set to true, the insert becomes a replace-insert. If a document with the same {@code _key} - * already exists the new document is not rejected with unique constraint violated but will replace - * the old document. - * @return options - * @since ArangoDB 3.4 - * @deprecated use {@link #overwriteMode(OverwriteMode)} instead - */ - @Deprecated - public DocumentCreateOptions overwrite(final Boolean overwrite) { - this.overwrite = overwrite; - return this; - } - public OverwriteMode getOverwriteMode() { return overwriteMode; } diff --git a/src/test/java/com/arangodb/ArangoCollectionTest.java b/src/test/java/com/arangodb/ArangoCollectionTest.java index 187d7df81..d332312e9 100644 --- a/src/test/java/com/arangodb/ArangoCollectionTest.java +++ b/src/test/java/com/arangodb/ArangoCollectionTest.java @@ -161,28 +161,6 @@ void insertDocumentReturnNew(ArangoCollection collection) { assertThat(doc.getRev()).isNotNull(); assertThat(doc.getNew()).isNotNull(); } - - @ParameterizedTest(name = "{index}") - @MethodSource("cols") - void insertDocumentOverwriteReturnOld(ArangoCollection collection) { - assumeTrue(isAtLeastVersion(3, 4)); - Long initialCount = collection.count().getCount(); - - final BaseDocument doc = new BaseDocument(); - doc.addAttribute("value", "a"); - final DocumentCreateEntity meta = collection.insertDocument(doc); - - doc.addAttribute("value", "b"); - final DocumentCreateEntity repsert = collection - .insertDocument(doc, new DocumentCreateOptions().overwrite(true).returnOld(true).returnNew(true)); - - assertThat(repsert).isNotNull(); - assertThat(repsert.getRev()).isNotEqualTo(meta.getRev()); - assertThat(repsert.getOld().getAttribute("value")).isEqualTo("a"); - assertThat(repsert.getNew().getAttribute("value")).isEqualTo("b"); - assertThat(collection.count().getCount()).isEqualTo(initialCount + 1L); - } - @ParameterizedTest(name = "{index}") @MethodSource("cols") void insertDocumentOverwriteModeIgnore(ArangoCollection collection) { @@ -1841,36 +1819,6 @@ void insertDocuments(ArangoCollection collection) { assertThat(docs.getErrors()).isEmpty(); } - @ParameterizedTest(name = "{index}") - @MethodSource("cols") - void insertDocumentsOverwrite(ArangoCollection collection) { - assumeTrue(isAtLeastVersion(3, 4)); - - final BaseDocument doc1 = new BaseDocument(); - doc1.addAttribute("value", "a"); - final DocumentCreateEntity meta1 = collection.insertDocument(doc1); - - final BaseDocument doc2 = new BaseDocument(); - doc2.addAttribute("value", "a"); - final DocumentCreateEntity meta2 = collection.insertDocument(doc2); - - doc1.addAttribute("value", "b"); - doc2.addAttribute("value", "b"); - - final MultiDocumentEntity> repsert = collection - .insertDocuments(Arrays.asList(doc1, doc2), - new DocumentCreateOptions().overwrite(true).returnOld(true).returnNew(true)); - assertThat(repsert).isNotNull(); - assertThat(repsert.getDocuments()).hasSize(2); - assertThat(repsert.getErrors()).isEmpty(); - for (final DocumentCreateEntity documentCreateEntity : repsert.getDocuments()) { - assertThat(documentCreateEntity.getRev()).isNotEqualTo(meta1.getRev()); - assertThat(documentCreateEntity.getRev()).isNotEqualTo(meta2.getRev()); - assertThat(documentCreateEntity.getOld().getAttribute("value")).isEqualTo("a"); - assertThat(documentCreateEntity.getNew().getAttribute("value")).isEqualTo("b"); - } - } - @ParameterizedTest(name = "{index}") @MethodSource("cols") void insertDocumentsOverwriteModeUpdate(ArangoCollection collection) { From 616c5faed52b2114fa654cebfe1facf04399c5e4 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:37:36 +0200 Subject: [PATCH 8/9] removed GraphCreateOptions#minReplicationFactor API --- .../java/com/arangodb/entity/GraphEntity.java | 9 ---- .../arangodb/model/GraphCreateOptions.java | 43 ------------------- 2 files changed, 52 deletions(-) diff --git a/src/main/java/com/arangodb/entity/GraphEntity.java b/src/main/java/com/arangodb/entity/GraphEntity.java index 96dcc3299..151979131 100644 --- a/src/main/java/com/arangodb/entity/GraphEntity.java +++ b/src/main/java/com/arangodb/entity/GraphEntity.java @@ -40,7 +40,6 @@ public class GraphEntity implements Entity { private Integer numberOfShards; private String smartGraphAttribute; private ReplicationFactor replicationFactor; - private Integer minReplicationFactor; private Integer writeConcern; public String getName() { @@ -75,14 +74,6 @@ public Boolean getSatellite() { return this.replicationFactor.getSatellite(); } - /** - * @deprecated use {@link #getWriteConcern()} instead - */ - @Deprecated - public Integer getMinReplicationFactor() { - return minReplicationFactor; - } - public Integer getWriteConcern() { return writeConcern; } diff --git a/src/main/java/com/arangodb/model/GraphCreateOptions.java b/src/main/java/com/arangodb/model/GraphCreateOptions.java index cf06b3e4b..6d75fb4e1 100644 --- a/src/main/java/com/arangodb/model/GraphCreateOptions.java +++ b/src/main/java/com/arangodb/model/GraphCreateOptions.java @@ -143,32 +143,6 @@ public GraphCreateOptions satellite(final Boolean satellite) { return this; } - /** - * @deprecated use {@link #getWriteConcern()} instead - */ - @Deprecated - public Integer getMinReplicationFactor() { - return getOptions().getMinReplicationFactor(); - } - - /** - * @param minReplicationFactor (optional, default is 1): in a cluster, this attribute determines how many desired copies of each - * shard are kept on different DBServers. The value 1 means that only one copy (no synchronous - * replication) is kept. A value of k means that desired k-1 replicas are kept. If in a failover scenario - * a shard of a collection has less than minReplicationFactor many insync followers it will go into - * "read-only" mode and will reject writes until enough followers are insync again. In more detail: - * Having `minReplicationFactor == 1` means as soon as a "master-copy" is available of the data writes - * are allowed. Having `minReplicationFactor > 1` requires additional insync copies on follower servers - * to allow writes. - * @return options - * @deprecated use {@link #writeConcern(Integer)} instead - */ - @Deprecated - public GraphCreateOptions minReplicationFactor(final Integer minReplicationFactor) { - getOptions().setMinReplicationFactor(minReplicationFactor); - return this; - } - public Integer getWriteConcern() { return getOptions().getWriteConcern(); } @@ -238,7 +212,6 @@ private SmartOptions getOptions() { public static class SmartOptions { private ReplicationFactor replicationFactor; - private Integer minReplicationFactor; private Integer writeConcern; private Integer numberOfShards; private String smartGraphAttribute; @@ -266,22 +239,6 @@ public void setSatellite(final Boolean satellite) { replicationFactor.setSatellite(satellite); } - /** - * @deprecated use {{@link #getWriteConcern()}} instead - */ - @Deprecated - public Integer getMinReplicationFactor() { - return minReplicationFactor; - } - - /** - * @deprecated use {{@link #setWriteConcern(Integer)}} instead - */ - @Deprecated - public void setMinReplicationFactor(final Integer minReplicationFactor) { - this.minReplicationFactor = minReplicationFactor; - } - public Integer getWriteConcern() { return writeConcern; } From fa8666a0e18ce9a1d7fe6660e2b79bd8762c9160 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 22 Jun 2022 14:41:58 +0200 Subject: [PATCH 9/9] removed executeTraversal API --- .../java/com/arangodb/entity/PathEntity.java | 56 ------------------- .../com/arangodb/entity/TraversalEntity.java | 56 ------------------- 2 files changed, 112 deletions(-) delete mode 100644 src/main/java/com/arangodb/entity/PathEntity.java delete mode 100644 src/main/java/com/arangodb/entity/TraversalEntity.java diff --git a/src/main/java/com/arangodb/entity/PathEntity.java b/src/main/java/com/arangodb/entity/PathEntity.java deleted file mode 100644 index 52f25840e..000000000 --- a/src/main/java/com/arangodb/entity/PathEntity.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2016 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.entity; - -import java.util.Collection; - -/** - * @author Mark Vollmary - * @see API - * Documentation - */ -@Deprecated -public class PathEntity implements Entity { - - private Collection edges; - private Collection vertices; - - public PathEntity() { - super(); - } - - public Collection getEdges() { - return edges; - } - - public void setEdges(final Collection edges) { - this.edges = edges; - } - - public Collection getVertices() { - return vertices; - } - - public void setVertices(final Collection vertices) { - this.vertices = vertices; - } - -} diff --git a/src/main/java/com/arangodb/entity/TraversalEntity.java b/src/main/java/com/arangodb/entity/TraversalEntity.java deleted file mode 100644 index 2d7f9a52a..000000000 --- a/src/main/java/com/arangodb/entity/TraversalEntity.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2016 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.entity; - -import java.util.Collection; - -/** - * @author Mark Vollmary - * @see API - * Documentation - */ -@Deprecated -public class TraversalEntity implements Entity { - - private Collection vertices; - private Collection> paths; - - public TraversalEntity() { - super(); - } - - public Collection getVertices() { - return vertices; - } - - public void setVertices(final Collection vertices) { - this.vertices = vertices; - } - - public Collection> getPaths() { - return paths; - } - - public void setPaths(final Collection> paths) { - this.paths = paths; - } - -}