From e17459a41a2e9ff105719f8b7ac10d2527b57cc7 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 9 Nov 2022 09:07:54 +0100 Subject: [PATCH 1/3] removed execute with hostHandle --- .../src/main/java/com/arangodb/ArangoDB.java | 19 ++++++++----------- .../com/arangodb/async/ArangoDBAsync.java | 12 +++++++++--- .../com/arangodb/internal/ArangoDBImpl.java | 5 ----- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/driver/src/main/java/com/arangodb/ArangoDB.java b/driver/src/main/java/com/arangodb/ArangoDB.java index 661d77b30..d8abff81c 100644 --- a/driver/src/main/java/com/arangodb/ArangoDB.java +++ b/driver/src/main/java/com/arangodb/ArangoDB.java @@ -276,22 +276,19 @@ public interface ArangoDB extends ArangoSerdeAccessor { void grantDefaultCollectionAccess(String user, Permissions permissions); /** - * Generic Execute. Use this method to execute custom FOXX services. + * Execute custom requests. Requests can be programmatically built by setting low level detail such as method, path, + * query parameters, headers and body payload. + * This method can be used to call FOXX services, API endpoints not (yet) implemented in this driver or trigger + * async jobs, see + * Fire and Forget + * and + * Async Execution and later Result Retrieval * * @param request request - * @return VelocyStream response + * @return response */ Response execute(Request request); - /** - * Generic Execute. Use this method to execute custom FOXX services. - * - * @param request request - * @param hostHandle Used to stick to a specific host when using {@link LoadBalancingStrategy#ROUND_ROBIN} - * @return VelocyStream response - */ - Response execute(Request request, HostHandle hostHandle); - /** * Returns the server logs * diff --git a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java b/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java index 949dedd02..109f907f1 100644 --- a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -257,10 +257,16 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { CompletableFuture grantDefaultCollectionAccess(final String user, final Permissions permissions); /** - * Generic Execute. Use this method to execute custom FOXX services. + * Execute custom requests. Requests can be programmatically built by setting low level detail such as method, path, + * query parameters, headers and body payload. + * This method can be used to call FOXX services, API endpoints not (yet) implemented in this driver or trigger + * async jobs, see + * Fire and Forget + * and + * Async Execution and later Result Retrieval * - * @param request VelocyStream request - * @return VelocyStream response + * @param request request + * @return response */ CompletableFuture execute(final Request request); diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java index 04d631369..d615eaf71 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -218,11 +218,6 @@ public Response execute(final Request request) { return executor.execute(request, response -> response); } - @Override - public Response execute(final Request request, final HostHandle hostHandle) { - return executor.execute(request, response -> response, hostHandle); - } - @Override public LogEntriesEntity getLogEntries(final LogOptions options) { return executor.execute(getLogEntriesRequest(options), LogEntriesEntity.class); From 5b795f5f2325f08320e42e64029b420b736f01ab Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 9 Nov 2022 10:10:55 +0100 Subject: [PATCH 2/3] removed ArangoRoute --- .../src/main/java/com/arangodb/ArangoDB.java | 6 +- .../java/com/arangodb/ArangoDatabase.java | 9 - .../main/java/com/arangodb/ArangoRoute.java | 112 ------------- .../com/arangodb/async/ArangoDBAsync.java | 4 +- .../com/arangodb/async/ArangoRouteAsync.java | 14 +- .../async/internal/ArangoDBAsyncImpl.java | 8 +- .../internal/ArangoDatabaseAsyncImpl.java | 4 +- .../async/internal/ArangoExecutorAsync.java | 10 +- .../async/internal/ArangoRouteAsyncImpl.java | 16 +- .../velocystream/VstCommunicationAsync.java | 20 +-- .../com/arangodb/internal/ArangoDBImpl.java | 5 +- .../arangodb/internal/ArangoDatabaseImpl.java | 9 +- .../arangodb/internal/ArangoExecuteable.java | 5 +- .../com/arangodb/internal/ArangoExecutor.java | 10 +- .../arangodb/internal/ArangoExecutorSync.java | 12 +- .../arangodb/internal/ArangoRouteImpl.java | 99 ----------- .../internal/InternalArangoCollection.java | 155 +++++++++--------- .../arangodb/internal/InternalArangoDB.java | 43 +++-- .../internal/InternalArangoDatabase.java | 115 +++++++------ .../InternalArangoEdgeCollection.java | 21 ++- .../internal/InternalArangoGraph.java | 27 ++- .../internal/InternalArangoRoute.java | 5 +- .../internal/InternalArangoSearch.java | 11 +- .../InternalArangoVertexCollection.java | 23 ++- .../arangodb/internal/InternalArangoView.java | 9 +- .../InternalRequest.java} | 21 ++- .../InternalResponse.java} | 6 +- .../internal/InternalSearchAlias.java | 11 +- .../internal/http/HttpCommunication.java | 12 +- .../internal/http/HttpConnection.java | 22 +-- .../arangodb/internal/http/HttpProtocol.java | 6 +- .../internal/net/CommunicationProtocol.java | 6 +- .../internal/net/ExtendedHostResolver.java | 4 +- .../internal/serde/InternalDeserializers.java | 8 +- .../internal/serde/InternalModule.java | 8 +- .../internal/serde/InternalSerializers.java | 6 +- .../arangodb/internal/util/RequestUtils.java | 6 +- .../arangodb/internal/util/ResponseUtils.java | 4 +- .../velocystream/VstCommunication.java | 20 +-- .../velocystream/VstCommunicationSync.java | 18 +- .../internal/velocystream/VstProtocol.java | 10 +- .../internal/AuthenticationRequest.java | 4 +- .../internal/JwtAuthenticationRequest.java | 4 +- .../test/java/com/arangodb/ArangoDBTest.java | 4 +- .../java/com/arangodb/ArangoRouteTest.java | 80 --------- .../test/java/com/arangodb/JwtAuthTest.java | 7 +- .../java/com/arangodb/async/ArangoDBTest.java | 6 +- .../java/com/arangodb/async/JwtAuthTest.java | 8 +- .../src/test/java/perf/SyncBenchmarkTest.java | 4 +- 49 files changed, 359 insertions(+), 678 deletions(-) delete mode 100644 driver/src/main/java/com/arangodb/ArangoRoute.java delete mode 100644 driver/src/main/java/com/arangodb/internal/ArangoRouteImpl.java rename driver/src/main/java/com/arangodb/{Request.java => internal/InternalRequest.java} (82%) rename driver/src/main/java/com/arangodb/{Response.java => internal/InternalResponse.java} (96%) delete mode 100644 driver/src/test/java/com/arangodb/ArangoRouteTest.java diff --git a/driver/src/main/java/com/arangodb/ArangoDB.java b/driver/src/main/java/com/arangodb/ArangoDB.java index d8abff81c..b61abf817 100644 --- a/driver/src/main/java/com/arangodb/ArangoDB.java +++ b/driver/src/main/java/com/arangodb/ArangoDB.java @@ -23,9 +23,7 @@ import com.arangodb.config.ConfigPropertiesProvider; import com.arangodb.config.ConfigPropertyKey; import com.arangodb.entity.*; -import com.arangodb.internal.ArangoDBImpl; -import com.arangodb.internal.ArangoDefaults; -import com.arangodb.internal.InternalArangoDBBuilder; +import com.arangodb.internal.*; import com.arangodb.internal.http.HttpCommunication; import com.arangodb.internal.http.HttpConnectionFactory; import com.arangodb.internal.net.*; @@ -287,7 +285,7 @@ public interface ArangoDB extends ArangoSerdeAccessor { * @param request request * @return response */ - Response execute(Request request); + InternalResponse execute(InternalRequest request); /** * Returns the server logs diff --git a/driver/src/main/java/com/arangodb/ArangoDatabase.java b/driver/src/main/java/com/arangodb/ArangoDatabase.java index 8224f27c0..1ef5e1de1 100644 --- a/driver/src/main/java/com/arangodb/ArangoDatabase.java +++ b/driver/src/main/java/com/arangodb/ArangoDatabase.java @@ -612,15 +612,6 @@ public interface ArangoDatabase extends ArangoSerdeAccessor { */ void reloadRouting(); - /** - * Returns a new {@link ArangoRoute} instance for the given path (relative to the database) that can be used to - * perform arbitrary requests. - * - * @param path The database-relative URL of the route - * @return {@link ArangoRoute} - */ - ArangoRoute route(String... path); - /** * Fetches all views from the database and returns an list of view descriptions. * diff --git a/driver/src/main/java/com/arangodb/ArangoRoute.java b/driver/src/main/java/com/arangodb/ArangoRoute.java deleted file mode 100644 index 4e4bab95b..000000000 --- a/driver/src/main/java/com/arangodb/ArangoRoute.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2018 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; - -/** - * Interface for a specific path to be used to perform arbitrary requests. - * - * @author Mark Vollmary - */ -public interface ArangoRoute extends ArangoSerdeAccessor { - - /** - * Returns a new {@link ArangoRoute} instance for the given path (relative to the current route) that can be used to - * perform arbitrary requests. - * - * @param path The relative URL of the route - * @return {@link ArangoRoute} - */ - ArangoRoute route(String... path); - - /** - * Header that should be sent with each request to the route. - * - * @param key Header key - * @param value Header value (the {@code toString()} method will be called for the value} - * @return {@link ArangoRoute} - */ - ArangoRoute withHeader(String key, Object value); - - /** - * Query parameter that should be sent with each request to the route. - * - * @param key Query parameter key - * @param value Query parameter value (the {@code toString()} method will be called for the value} - * @return {@link ArangoRoute} - */ - ArangoRoute withQueryParam(String key, Object value); - - /** - * The response body. - * - * @param body The request body - * @return {@link ArangoRoute} - */ - ArangoRoute withBody(Object body); - - /** - * Performs a DELETE request to the given URL and returns the server response. - * - * @return server response - */ - Response delete(); - - /** - * Performs a GET request to the given URL and returns the server response. - * - * @return server response - */ - - Response get(); - - /** - * Performs a HEAD request to the given URL and returns the server response. - * - * @return server response - */ - - Response head(); - - /** - * Performs a PATCH request to the given URL and returns the server response. - * - * @return server response - */ - - Response patch(); - - /** - * Performs a POST request to the given URL and returns the server response. - * - * @return server response - */ - - Response post(); - - /** - * Performs a PUT request to the given URL and returns the server response. - * - * @return server response - */ - - Response put(); - -} diff --git a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java b/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java index 109f907f1..b635483a9 100644 --- a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -28,6 +28,8 @@ import com.arangodb.entity.*; import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; @@ -268,7 +270,7 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { * @param request request * @return response */ - CompletableFuture execute(final Request request); + CompletableFuture execute(final InternalRequest request); /** * Returns the server logs diff --git a/driver/src/main/java/com/arangodb/async/ArangoRouteAsync.java b/driver/src/main/java/com/arangodb/async/ArangoRouteAsync.java index ed66aff87..c2ab2d221 100644 --- a/driver/src/main/java/com/arangodb/async/ArangoRouteAsync.java +++ b/driver/src/main/java/com/arangodb/async/ArangoRouteAsync.java @@ -21,7 +21,7 @@ package com.arangodb.async; import com.arangodb.ArangoSerdeAccessor; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import java.util.concurrent.CompletableFuture; @@ -72,7 +72,7 @@ public interface ArangoRouteAsync extends ArangoSerdeAccessor { * * @return server response */ - CompletableFuture delete(); + CompletableFuture delete(); /** * Performs a GET request to the given URL and returns the server response. @@ -80,7 +80,7 @@ public interface ArangoRouteAsync extends ArangoSerdeAccessor { * @return server response */ - CompletableFuture get(); + CompletableFuture get(); /** * Performs a HEAD request to the given URL and returns the server response. @@ -88,7 +88,7 @@ public interface ArangoRouteAsync extends ArangoSerdeAccessor { * @return server response */ - CompletableFuture head(); + CompletableFuture head(); /** * Performs a PATCH request to the given URL and returns the server response. @@ -96,7 +96,7 @@ public interface ArangoRouteAsync extends ArangoSerdeAccessor { * @return server response */ - CompletableFuture patch(); + CompletableFuture patch(); /** * Performs a POST request to the given URL and returns the server response. @@ -104,7 +104,7 @@ public interface ArangoRouteAsync extends ArangoSerdeAccessor { * @return server response */ - CompletableFuture post(); + CompletableFuture post(); /** * Performs a PUT request to the given URL and returns the server response. @@ -112,6 +112,6 @@ public interface ArangoRouteAsync extends ArangoSerdeAccessor { * @return server response */ - CompletableFuture put(); + CompletableFuture put(); } diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java index 5e52ffdf5..6d7e57ee7 100644 --- a/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java +++ b/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java @@ -40,8 +40,8 @@ import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; import com.arangodb.model.UserUpdateOptions; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,7 +75,7 @@ public ArangoDBAsyncImpl( super(new ArangoExecutorAsync(asyncCommBuilder.build(util), util, new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs), util); - final VstCommunication cacheCom = syncCommBuilder.build(util); + final VstCommunication cacheCom = syncCommBuilder.build(util); cp = new VstProtocol(cacheCom); this.asyncHostHandler = asyncHostHandler; @@ -215,7 +215,7 @@ public CompletableFuture grantDefaultCollectionAccess(final String user, f } @Override - public CompletableFuture execute(final Request request) { + public CompletableFuture execute(final InternalRequest request) { return executor.execute(request, response -> response); } diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java b/driver/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java index 180f2671c..b8ab7b0aa 100644 --- a/driver/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java +++ b/driver/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java @@ -35,7 +35,7 @@ import com.arangodb.model.arangosearch.AnalyzerDeleteOptions; import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; import com.arangodb.model.arangosearch.SearchAliasCreateOptions; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import java.util.Collection; import java.util.Collections; @@ -179,7 +179,7 @@ public CompletableFuture> query( final Map bindVars, final AqlQueryOptions options, final Class type) { - final Request request = queryRequest(query, bindVars, options); + final InternalRequest request = queryRequest(query, bindVars, options); final HostHandle hostHandle = new HostHandle(); final CompletableFuture execution = executor.execute(request, InternalCursorEntity.class, hostHandle); diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java b/driver/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java index 1510cbf2a..831b64e40 100644 --- a/driver/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java +++ b/driver/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java @@ -26,7 +26,7 @@ import com.arangodb.internal.QueueTimeMetricsImpl; import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.serde.InternalSerde; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import java.io.IOException; import java.lang.reflect.Type; @@ -49,20 +49,20 @@ public ArangoExecutorAsync(final VstCommunicationAsync communication, final Inte this.communication = communication; } - public CompletableFuture execute(final Request request, final Type type) { + public CompletableFuture execute(final InternalRequest request, final Type type) { return execute(request, response -> createResult(type, response)); } - public CompletableFuture execute(final Request request, final Type type, final HostHandle hostHandle) { + public CompletableFuture execute(final InternalRequest request, final Type type, final HostHandle hostHandle) { return execute(request, response -> createResult(type, response), hostHandle); } - public CompletableFuture execute(final Request request, final ResponseDeserializer responseDeserializer) { + public CompletableFuture execute(final InternalRequest request, final ResponseDeserializer responseDeserializer) { return execute(request, responseDeserializer, null); } private CompletableFuture execute( - final Request request, + final InternalRequest request, final ResponseDeserializer responseDeserializer, final HostHandle hostHandle) { diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java b/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java index e00688dcc..061b84f9b 100644 --- a/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java +++ b/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java @@ -23,7 +23,7 @@ import com.arangodb.async.ArangoRouteAsync; import com.arangodb.internal.InternalArangoRoute; import com.arangodb.RequestType; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -66,37 +66,37 @@ public ArangoRouteAsync withBody(final Object body) { return this; } - private CompletableFuture request(final RequestType requestType) { + private CompletableFuture request(final RequestType requestType) { return executor.execute(createRequest(requestType), response -> response); } @Override - public CompletableFuture delete() { + public CompletableFuture delete() { return request(RequestType.DELETE); } @Override - public CompletableFuture get() { + public CompletableFuture get() { return request(RequestType.GET); } @Override - public CompletableFuture head() { + public CompletableFuture head() { return request(RequestType.HEAD); } @Override - public CompletableFuture patch() { + public CompletableFuture patch() { return request(RequestType.PATCH); } @Override - public CompletableFuture post() { + public CompletableFuture post() { return request(RequestType.POST); } @Override - public CompletableFuture put() { + public CompletableFuture put() { return request(RequestType.PUT); } diff --git a/driver/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java b/driver/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java index e0eab0092..98edbc61b 100644 --- a/driver/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java +++ b/driver/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java @@ -33,8 +33,8 @@ import com.arangodb.internal.velocystream.internal.Message; import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocypack.exception.VPackParserException; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +45,7 @@ /** * @author Mark Vollmary */ -public class VstCommunicationAsync extends VstCommunication, VstConnectionAsync> { +public class VstCommunicationAsync extends VstCommunication, VstConnectionAsync> { private static final Logger LOGGER = LoggerFactory.getLogger(VstCommunicationAsync.class); @@ -57,19 +57,19 @@ private VstCommunicationAsync(final HostHandler hostHandler, final Integer timeo } @Override - protected CompletableFuture execute(final Request request, final VstConnectionAsync connection) { + protected CompletableFuture execute(final InternalRequest request, final VstConnectionAsync connection) { return execute(request, connection, 0); } @Override - protected CompletableFuture execute(final Request request, final VstConnectionAsync connection, - final int attemptCount) { - final CompletableFuture rfuture = new CompletableFuture<>(); + protected CompletableFuture execute(final InternalRequest request, final VstConnectionAsync connection, + final int attemptCount) { + final CompletableFuture rfuture = new CompletableFuture<>(); try { final Message message = createMessage(request); send(message, connection).whenComplete((m, ex) -> { if (m != null) { - final Response response; + final InternalResponse response; try { response = createResponse(m); } catch (final VPackParserException e) { @@ -127,14 +127,14 @@ private CompletableFuture send(final Message message, final VstConnecti @Override protected void authenticate(final VstConnectionAsync connection) { - Request authRequest; + InternalRequest authRequest; if (jwt != null) { authRequest = new JwtAuthenticationRequest(jwt, ENCRYPTION_JWT); } else { authRequest = new AuthenticationRequest(user, password != null ? password : "", ENCRYPTION_PLAIN); } - Response response; + InternalResponse response; try { response = execute(authRequest, connection).get(); } catch (final InterruptedException e) { diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java index d615eaf71..bfbed70e3 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -25,7 +25,6 @@ import com.arangodb.internal.http.HttpCommunication; import com.arangodb.internal.http.HttpProtocol; import com.arangodb.internal.net.CommunicationProtocol; -import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; import com.arangodb.internal.serde.InternalSerde; @@ -36,8 +35,6 @@ import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; import com.arangodb.model.UserUpdateOptions; -import com.arangodb.Request; -import com.arangodb.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -214,7 +211,7 @@ public void grantDefaultCollectionAccess(final String user, final Permissions pe } @Override - public Response execute(final Request request) { + public InternalResponse execute(final InternalRequest request) { return executor.execute(request, response -> response); } diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java b/driver/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java index c3ed750d9..e2c1eca2d 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java @@ -31,10 +31,8 @@ import com.arangodb.model.arangosearch.AnalyzerDeleteOptions; import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; import com.arangodb.model.arangosearch.SearchAliasCreateOptions; -import com.arangodb.Request; import java.util.Collection; -import java.util.Collections; import java.util.Map; import static com.arangodb.internal.serde.SerdeUtils.constructListType; @@ -163,7 +161,7 @@ public ArangoCursor query( final String query, final Map bindVars, final AqlQueryOptions options, final Class type) { - final Request request = queryRequest(query, bindVars, options); + final InternalRequest request = queryRequest(query, bindVars, options); final HostHandle hostHandle = new HostHandle(); final InternalCursorEntity result = executor.execute(request, InternalCursorEntity.class, hostHandle); @@ -366,11 +364,6 @@ public void reloadRouting() { executor.execute(reloadRoutingRequest(), Void.class); } - @Override - public ArangoRoute route(final String... path) { - return new ArangoRouteImpl(this, String.join("/", path), Collections.emptyMap()); - } - @Override public Collection getViews() { return executor.execute(getViewsRequest(), getViewsResponseDeserializer()); diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java b/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java index c1bb79eed..95b6f299e 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java @@ -24,7 +24,6 @@ import com.arangodb.DbName; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.EncodeUtils; -import com.arangodb.Request; import com.arangodb.RequestType; /** @@ -69,8 +68,8 @@ public InternalSerde getSerde() { return serde; } - protected Request request(final DbName dbName, final RequestType requestType, final String... path) { - return new Request(dbName, requestType, createPath(path)); + protected InternalRequest request(final DbName dbName, final RequestType requestType, final String... path) { + return new InternalRequest(dbName, requestType, createPath(path)); } } diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecutor.java b/driver/src/main/java/com/arangodb/internal/ArangoExecutor.java index 359a0f952..ad9e0acda 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoExecutor.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoExecutor.java @@ -22,8 +22,6 @@ import com.arangodb.QueueTimeMetrics; import com.arangodb.internal.serde.InternalSerde; -import com.arangodb.Request; -import com.arangodb.Response; import java.lang.reflect.Type; @@ -43,18 +41,18 @@ protected ArangoExecutor(final InternalSerde serde, final QueueTimeMetricsImpl q timeoutS = timeoutMs >= 1000 ? Integer.toString(timeoutMs / 1000) : null; } - protected T createResult(final Type type, final Response response) { + protected T createResult(final Type type, final InternalResponse response) { return serde.deserialize(response.getBody(), type); } - protected final void interceptResponse(Response response) { + protected final void interceptResponse(InternalResponse response) { String queueTime = response.getMeta("X-Arango-Queue-Time-Seconds"); if (queueTime != null) { qtMetrics.add(Double.parseDouble(queueTime)); } } - protected final Request interceptRequest(Request request) { + protected final InternalRequest interceptRequest(InternalRequest request) { request.putHeaderParam("x-arango-queue-time-seconds", timeoutS); return request; } @@ -64,6 +62,6 @@ public QueueTimeMetrics getQueueTimeMetrics() { } public interface ResponseDeserializer { - T deserialize(Response response); + T deserialize(InternalResponse response); } } diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecutorSync.java b/driver/src/main/java/com/arangodb/internal/ArangoExecutorSync.java index 8588c26b0..88b2f6f0f 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoExecutorSync.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoExecutorSync.java @@ -25,8 +25,6 @@ import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.serde.InternalSerde; -import com.arangodb.Request; -import com.arangodb.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,24 +46,24 @@ public ArangoExecutorSync(final CommunicationProtocol protocol, final InternalSe this.protocol = protocol; } - public T execute(final Request request, final Type type) { + public T execute(final InternalRequest request, final Type type) { return execute(request, type, null); } - public T execute(final Request request, final Type type, final HostHandle hostHandle) { + public T execute(final InternalRequest request, final Type type, final HostHandle hostHandle) { return execute(request, response -> createResult(type, response), hostHandle); } - public T execute(final Request request, final ResponseDeserializer responseDeserializer) { + public T execute(final InternalRequest request, final ResponseDeserializer responseDeserializer) { return execute(request, responseDeserializer, null); } public T execute( - final Request request, + final InternalRequest request, final ResponseDeserializer responseDeserializer, final HostHandle hostHandle) { - final Response response = protocol.execute(interceptRequest(request), hostHandle); + final InternalResponse response = protocol.execute(interceptRequest(request), hostHandle); interceptResponse(response); T deserialize = responseDeserializer.deserialize(response); diff --git a/driver/src/main/java/com/arangodb/internal/ArangoRouteImpl.java b/driver/src/main/java/com/arangodb/internal/ArangoRouteImpl.java deleted file mode 100644 index b73753ddc..000000000 --- a/driver/src/main/java/com/arangodb/internal/ArangoRouteImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2018 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.internal; - -import com.arangodb.ArangoRoute; -import com.arangodb.RequestType; -import com.arangodb.Response; - -import java.util.Map; - -/** - * @author Mark Vollmary - */ -public class ArangoRouteImpl extends InternalArangoRoute - implements ArangoRoute { - - protected ArangoRouteImpl(final ArangoDatabaseImpl db, final String path, final Map headerParam) { - super(db, path, headerParam); - } - - @Override - public ArangoRoute route(final String... path) { - final String[] fullPath = new String[path.length + 1]; - fullPath[0] = this.path; - System.arraycopy(path, 0, fullPath, 1, path.length); - return new ArangoRouteImpl(db, String.join("/", fullPath), headerParam); - } - - @Override - public ArangoRoute withHeader(final String key, final Object value) { - _withHeader(key, value); - return this; - } - - @Override - public ArangoRoute withQueryParam(final String key, final Object value) { - _withQueryParam(key, value); - return this; - } - - @Override - public ArangoRoute withBody(final Object body) { - _withBody(body); - return this; - } - - private Response request(final RequestType requestType) { - return executor.execute(createRequest(requestType), response -> response); - } - - @Override - public Response delete() { - return request(RequestType.DELETE); - } - - @Override - public Response get() { - return request(RequestType.GET); - } - - @Override - public Response head() { - return request(RequestType.HEAD); - } - - @Override - public Response patch() { - return request(RequestType.PATCH); - } - - @Override - public Response post() { - return request(RequestType.POST); - } - - @Override - public Response put() { - return request(RequestType.PUT); - } - -} diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java index 2b8e625c0..e05410190 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java @@ -28,7 +28,6 @@ import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; import com.arangodb.util.RawData; -import com.arangodb.Request; import com.arangodb.RequestType; import com.fasterxml.jackson.databind.JsonNode; @@ -80,27 +79,27 @@ public String name() { return name; } - protected Request insertDocumentRequest(final T value, final DocumentCreateOptions options) { - final Request request = createInsertDocumentRequest(options); + protected InternalRequest insertDocumentRequest(final T value, final DocumentCreateOptions options) { + final InternalRequest request = createInsertDocumentRequest(options); request.setBody(getSerde().serializeUserData(value)); return request; } - protected Request insertDocumentsRequest(final RawData values, final DocumentCreateOptions options) { - Request request = createInsertDocumentRequest(options); + protected InternalRequest insertDocumentsRequest(final RawData values, final DocumentCreateOptions options) { + InternalRequest request = createInsertDocumentRequest(options); request.setBody(getSerde().serialize(values)); return request; } - protected Request insertDocumentsRequest(final Collection values, final DocumentCreateOptions options) { - Request request = createInsertDocumentRequest(options); + protected InternalRequest insertDocumentsRequest(final Collection values, final DocumentCreateOptions options) { + InternalRequest request = createInsertDocumentRequest(options); request.setBody(getSerde().serializeCollectionUserData(values)); return request; } - private Request createInsertDocumentRequest(final DocumentCreateOptions options) { + private InternalRequest createInsertDocumentRequest(final DocumentCreateOptions options) { final DocumentCreateOptions params = (options != null ? options : new DocumentCreateOptions()); - final Request request = request(db.dbName(), RequestType.POST, PATH_API_DOCUMENT, name); + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_DOCUMENT, name); request.putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()); request.putQueryParam(RETURN_NEW, params.getReturnNew()); request.putQueryParam(RETURN_OLD, params.getReturnOld()); @@ -140,16 +139,16 @@ protected ResponseDeserializer>> }; } - protected Request importDocumentsRequest(final RawData values, final DocumentImportOptions options) { + protected InternalRequest importDocumentsRequest(final RawData values, final DocumentImportOptions options) { return importDocumentsRequest(options).putQueryParam("type", ImportType.auto).setBody(getSerde().serialize(values)); } - protected Request importDocumentsRequest(final Collection values, final DocumentImportOptions options) { + protected InternalRequest importDocumentsRequest(final Collection values, final DocumentImportOptions options) { return importDocumentsRequest(options).putQueryParam("type", ImportType.list) .setBody(getSerde().serializeCollectionUserData(values)); } - protected Request importDocumentsRequest(final DocumentImportOptions options) { + protected InternalRequest importDocumentsRequest(final DocumentImportOptions options) { final DocumentImportOptions params = options != null ? options : new DocumentImportOptions(); return request(db.dbName(), RequestType.POST, PATH_API_IMPORT).putQueryParam(COLLECTION, name) .putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()) @@ -158,8 +157,8 @@ protected Request importDocumentsRequest(final DocumentImportOptions options) { .putQueryParam("complete", params.getComplete()).putQueryParam("details", params.getDetails()); } - protected Request getDocumentRequest(final String key, final DocumentReadOptions options) { - final Request request = request(db.dbName(), RequestType.GET, PATH_API_DOCUMENT, + protected InternalRequest getDocumentRequest(final String key, final DocumentReadOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.GET, PATH_API_DOCUMENT, DocumentUtil.createDocumentHandle(name, key)); final DocumentReadOptions params = (options != null ? options : new DocumentReadOptions()); request.putHeaderParam(ArangoRequestParam.IF_NONE_MATCH, params.getIfNoneMatch()); @@ -175,9 +174,9 @@ protected ResponseDeserializer getDocumentResponseDeserializer(final Clas return response -> getSerde().deserializeUserData(response.getBody(), type); } - protected Request getDocumentsRequest(final Collection keys, final DocumentReadOptions options) { + protected InternalRequest getDocumentsRequest(final Collection keys, final DocumentReadOptions options) { final DocumentReadOptions params = (options != null ? options : new DocumentReadOptions()); - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_DOCUMENT, name) + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_DOCUMENT, name) .putQueryParam("onlyget", true) .putHeaderParam(ArangoRequestParam.IF_NONE_MATCH, params.getIfNoneMatch()) .putHeaderParam(ArangoRequestParam.IF_MATCH, params.getIfMatch()).setBody(getSerde().serialize(keys)) @@ -217,28 +216,28 @@ protected ResponseDeserializer> getDocumentsResponseD }; } - protected Request replaceDocumentRequest( + protected InternalRequest replaceDocumentRequest( final String key, final T value, final DocumentReplaceOptions options) { - final Request request = createReplaceDocumentRequest(options, DocumentUtil.createDocumentHandle(name, key)); + final InternalRequest request = createReplaceDocumentRequest(options, DocumentUtil.createDocumentHandle(name, key)); request.setBody(getSerde().serializeUserData(value)); return request; } - protected Request replaceDocumentsRequest(final Collection values, final DocumentReplaceOptions options) { - final Request request = createReplaceDocumentRequest(options, name); + protected InternalRequest replaceDocumentsRequest(final Collection values, final DocumentReplaceOptions options) { + final InternalRequest request = createReplaceDocumentRequest(options, name); request.setBody(getSerde().serializeCollectionUserData(values)); return request; } - protected Request replaceDocumentsRequest(final RawData values, final DocumentReplaceOptions options) { - final Request request = createReplaceDocumentRequest(options, name); + protected InternalRequest replaceDocumentsRequest(final RawData values, final DocumentReplaceOptions options) { + final InternalRequest request = createReplaceDocumentRequest(options, name); request.setBody(getSerde().serialize(values)); return request; } - private Request createReplaceDocumentRequest(final DocumentReplaceOptions options, String path) { + private InternalRequest createReplaceDocumentRequest(final DocumentReplaceOptions options, String path) { final DocumentReplaceOptions params = (options != null ? options : new DocumentReplaceOptions()); - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_DOCUMENT, path); + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_DOCUMENT, path); request.putHeaderParam(ArangoRequestParam.IF_MATCH, params.getIfMatch()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); request.putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()); @@ -277,27 +276,27 @@ protected ResponseDeserializer>> }; } - protected Request updateDocumentRequest(final String key, final T value, final DocumentUpdateOptions options) { - final Request request = createUpdateDocumentRequest(options, DocumentUtil.createDocumentHandle(name, key)); + protected InternalRequest updateDocumentRequest(final String key, final T value, final DocumentUpdateOptions options) { + final InternalRequest request = createUpdateDocumentRequest(options, DocumentUtil.createDocumentHandle(name, key)); request.setBody(getSerde().serializeUserData(value)); return request; } - protected Request updateDocumentsRequest(final Collection values, final DocumentUpdateOptions options) { - final Request request = createUpdateDocumentRequest(options, name); + protected InternalRequest updateDocumentsRequest(final Collection values, final DocumentUpdateOptions options) { + final InternalRequest request = createUpdateDocumentRequest(options, name); request.setBody(getSerde().serializeCollectionUserData(values)); return request; } - protected Request updateDocumentsRequest(final RawData values, final DocumentUpdateOptions options) { - final Request request = createUpdateDocumentRequest(options, name); + protected InternalRequest updateDocumentsRequest(final RawData values, final DocumentUpdateOptions options) { + final InternalRequest request = createUpdateDocumentRequest(options, name); request.setBody(getSerde().serialize(values)); return request; } - private Request createUpdateDocumentRequest(final DocumentUpdateOptions options, String path) { + private InternalRequest createUpdateDocumentRequest(final DocumentUpdateOptions options, String path) { final DocumentUpdateOptions params = (options != null ? options : new DocumentUpdateOptions()); - final Request request = request(db.dbName(), RequestType.PATCH, PATH_API_DOCUMENT, path); + final InternalRequest request = request(db.dbName(), RequestType.PATCH, PATH_API_DOCUMENT, path); request.putHeaderParam(ArangoRequestParam.IF_MATCH, params.getIfMatch()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); request.putQueryParam(ArangoRequestParam.KEEP_NULL, params.getKeepNull()); @@ -338,25 +337,25 @@ protected ResponseDeserializer>> }; } - protected Request deleteDocumentRequest(final String key, final DocumentDeleteOptions options) { + protected InternalRequest deleteDocumentRequest(final String key, final DocumentDeleteOptions options) { return createDeleteDocumentRequest(options, DocumentUtil.createDocumentHandle(name, key)); } - protected Request deleteDocumentsRequest(final Collection docs, final DocumentDeleteOptions options) { - final Request request = createDeleteDocumentRequest(options, name); + protected InternalRequest deleteDocumentsRequest(final Collection docs, final DocumentDeleteOptions options) { + final InternalRequest request = createDeleteDocumentRequest(options, name); request.setBody(getSerde().serializeCollectionUserData(docs)); return request; } - protected Request deleteDocumentsRequest(final RawData docs, final DocumentDeleteOptions options) { - final Request request = createDeleteDocumentRequest(options, name); + protected InternalRequest deleteDocumentsRequest(final RawData docs, final DocumentDeleteOptions options) { + final InternalRequest request = createDeleteDocumentRequest(options, name); request.setBody(getSerde().serialize(docs)); return request; } - private Request createDeleteDocumentRequest(final DocumentDeleteOptions options, String path) { + private InternalRequest createDeleteDocumentRequest(final DocumentDeleteOptions options, String path) { final DocumentDeleteOptions params = (options != null ? options : new DocumentDeleteOptions()); - final Request request = request(db.dbName(), RequestType.DELETE, PATH_API_DOCUMENT, path); + final InternalRequest request = request(db.dbName(), RequestType.DELETE, PATH_API_DOCUMENT, path); request.putHeaderParam(ArangoRequestParam.IF_MATCH, params.getIfMatch()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); request.putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()); @@ -393,8 +392,8 @@ protected ResponseDeserializer>> }; } - protected Request documentExistsRequest(final String key, final DocumentExistsOptions options) { - final Request request = request(db.dbName(), RequestType.HEAD, PATH_API_DOCUMENT, + protected InternalRequest documentExistsRequest(final String key, final DocumentExistsOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.HEAD, PATH_API_DOCUMENT, DocumentUtil.createDocumentHandle(name, key)); final DocumentExistsOptions params = (options != null ? options : new DocumentExistsOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -403,11 +402,11 @@ protected Request documentExistsRequest(final String key, final DocumentExistsOp return request; } - protected Request getIndexRequest(final String id) { + protected InternalRequest getIndexRequest(final String id) { return request(db.dbName(), RequestType.GET, PATH_API_INDEX, createIndexId(id)); } - protected Request deleteIndexRequest(final String id) { + protected InternalRequest deleteIndexRequest(final String id) { return request(db.dbName(), RequestType.DELETE, PATH_API_INDEX, createIndexId(id)); } @@ -428,8 +427,8 @@ private String createIndexId(final String id) { } @Deprecated - protected Request createHashIndexRequest(final Iterable fields, final HashIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + protected InternalRequest createHashIndexRequest(final Iterable fields, final HashIndexOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody( getSerde().serialize(OptionsBuilder.build(options != null ? options : new HashIndexOptions(), fields))); @@ -437,8 +436,8 @@ protected Request createHashIndexRequest(final Iterable fields, final Ha } @Deprecated - protected Request createSkiplistIndexRequest(final Iterable fields, final SkiplistIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + protected InternalRequest createSkiplistIndexRequest(final Iterable fields, final SkiplistIndexOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody( getSerde().serialize(OptionsBuilder.build(options != null ? options : new SkiplistIndexOptions(), @@ -446,24 +445,24 @@ protected Request createSkiplistIndexRequest(final Iterable fields, fina return request; } - protected Request createPersistentIndexRequest( + protected InternalRequest createPersistentIndexRequest( final Iterable fields, final PersistentIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody(getSerde().serialize( OptionsBuilder.build(options != null ? options : new PersistentIndexOptions(), fields))); return request; } - protected Request createInvertedIndexRequest(final InvertedIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + protected InternalRequest createInvertedIndexRequest(final InvertedIndexOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody(getSerde().serialize(options)); return request; } - protected Request createGeoIndexRequest(final Iterable fields, final GeoIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + protected InternalRequest createGeoIndexRequest(final Iterable fields, final GeoIndexOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody( getSerde().serialize(OptionsBuilder.build(options != null ? options : new GeoIndexOptions(), fields))); @@ -471,8 +470,8 @@ protected Request createGeoIndexRequest(final Iterable fields, final Geo } @Deprecated - protected Request createFulltextIndexRequest(final Iterable fields, final FulltextIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + protected InternalRequest createFulltextIndexRequest(final Iterable fields, final FulltextIndexOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody( getSerde().serialize(OptionsBuilder.build(options != null ? options : new FulltextIndexOptions(), @@ -480,25 +479,25 @@ protected Request createFulltextIndexRequest(final Iterable fields, fina return request; } - protected Request createTtlIndexRequest(final Iterable fields, final TtlIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + protected InternalRequest createTtlIndexRequest(final Iterable fields, final TtlIndexOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody( getSerde().serialize(OptionsBuilder.build(options != null ? options : new TtlIndexOptions(), fields))); return request; } - protected Request createZKDIndexRequest( + protected InternalRequest createZKDIndexRequest( final Iterable fields, final ZKDIndexOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); request.setBody(getSerde().serialize(OptionsBuilder.build(options != null ? options : new ZKDIndexOptions().fieldValueTypes(ZKDIndexOptions.FieldValueTypes.DOUBLE), fields))); return request; } - protected Request getIndexesRequest() { - final Request request = request(db.dbName(), RequestType.GET, PATH_API_INDEX); + protected InternalRequest getIndexesRequest() { + final InternalRequest request = request(db.dbName(), RequestType.GET, PATH_API_INDEX); request.putQueryParam(COLLECTION, name); return request; } @@ -527,66 +526,66 @@ protected ResponseDeserializer> getInvertedIndex }; } - protected Request truncateRequest(final CollectionTruncateOptions options) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "truncate"); + protected InternalRequest truncateRequest(final CollectionTruncateOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "truncate"); final CollectionTruncateOptions params = (options != null ? options : new CollectionTruncateOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); return request; } - protected Request countRequest(final CollectionCountOptions options) { - final Request request = request(db.dbName(), RequestType.GET, PATH_API_COLLECTION, name, "count"); + protected InternalRequest countRequest(final CollectionCountOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.GET, PATH_API_COLLECTION, name, "count"); final CollectionCountOptions params = (options != null ? options : new CollectionCountOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); return request; } - protected Request dropRequest(final Boolean isSystem) { + protected InternalRequest dropRequest(final Boolean isSystem) { return request(db.dbName(), RequestType.DELETE, PATH_API_COLLECTION, name).putQueryParam("isSystem", isSystem); } - protected Request getInfoRequest() { + protected InternalRequest getInfoRequest() { return request(db.dbName(), RequestType.GET, PATH_API_COLLECTION, name); } - protected Request getPropertiesRequest() { + protected InternalRequest getPropertiesRequest() { return request(db.dbName(), RequestType.GET, PATH_API_COLLECTION, name, "properties"); } - protected Request changePropertiesRequest(final CollectionPropertiesOptions options) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "properties"); + protected InternalRequest changePropertiesRequest(final CollectionPropertiesOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "properties"); request.setBody(getSerde().serialize(options != null ? options : new CollectionPropertiesOptions())); return request; } - protected Request renameRequest(final String newName) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "rename"); + protected InternalRequest renameRequest(final String newName) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "rename"); request.setBody(getSerde().serialize(OptionsBuilder.build(new CollectionRenameOptions(), newName))); return request; } - protected Request responsibleShardRequest(final T value) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "responsibleShard"); + protected InternalRequest responsibleShardRequest(final T value) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_COLLECTION, name, "responsibleShard"); request.setBody(getSerde().serializeUserData(value)); return request; } - protected Request getRevisionRequest() { + protected InternalRequest getRevisionRequest() { return request(db.dbName(), RequestType.GET, PATH_API_COLLECTION, name, "revision"); } - protected Request grantAccessRequest(final String user, final Permissions permissions) { + protected InternalRequest grantAccessRequest(final String user, final Permissions permissions) { return request(DbName.SYSTEM, RequestType.PUT, PATH_API_USER, user, ArangoRequestParam.DATABASE, db.dbName().get(), name).setBody(getSerde().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } - protected Request resetAccessRequest(final String user) { + protected InternalRequest resetAccessRequest(final String user) { return request(DbName.SYSTEM, RequestType.DELETE, PATH_API_USER, user, ArangoRequestParam.DATABASE, db.dbName().get(), name); } - protected Request getPermissionsRequest(final String user) { + protected InternalRequest getPermissionsRequest(final String user) { return request(DbName.SYSTEM, RequestType.GET, PATH_API_USER, user, ArangoRequestParam.DATABASE, db.dbName().get(), name); } diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java b/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java index 25376bade..39f920b22 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java @@ -28,7 +28,6 @@ import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.model.*; -import com.arangodb.Request; import com.arangodb.RequestType; import java.util.ArrayList; @@ -53,11 +52,11 @@ protected InternalArangoDB(final E executor, final InternalSerde util) { super(executor, util); } - protected Request getRoleRequest() { + protected InternalRequest getRoleRequest() { return request(DbName.SYSTEM, RequestType.GET, PATH_API_ROLE); } - protected Request getServerIdRequest() { + protected InternalRequest getServerIdRequest() { return request(DbName.SYSTEM, RequestType.GET, PATH_API_SERVER_ID); } @@ -69,8 +68,8 @@ protected ResponseDeserializer getServerIdResponseDeserializer() { return response -> getSerde().deserialize(response.getBody(), "/id", String.class); } - protected Request createDatabaseRequest(final DBCreateOptions options) { - final Request request = request(DbName.SYSTEM, RequestType.POST, + protected InternalRequest createDatabaseRequest(final DBCreateOptions options) { + final InternalRequest request = request(DbName.SYSTEM, RequestType.POST, InternalArangoDatabase.PATH_API_DATABASE); request.setBody(getSerde().serialize(options)); return request; @@ -81,7 +80,7 @@ protected ResponseDeserializer createDatabaseResponseDeserializer() { Boolean.class); } - protected Request getDatabasesRequest(final DbName dbName) { + protected InternalRequest getDatabasesRequest(final DbName dbName) { return request(dbName, RequestType.GET, InternalArangoDatabase.PATH_API_DATABASE); } @@ -90,7 +89,7 @@ protected ResponseDeserializer> getDatabaseResponseDeserializ constructListType(String.class)); } - protected Request getAccessibleDatabasesForRequest(final DbName dbName, final String user) { + protected InternalRequest getAccessibleDatabasesForRequest(final DbName dbName, final String user) { return request(dbName, RequestType.GET, PATH_API_USER, user, ArangoRequestParam.DATABASE); } @@ -106,12 +105,12 @@ protected ResponseDeserializer> getAccessibleDatabasesForResp }; } - protected Request createUserRequest( + protected InternalRequest createUserRequest( final DbName dbName, final String user, final String passwd, final UserCreateOptions options) { - final Request request; + final InternalRequest request; request = request(dbName, RequestType.POST, PATH_API_USER); request.setBody( getSerde().serialize(OptionsBuilder.build(options != null ? options : new UserCreateOptions(), user, @@ -119,15 +118,15 @@ protected Request createUserRequest( return request; } - protected Request deleteUserRequest(final DbName dbName, final String user) { + protected InternalRequest deleteUserRequest(final DbName dbName, final String user) { return request(dbName, RequestType.DELETE, PATH_API_USER, user); } - protected Request getUsersRequest(final DbName dbName) { + protected InternalRequest getUsersRequest(final DbName dbName) { return request(dbName, RequestType.GET, PATH_API_USER); } - protected Request getUserRequest(final DbName dbName, final String user) { + protected InternalRequest getUserRequest(final DbName dbName, final String user) { return request(dbName, RequestType.GET, PATH_API_USER, user); } @@ -136,31 +135,31 @@ protected ResponseDeserializer> getUsersResponseDeseriali constructListType(UserEntity.class)); } - protected Request updateUserRequest(final DbName dbName, final String user, final UserUpdateOptions options) { - final Request request; + protected InternalRequest updateUserRequest(final DbName dbName, final String user, final UserUpdateOptions options) { + final InternalRequest request; request = request(dbName, RequestType.PATCH, PATH_API_USER, user); request.setBody(getSerde().serialize(options != null ? options : new UserUpdateOptions())); return request; } - protected Request replaceUserRequest(final DbName dbName, final String user, final UserUpdateOptions options) { - final Request request; + protected InternalRequest replaceUserRequest(final DbName dbName, final String user, final UserUpdateOptions options) { + final InternalRequest request; request = request(dbName, RequestType.PUT, PATH_API_USER, user); request.setBody(getSerde().serialize(options != null ? options : new UserUpdateOptions())); return request; } - protected Request updateUserDefaultDatabaseAccessRequest(final String user, final Permissions permissions) { + protected InternalRequest updateUserDefaultDatabaseAccessRequest(final String user, final Permissions permissions) { return request(DbName.SYSTEM, RequestType.PUT, PATH_API_USER, user, ArangoRequestParam.DATABASE, "*").setBody(getSerde().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } - protected Request updateUserDefaultCollectionAccessRequest(final String user, final Permissions permissions) { + protected InternalRequest updateUserDefaultCollectionAccessRequest(final String user, final Permissions permissions) { return request(DbName.SYSTEM, RequestType.PUT, PATH_API_USER, user, ArangoRequestParam.DATABASE, "*", "*").setBody(getSerde().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } - protected Request getLogEntriesRequest(final LogOptions options) { + protected InternalRequest getLogEntriesRequest(final LogOptions options) { final LogOptions params = options != null ? options : new LogOptions(); return request(DbName.SYSTEM, RequestType.GET, PATH_API_ADMIN_LOG_ENTRIES) .putQueryParam(LogOptions.PROPERTY_UPTO, params.getUpto()) @@ -172,16 +171,16 @@ protected Request getLogEntriesRequest(final LogOptions options) { .putQueryParam(LogOptions.PROPERTY_SORT, params.getSort()); } - protected Request getLogLevelRequest() { + protected InternalRequest getLogLevelRequest() { return request(DbName.SYSTEM, RequestType.GET, PATH_API_ADMIN_LOG_LEVEL); } - protected Request setLogLevelRequest(final LogLevelEntity entity) { + protected InternalRequest setLogLevelRequest(final LogLevelEntity entity) { return request(DbName.SYSTEM, RequestType.PUT, PATH_API_ADMIN_LOG_LEVEL) .setBody(getSerde().serialize(entity)); } - protected Request getQueryOptimizerRulesRequest() { + protected InternalRequest getQueryOptimizerRulesRequest() { return request(DbName.SYSTEM, RequestType.GET, PATH_API_QUERY_RULES); } diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java index 8841570ef..b3f2a61cf 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java @@ -27,7 +27,6 @@ import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; import com.arangodb.model.arangosearch.*; -import com.arangodb.Request; import com.arangodb.RequestType; import java.util.Collection; @@ -81,19 +80,19 @@ protected ResponseDeserializer> getDatabaseResponseDeserializ return arango.getDatabaseResponseDeserializer(); } - protected Request getAccessibleDatabasesRequest() { + protected InternalRequest getAccessibleDatabasesRequest() { return request(dbName, RequestType.GET, PATH_API_DATABASE, "user"); } - protected Request getVersionRequest() { + protected InternalRequest getVersionRequest() { return request(dbName, RequestType.GET, PATH_API_VERSION); } - protected Request getEngineRequest() { + protected InternalRequest getEngineRequest() { return request(dbName, RequestType.GET, PATH_API_ENGINE); } - protected Request createCollectionRequest(final String name, final CollectionCreateOptions options) { + protected InternalRequest createCollectionRequest(final String name, final CollectionCreateOptions options) { byte[] body = getSerde().serialize(OptionsBuilder.build(options != null ? options : new CollectionCreateOptions(), name)); @@ -101,8 +100,8 @@ protected Request createCollectionRequest(final String name, final CollectionCre return request(dbName, RequestType.POST, InternalArangoCollection.PATH_API_COLLECTION).setBody(body); } - protected Request getCollectionsRequest(final CollectionsReadOptions options) { - final Request request; + protected InternalRequest getCollectionsRequest(final CollectionsReadOptions options) { + final InternalRequest request; request = request(dbName, RequestType.GET, InternalArangoCollection.PATH_API_COLLECTION); final CollectionsReadOptions params = (options != null ? options : new CollectionsReadOptions()); request.putQueryParam("excludeSystem", params.getExcludeSystem()); @@ -114,7 +113,7 @@ protected ResponseDeserializer> getCollectionsRespo constructListType(CollectionEntity.class)); } - protected Request dropRequest() { + protected InternalRequest dropRequest() { return request(DbName.SYSTEM, RequestType.DELETE, PATH_API_DATABASE, dbName.get()); } @@ -123,22 +122,22 @@ protected ResponseDeserializer createDropResponseDeserializer() { Boolean.class); } - protected Request grantAccessRequest(final String user, final Permissions permissions) { + protected InternalRequest grantAccessRequest(final String user, final Permissions permissions) { return request(DbName.SYSTEM, RequestType.PUT, PATH_API_USER, user, ArangoRequestParam.DATABASE, dbName.get()).setBody(getSerde().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } - protected Request resetAccessRequest(final String user) { + protected InternalRequest resetAccessRequest(final String user) { return request(DbName.SYSTEM, RequestType.DELETE, PATH_API_USER, user, ArangoRequestParam.DATABASE, dbName.get()); } - protected Request updateUserDefaultCollectionAccessRequest(final String user, final Permissions permissions) { + protected InternalRequest updateUserDefaultCollectionAccessRequest(final String user, final Permissions permissions) { return request(DbName.SYSTEM, RequestType.PUT, PATH_API_USER, user, ArangoRequestParam.DATABASE, dbName.get() , "*").setBody(getSerde().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } - protected Request getPermissionsRequest(final String user) { + protected InternalRequest getPermissionsRequest(final String user) { return request(DbName.SYSTEM, RequestType.GET, PATH_API_USER, user, ArangoRequestParam.DATABASE, dbName.get()); } @@ -147,10 +146,10 @@ protected ResponseDeserializer getPermissionsResponseDeserialzer() Permissions.class); } - protected Request queryRequest(final String query, final Map bindVars, - final AqlQueryOptions options) { + protected InternalRequest queryRequest(final String query, final Map bindVars, + final AqlQueryOptions options) { final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions(); - final Request request = request(dbName, RequestType.POST, PATH_API_CURSOR) + final InternalRequest request = request(dbName, RequestType.POST, PATH_API_CURSOR) .setBody(getSerde().serialize(OptionsBuilder.build(opt, query, bindVars))); if (Boolean.TRUE.equals(opt.getAllowDirtyRead())) { RequestUtils.allowDirtyRead(request); @@ -159,9 +158,9 @@ protected Request queryRequest(final String query, final Map bin return request; } - protected Request queryNextRequest(final String id, final AqlQueryOptions options, Map meta) { + protected InternalRequest queryNextRequest(final String id, final AqlQueryOptions options, Map meta) { - final Request request = request(dbName, RequestType.POST, PATH_API_CURSOR, id); + final InternalRequest request = request(dbName, RequestType.POST, PATH_API_CURSOR, id); request.putHeaderParams(meta); final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions(); @@ -173,9 +172,9 @@ protected Request queryNextRequest(final String id, final AqlQueryOptions option return request; } - protected Request queryCloseRequest(final String id, final AqlQueryOptions options, Map meta) { + protected InternalRequest queryCloseRequest(final String id, final AqlQueryOptions options, Map meta) { - final Request request = request(dbName, RequestType.DELETE, PATH_API_CURSOR, id); + final InternalRequest request = request(dbName, RequestType.DELETE, PATH_API_CURSOR, id); request.putHeaderParams(meta); final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions(); @@ -187,60 +186,60 @@ protected Request queryCloseRequest(final String id, final AqlQueryOptions optio return request; } - protected Request explainQueryRequest(final String query, final Map bindVars, - final AqlQueryExplainOptions options) { + protected InternalRequest explainQueryRequest(final String query, final Map bindVars, + final AqlQueryExplainOptions options) { final AqlQueryExplainOptions opt = options != null ? options : new AqlQueryExplainOptions(); return request(dbName, RequestType.POST, PATH_API_EXPLAIN) .setBody(getSerde().serialize(OptionsBuilder.build(opt, query, bindVars))); } - protected Request parseQueryRequest(final String query) { + protected InternalRequest parseQueryRequest(final String query) { return request(dbName, RequestType.POST, PATH_API_QUERY).setBody(getSerde().serialize(OptionsBuilder.build(new AqlQueryParseOptions(), query))); } - protected Request clearQueryCacheRequest() { + protected InternalRequest clearQueryCacheRequest() { return request(dbName, RequestType.DELETE, PATH_API_QUERY_CACHE); } - protected Request getQueryCachePropertiesRequest() { + protected InternalRequest getQueryCachePropertiesRequest() { return request(dbName, RequestType.GET, PATH_API_QUERY_CACHE_PROPERTIES); } - protected Request setQueryCachePropertiesRequest(final QueryCachePropertiesEntity properties) { + protected InternalRequest setQueryCachePropertiesRequest(final QueryCachePropertiesEntity properties) { return request(dbName, RequestType.PUT, PATH_API_QUERY_CACHE_PROPERTIES).setBody(getSerde().serialize(properties)); } - protected Request getQueryTrackingPropertiesRequest() { + protected InternalRequest getQueryTrackingPropertiesRequest() { return request(dbName, RequestType.GET, PATH_API_QUERY_PROPERTIES); } - protected Request setQueryTrackingPropertiesRequest(final QueryTrackingPropertiesEntity properties) { + protected InternalRequest setQueryTrackingPropertiesRequest(final QueryTrackingPropertiesEntity properties) { return request(dbName, RequestType.PUT, PATH_API_QUERY_PROPERTIES).setBody(getSerde().serialize(properties)); } - protected Request getCurrentlyRunningQueriesRequest() { + protected InternalRequest getCurrentlyRunningQueriesRequest() { return request(dbName, RequestType.GET, PATH_API_QUERY_CURRENT); } - protected Request getSlowQueriesRequest() { + protected InternalRequest getSlowQueriesRequest() { return request(dbName, RequestType.GET, PATH_API_QUERY_SLOW); } - protected Request clearSlowQueriesRequest() { + protected InternalRequest clearSlowQueriesRequest() { return request(dbName, RequestType.DELETE, PATH_API_QUERY_SLOW); } - protected Request killQueryRequest(final String id) { + protected InternalRequest killQueryRequest(final String id) { return request(dbName, RequestType.DELETE, PATH_API_QUERY, id); } - protected Request createAqlFunctionRequest(final String name, final String code, - final AqlFunctionCreateOptions options) { + protected InternalRequest createAqlFunctionRequest(final String name, final String code, + final AqlFunctionCreateOptions options) { return request(dbName, RequestType.POST, PATH_API_AQLFUNCTION).setBody(getSerde().serialize(OptionsBuilder.build(options != null ? options : new AqlFunctionCreateOptions(), name, code))); } - protected Request deleteAqlFunctionRequest(final String name, final AqlFunctionDeleteOptions options) { - final Request request = request(dbName, RequestType.DELETE, PATH_API_AQLFUNCTION, name); + protected InternalRequest deleteAqlFunctionRequest(final String name, final AqlFunctionDeleteOptions options) { + final InternalRequest request = request(dbName, RequestType.DELETE, PATH_API_AQLFUNCTION, name); final AqlFunctionDeleteOptions params = options != null ? options : new AqlFunctionDeleteOptions(); request.putQueryParam("group", params.getGroup()); return request; @@ -250,8 +249,8 @@ protected ResponseDeserializer deleteAqlFunctionResponseDeserializer() return response -> getSerde().deserialize(response.getBody(), "/deletedCount", Integer.class); } - protected Request getAqlFunctionsRequest(final AqlFunctionGetOptions options) { - final Request request = request(dbName, RequestType.GET, PATH_API_AQLFUNCTION); + protected InternalRequest getAqlFunctionsRequest(final AqlFunctionGetOptions options) { + final InternalRequest request = request(dbName, RequestType.GET, PATH_API_AQLFUNCTION); final AqlFunctionGetOptions params = options != null ? options : new AqlFunctionGetOptions(); request.putQueryParam("namespace", params.getNamespace()); return request; @@ -262,8 +261,8 @@ protected ResponseDeserializer> getAqlFunctionsRes constructListType(AqlFunctionEntity.class)); } - protected Request createGraphRequest(final String name, final Collection edgeDefinitions, - final GraphCreateOptions options) { + protected InternalRequest createGraphRequest(final String name, final Collection edgeDefinitions, + final GraphCreateOptions options) { return request(dbName, RequestType.POST, InternalArangoGraph.PATH_API_GHARIAL).setBody(getSerde().serialize(OptionsBuilder.build(options != null ? options : new GraphCreateOptions(), name, edgeDefinitions))); } @@ -271,7 +270,7 @@ protected ResponseDeserializer createGraphResponseDeserializer() { return response -> getSerde().deserialize(response.getBody(), "/graph", GraphEntity.class); } - protected Request getGraphsRequest() { + protected InternalRequest getGraphsRequest() { return request(dbName, RequestType.GET, InternalArangoGraph.PATH_API_GHARIAL); } @@ -280,7 +279,7 @@ protected ResponseDeserializer> getGraphsResponseDeseria constructListType(GraphEntity.class)); } - protected Request transactionRequest(final String action, final TransactionOptions options) { + protected InternalRequest transactionRequest(final String action, final TransactionOptions options) { return request(dbName, RequestType.POST, PATH_API_TRANSACTION).setBody(getSerde().serialize(OptionsBuilder.build(options != null ? options : new TransactionOptions(), action))); } @@ -291,24 +290,24 @@ protected ResponseDeserializer transactionResponseDeserializer(final Clas }; } - protected Request beginStreamTransactionRequest(final StreamTransactionOptions options) { + protected InternalRequest beginStreamTransactionRequest(final StreamTransactionOptions options) { StreamTransactionOptions opts = options != null ? options : new StreamTransactionOptions(); - Request r = request(dbName, RequestType.POST, PATH_API_BEGIN_STREAM_TRANSACTION).setBody(getSerde().serialize(opts)); + InternalRequest r = request(dbName, RequestType.POST, PATH_API_BEGIN_STREAM_TRANSACTION).setBody(getSerde().serialize(opts)); if(Boolean.TRUE.equals(opts.getAllowDirtyRead())) { RequestUtils.allowDirtyRead(r); } return r; } - protected Request abortStreamTransactionRequest(String id) { + protected InternalRequest abortStreamTransactionRequest(String id) { return request(dbName, RequestType.DELETE, PATH_API_TRANSACTION, id); } - protected Request getStreamTransactionsRequest() { + protected InternalRequest getStreamTransactionsRequest() { return request(dbName, RequestType.GET, PATH_API_TRANSACTION); } - protected Request getStreamTransactionRequest(String id) { + protected InternalRequest getStreamTransactionRequest(String id) { return request(dbName, RequestType.GET, PATH_API_TRANSACTION, id); } @@ -317,7 +316,7 @@ protected ResponseDeserializer> transactionsRespon constructListType(TransactionEntity.class)); } - protected Request commitStreamTransactionRequest(String id) { + protected InternalRequest commitStreamTransactionRequest(String id) { return request(dbName, RequestType.PUT, PATH_API_TRANSACTION, id); } @@ -326,7 +325,7 @@ protected ResponseDeserializer streamTransactionRespons StreamTransactionEntity.class); } - protected Request getInfoRequest() { + protected InternalRequest getInfoRequest() { return request(dbName, RequestType.GET, PATH_API_DATABASE, "current"); } @@ -335,11 +334,11 @@ protected ResponseDeserializer getInfoResponseDeserializer() { DatabaseEntity.class); } - protected Request reloadRoutingRequest() { + protected InternalRequest reloadRoutingRequest() { return request(dbName, RequestType.POST, PATH_API_ADMIN_ROUTING_RELOAD); } - protected Request getViewsRequest() { + protected InternalRequest getViewsRequest() { return request(dbName, RequestType.GET, InternalArangoView.PATH_API_VIEW); } @@ -348,24 +347,24 @@ protected ResponseDeserializer> getViewsResponseDeseriali constructListType(ViewEntity.class)); } - protected Request createViewRequest(final String name, final ViewType type) { + protected InternalRequest createViewRequest(final String name, final ViewType type) { return request(dbName, RequestType.POST, InternalArangoView.PATH_API_VIEW).setBody(getSerde().serialize(OptionsBuilder.build(new ViewCreateOptions(), name, type))); } - protected Request createArangoSearchRequest(final String name, final ArangoSearchCreateOptions options) { + protected InternalRequest createArangoSearchRequest(final String name, final ArangoSearchCreateOptions options) { return request(dbName, RequestType.POST, InternalArangoView.PATH_API_VIEW).setBody(getSerde().serialize(ArangoSearchOptionsBuilder.build(options != null ? options : new ArangoSearchCreateOptions(), name))); } - protected Request createSearchAliasRequest(final String name, final SearchAliasCreateOptions options) { + protected InternalRequest createSearchAliasRequest(final String name, final SearchAliasCreateOptions options) { return request(dbName, RequestType.POST, InternalArangoView.PATH_API_VIEW).setBody(getSerde().serialize( SearchAliasOptionsBuilder.build(options != null ? options : new SearchAliasCreateOptions(), name))); } - protected Request getAnalyzerRequest(final String name) { + protected InternalRequest getAnalyzerRequest(final String name) { return request(dbName, RequestType.GET, InternalArangoView.PATH_API_ANALYZER, name); } - protected Request getAnalyzersRequest() { + protected InternalRequest getAnalyzersRequest() { return request(dbName, RequestType.GET, InternalArangoView.PATH_API_ANALYZER); } @@ -374,12 +373,12 @@ protected ResponseDeserializer> getSearchAnalyzersRes constructListType(SearchAnalyzer.class)); } - protected Request createAnalyzerRequest(final SearchAnalyzer options) { + protected InternalRequest createAnalyzerRequest(final SearchAnalyzer options) { return request(dbName, RequestType.POST, InternalArangoView.PATH_API_ANALYZER).setBody(getSerde().serialize(options)); } - protected Request deleteAnalyzerRequest(final String name, final AnalyzerDeleteOptions options) { - Request request = request(dbName, RequestType.DELETE, InternalArangoView.PATH_API_ANALYZER, name); + protected InternalRequest deleteAnalyzerRequest(final String name, final AnalyzerDeleteOptions options) { + InternalRequest request = request(dbName, RequestType.DELETE, InternalArangoView.PATH_API_ANALYZER, name); request.putQueryParam("force", options != null ? options.getForce() : null); return request; } diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java b/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java index 89bb70423..8dd921d6e 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java @@ -26,7 +26,6 @@ import com.arangodb.internal.util.DocumentUtil; import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; -import com.arangodb.Request; import com.arangodb.RequestType; /** @@ -58,8 +57,8 @@ public String name() { return name; } - protected Request insertEdgeRequest(final T value, final EdgeCreateOptions options) { - final Request request = request(graph.db().dbName(), RequestType.POST, PATH_API_GHARIAL, graph.name(), EDGE_PATH, + protected InternalRequest insertEdgeRequest(final T value, final EdgeCreateOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.POST, PATH_API_GHARIAL, graph.name(), EDGE_PATH, name); final EdgeCreateOptions params = (options != null ? options : new EdgeCreateOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -72,8 +71,8 @@ protected ResponseDeserializer insertEdgeResponseDeserializer() { return response -> getSerde().deserialize(response.getBody(), EDGE_JSON_POINTER, EdgeEntity.class); } - protected Request getEdgeRequest(final String key, final GraphDocumentReadOptions options) { - final Request request = request(graph.db().dbName(), RequestType.GET, PATH_API_GHARIAL, graph.name(), EDGE_PATH, + protected InternalRequest getEdgeRequest(final String key, final GraphDocumentReadOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.GET, PATH_API_GHARIAL, graph.name(), EDGE_PATH, DocumentUtil.createDocumentHandle(name, key)); final GraphDocumentReadOptions params = (options != null ? options : new GraphDocumentReadOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -89,8 +88,8 @@ protected ResponseDeserializer getEdgeResponseDeserializer(final Class return response -> getSerde().deserializeUserData(getSerde().extract(response.getBody(), EDGE_JSON_POINTER), type); } - protected Request replaceEdgeRequest(final String key, final T value, final EdgeReplaceOptions options) { - final Request request = request(graph.db().dbName(), RequestType.PUT, PATH_API_GHARIAL, graph.name(), EDGE_PATH, + protected InternalRequest replaceEdgeRequest(final String key, final T value, final EdgeReplaceOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.PUT, PATH_API_GHARIAL, graph.name(), EDGE_PATH, DocumentUtil.createDocumentHandle(name, key)); final EdgeReplaceOptions params = (options != null ? options : new EdgeReplaceOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -104,8 +103,8 @@ protected ResponseDeserializer replaceEdgeResponseDeserializer return response -> getSerde().deserialize(response.getBody(), EDGE_JSON_POINTER, EdgeUpdateEntity.class); } - protected Request updateEdgeRequest(final String key, final T value, final EdgeUpdateOptions options) { - final Request request; + protected InternalRequest updateEdgeRequest(final String key, final T value, final EdgeUpdateOptions options) { + final InternalRequest request; request = request(graph.db().dbName(), RequestType.PATCH, PATH_API_GHARIAL, graph.name(), EDGE_PATH, DocumentUtil.createDocumentHandle(name, key)); final EdgeUpdateOptions params = (options != null ? options : new EdgeUpdateOptions()); @@ -121,8 +120,8 @@ protected ResponseDeserializer updateEdgeResponseDeserializer( return response -> getSerde().deserialize(response.getBody(), EDGE_JSON_POINTER, EdgeUpdateEntity.class); } - protected Request deleteEdgeRequest(final String key, final EdgeDeleteOptions options) { - final Request request = request(graph.db().dbName(), RequestType.DELETE, PATH_API_GHARIAL, graph.name(), EDGE_PATH, + protected InternalRequest deleteEdgeRequest(final String key, final EdgeDeleteOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.DELETE, PATH_API_GHARIAL, graph.name(), EDGE_PATH, DocumentUtil.createDocumentHandle(name, key)); final EdgeDeleteOptions params = (options != null ? options : new EdgeDeleteOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java b/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java index 8c874c041..39deb94b0 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java @@ -25,7 +25,6 @@ import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.model.OptionsBuilder; import com.arangodb.model.VertexCollectionCreateOptions; -import com.arangodb.Request; import com.arangodb.RequestType; import java.util.Collection; @@ -61,19 +60,19 @@ public String name() { return name; } - protected Request dropRequest() { + protected InternalRequest dropRequest() { return dropRequest(false); } - protected Request dropRequest(final boolean dropCollections) { - final Request request = request(db.dbName(), RequestType.DELETE, PATH_API_GHARIAL, name); + protected InternalRequest dropRequest(final boolean dropCollections) { + final InternalRequest request = request(db.dbName(), RequestType.DELETE, PATH_API_GHARIAL, name); if (dropCollections) { request.putQueryParam("dropCollections", true); } return request; } - protected Request getInfoRequest() { + protected InternalRequest getInfoRequest() { return request(db.dbName(), RequestType.GET, PATH_API_GHARIAL, name); } @@ -81,7 +80,7 @@ protected ResponseDeserializer getInfoResponseDeserializer() { return addVertexCollectionResponseDeserializer(); } - protected Request getVertexCollectionsRequest() { + protected InternalRequest getVertexCollectionsRequest() { return request(db.dbName(), RequestType.GET, PATH_API_GHARIAL, name, VERTEX); } @@ -90,8 +89,8 @@ protected ResponseDeserializer> getVertexCollectionsResponseD constructListType(String.class)); } - protected Request addVertexCollectionRequest(final String name, final VertexCollectionCreateOptions options) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_GHARIAL, name(), VERTEX); + protected InternalRequest addVertexCollectionRequest(final String name, final VertexCollectionCreateOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_GHARIAL, name(), VERTEX); request.setBody(getSerde().serialize(OptionsBuilder.build(options, name))); return request; } @@ -100,7 +99,7 @@ protected ResponseDeserializer addVertexCollectionResponseDeseriali return addEdgeDefinitionResponseDeserializer(); } - protected Request getEdgeDefinitionsRequest() { + protected InternalRequest getEdgeDefinitionsRequest() { return request(db.dbName(), RequestType.GET, PATH_API_GHARIAL, name, EDGE); } @@ -109,8 +108,8 @@ protected ResponseDeserializer> getEdgeDefinitionsDeserialize constructListType(String.class)); } - protected Request addEdgeDefinitionRequest(final EdgeDefinition definition) { - final Request request = request(db.dbName(), RequestType.POST, PATH_API_GHARIAL, name, EDGE); + protected InternalRequest addEdgeDefinitionRequest(final EdgeDefinition definition) { + final InternalRequest request = request(db.dbName(), RequestType.POST, PATH_API_GHARIAL, name, EDGE); request.setBody(getSerde().serialize(definition)); return request; } @@ -119,8 +118,8 @@ protected ResponseDeserializer addEdgeDefinitionResponseDeserialize return response -> getSerde().deserialize(response.getBody(), GRAPH, GraphEntity.class); } - protected Request replaceEdgeDefinitionRequest(final EdgeDefinition definition) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_GHARIAL, name, EDGE, + protected InternalRequest replaceEdgeDefinitionRequest(final EdgeDefinition definition) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_GHARIAL, name, EDGE, definition.getCollection()); request.setBody(getSerde().serialize(definition)); return request; @@ -130,7 +129,7 @@ protected ResponseDeserializer replaceEdgeDefinitionResponseDeseria return response -> getSerde().deserialize(response.getBody(), GRAPH, GraphEntity.class); } - protected Request removeEdgeDefinitionRequest(final String definitionName) { + protected InternalRequest removeEdgeDefinitionRequest(final String definitionName) { return request(db.dbName(), RequestType.DELETE, PATH_API_GHARIAL, name, EDGE, definitionName); } diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java b/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java index 78e782d68..38a0e9144 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java @@ -20,7 +20,6 @@ package com.arangodb.internal; -import com.arangodb.Request; import com.arangodb.RequestType; import java.util.HashMap; @@ -66,8 +65,8 @@ public void _withBody(final Object body) { this.body = body; } - protected Request createRequest(final RequestType requestType) { - final Request request = request(db.dbName(), requestType, path); + protected InternalRequest createRequest(final RequestType requestType) { + final InternalRequest request = request(db.dbName(), requestType, path); for (final Entry param : headerParam.entrySet()) { request.putHeaderParam(param.getKey(), param.getValue()); } diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java b/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java index e4c3d5fc9..d4a8eec8c 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java @@ -21,7 +21,6 @@ package com.arangodb.internal; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; -import com.arangodb.Request; import com.arangodb.RequestType; /** @@ -37,18 +36,18 @@ protected InternalArangoSearch(final D db, final String name) { super(db, name); } - protected Request getPropertiesRequest() { + protected InternalRequest getPropertiesRequest() { return request(db.dbName(), RequestType.GET, PATH_API_VIEW, name, PROPERTIES_PATH); } - protected Request replacePropertiesRequest(final ArangoSearchPropertiesOptions options) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_VIEW, name, PROPERTIES_PATH); + protected InternalRequest replacePropertiesRequest(final ArangoSearchPropertiesOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_VIEW, name, PROPERTIES_PATH); request.setBody(getSerde().serialize(options != null ? options : new ArangoSearchPropertiesOptions())); return request; } - protected Request updatePropertiesRequest(final ArangoSearchPropertiesOptions options) { - final Request request = request(db.dbName(), RequestType.PATCH, PATH_API_VIEW, name, PROPERTIES_PATH); + protected InternalRequest updatePropertiesRequest(final ArangoSearchPropertiesOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.PATCH, PATH_API_VIEW, name, PROPERTIES_PATH); request.setBody(getSerde().serialize(options != null ? options : new ArangoSearchPropertiesOptions())); return request; } diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java b/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java index 58a3d6d9f..1f69a9eea 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java @@ -26,7 +26,6 @@ import com.arangodb.internal.util.DocumentUtil; import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; -import com.arangodb.Request; import com.arangodb.RequestType; /** @@ -58,12 +57,12 @@ public String name() { return name; } - protected Request dropRequest() { + protected InternalRequest dropRequest() { return request(graph.db().dbName(), RequestType.DELETE, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, name); } - protected Request insertVertexRequest(final T value, final VertexCreateOptions options) { - final Request request = request(graph.db().dbName(), RequestType.POST, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, + protected InternalRequest insertVertexRequest(final T value, final VertexCreateOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.POST, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, name); final VertexCreateOptions params = (options != null ? options : new VertexCreateOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -76,8 +75,8 @@ protected ResponseDeserializer insertVertexResponseDeserializer() return response -> getSerde().deserialize(response.getBody(), VERTEX_JSON_POINTER, VertexEntity.class); } - protected Request getVertexRequest(final String key, final GraphDocumentReadOptions options) { - final Request request = request(graph.db().dbName(), RequestType.GET, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, + protected InternalRequest getVertexRequest(final String key, final GraphDocumentReadOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.GET, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, DocumentUtil.createDocumentHandle(name, key)); final GraphDocumentReadOptions params = (options != null ? options : new GraphDocumentReadOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -93,8 +92,8 @@ protected ResponseDeserializer getVertexResponseDeserializer(final Class< return response -> getSerde().deserializeUserData(getSerde().extract(response.getBody(), VERTEX_JSON_POINTER), type); } - protected Request replaceVertexRequest(final String key, final T value, final VertexReplaceOptions options) { - final Request request = request(graph.db().dbName(), RequestType.PUT, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, + protected InternalRequest replaceVertexRequest(final String key, final T value, final VertexReplaceOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.PUT, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, DocumentUtil.createDocumentHandle(name, key)); final VertexReplaceOptions params = (options != null ? options : new VertexReplaceOptions()); request.putHeaderParam(TRANSACTION_ID, params.getStreamTransactionId()); @@ -108,8 +107,8 @@ protected ResponseDeserializer replaceVertexResponseDeserial return response -> getSerde().deserialize(response.getBody(), VERTEX_JSON_POINTER, VertexUpdateEntity.class); } - protected Request updateVertexRequest(final String key, final T value, final VertexUpdateOptions options) { - final Request request; + protected InternalRequest updateVertexRequest(final String key, final T value, final VertexUpdateOptions options) { + final InternalRequest request; request = request(graph.db().dbName(), RequestType.PATCH, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, DocumentUtil.createDocumentHandle(name, key)); final VertexUpdateOptions params = (options != null ? options : new VertexUpdateOptions()); @@ -125,8 +124,8 @@ protected ResponseDeserializer updateVertexResponseDeseriali return response -> getSerde().deserialize(response.getBody(), VERTEX_JSON_POINTER, VertexUpdateEntity.class); } - protected Request deleteVertexRequest(final String key, final VertexDeleteOptions options) { - final Request request = request(graph.db().dbName(), RequestType.DELETE, PATH_API_GHARIAL, graph.name(), + protected InternalRequest deleteVertexRequest(final String key, final VertexDeleteOptions options) { + final InternalRequest request = request(graph.db().dbName(), RequestType.DELETE, PATH_API_GHARIAL, graph.name(), VERTEX_PATH, DocumentUtil.createDocumentHandle(name, key)); final VertexDeleteOptions params = (options != null ? options : new VertexDeleteOptions()); diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoView.java b/driver/src/main/java/com/arangodb/internal/InternalArangoView.java index 150a297d9..8f48fe7bd 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoView.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoView.java @@ -22,7 +22,6 @@ import com.arangodb.model.OptionsBuilder; import com.arangodb.model.ViewRenameOptions; -import com.arangodb.Request; import com.arangodb.RequestType; /** @@ -53,17 +52,17 @@ public String name() { return name; } - protected Request dropRequest() { + protected InternalRequest dropRequest() { return request(db.dbName(), RequestType.DELETE, PATH_API_VIEW, name); } - protected Request renameRequest(final String newName) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_VIEW, name, "rename"); + protected InternalRequest renameRequest(final String newName) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_VIEW, name, "rename"); request.setBody(getSerde().serialize(OptionsBuilder.build(new ViewRenameOptions(), newName))); return request; } - protected Request getInfoRequest() { + protected InternalRequest getInfoRequest() { return request(db.dbName(), RequestType.GET, PATH_API_VIEW, name); } diff --git a/driver/src/main/java/com/arangodb/Request.java b/driver/src/main/java/com/arangodb/internal/InternalRequest.java similarity index 82% rename from driver/src/main/java/com/arangodb/Request.java rename to driver/src/main/java/com/arangodb/internal/InternalRequest.java index f3c8e9429..1b1cbb9d6 100644 --- a/driver/src/main/java/com/arangodb/Request.java +++ b/driver/src/main/java/com/arangodb/internal/InternalRequest.java @@ -18,7 +18,10 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb; +package com.arangodb.internal; + +import com.arangodb.DbName; +import com.arangodb.RequestType; import java.util.Collections; import java.util.HashMap; @@ -28,7 +31,7 @@ /** * @author Mark Vollmary */ -public class Request { +public class InternalRequest { private final DbName dbName; private final RequestType requestType; @@ -39,7 +42,7 @@ public class Request { private int type = 1; private byte[] body; - public Request(final DbName dbName, final RequestType requestType, final String path) { + public InternalRequest(final DbName dbName, final RequestType requestType, final String path) { super(); this.dbName = dbName; this.requestType = requestType; @@ -53,7 +56,7 @@ public int getVersion() { return version; } - public Request setVersion(final int version) { + public InternalRequest setVersion(final int version) { this.version = version; return this; } @@ -62,7 +65,7 @@ public int getType() { return type; } - public Request setType(final int type) { + public InternalRequest setType(final int type) { this.type = type; return this; } @@ -83,7 +86,7 @@ public Map getQueryParam() { return queryParam; } - public Request putQueryParam(final String key, final Object value) { + public InternalRequest putQueryParam(final String key, final Object value) { if (value != null) { queryParam.put(key, value.toString()); } @@ -98,14 +101,14 @@ public boolean containsHeaderParam(final String key) { return headerParam.containsKey(key.toLowerCase(Locale.ROOT)); } - public Request putHeaderParam(final String key, final String value) { + public InternalRequest putHeaderParam(final String key, final String value) { if (value != null) { headerParam.put(key.toLowerCase(Locale.ROOT), value); } return this; } - public Request putHeaderParams(final Map params) { + public InternalRequest putHeaderParams(final Map params) { if (params != null) { for (Map.Entry it : params.entrySet()) { putHeaderParam(it.getKey(), it.getValue()); @@ -118,7 +121,7 @@ public byte[] getBody() { return body; } - public Request setBody(final byte[] body) { + public InternalRequest setBody(final byte[] body) { this.body = body; return this; } diff --git a/driver/src/main/java/com/arangodb/Response.java b/driver/src/main/java/com/arangodb/internal/InternalResponse.java similarity index 96% rename from driver/src/main/java/com/arangodb/Response.java rename to driver/src/main/java/com/arangodb/internal/InternalResponse.java index a7fffa552..3e0ba6bbb 100644 --- a/driver/src/main/java/com/arangodb/Response.java +++ b/driver/src/main/java/com/arangodb/internal/InternalResponse.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb; +package com.arangodb.internal; import java.util.Collections; import java.util.HashMap; @@ -28,7 +28,7 @@ /** * @author Mark Vollmary */ -public class Response { +public class InternalResponse { private int version = 1; private int type = 2; @@ -36,7 +36,7 @@ public class Response { private final Map meta; private byte[] body = null; - public Response() { + public InternalResponse() { super(); meta = new HashMap<>(); } diff --git a/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java b/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java index 410918742..2ab517c45 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java +++ b/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java @@ -21,7 +21,6 @@ package com.arangodb.internal; import com.arangodb.model.arangosearch.SearchAliasPropertiesOptions; -import com.arangodb.Request; import com.arangodb.RequestType; public class InternalSearchAlias, D extends InternalArangoDatabase, E extends ArangoExecutor> @@ -33,18 +32,18 @@ protected InternalSearchAlias(final D db, final String name) { super(db, name); } - protected Request getPropertiesRequest() { + protected InternalRequest getPropertiesRequest() { return request(db.dbName(), RequestType.GET, PATH_API_VIEW, name, PROPERTIES_PATH); } - protected Request replacePropertiesRequest(final SearchAliasPropertiesOptions options) { - final Request request = request(db.dbName(), RequestType.PUT, PATH_API_VIEW, name, PROPERTIES_PATH); + protected InternalRequest replacePropertiesRequest(final SearchAliasPropertiesOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.PUT, PATH_API_VIEW, name, PROPERTIES_PATH); request.setBody(getSerde().serialize(options != null ? options : new SearchAliasPropertiesOptions())); return request; } - protected Request updatePropertiesRequest(final SearchAliasPropertiesOptions options) { - final Request request = request(db.dbName(), RequestType.PATCH, PATH_API_VIEW, name, PROPERTIES_PATH); + protected InternalRequest updatePropertiesRequest(final SearchAliasPropertiesOptions options) { + final InternalRequest request = request(db.dbName(), RequestType.PATCH, PATH_API_VIEW, name, PROPERTIES_PATH); request.setBody(getSerde().serialize(options != null ? options : new SearchAliasPropertiesOptions())); return request; } diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java b/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java index 0ce212159..12c4641f4 100644 --- a/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java +++ b/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java @@ -21,9 +21,9 @@ package com.arangodb.internal.http; import com.arangodb.ArangoDBException; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import com.arangodb.internal.net.*; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; @@ -59,11 +59,11 @@ public void close() throws IOException { hostHandler.close(); } - public Response execute(final Request request, final HostHandle hostHandle) { + public InternalResponse execute(final InternalRequest request, final HostHandle hostHandle) { return execute(request, hostHandle, 0); } - private Response execute(final Request request, final HostHandle hostHandle, final int attemptCount) { + private InternalResponse execute(final InternalRequest request, final HostHandle hostHandle, final int attemptCount) { final AccessType accessType = RequestUtils.determineAccessType(request); Host host = hostHandler.get(hostHandle, accessType); try { @@ -75,7 +75,7 @@ private Response execute(final Request request, final HostHandle hostHandle, fin String body = request.getBody() == null ? "" : serde.toJsonString(request.getBody()); LOGGER.debug("Send Request [id={}]: {} {}", reqId, request, body); } - final Response response = connection.execute(request); + final InternalResponse response = connection.execute(request); if (LOGGER.isDebugEnabled()) { String body = response.getBody() == null ? "" : serde.toJsonString(response.getBody()); LOGGER.debug("Received Response [id={}]: {} {}", reqId, response, body); @@ -117,7 +117,7 @@ private Response execute(final Request request, final HostHandle hostHandle, fin } } - private boolean isSafe(final Request request) { + private boolean isSafe(final InternalRequest request) { RequestType type = request.getRequestType(); return type == RequestType.GET || type == RequestType.HEAD || type == RequestType.OPTIONS; } diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java b/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java index 65fef09af..09820d3f8 100644 --- a/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java +++ b/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java @@ -29,9 +29,9 @@ import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.EncodeUtils; import com.arangodb.internal.util.ResponseUtils; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import io.netty.handler.ssl.ApplicationProtocolConfig; import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.IdentityCipherSuiteFilter; @@ -163,7 +163,7 @@ public SslContextFactory sslContextFactory() { client = WebClient.create(vertx, webClientOptions); } - private static String buildUrl(final Request request) { + private static String buildUrl(final InternalRequest request) { StringBuilder sb = new StringBuilder(); DbName dbName = request.getDbName(); if (dbName != null && !dbName.get().isEmpty()) { @@ -187,7 +187,7 @@ private static String buildUrl(final Request request) { return sb.toString(); } - private static void addHeader(final Request request, final HttpRequest httpRequest) { + private static void addHeader(final InternalRequest request, final HttpRequest httpRequest) { for (final Entry header : request.getHeaderParam().entrySet()) { httpRequest.putHeader(header.getKey(), header.getValue()); } @@ -217,10 +217,10 @@ private HttpMethod requestTypeToHttpMethod(RequestType requestType) { } } - public Response execute(final Request request) throws IOException { - CompletableFuture rfuture = new CompletableFuture<>(); + public InternalResponse execute(final InternalRequest request) throws IOException { + CompletableFuture rfuture = new CompletableFuture<>(); vertx.runOnContext(e -> doExecute(request, rfuture)); - Response resp; + InternalResponse resp; try { resp = rfuture.get(); } catch (InterruptedException e) { @@ -240,7 +240,7 @@ public Response execute(final Request request) throws IOException { return resp; } - public void doExecute(final Request request, final CompletableFuture rfuture) { + public void doExecute(final InternalRequest request, final CompletableFuture rfuture) { String path = buildUrl(request); HttpRequest httpRequest = client .request(requestTypeToHttpMethod(request.getRequestType()), path) @@ -270,8 +270,8 @@ public void doExecute(final Request request, final CompletableFuture r .onFailure(rfuture::completeExceptionally); } - private Response buildResponse(final HttpResponse httpResponse) { - final Response response = new Response(); + private InternalResponse buildResponse(final HttpResponse httpResponse) { + final InternalResponse response = new InternalResponse(); response.setResponseCode(httpResponse.statusCode()); Buffer body = httpResponse.body(); if (body != null) { @@ -286,7 +286,7 @@ private Response buildResponse(final HttpResponse httpResponse) { return response; } - protected void checkError(final Response response) { + protected void checkError(final InternalResponse response) { ResponseUtils.checkError(util, response); } diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpProtocol.java b/driver/src/main/java/com/arangodb/internal/http/HttpProtocol.java index 3bdc01d74..15d35c2d4 100644 --- a/driver/src/main/java/com/arangodb/internal/http/HttpProtocol.java +++ b/driver/src/main/java/com/arangodb/internal/http/HttpProtocol.java @@ -22,8 +22,8 @@ import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import java.io.IOException; @@ -40,7 +40,7 @@ public HttpProtocol(final HttpCommunication httpCommunitaction) { } @Override - public Response execute(final Request request, final HostHandle hostHandle) { + public InternalResponse execute(final InternalRequest request, final HostHandle hostHandle) { return httpCommunitaction.execute(request, hostHandle); } diff --git a/driver/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java b/driver/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java index 799fd03d3..a7f5d2b75 100644 --- a/driver/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java +++ b/driver/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java @@ -20,8 +20,8 @@ package com.arangodb.internal.net; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import java.io.Closeable; @@ -30,7 +30,7 @@ */ public interface CommunicationProtocol extends Closeable { - Response execute(final Request request, HostHandle hostHandle); + InternalResponse execute(final InternalRequest request, HostHandle hostHandle); void setJwt(String jwt); diff --git a/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java b/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java index d5a535249..d94b48323 100644 --- a/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java +++ b/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java @@ -25,7 +25,7 @@ import com.arangodb.internal.ArangoExecutorSync; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -120,7 +120,7 @@ private Collection resolveFromServer() { try { response = executor.execute( - new Request(DbName.SYSTEM, RequestType.GET, "/_api/cluster/endpoints"), + new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/cluster/endpoints"), response1 -> { final List> tmp = arangoSerialization.deserialize(response1.getBody(), "/endpoints", diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java b/driver/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java index 2cd22326a..6062a86a1 100644 --- a/driver/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java +++ b/driver/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java @@ -8,7 +8,7 @@ import com.arangodb.entity.arangosearch.FieldLink; import com.arangodb.util.RawBytes; import com.arangodb.util.RawJson; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.TreeNode; @@ -73,10 +73,10 @@ public ReplicationFactor deserialize(final JsonParser p, final DeserializationCo }; @SuppressWarnings("unchecked") - static final JsonDeserializer RESPONSE = new JsonDeserializer() { + static final JsonDeserializer RESPONSE = new JsonDeserializer() { @Override - public Response deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { - final Response response = new Response(); + public InternalResponse deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { + final InternalResponse response = new InternalResponse(); Iterator it = ((ArrayNode) p.readValueAsTree()).iterator(); response.setVersion(it.next().intValue()); response.setType(it.next().intValue()); diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalModule.java b/driver/src/main/java/com/arangodb/internal/serde/InternalModule.java index 5f7d465ac..40943086f 100644 --- a/driver/src/main/java/com/arangodb/internal/serde/InternalModule.java +++ b/driver/src/main/java/com/arangodb/internal/serde/InternalModule.java @@ -8,8 +8,8 @@ import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.util.RawBytes; import com.arangodb.util.RawJson; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.module.SimpleModule; @@ -27,7 +27,7 @@ enum InternalModule implements Supplier { module.addSerializer(RawBytes.class, InternalSerializers.RAW_BYTES_SERIALIZER); module.addSerializer(AuthenticationRequest.class, InternalSerializers.AUTHENTICATION_REQUEST); module.addSerializer(JwtAuthenticationRequest.class, InternalSerializers.JWT_AUTHENTICATION_REQUEST); - module.addSerializer(Request.class, InternalSerializers.REQUEST); + module.addSerializer(InternalRequest.class, InternalSerializers.REQUEST); module.addSerializer(CollectionType.class, InternalSerializers.COLLECTION_TYPE); module.addDeserializer(RawJson.class, InternalDeserializers.RAW_JSON_DESERIALIZER); @@ -35,7 +35,7 @@ enum InternalModule implements Supplier { module.addDeserializer(CollectionStatus.class, InternalDeserializers.COLLECTION_STATUS); module.addDeserializer(CollectionType.class, InternalDeserializers.COLLECTION_TYPE); module.addDeserializer(ReplicationFactor.class, InternalDeserializers.REPLICATION_FACTOR); - module.addDeserializer(Response.class, InternalDeserializers.RESPONSE); + module.addDeserializer(InternalResponse.class, InternalDeserializers.RESPONSE); module.addDeserializer(InvertedIndexPrimarySort.Field.class, InternalDeserializers.INVERTED_INDEX_PRIMARY_SORT_FIELD); } diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalSerializers.java b/driver/src/main/java/com/arangodb/internal/serde/InternalSerializers.java index 7e9688aad..7012f67fc 100644 --- a/driver/src/main/java/com/arangodb/internal/serde/InternalSerializers.java +++ b/driver/src/main/java/com/arangodb/internal/serde/InternalSerializers.java @@ -7,7 +7,7 @@ import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.util.RawBytes; import com.arangodb.util.RawJson; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.JsonSerializer; @@ -62,9 +62,9 @@ public void serialize(JwtAuthenticationRequest value, JsonGenerator gen, gen.writeEndArray(); } }; - static final JsonSerializer REQUEST = new JsonSerializer() { + static final JsonSerializer REQUEST = new JsonSerializer() { @Override - public void serialize(Request value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(InternalRequest value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeStartArray(); gen.writeNumber(value.getVersion()); gen.writeNumber(value.getType()); diff --git a/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java b/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java index 710fd8d0f..d60305820 100644 --- a/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java +++ b/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java @@ -21,7 +21,7 @@ package com.arangodb.internal.util; import com.arangodb.internal.net.AccessType; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; /** @@ -35,11 +35,11 @@ private RequestUtils() { super(); } - public static Request allowDirtyRead(final Request request) { + public static InternalRequest allowDirtyRead(final InternalRequest request) { return request.putHeaderParam(HEADER_ALLOW_DIRTY_READ, "true"); } - public static AccessType determineAccessType(final Request request) { + public static AccessType determineAccessType(final InternalRequest request) { if (request.containsHeaderParam(HEADER_ALLOW_DIRTY_READ)) { return AccessType.DIRTY_READ; } diff --git a/driver/src/main/java/com/arangodb/internal/util/ResponseUtils.java b/driver/src/main/java/com/arangodb/internal/util/ResponseUtils.java index 8ff292b4f..73030fc8c 100644 --- a/driver/src/main/java/com/arangodb/internal/util/ResponseUtils.java +++ b/driver/src/main/java/com/arangodb/internal/util/ResponseUtils.java @@ -25,7 +25,7 @@ import com.arangodb.internal.ArangoErrors; import com.arangodb.internal.net.ArangoDBRedirectException; import com.arangodb.internal.serde.InternalSerde; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import java.util.concurrent.TimeoutException; @@ -42,7 +42,7 @@ private ResponseUtils() { super(); } - public static void checkError(final InternalSerde util, final Response response) { + public static void checkError(final InternalSerde util, final InternalResponse response) { final int responseCode = response.getResponseCode(); if (responseCode >= ERROR_STATUS) { if (responseCode == ERROR_INTERNAL && response.containsMeta(HEADER_ENDPOINT)) { diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java index 7b3a1d917..430af425f 100644 --- a/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java +++ b/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java @@ -34,8 +34,8 @@ import com.arangodb.internal.velocystream.internal.VstConnection; import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.exception.VPackParserException; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -138,32 +138,32 @@ public void close() throws IOException { hostHandler.close(); } - public R execute(final Request request, final HostHandle hostHandle) { + public R execute(final InternalRequest request, final HostHandle hostHandle) { return execute(request, hostHandle, 0); } - protected R execute(final Request request, final HostHandle hostHandle, final int attemptCount) { + protected R execute(final InternalRequest request, final HostHandle hostHandle, final int attemptCount) { final C connection = connect(hostHandle, RequestUtils.determineAccessType(request)); return execute(request, connection, attemptCount); } - protected abstract R execute(final Request request, C connection); + protected abstract R execute(final InternalRequest request, C connection); - protected abstract R execute(final Request request, C connection, final int attemptCount); + protected abstract R execute(final InternalRequest request, C connection, final int attemptCount); - protected void checkError(final Response response) { + protected void checkError(final InternalResponse response) { ResponseUtils.checkError(util, response); } - protected Response createResponse(final Message message) throws VPackParserException { - final Response response = util.deserialize(message.getHead().toByteArray(), Response.class); + protected InternalResponse createResponse(final Message message) throws VPackParserException { + final InternalResponse response = util.deserialize(message.getHead().toByteArray(), InternalResponse.class); if (message.getBody() != null) { response.setBody(message.getBody().toByteArray()); } return response; } - protected final Message createMessage(final Request request) throws VPackParserException { + protected final Message createMessage(final InternalRequest request) throws VPackParserException { request.putHeaderParam("accept", "application/x-velocypack"); request.putHeaderParam("content-type", "application/x-velocypack"); final long id = mId.incrementAndGet(); diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java b/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java index d1acdbc60..837e12d50 100644 --- a/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java +++ b/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java @@ -32,8 +32,8 @@ import com.arangodb.internal.velocystream.internal.Message; import com.arangodb.internal.velocystream.internal.VstConnectionSync; import com.arangodb.velocypack.exception.VPackParserException; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +42,7 @@ /** * @author Mark Vollmary */ -public class VstCommunicationSync extends VstCommunication { +public class VstCommunicationSync extends VstCommunication { private static final Logger LOGGER = LoggerFactory.getLogger(VstCommunicationSync.class); @@ -54,16 +54,16 @@ protected VstCommunicationSync(final HostHandler hostHandler, final Integer time } @Override - protected Response execute(final Request request, final VstConnectionSync connection) { + protected InternalResponse execute(final InternalRequest request, final VstConnectionSync connection) { return execute(request, connection, 0); } @Override - protected Response execute(final Request request, final VstConnectionSync connection, final int attemptCount) { + protected InternalResponse execute(final InternalRequest request, final VstConnectionSync connection, final int attemptCount) { try { final Message requestMessage = createMessage(request); final Message responseMessage = send(requestMessage, connection); - final Response response = createResponse(responseMessage); + final InternalResponse response = createResponse(responseMessage); checkError(response); return response; } catch (final VPackParserException e) { @@ -89,13 +89,13 @@ private Message send(final Message message, final VstConnectionSync connection) @Override protected void authenticate(final VstConnectionSync connection) { - Request authRequest; + InternalRequest authRequest; if (jwt != null) { authRequest = new JwtAuthenticationRequest(jwt, ENCRYPTION_JWT); } else { authRequest = new AuthenticationRequest(user, password != null ? password : "", ENCRYPTION_PLAIN); } - final Response response = execute(authRequest, connection); + final InternalResponse response = execute(authRequest, connection); checkError(response); } @@ -169,7 +169,7 @@ public Builder connectionTtl(final Long connectionTtl) { return this; } - public VstCommunication build(final InternalSerde util) { + public VstCommunication build(final InternalSerde util) { return new VstCommunicationSync(hostHandler, timeout, user, password, jwt, useSsl, sslContext, util, chunksize, maxConnections, connectionTtl); diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java b/driver/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java index 729c3028b..4782cea74 100644 --- a/driver/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java +++ b/driver/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java @@ -23,8 +23,8 @@ import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.velocystream.internal.VstConnectionSync; -import com.arangodb.Request; -import com.arangodb.Response; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import java.io.IOException; @@ -33,15 +33,15 @@ */ public class VstProtocol implements CommunicationProtocol { - private final VstCommunication communication; + private final VstCommunication communication; - public VstProtocol(final VstCommunication communication) { + public VstProtocol(final VstCommunication communication) { super(); this.communication = communication; } @Override - public Response execute(final Request request, final HostHandle hostHandle) { + public InternalResponse execute(final InternalRequest request, final HostHandle hostHandle) { return communication.execute(request, hostHandle); } diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java b/driver/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java index dd48dbc4b..a7498e4ce 100644 --- a/driver/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java +++ b/driver/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java @@ -21,12 +21,12 @@ package com.arangodb.internal.velocystream.internal; import com.arangodb.DbName; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; /** * @author Mark Vollmary */ -public class AuthenticationRequest extends Request { +public class AuthenticationRequest extends InternalRequest { private final String user; private final String password; diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java b/driver/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java index f2667b125..3d9fe56f9 100644 --- a/driver/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java +++ b/driver/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java @@ -1,9 +1,9 @@ package com.arangodb.internal.velocystream.internal; import com.arangodb.DbName; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; -public class JwtAuthenticationRequest extends Request { +public class JwtAuthenticationRequest extends InternalRequest { private final String token; private final String encryption; // "jwt" diff --git a/driver/src/test/java/com/arangodb/ArangoDBTest.java b/driver/src/test/java/com/arangodb/ArangoDBTest.java index d54647b58..4b1506116 100644 --- a/driver/src/test/java/com/arangodb/ArangoDBTest.java +++ b/driver/src/test/java/com/arangodb/ArangoDBTest.java @@ -21,6 +21,8 @@ package com.arangodb; import com.arangodb.entity.*; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import com.arangodb.internal.config.FileConfigPropertiesProvider; import com.arangodb.model.*; import com.arangodb.model.LogOptions.SortOrder; @@ -391,7 +393,7 @@ void authenticationFailUser() { @ParameterizedTest(name = "{index}") @MethodSource("arangos") void execute(ArangoDB arangoDB) { - final Response response = arangoDB.execute(new Request(DbName.SYSTEM, RequestType.GET, "/_api/version")); + final InternalResponse response = arangoDB.execute(new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version")); assertThat(arangoDB.getSerde().parse(response.getBody(), "/version").isTextual()).isTrue(); } diff --git a/driver/src/test/java/com/arangodb/ArangoRouteTest.java b/driver/src/test/java/com/arangodb/ArangoRouteTest.java deleted file mode 100644 index 768175fc6..000000000 --- a/driver/src/test/java/com/arangodb/ArangoRouteTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * DISCLAIMER - * - * Copyright 2018 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; - -import com.arangodb.entity.BaseDocument; -import com.arangodb.internal.ArangoRequestParam; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; - -import java.util.UUID; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.catchThrowable; - -/** - * @author Mark Vollmary - * @author Michele Rastelli - */ -class ArangoRouteTest extends BaseJunit5 { - - private static final String COLLECTION_NAME = "ArangoRouteTest_collection"; - - @BeforeAll - static void init() { - initCollections(COLLECTION_NAME); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("dbs") - void get(ArangoDatabase db) { - final Response res = db.route("/_api/version").get(); - assertThat(db.arango().getSerde().parse(res.getBody(), "/version").isTextual()).isTrue(); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("dbs") - void withHeader(ArangoDatabase db) { - final BaseDocument doc = new BaseDocument(UUID.randomUUID().toString()); - String rev = db.collection(COLLECTION_NAME).insertDocument(doc).getRev(); - Throwable thrown = catchThrowable(() -> - db.route("/_api/document", COLLECTION_NAME, doc.getKey()).withHeader(ArangoRequestParam.IF_NONE_MATCH - , rev).get()); - assertThat(thrown).isInstanceOf(ArangoDBException.class); - ArangoDBException e = (ArangoDBException) thrown; - assertThat(e.getResponseCode()).isEqualTo(304); - } - - @ParameterizedTest(name = "{index}") - @MethodSource("dbs") - void withParentHeader(ArangoDatabase db) { - final BaseDocument doc = new BaseDocument(UUID.randomUUID().toString()); - String rev = db.collection(COLLECTION_NAME).insertDocument(doc).getRev(); - Throwable thrown = catchThrowable(() -> - db.route("/_api/document").withHeader(ArangoRequestParam.IF_NONE_MATCH, rev).route(COLLECTION_NAME, - doc.getKey()).get()); - assertThat(thrown).isInstanceOf(ArangoDBException.class); - ArangoDBException e = (ArangoDBException) thrown; - assertThat(e.getResponseCode()).isEqualTo(304); - } - -} diff --git a/driver/src/test/java/com/arangodb/JwtAuthTest.java b/driver/src/test/java/com/arangodb/JwtAuthTest.java index c56a5fb57..4b4f5a11a 100644 --- a/driver/src/test/java/com/arangodb/JwtAuthTest.java +++ b/driver/src/test/java/com/arangodb/JwtAuthTest.java @@ -1,9 +1,10 @@ package com.arangodb; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import com.arangodb.internal.config.FileConfigPropertiesProvider; import com.arangodb.serde.ArangoSerde; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -37,10 +38,10 @@ private static String getJwt(ArangoDB arangoDB) { reqBody.put("username", "root"); reqBody.put("password", "test"); - Request req = new Request(DbName.SYSTEM, RequestType.POST, "/_open/auth"); + InternalRequest req = new InternalRequest(DbName.SYSTEM, RequestType.POST, "/_open/auth"); req.setBody(serde.serialize(reqBody)); - Response resp = arangoDB.execute(req); + InternalResponse resp = arangoDB.execute(req); Map respBody = serde.deserialize(resp.getBody(), Map.class); return respBody.get("jwt"); } diff --git a/driver/src/test/java/com/arangodb/async/ArangoDBTest.java b/driver/src/test/java/com/arangodb/async/ArangoDBTest.java index 5aa0cfbeb..cec087056 100644 --- a/driver/src/test/java/com/arangodb/async/ArangoDBTest.java +++ b/driver/src/test/java/com/arangodb/async/ArangoDBTest.java @@ -25,7 +25,7 @@ import com.arangodb.internal.config.FileConfigPropertiesProvider; import com.arangodb.model.*; import com.arangodb.util.TestUtils; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -444,7 +444,7 @@ void authenticationFailUser() throws InterruptedException { @Test void execute() throws InterruptedException, ExecutionException { arangoDB - .execute(new Request(DbName.SYSTEM, RequestType.GET, "/_api/version")) + .execute(new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version")) .whenComplete((response, ex) -> { assertThat(response.getBody()).isNotNull(); assertThat(arangoDB.getSerde().parse(response.getBody(), "/version").isTextual()).isTrue(); @@ -458,7 +458,7 @@ void execute_acquireHostList_enabled() throws InterruptedException, ExecutionExc .loadProperties(new FileConfigPropertiesProvider()) .acquireHostList(true).build(); arangoDB - .execute(new Request(DbName.SYSTEM, RequestType.GET, "/_api/version")) + .execute(new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version")) .whenComplete((response, ex) -> { assertThat(response.getBody()).isNotNull(); assertThat(arangoDB.getSerde().parse(response.getBody(), "/version").isTextual()).isTrue(); diff --git a/driver/src/test/java/com/arangodb/async/JwtAuthTest.java b/driver/src/test/java/com/arangodb/async/JwtAuthTest.java index e0c8717cc..15531dd92 100644 --- a/driver/src/test/java/com/arangodb/async/JwtAuthTest.java +++ b/driver/src/test/java/com/arangodb/async/JwtAuthTest.java @@ -5,9 +5,9 @@ import com.arangodb.DbName; import com.arangodb.internal.config.FileConfigPropertiesProvider; import com.arangodb.serde.ArangoSerde; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; -import com.arangodb.Response; +import com.arangodb.internal.InternalResponse; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -40,10 +40,10 @@ private static String getJwt(ArangoDB arangoDB) { reqBody.put("username", "root"); reqBody.put("password", "test"); - Request req = new Request(DbName.SYSTEM, RequestType.POST, "/_open/auth"); + InternalRequest req = new InternalRequest(DbName.SYSTEM, RequestType.POST, "/_open/auth"); req.setBody(serde.serialize(reqBody)); - Response resp = arangoDB.execute(req); + InternalResponse resp = arangoDB.execute(req); Map respBody = serde.deserialize(resp.getBody(), Map.class); return respBody.get("jwt"); } diff --git a/driver/src/test/java/perf/SyncBenchmarkTest.java b/driver/src/test/java/perf/SyncBenchmarkTest.java index fceb46685..14be47bec 100644 --- a/driver/src/test/java/perf/SyncBenchmarkTest.java +++ b/driver/src/test/java/perf/SyncBenchmarkTest.java @@ -3,7 +3,7 @@ import com.arangodb.ArangoDB; import com.arangodb.DbName; import com.arangodb.Protocol; -import com.arangodb.Request; +import com.arangodb.internal.InternalRequest; import com.arangodb.RequestType; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; @@ -47,7 +47,7 @@ void getVersionWithDetails(Protocol protocol) { ArangoDB adb = new ArangoDB.Builder().useProtocol(protocol).build(); Benchmark benchmark = new Benchmark(warmupDurationSeconds, numberOfRequests) { - private final Request request = new Request(DbName.SYSTEM, RequestType.GET, + private final InternalRequest request = new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version").putQueryParam("details", true); @Override From 4a528f2f6966f64568d19e00217c5b6cf97b0100 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 9 Nov 2022 14:07:20 +0100 Subject: [PATCH 3/3] execute custom request with POJO body --- .../src/main/java/com/arangodb/ArangoDB.java | 3 +- .../src/main/java/com/arangodb/Request.java | 130 ++++++++++++++++++ .../src/main/java/com/arangodb/Response.java | 27 ++++ .../com/arangodb/async/ArangoDBAsync.java | 5 +- .../async/internal/ArangoDBAsyncImpl.java | 7 +- .../async/internal/ArangoRouteAsyncImpl.java | 2 +- .../com/arangodb/internal/ArangoDBImpl.java | 4 +- .../arangodb/internal/ArangoExecuteable.java | 1 - .../internal/InternalArangoCollection.java | 1 - .../arangodb/internal/InternalArangoDB.java | 19 ++- .../internal/InternalArangoDatabase.java | 1 - .../InternalArangoEdgeCollection.java | 1 - .../internal/InternalArangoGraph.java | 1 - .../internal/InternalArangoRoute.java | 2 - .../internal/InternalArangoSearch.java | 1 - .../InternalArangoVertexCollection.java | 1 - .../arangodb/internal/InternalArangoView.java | 1 - .../arangodb/internal/InternalRequest.java | 10 +- .../internal/InternalSearchAlias.java | 1 - .../arangodb/{ => internal}/RequestType.java | 28 +++- .../internal/http/HttpCommunication.java | 2 +- .../internal/http/HttpConnection.java | 2 +- .../internal/net/ExtendedHostResolver.java | 2 +- .../arangodb/internal/util/RequestUtils.java | 2 +- .../test/java/com/arangodb/ArangoDBTest.java | 22 ++- .../test/java/com/arangodb/JwtAuthTest.java | 17 ++- .../java/com/arangodb/async/ArangoDBTest.java | 20 ++- .../java/com/arangodb/async/JwtAuthTest.java | 22 ++- .../src/test/java/perf/SyncBenchmarkTest.java | 13 +- 29 files changed, 276 insertions(+), 72 deletions(-) create mode 100644 driver/src/main/java/com/arangodb/Request.java create mode 100644 driver/src/main/java/com/arangodb/Response.java rename driver/src/main/java/com/arangodb/{ => internal}/RequestType.java (64%) diff --git a/driver/src/main/java/com/arangodb/ArangoDB.java b/driver/src/main/java/com/arangodb/ArangoDB.java index b61abf817..118bd755c 100644 --- a/driver/src/main/java/com/arangodb/ArangoDB.java +++ b/driver/src/main/java/com/arangodb/ArangoDB.java @@ -283,9 +283,10 @@ public interface ArangoDB extends ArangoSerdeAccessor { * Async Execution and later Result Retrieval * * @param request request + * @param type Deserialization target type for the response body (POJO or {@link com.arangodb.util.RawData}) * @return response */ - InternalResponse execute(InternalRequest request); + Response execute(Request request, Class type); /** * Returns the server logs diff --git a/driver/src/main/java/com/arangodb/Request.java b/driver/src/main/java/com/arangodb/Request.java new file mode 100644 index 000000000..dbc708632 --- /dev/null +++ b/driver/src/main/java/com/arangodb/Request.java @@ -0,0 +1,130 @@ +package com.arangodb; + +import java.util.HashMap; +import java.util.Map; + +public final class Request { + private final DbName db; + private final Method method; + private final String path; + private final Map queryParams; + private final Map headers; + private final T body; + + public enum Method { + DELETE, + GET, + POST, + PUT, + HEAD, + PATCH, + OPTIONS + } + + public static Builder builder() { + return new Builder<>(); + } + + private Request(DbName db, Method method, String path, Map queryParams, Map headers, T body) { + this.db = db; + this.method = method; + this.path = path; + this.queryParams = queryParams; + this.headers = headers; + this.body = body; + } + + public DbName getDb() { + return db; + } + + public Method getMethod() { + return method; + } + + public String getPath() { + return path; + } + + public Map getQueryParams() { + return queryParams; + } + + public Map getHeaders() { + return headers; + } + + public T getBody() { + return body; + } + + public static final class Builder { + private DbName db; + private Request.Method method; + private String path; + private final Map queryParams; + private final Map headers; + private T body; + + public Builder() { + queryParams = new HashMap<>(); + headers = new HashMap<>(); + } + + public Builder db(DbName db) { + this.db = db; + return this; + } + + public Builder method(Request.Method method) { + this.method = method; + return this; + } + + public Builder path(String path) { + this.path = path; + return this; + } + + public Builder queryParam(final String key, final String value) { + if (value != null) { + queryParams.put(key, value); + } + return this; + } + + public Builder queryParams(Map queryParams) { + if (queryParams != null) { + for (Map.Entry it : queryParams.entrySet()) { + queryParam(it.getKey(), it.getValue()); + } + } + return this; + } + + public Builder header(final String key, final String value) { + if (value != null) { + headers.put(key, value); + } + return this; + } + + public Builder headers(Map headers) { + if (headers != null) { + for (Map.Entry it : headers.entrySet()) { + header(it.getKey(), it.getValue()); + } + } + return this; + } + + public Builder body(T body) { + this.body = body; + return this; + } + + public Request build() { + return new Request<>(db, method, path, queryParams, headers, body); + } + } +} diff --git a/driver/src/main/java/com/arangodb/Response.java b/driver/src/main/java/com/arangodb/Response.java new file mode 100644 index 000000000..49c37698b --- /dev/null +++ b/driver/src/main/java/com/arangodb/Response.java @@ -0,0 +1,27 @@ +package com.arangodb; + +import java.util.Map; + +public final class Response { + private final int responseCode; + private final Map headers; + private final T body; + + public Response(int responseCode, Map headers, T body) { + this.responseCode = responseCode; + this.headers = headers; + this.body = body; + } + + public int getResponseCode() { + return responseCode; + } + + public Map getHeaders() { + return headers; + } + + public T getBody() { + return body; + } +} diff --git a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java b/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java index b635483a9..28e1701f3 100644 --- a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -28,8 +28,6 @@ import com.arangodb.entity.*; import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; -import com.arangodb.internal.InternalRequest; -import com.arangodb.internal.InternalResponse; import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; @@ -268,9 +266,10 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { * Async Execution and later Result Retrieval * * @param request request + * @param type Deserialization target type for the response body (POJO or {@link com.arangodb.util.RawData}) * @return response */ - CompletableFuture execute(final InternalRequest request); + CompletableFuture> execute(final Request request, final Class type); /** * Returns the server logs diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java index 6d7e57ee7..2ad1b2b0d 100644 --- a/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java +++ b/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java @@ -22,6 +22,8 @@ import com.arangodb.ArangoMetrics; import com.arangodb.DbName; +import com.arangodb.Request; +import com.arangodb.Response; import com.arangodb.async.ArangoDBAsync; import com.arangodb.async.ArangoDatabaseAsync; import com.arangodb.async.internal.velocystream.VstCommunicationAsync; @@ -40,7 +42,6 @@ import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; import com.arangodb.model.UserUpdateOptions; -import com.arangodb.internal.InternalRequest; import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -215,8 +216,8 @@ public CompletableFuture grantDefaultCollectionAccess(final String user, f } @Override - public CompletableFuture execute(final InternalRequest request) { - return executor.execute(request, response -> response); + public CompletableFuture> execute(Request request, Class type) { + return executor.execute(executeRequest(request), responseDeserializer(type)); } @Override diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java b/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java index 061b84f9b..57270220d 100644 --- a/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java +++ b/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java @@ -22,7 +22,7 @@ import com.arangodb.async.ArangoRouteAsync; import com.arangodb.internal.InternalArangoRoute; -import com.arangodb.RequestType; +import com.arangodb.internal.RequestType; import com.arangodb.internal.InternalResponse; import java.util.Map; diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java index bfbed70e3..22a0e95a1 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -211,8 +211,8 @@ public void grantDefaultCollectionAccess(final String user, final Permissions pe } @Override - public InternalResponse execute(final InternalRequest request) { - return executor.execute(request, response -> response); + public Response execute(Request request, Class type) { + return executor.execute(executeRequest(request), responseDeserializer(type)); } @Override diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java b/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java index 95b6f299e..10fc7c87a 100644 --- a/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java +++ b/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java @@ -24,7 +24,6 @@ import com.arangodb.DbName; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.EncodeUtils; -import com.arangodb.RequestType; /** * @author Mark Vollmary diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java index e05410190..90389ed3b 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java @@ -28,7 +28,6 @@ import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; import com.arangodb.util.RawData; -import com.arangodb.RequestType; import com.fasterxml.jackson.databind.JsonNode; import java.lang.reflect.Type; diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java b/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java index 39f920b22..1243fd53e 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java @@ -21,6 +21,8 @@ package com.arangodb.internal; import com.arangodb.DbName; +import com.arangodb.Request; +import com.arangodb.Response; import com.arangodb.entity.LogLevelEntity; import com.arangodb.entity.Permissions; import com.arangodb.entity.ServerRole; @@ -28,7 +30,6 @@ import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.model.*; -import com.arangodb.RequestType; import java.util.ArrayList; import java.util.Collection; @@ -159,6 +160,22 @@ protected InternalRequest updateUserDefaultCollectionAccessRequest(final String "*", "*").setBody(getSerde().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions))); } + protected InternalRequest executeRequest(final Request request) { + InternalRequest ireq = new InternalRequest(request.getDb(), RequestType.from(request.getMethod()), request.getPath()); + ireq.putHeaderParams(request.getHeaders()); + ireq.putQueryParams(request.getQueryParams()); + ireq.setBody(serde.serializeUserData(request.getBody())); + return ireq; + } + + protected ResponseDeserializer> responseDeserializer(Class type) { + return response -> new Response<>( + response.getResponseCode(), + response.getMeta(), + serde.deserializeUserData(response.getBody(), type) + ); + } + protected InternalRequest 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/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java index b3f2a61cf..fcde6ad9b 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java @@ -27,7 +27,6 @@ import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; import com.arangodb.model.arangosearch.*; -import com.arangodb.RequestType; import java.util.Collection; import java.util.Map; diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java b/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java index 8dd921d6e..37ee04fc1 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java @@ -26,7 +26,6 @@ import com.arangodb.internal.util.DocumentUtil; import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; -import com.arangodb.RequestType; /** * @author Mark Vollmary diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java b/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java index 39deb94b0..975902459 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java @@ -25,7 +25,6 @@ import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.model.OptionsBuilder; import com.arangodb.model.VertexCollectionCreateOptions; -import com.arangodb.RequestType; import java.util.Collection; diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java b/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java index 38a0e9144..86ac9d047 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java @@ -20,8 +20,6 @@ package com.arangodb.internal; -import com.arangodb.RequestType; - import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java b/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java index d4a8eec8c..fc33ccfe4 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java @@ -21,7 +21,6 @@ package com.arangodb.internal; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; -import com.arangodb.RequestType; /** * @author Mark Vollmary diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java b/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java index 1f69a9eea..204aaf532 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java @@ -26,7 +26,6 @@ import com.arangodb.internal.util.DocumentUtil; import com.arangodb.internal.util.RequestUtils; import com.arangodb.model.*; -import com.arangodb.RequestType; /** * @author Mark Vollmary diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoView.java b/driver/src/main/java/com/arangodb/internal/InternalArangoView.java index 8f48fe7bd..38b042695 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalArangoView.java +++ b/driver/src/main/java/com/arangodb/internal/InternalArangoView.java @@ -22,7 +22,6 @@ import com.arangodb.model.OptionsBuilder; import com.arangodb.model.ViewRenameOptions; -import com.arangodb.RequestType; /** * @author Mark Vollmary diff --git a/driver/src/main/java/com/arangodb/internal/InternalRequest.java b/driver/src/main/java/com/arangodb/internal/InternalRequest.java index 1b1cbb9d6..912062cf0 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalRequest.java +++ b/driver/src/main/java/com/arangodb/internal/InternalRequest.java @@ -21,7 +21,6 @@ package com.arangodb.internal; import com.arangodb.DbName; -import com.arangodb.RequestType; import java.util.Collections; import java.util.HashMap; @@ -93,6 +92,15 @@ public InternalRequest putQueryParam(final String key, final Object value) { return this; } + public InternalRequest putQueryParams(final Map params) { + if (params != null) { + for (Map.Entry it : params.entrySet()) { + putQueryParam(it.getKey(), it.getValue()); + } + } + return this; + } + public Map getHeaderParam() { return Collections.unmodifiableMap(headerParam); } diff --git a/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java b/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java index 2ab517c45..97abc1745 100644 --- a/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java +++ b/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java @@ -21,7 +21,6 @@ package com.arangodb.internal; import com.arangodb.model.arangosearch.SearchAliasPropertiesOptions; -import com.arangodb.RequestType; public class InternalSearchAlias, D extends InternalArangoDatabase, E extends ArangoExecutor> extends InternalArangoView { diff --git a/driver/src/main/java/com/arangodb/RequestType.java b/driver/src/main/java/com/arangodb/internal/RequestType.java similarity index 64% rename from driver/src/main/java/com/arangodb/RequestType.java rename to driver/src/main/java/com/arangodb/internal/RequestType.java index 009f08c35..5b9d27aae 100644 --- a/driver/src/main/java/com/arangodb/RequestType.java +++ b/driver/src/main/java/com/arangodb/internal/RequestType.java @@ -18,7 +18,9 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb; +package com.arangodb.internal; + +import com.arangodb.Request; /** * @author Mark Vollmary @@ -43,13 +45,25 @@ public enum RequestType { this.type = type; } - public static RequestType fromType(final int type) { - for (final RequestType rType : RequestType.values()) { - if (rType.type == type) { - return rType; - } + public static RequestType from(final Request.Method method) { + switch (method) { + case DELETE: + return DELETE; + case GET: + return GET; + case POST: + return POST; + case PUT: + return PUT; + case HEAD: + return HEAD; + case PATCH: + return PATCH; + case OPTIONS: + return OPTIONS; + default: + throw new IllegalArgumentException(); } - return null; } public int getType() { diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java b/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java index 12c4641f4..f68f86f01 100644 --- a/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java +++ b/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java @@ -22,7 +22,7 @@ import com.arangodb.ArangoDBException; import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; +import com.arangodb.internal.RequestType; import com.arangodb.internal.InternalResponse; import com.arangodb.internal.net.*; import com.arangodb.internal.serde.InternalSerde; diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java b/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java index 09820d3f8..0a8eefac9 100644 --- a/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java +++ b/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java @@ -30,7 +30,7 @@ import com.arangodb.internal.util.EncodeUtils; import com.arangodb.internal.util.ResponseUtils; import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; +import com.arangodb.internal.RequestType; import com.arangodb.internal.InternalResponse; import io.netty.handler.ssl.ApplicationProtocolConfig; import io.netty.handler.ssl.ClientAuth; diff --git a/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java b/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java index d94b48323..4d111af37 100644 --- a/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java +++ b/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java @@ -26,7 +26,7 @@ import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; +import com.arangodb.internal.RequestType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java b/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java index d60305820..7074cfc3b 100644 --- a/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java +++ b/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java @@ -22,7 +22,7 @@ import com.arangodb.internal.net.AccessType; import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; +import com.arangodb.internal.RequestType; /** * @author Mark Vollmary diff --git a/driver/src/test/java/com/arangodb/ArangoDBTest.java b/driver/src/test/java/com/arangodb/ArangoDBTest.java index 4b1506116..9f87115ce 100644 --- a/driver/src/test/java/com/arangodb/ArangoDBTest.java +++ b/driver/src/test/java/com/arangodb/ArangoDBTest.java @@ -21,12 +21,13 @@ package com.arangodb; import com.arangodb.entity.*; -import com.arangodb.internal.InternalRequest; -import com.arangodb.internal.InternalResponse; import com.arangodb.internal.config.FileConfigPropertiesProvider; +import com.arangodb.internal.serde.SerdeUtils; import com.arangodb.model.*; import com.arangodb.model.LogOptions.SortOrder; +import com.arangodb.util.RawJson; import com.arangodb.util.TestUtils; +import com.fasterxml.jackson.databind.JsonNode; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -392,9 +393,20 @@ void authenticationFailUser() { @ParameterizedTest(name = "{index}") @MethodSource("arangos") - void execute(ArangoDB arangoDB) { - final InternalResponse response = arangoDB.execute(new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version")); - assertThat(arangoDB.getSerde().parse(response.getBody(), "/version").isTextual()).isTrue(); + void executeGetVersion(ArangoDB arangoDB) { + Request request = Request.builder() + .db(DbName.SYSTEM) + .method(Request.Method.GET) + .path("/_api/version") + .queryParam("details", "true") + .build(); + final Response response = arangoDB.execute(request, RawJson.class); + JsonNode body = SerdeUtils.INSTANCE.parseJson(response.getBody().getValue()); + assertThat(body.get("version").isTextual()).isTrue(); + assertThat(body.get("details").isObject()).isTrue(); + String header = response.getHeaders().get("x-arango-queue-time-seconds"); + assertThat(header).isNotNull(); + assertThat(response.getResponseCode()).isEqualTo(200); } @ParameterizedTest(name = "{index}") diff --git a/driver/src/test/java/com/arangodb/JwtAuthTest.java b/driver/src/test/java/com/arangodb/JwtAuthTest.java index 4b4f5a11a..34d41a751 100644 --- a/driver/src/test/java/com/arangodb/JwtAuthTest.java +++ b/driver/src/test/java/com/arangodb/JwtAuthTest.java @@ -1,9 +1,6 @@ package com.arangodb; -import com.arangodb.internal.InternalRequest; -import com.arangodb.internal.InternalResponse; import com.arangodb.internal.config.FileConfigPropertiesProvider; -import com.arangodb.serde.ArangoSerde; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -33,17 +30,19 @@ static void init() { } private static String getJwt(ArangoDB arangoDB) { - ArangoSerde serde = arangoDB.getSerde(); Map reqBody = new HashMap<>(); reqBody.put("username", "root"); reqBody.put("password", "test"); - InternalRequest req = new InternalRequest(DbName.SYSTEM, RequestType.POST, "/_open/auth"); - req.setBody(serde.serialize(reqBody)); + Request req = Request.builder() + .db(DbName.SYSTEM) + .method(Request.Method.POST) + .path("/_open/auth") + .body(reqBody) + .build(); - InternalResponse resp = arangoDB.execute(req); - Map respBody = serde.deserialize(resp.getBody(), Map.class); - return respBody.get("jwt"); + Response resp = arangoDB.execute(req, Map.class); + return (String) resp.getBody().get("jwt"); } @ParameterizedTest diff --git a/driver/src/test/java/com/arangodb/async/ArangoDBTest.java b/driver/src/test/java/com/arangodb/async/ArangoDBTest.java index cec087056..34d645582 100644 --- a/driver/src/test/java/com/arangodb/async/ArangoDBTest.java +++ b/driver/src/test/java/com/arangodb/async/ArangoDBTest.java @@ -23,10 +23,10 @@ import com.arangodb.*; import com.arangodb.entity.*; import com.arangodb.internal.config.FileConfigPropertiesProvider; +import com.arangodb.internal.serde.SerdeUtils; import com.arangodb.model.*; +import com.arangodb.util.RawJson; import com.arangodb.util.TestUtils; -import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -444,10 +444,14 @@ void authenticationFailUser() throws InterruptedException { @Test void execute() throws InterruptedException, ExecutionException { arangoDB - .execute(new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version")) + .execute(Request.builder() + .db(DbName.SYSTEM) + .method(Request.Method.GET) + .path("/_api/version") + .build(), RawJson.class) .whenComplete((response, ex) -> { assertThat(response.getBody()).isNotNull(); - assertThat(arangoDB.getSerde().parse(response.getBody(), "/version").isTextual()).isTrue(); + assertThat(SerdeUtils.INSTANCE.parseJson(response.getBody().getValue()).get("version").isTextual()).isTrue(); }) .get(); } @@ -458,10 +462,14 @@ void execute_acquireHostList_enabled() throws InterruptedException, ExecutionExc .loadProperties(new FileConfigPropertiesProvider()) .acquireHostList(true).build(); arangoDB - .execute(new InternalRequest(DbName.SYSTEM, RequestType.GET, "/_api/version")) + .execute(Request.builder() + .db(DbName.SYSTEM) + .method(Request.Method.GET) + .path("/_api/version") + .build(), RawJson.class) .whenComplete((response, ex) -> { assertThat(response.getBody()).isNotNull(); - assertThat(arangoDB.getSerde().parse(response.getBody(), "/version").isTextual()).isTrue(); + assertThat(SerdeUtils.INSTANCE.parseJson(response.getBody().getValue()).get("version").isTextual()).isTrue(); }) .get(); } diff --git a/driver/src/test/java/com/arangodb/async/JwtAuthTest.java b/driver/src/test/java/com/arangodb/async/JwtAuthTest.java index 15531dd92..f821f3ea9 100644 --- a/driver/src/test/java/com/arangodb/async/JwtAuthTest.java +++ b/driver/src/test/java/com/arangodb/async/JwtAuthTest.java @@ -1,13 +1,7 @@ package com.arangodb.async; -import com.arangodb.ArangoDB; -import com.arangodb.ArangoDBException; -import com.arangodb.DbName; +import com.arangodb.*; import com.arangodb.internal.config.FileConfigPropertiesProvider; -import com.arangodb.serde.ArangoSerde; -import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; -import com.arangodb.internal.InternalResponse; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -35,17 +29,19 @@ static void init() { } private static String getJwt(ArangoDB arangoDB) { - ArangoSerde serde = arangoDB.getSerde(); Map reqBody = new HashMap<>(); reqBody.put("username", "root"); reqBody.put("password", "test"); - InternalRequest req = new InternalRequest(DbName.SYSTEM, RequestType.POST, "/_open/auth"); - req.setBody(serde.serialize(reqBody)); + Request req = Request.builder() + .db(DbName.SYSTEM) + .method(Request.Method.POST) + .path("/_open/auth") + .body(reqBody) + .build(); - InternalResponse resp = arangoDB.execute(req); - Map respBody = serde.deserialize(resp.getBody(), Map.class); - return respBody.get("jwt"); + Response resp = arangoDB.execute(req, Map.class); + return (String) resp.getBody().get("jwt"); } @AfterEach diff --git a/driver/src/test/java/perf/SyncBenchmarkTest.java b/driver/src/test/java/perf/SyncBenchmarkTest.java index 14be47bec..f30ef331a 100644 --- a/driver/src/test/java/perf/SyncBenchmarkTest.java +++ b/driver/src/test/java/perf/SyncBenchmarkTest.java @@ -3,8 +3,7 @@ import com.arangodb.ArangoDB; import com.arangodb.DbName; import com.arangodb.Protocol; -import com.arangodb.internal.InternalRequest; -import com.arangodb.RequestType; +import com.arangodb.Request; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -47,12 +46,16 @@ void getVersionWithDetails(Protocol protocol) { ArangoDB adb = new ArangoDB.Builder().useProtocol(protocol).build(); Benchmark benchmark = new Benchmark(warmupDurationSeconds, numberOfRequests) { - private final InternalRequest request = new InternalRequest(DbName.SYSTEM, RequestType.GET, - "/_api/version").putQueryParam("details", true); + private final Request request = Request.builder() + .db(DbName.SYSTEM) + .method(Request.Method.GET) + .path("/_api/version") + .queryParam("details", "true") + .build(); @Override protected void sendRequest() { - adb.execute(request); + adb.execute(request, Void.class); } @Override