From 4a5d26038394a255ae17817211a5d9ddc93ecd36 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Fri, 13 Jan 2023 13:46:26 +0100 Subject: [PATCH 01/18] prepare next release --- ChangeLog.md | 2 +- docs/v7_detailed_changes.md | 2 +- driver/pom.xml | 2 +- jackson-serde/pom.xml | 2 +- jsonb-serde/pom.xml | 2 +- pom.xml | 2 +- resilience-tests/pom.xml | 2 +- serde-api/pom.xml | 2 +- shaded-integration-tests/pom.xml | 2 +- shaded/pom.xml | 2 +- tutorial/gradle/build.gradle | 2 +- tutorial/maven/pom.xml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index df64c397b..09a65730a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ## [Unreleased] -## [7.0.0-ALPHA.1] +## [7.0.0-ALPHA.2] ### Changed diff --git a/docs/v7_detailed_changes.md b/docs/v7_detailed_changes.md index 2b6bf34d1..f3e873477 100644 --- a/docs/v7_detailed_changes.md +++ b/docs/v7_detailed_changes.md @@ -9,7 +9,7 @@ In your `pom.xml` include the dependency: com.arangodb arangodb-java-driver - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 ``` diff --git a/driver/pom.xml b/driver/pom.xml index 269d92cbd..ad7383c75 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -7,7 +7,7 @@ arangodb-java-driver-parent com.arangodb - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 arangodb-java-driver diff --git a/jackson-serde/pom.xml b/jackson-serde/pom.xml index 69f00e2f5..f7d9dcb0a 100644 --- a/jackson-serde/pom.xml +++ b/jackson-serde/pom.xml @@ -6,7 +6,7 @@ com.arangodb arangodb-java-driver-parent - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 jackson-serde diff --git a/jsonb-serde/pom.xml b/jsonb-serde/pom.xml index ea16f025c..11b4af198 100644 --- a/jsonb-serde/pom.xml +++ b/jsonb-serde/pom.xml @@ -6,7 +6,7 @@ com.arangodb arangodb-java-driver-parent - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 jsonb-serde diff --git a/pom.xml b/pom.xml index ece44143b..d55700b1b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.arangodb arangodb-java-driver-parent - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 2016 driver diff --git a/resilience-tests/pom.xml b/resilience-tests/pom.xml index b323cb36b..8d379f9bf 100644 --- a/resilience-tests/pom.xml +++ b/resilience-tests/pom.xml @@ -5,7 +5,7 @@ arangodb-java-driver-parent com.arangodb - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 4.0.0 diff --git a/serde-api/pom.xml b/serde-api/pom.xml index 67003f219..4186b5f31 100644 --- a/serde-api/pom.xml +++ b/serde-api/pom.xml @@ -6,7 +6,7 @@ com.arangodb arangodb-java-driver-parent - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 serde-api diff --git a/shaded-integration-tests/pom.xml b/shaded-integration-tests/pom.xml index a32599b1b..968dfead6 100644 --- a/shaded-integration-tests/pom.xml +++ b/shaded-integration-tests/pom.xml @@ -7,7 +7,7 @@ com.arangodb arangodb-java-driver-parent - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 shaded-integration-tests diff --git a/shaded/pom.xml b/shaded/pom.xml index 81fc19503..3218bb5c0 100644 --- a/shaded/pom.xml +++ b/shaded/pom.xml @@ -7,7 +7,7 @@ com.arangodb arangodb-java-driver-parent - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 arangodb-java-driver-shaded diff --git a/tutorial/gradle/build.gradle b/tutorial/gradle/build.gradle index 759ef5fbc..fad8b8db1 100644 --- a/tutorial/gradle/build.gradle +++ b/tutorial/gradle/build.gradle @@ -10,5 +10,5 @@ repositories { } dependencies { - implementation 'com.arangodb:arangodb-java-driver:7.0.0-ALPHA.1' + implementation 'com.arangodb:arangodb-java-driver:7.0.0-ALPHA.2' } diff --git a/tutorial/maven/pom.xml b/tutorial/maven/pom.xml index 5e4a51329..5154baa86 100644 --- a/tutorial/maven/pom.xml +++ b/tutorial/maven/pom.xml @@ -19,7 +19,7 @@ com.arangodb arangodb-java-driver - 7.0.0-ALPHA.1 + 7.0.0-ALPHA.2 From f9d5d5c167801dcee299e4ff662b5e3606f1f29a Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 26 Jan 2023 13:00:58 +0100 Subject: [PATCH 02/18] title and version manifest entries --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index d55700b1b..854c3b76a 100644 --- a/pom.xml +++ b/pom.xml @@ -291,6 +291,8 @@ + ${project.name} + ${project.version} ${moduleName} From 5beca40dfe760d39b2baecd781109cf5aadbf565 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 8 Feb 2023 19:44:30 +0100 Subject: [PATCH 03/18] core module --- core/pom.xml | 108 ++++++++++++++++++ .../java/com/arangodb/ArangoCollection.java | 0 .../main/java/com/arangodb/ArangoCursor.java | 0 .../src/main/java/com/arangodb/ArangoDB.java | 0 .../java/com/arangodb/ArangoDBException.java | 0 .../arangodb/ArangoDBMultipleException.java | 0 .../java/com/arangodb/ArangoDatabase.java | 0 .../com/arangodb/ArangoEdgeCollection.java | 0 .../main/java/com/arangodb/ArangoGraph.java | 0 .../java/com/arangodb/ArangoIterable.java | 0 .../java/com/arangodb/ArangoIterator.java | 0 .../main/java/com/arangodb/ArangoMetrics.java | 0 .../main/java/com/arangodb/ArangoSearch.java | 0 .../com/arangodb/ArangoSerdeAccessor.java | 0 .../com/arangodb/ArangoVertexCollection.java | 0 .../main/java/com/arangodb/ArangoView.java | 0 .../src/main/java/com/arangodb/DbName.java | 0 .../java/com/arangodb/PackageVersion.java.in | 0 .../src/main/java/com/arangodb/Protocol.java | 0 .../java/com/arangodb/QueueTimeMetrics.java | 0 .../src/main/java/com/arangodb/Request.java | 0 .../src/main/java/com/arangodb/Response.java | 0 .../main/java/com/arangodb/SearchAlias.java | 0 .../arangodb/async/ArangoCollectionAsync.java | 0 .../com/arangodb/async/ArangoCursorAsync.java | 0 .../com/arangodb/async/ArangoDBAsync.java | 0 .../arangodb/async/ArangoDatabaseAsync.java | 0 .../async/ArangoEdgeCollectionAsync.java | 0 .../com/arangodb/async/ArangoGraphAsync.java | 0 .../com/arangodb/async/ArangoRouteAsync.java | 0 .../com/arangodb/async/ArangoSearchAsync.java | 0 .../async/ArangoVertexCollectionAsync.java | 0 .../com/arangodb/async/ArangoViewAsync.java | 0 .../com/arangodb/async/SearchAliasAsync.java | 0 .../internal/ArangoCollectionAsyncImpl.java | 0 .../async/internal/ArangoCursorAsyncImpl.java | 0 .../async/internal/ArangoDBAsyncImpl.java | 0 .../internal/ArangoDatabaseAsyncImpl.java | 0 .../ArangoEdgeCollectionAsyncImpl.java | 0 .../async/internal/ArangoExecutorAsync.java | 0 .../async/internal/ArangoGraphAsyncImpl.java | 0 .../async/internal/ArangoRouteAsyncImpl.java | 0 .../async/internal/ArangoSearchAsyncImpl.java | 0 .../ArangoVertexCollectionAsyncImpl.java | 0 .../async/internal/ArangoViewAsyncImpl.java | 0 .../async/internal/ExceptionUtil.java | 0 .../async/internal/SearchAliasAsyncImpl.java | 0 .../utils/CompletableFutureUtils.java | 0 .../velocystream/VstCommunicationAsync.java | 0 .../velocystream/VstConnectionAsync.java | 0 .../VstConnectionFactoryAsync.java | 0 .../config/ArangoConfigProperties.java | 0 .../com/arangodb/config/HostDescription.java | 0 .../arangodb/entity/AbstractBaseDocument.java | 0 .../entity/AqlExecutionExplainEntity.java | 0 .../arangodb/entity/AqlFunctionEntity.java | 0 .../com/arangodb/entity/AqlParseEntity.java | 0 .../com/arangodb/entity/ArangoDBEngine.java | 0 .../com/arangodb/entity/ArangoDBVersion.java | 0 .../com/arangodb/entity/BaseDocument.java | 0 .../com/arangodb/entity/BaseEdgeDocument.java | 0 .../com/arangodb/entity/CollectionEntity.java | 0 .../entity/CollectionPropertiesEntity.java | 0 .../entity/CollectionRevisionEntity.java | 0 .../com/arangodb/entity/CollectionStatus.java | 0 .../com/arangodb/entity/CollectionType.java | 0 .../com/arangodb/entity/CursorWarning.java | 0 .../com/arangodb/entity/DatabaseEntity.java | 0 .../arangodb/entity/DocumentCreateEntity.java | 0 .../arangodb/entity/DocumentDeleteEntity.java | 0 .../com/arangodb/entity/DocumentEntity.java | 0 .../arangodb/entity/DocumentImportEntity.java | 0 .../arangodb/entity/DocumentUpdateEntity.java | 0 .../com/arangodb/entity/EdgeDefinition.java | 0 .../java/com/arangodb/entity/EdgeEntity.java | 0 .../com/arangodb/entity/EdgeUpdateEntity.java | 0 .../java/com/arangodb/entity/ErrorEntity.java | 0 .../java/com/arangodb/entity/GraphEntity.java | 0 .../java/com/arangodb/entity/IndexEntity.java | 0 .../java/com/arangodb/entity/IndexType.java | 0 .../arangodb/entity/InvertedIndexEntity.java | 0 .../arangodb/entity/InvertedIndexField.java | 0 .../entity/InvertedIndexPrimarySort.java | 0 .../java/com/arangodb/entity/KeyOptions.java | 0 .../java/com/arangodb/entity/KeyType.java | 0 .../java/com/arangodb/entity/License.java | 0 .../entity/LoadBalancingStrategy.java | 0 .../com/arangodb/entity/LogEntriesEntity.java | 0 .../java/com/arangodb/entity/LogLevel.java | 0 .../com/arangodb/entity/LogLevelEntity.java | 0 .../java/com/arangodb/entity/MetaAware.java | 0 .../arangodb/entity/MultiDocumentEntity.java | 0 .../java/com/arangodb/entity/Permissions.java | 0 .../entity/QueryCachePropertiesEntity.java | 0 .../java/com/arangodb/entity/QueryEntity.java | 0 .../arangodb/entity/QueryExecutionState.java | 0 .../arangodb/entity/QueryOptimizerRule.java | 0 .../entity/QueryTrackingPropertiesEntity.java | 0 .../arangodb/entity/ReplicationFactor.java | 0 .../java/com/arangodb/entity/ServerMode.java | 0 .../java/com/arangodb/entity/ServerRole.java | 0 .../java/com/arangodb/entity/ShardEntity.java | 0 .../com/arangodb/entity/ShardingStrategy.java | 0 .../entity/StreamTransactionEntity.java | 0 .../entity/StreamTransactionStatus.java | 0 .../arangodb/entity/TransactionEntity.java | 0 .../java/com/arangodb/entity/UserEntity.java | 0 .../com/arangodb/entity/VertexEntity.java | 0 .../arangodb/entity/VertexUpdateEntity.java | 0 .../java/com/arangodb/entity/ViewEntity.java | 0 .../java/com/arangodb/entity/ViewType.java | 0 .../entity/arangosearch/AnalyzerFeature.java | 0 .../entity/arangosearch/AnalyzerType.java | 0 .../arangosearch/ArangoSearchCompression.java | 0 .../ArangoSearchPropertiesEntity.java | 0 .../entity/arangosearch/CollectionLink.java | 0 .../arangosearch/ConsolidationPolicy.java | 0 .../arangosearch/ConsolidationType.java | 0 .../entity/arangosearch/FieldLink.java | 0 .../entity/arangosearch/PrimarySort.java | 0 .../entity/arangosearch/SearchAliasIndex.java | 0 .../SearchAliasPropertiesEntity.java | 0 .../entity/arangosearch/StoreValuesType.java | 0 .../entity/arangosearch/StoredValue.java | 0 .../arangosearch/analyzer/AQLAnalyzer.java | 0 .../analyzer/AQLAnalyzerProperties.java | 0 .../analyzer/ClassificationAnalyzer.java | 0 .../ClassificationAnalyzerProperties.java | 0 .../analyzer/CollationAnalyzer.java | 0 .../analyzer/CollationAnalyzerProperties.java | 0 .../analyzer/DelimiterAnalyzer.java | 0 .../analyzer/DelimiterAnalyzerProperties.java | 0 .../arangosearch/analyzer/EdgeNgram.java | 0 .../analyzer/GeoAnalyzerOptions.java | 0 .../analyzer/GeoJSONAnalyzer.java | 0 .../analyzer/GeoJSONAnalyzerProperties.java | 0 .../analyzer/GeoPointAnalyzer.java | 0 .../analyzer/GeoPointAnalyzerProperties.java | 0 .../analyzer/IdentityAnalyzer.java | 0 .../analyzer/MinHashAnalyzer.java | 0 .../analyzer/MinHashAnalyzerProperties.java | 0 .../arangosearch/analyzer/NGramAnalyzer.java | 0 .../analyzer/NGramAnalyzerProperties.java | 0 .../analyzer/NearestNeighborsAnalyzer.java | 0 .../NearestNeighborsAnalyzerProperties.java | 0 .../arangosearch/analyzer/NormAnalyzer.java | 0 .../analyzer/NormAnalyzerProperties.java | 0 .../analyzer/PipelineAnalyzer.java | 0 .../analyzer/PipelineAnalyzerProperties.java | 0 .../arangosearch/analyzer/SearchAnalyzer.java | 0 .../analyzer/SearchAnalyzerCase.java | 0 .../analyzer/SegmentationAnalyzer.java | 0 .../SegmentationAnalyzerProperties.java | 0 .../arangosearch/analyzer/StemAnalyzer.java | 0 .../analyzer/StemAnalyzerProperties.java | 0 .../analyzer/StopwordsAnalyzer.java | 0 .../analyzer/StopwordsAnalyzerProperties.java | 0 .../arangosearch/analyzer/StreamType.java | 0 .../arangosearch/analyzer/TextAnalyzer.java | 0 .../analyzer/TextAnalyzerProperties.java | 0 .../internal/ArangoCollectionImpl.java | 0 .../internal/ArangoCursorExecute.java | 0 .../com/arangodb/internal/ArangoDBImpl.java | 0 .../arangodb/internal/ArangoDatabaseImpl.java | 0 .../com/arangodb/internal/ArangoDefaults.java | 0 .../internal/ArangoEdgeCollectionImpl.java | 0 .../com/arangodb/internal/ArangoErrors.java | 0 .../arangodb/internal/ArangoExecuteable.java | 0 .../com/arangodb/internal/ArangoExecutor.java | 0 .../arangodb/internal/ArangoExecutorSync.java | 0 .../arangodb/internal/ArangoGraphImpl.java | 0 .../arangodb/internal/ArangoMetricsImpl.java | 0 .../arangodb/internal/ArangoRequestParam.java | 0 .../internal/ArangoResponseField.java | 0 .../arangodb/internal/ArangoSearchImpl.java | 0 .../internal/ArangoVertexCollectionImpl.java | 0 .../com/arangodb/internal/ArangoViewImpl.java | 0 .../com/arangodb/internal/DocumentFields.java | 0 .../internal/InternalArangoCollection.java | 0 .../arangodb/internal/InternalArangoDB.java | 0 .../internal/InternalArangoDBBuilder.java | 0 .../internal/InternalArangoDatabase.java | 0 .../InternalArangoEdgeCollection.java | 0 .../internal/InternalArangoGraph.java | 0 .../internal/InternalArangoRoute.java | 0 .../internal/InternalArangoSearch.java | 0 .../InternalArangoVertexCollection.java | 0 .../arangodb/internal/InternalArangoView.java | 0 .../arangodb/internal/InternalRequest.java | 0 .../arangodb/internal/InternalResponse.java | 0 .../internal/InternalSearchAlias.java | 0 .../internal/QueueTimeMetricsImpl.java | 0 .../com/arangodb/internal/RequestType.java | 0 .../arangodb/internal/SearchAliasImpl.java | 0 .../config/ArangoConfigPropertiesImpl.java | 0 .../cursor/AbstractArangoIterable.java | 0 .../internal/cursor/ArangoCursorImpl.java | 0 .../internal/cursor/ArangoCursorIterator.java | 0 .../cursor/entity/InternalCursorEntity.java | 0 .../internal/http/HttpCommunication.java | 0 .../internal/http/HttpConnection.java | 0 .../internal/http/HttpConnectionFactory.java | 0 .../arangodb/internal/http/HttpProtocol.java | 0 .../com/arangodb/internal/net/AccessType.java | 0 .../net/ArangoDBRedirectException.java | 0 .../internal/net/CommunicationProtocol.java | 0 .../com/arangodb/internal/net/Connection.java | 0 .../internal/net/ConnectionFactory.java | 0 .../arangodb/internal/net/ConnectionPool.java | 0 .../internal/net/ConnectionPoolImpl.java | 0 .../internal/net/DirtyReadHostHandler.java | 0 .../internal/net/ExtendedHostResolver.java | 0 .../internal/net/FallbackHostHandler.java | 0 .../java/com/arangodb/internal/net/Host.java | 0 .../com/arangodb/internal/net/HostHandle.java | 0 .../arangodb/internal/net/HostHandler.java | 0 .../com/arangodb/internal/net/HostImpl.java | 0 .../arangodb/internal/net/HostResolver.java | 0 .../com/arangodb/internal/net/HostSet.java | 0 .../internal/net/RandomHostHandler.java | 0 .../internal/net/RoundRobinHostHandler.java | 0 .../internal/net/SimpleHostResolver.java | 0 .../internal/serde/ContentTypeFactory.java | 0 .../serde/InternalAnnotationIntrospector.java | 0 .../internal/serde/InternalDeserializers.java | 0 .../serde/InternalJsonMapperProvider.java | 0 .../serde/InternalMapperProvider.java | 0 .../internal/serde/InternalModule.java | 0 .../serde/InternalParameterizedType.java | 0 .../internal/serde/InternalSerde.java | 0 .../internal/serde/InternalSerdeImpl.java | 0 .../internal/serde/InternalSerdeProvider.java | 0 .../internal/serde/InternalSerializers.java | 0 .../serde/InternalVPackMapperProvider.java | 0 .../arangodb/internal/serde/SerdeUtils.java | 0 .../com/arangodb/internal/serde/UserData.java | 0 .../internal/serde/UserDataDeserializer.java | 0 .../internal/serde/UserDataInside.java | 0 .../internal/serde/UserDataSerializer.java | 0 .../arangodb/internal/util/DocumentUtil.java | 0 .../arangodb/internal/util/EncodeUtils.java | 0 .../com/arangodb/internal/util/HostUtils.java | 0 .../arangodb/internal/util/RequestUtils.java | 0 .../arangodb/internal/util/ResponseUtils.java | 0 .../velocystream/VstCommunication.java | 0 .../velocystream/VstCommunicationSync.java | 0 .../VstConnectionFactorySync.java | 0 .../internal/velocystream/VstProtocol.java | 0 .../internal/AuthenticationRequest.java | 0 .../internal/velocystream/internal/Chunk.java | 0 .../velocystream/internal/ChunkStore.java | 0 .../internal/JwtAuthenticationRequest.java | 0 .../velocystream/internal/Message.java | 0 .../velocystream/internal/MessageStore.java | 0 .../velocystream/internal/VstConnection.java | 0 .../internal/VstConnectionSync.java | 0 .../model/AqlFunctionCreateOptions.java | 0 .../model/AqlFunctionDeleteOptions.java | 0 .../arangodb/model/AqlFunctionGetOptions.java | 0 .../model/AqlQueryExplainOptions.java | 0 .../com/arangodb/model/AqlQueryOptions.java | 0 .../arangodb/model/AqlQueryParseOptions.java | 0 .../model/CollectionCountOptions.java | 0 .../model/CollectionCreateOptions.java | 0 .../model/CollectionPropertiesOptions.java | 0 .../model/CollectionRenameOptions.java | 0 .../com/arangodb/model/CollectionSchema.java | 0 .../model/CollectionTruncateOptions.java | 0 .../model/CollectionsReadOptions.java | 0 .../com/arangodb/model/ComputedValue.java | 0 .../com/arangodb/model/DBCreateOptions.java | 0 .../com/arangodb/model/DatabaseOptions.java | 0 .../arangodb/model/DatabaseUsersOptions.java | 0 .../arangodb/model/DocumentCreateOptions.java | 0 .../arangodb/model/DocumentDeleteOptions.java | 0 .../arangodb/model/DocumentExistsOptions.java | 0 .../arangodb/model/DocumentImportOptions.java | 0 .../arangodb/model/DocumentReadOptions.java | 0 .../model/DocumentReplaceOptions.java | 0 .../arangodb/model/DocumentUpdateOptions.java | 0 .../com/arangodb/model/EdgeCreateOptions.java | 0 .../com/arangodb/model/EdgeDeleteOptions.java | 0 .../arangodb/model/EdgeReplaceOptions.java | 0 .../com/arangodb/model/EdgeUpdateOptions.java | 0 .../arangodb/model/FulltextIndexOptions.java | 0 .../com/arangodb/model/GeoIndexOptions.java | 0 .../arangodb/model/GraphCreateOptions.java | 0 .../model/GraphDocumentReadOptions.java | 0 .../com/arangodb/model/HashIndexOptions.java | 0 .../java/com/arangodb/model/ImportType.java | 0 .../java/com/arangodb/model/IndexOptions.java | 0 .../arangodb/model/InvertedIndexOptions.java | 0 .../java/com/arangodb/model/LogOptions.java | 0 .../com/arangodb/model/OptionsBuilder.java | 0 .../com/arangodb/model/OverwriteMode.java | 0 .../model/PersistentIndexOptions.java | 0 .../com/arangodb/model/QueueTimeSample.java | 0 .../arangodb/model/SkiplistIndexOptions.java | 0 .../model/StreamTransactionOptions.java | 0 .../model/TransactionCollectionOptions.java | 0 .../arangodb/model/TransactionOptions.java | 0 .../com/arangodb/model/TtlIndexOptions.java | 0 .../com/arangodb/model/UserAccessOptions.java | 0 .../com/arangodb/model/UserCreateOptions.java | 0 .../com/arangodb/model/UserUpdateOptions.java | 0 .../model/VertexCollectionCreateOptions.java | 0 .../arangodb/model/VertexCreateOptions.java | 0 .../arangodb/model/VertexDeleteOptions.java | 0 .../arangodb/model/VertexReplaceOptions.java | 0 .../arangodb/model/VertexUpdateOptions.java | 0 .../com/arangodb/model/ViewCreateOptions.java | 0 .../com/arangodb/model/ViewRenameOptions.java | 0 .../com/arangodb/model/ZKDIndexOptions.java | 0 .../arangosearch/AnalyzerDeleteOptions.java | 0 .../ArangoSearchCreateOptions.java | 0 .../ArangoSearchOptionsBuilder.java | 0 .../ArangoSearchPropertiesOptions.java | 0 .../SearchAliasCreateOptions.java | 0 .../SearchAliasOptionsBuilder.java | 0 .../SearchAliasPropertiesOptions.java | 0 .../main/java/com/arangodb/util/RawBytes.java | 0 .../main/java/com/arangodb/util/RawData.java | 0 .../main/java/com/arangodb/util/RawJson.java | 0 .../java/com/arangodb/util/UnicodeUtils.java | 0 driver/pom.xml | 55 +-------- pom.xml | 6 + 326 files changed, 120 insertions(+), 49 deletions(-) create mode 100644 core/pom.xml rename {driver => core}/src/main/java/com/arangodb/ArangoCollection.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoCursor.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoDB.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoDBException.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoDBMultipleException.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoDatabase.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoEdgeCollection.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoGraph.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoIterable.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoIterator.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoMetrics.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoSearch.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoSerdeAccessor.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoVertexCollection.java (100%) rename {driver => core}/src/main/java/com/arangodb/ArangoView.java (100%) rename {driver => core}/src/main/java/com/arangodb/DbName.java (100%) rename {driver => core}/src/main/java/com/arangodb/PackageVersion.java.in (100%) rename {driver => core}/src/main/java/com/arangodb/Protocol.java (100%) rename {driver => core}/src/main/java/com/arangodb/QueueTimeMetrics.java (100%) rename {driver => core}/src/main/java/com/arangodb/Request.java (100%) rename {driver => core}/src/main/java/com/arangodb/Response.java (100%) rename {driver => core}/src/main/java/com/arangodb/SearchAlias.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoCollectionAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoCursorAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoDBAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoGraphAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoRouteAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoSearchAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/ArangoViewAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/SearchAliasAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoCursorAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoEdgeCollectionAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoGraphAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoSearchAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoVertexCollectionAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ArangoViewAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/ExceptionUtil.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/SearchAliasAsyncImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/utils/CompletableFutureUtils.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java (100%) rename {driver => core}/src/main/java/com/arangodb/config/ArangoConfigProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/config/HostDescription.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/AbstractBaseDocument.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/AqlExecutionExplainEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/AqlFunctionEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/AqlParseEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ArangoDBEngine.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ArangoDBVersion.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/BaseDocument.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/BaseEdgeDocument.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/CollectionEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/CollectionRevisionEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/CollectionStatus.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/CollectionType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/CursorWarning.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/DatabaseEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/DocumentCreateEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/DocumentDeleteEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/DocumentEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/DocumentImportEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/DocumentUpdateEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/EdgeDefinition.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/EdgeEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/EdgeUpdateEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ErrorEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/GraphEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/IndexEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/IndexType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/InvertedIndexEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/InvertedIndexField.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/InvertedIndexPrimarySort.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/KeyOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/KeyType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/License.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/LoadBalancingStrategy.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/LogEntriesEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/LogLevel.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/LogLevelEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/MetaAware.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/MultiDocumentEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/Permissions.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/QueryEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/QueryExecutionState.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/QueryOptimizerRule.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/QueryTrackingPropertiesEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ReplicationFactor.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ServerMode.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ServerRole.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ShardEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ShardingStrategy.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/StreamTransactionEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/StreamTransactionStatus.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/TransactionEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/UserEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/VertexEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/VertexUpdateEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ViewEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/ViewType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/AnalyzerFeature.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/AnalyzerType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchCompression.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchPropertiesEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/ConsolidationPolicy.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/ConsolidationType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/SearchAliasIndex.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/SearchAliasPropertiesEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/StoreValuesType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/StoredValue.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/EdgeNgram.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoAnalyzerOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/IdentityAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzerCase.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/StreamType.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzer.java (100%) rename {driver => core}/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzerProperties.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoCursorExecute.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoDBImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoDefaults.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoEdgeCollectionImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoErrors.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoExecuteable.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoExecutor.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoExecutorSync.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoGraphImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoMetricsImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoRequestParam.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoResponseField.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoSearchImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoVertexCollectionImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/ArangoViewImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/DocumentFields.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoCollection.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoDB.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoDatabase.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoGraph.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoRoute.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoSearch.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalArangoView.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalRequest.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalResponse.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/InternalSearchAlias.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/QueueTimeMetricsImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/RequestType.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/SearchAliasImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/config/ArangoConfigPropertiesImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/cursor/ArangoCursorIterator.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/cursor/entity/InternalCursorEntity.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/http/HttpCommunication.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/http/HttpConnection.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/http/HttpProtocol.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/AccessType.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/ArangoDBRedirectException.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/Connection.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/ConnectionFactory.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/ConnectionPool.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/Host.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/HostHandle.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/HostHandler.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/HostImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/HostResolver.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/HostSet.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/RandomHostHandler.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/net/SimpleHostResolver.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/ContentTypeFactory.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalAnnotationIntrospector.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalModule.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalParameterizedType.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalSerde.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalSerializers.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/SerdeUtils.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/UserData.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/UserDataDeserializer.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/UserDataInside.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/serde/UserDataSerializer.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/util/DocumentUtil.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/util/EncodeUtils.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/util/HostUtils.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/util/RequestUtils.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/util/ResponseUtils.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/Message.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java (100%) rename {driver => core}/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/AqlFunctionCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/AqlFunctionDeleteOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/AqlFunctionGetOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/AqlQueryOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/AqlQueryParseOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionCountOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionRenameOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionSchema.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionTruncateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/CollectionsReadOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/ComputedValue.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DBCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DatabaseOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DatabaseUsersOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentDeleteOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentExistsOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentImportOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentReadOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentReplaceOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/DocumentUpdateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/EdgeCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/EdgeDeleteOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/EdgeReplaceOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/EdgeUpdateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/FulltextIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/GeoIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/GraphCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/GraphDocumentReadOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/HashIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/ImportType.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/IndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/InvertedIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/LogOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/OptionsBuilder.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/OverwriteMode.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/PersistentIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/QueueTimeSample.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/SkiplistIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/StreamTransactionOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/TransactionCollectionOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/TransactionOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/TtlIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/UserAccessOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/UserCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/UserUpdateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/VertexCollectionCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/VertexCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/VertexDeleteOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/VertexReplaceOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/VertexUpdateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/ViewCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/ViewRenameOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/ZKDIndexOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/AnalyzerDeleteOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/ArangoSearchOptionsBuilder.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/ArangoSearchPropertiesOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/SearchAliasCreateOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/SearchAliasOptionsBuilder.java (100%) rename {driver => core}/src/main/java/com/arangodb/model/arangosearch/SearchAliasPropertiesOptions.java (100%) rename {driver => core}/src/main/java/com/arangodb/util/RawBytes.java (100%) rename {driver => core}/src/main/java/com/arangodb/util/RawData.java (100%) rename {driver => core}/src/main/java/com/arangodb/util/RawJson.java (100%) rename {driver => core}/src/main/java/com/arangodb/util/UnicodeUtils.java (100%) diff --git a/core/pom.xml b/core/pom.xml new file mode 100644 index 000000000..1b793bd95 --- /dev/null +++ b/core/pom.xml @@ -0,0 +1,108 @@ + + + 4.0.0 + + com.arangodb + arangodb-java-driver-parent + 7.0.0-ALPHA.2 + + + core + core + Core module for ArangoDB Java Driver + + + com.arangodb.core + + + + + com.arangodb + serde-api + + + com.arangodb + jackson-serde + + + org.slf4j + slf4j-api + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-annotations + + + io.vertx + vertx-web-client + + + com.arangodb + jackson-dataformat-velocypack + true + + + com.google.code.findbugs + jsr305 + 3.0.2 + provided + + + + + + + com.google.code.maven-replacer-plugin + replacer + 1.5.3 + + + generate-sources + + replace + + + + + ${project.basedir}/src/main/java/com/arangodb/PackageVersion.java.in + ${project.build.directory}/generated-sources/replacer/com/arangodb/PackageVersion.java + + + + @project.version@ + ${project.version} + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.3.0 + + + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/replacer + + + + + + + + \ No newline at end of file diff --git a/driver/src/main/java/com/arangodb/ArangoCollection.java b/core/src/main/java/com/arangodb/ArangoCollection.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoCollection.java rename to core/src/main/java/com/arangodb/ArangoCollection.java diff --git a/driver/src/main/java/com/arangodb/ArangoCursor.java b/core/src/main/java/com/arangodb/ArangoCursor.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoCursor.java rename to core/src/main/java/com/arangodb/ArangoCursor.java diff --git a/driver/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoDB.java rename to core/src/main/java/com/arangodb/ArangoDB.java diff --git a/driver/src/main/java/com/arangodb/ArangoDBException.java b/core/src/main/java/com/arangodb/ArangoDBException.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoDBException.java rename to core/src/main/java/com/arangodb/ArangoDBException.java diff --git a/driver/src/main/java/com/arangodb/ArangoDBMultipleException.java b/core/src/main/java/com/arangodb/ArangoDBMultipleException.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoDBMultipleException.java rename to core/src/main/java/com/arangodb/ArangoDBMultipleException.java diff --git a/driver/src/main/java/com/arangodb/ArangoDatabase.java b/core/src/main/java/com/arangodb/ArangoDatabase.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoDatabase.java rename to core/src/main/java/com/arangodb/ArangoDatabase.java diff --git a/driver/src/main/java/com/arangodb/ArangoEdgeCollection.java b/core/src/main/java/com/arangodb/ArangoEdgeCollection.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoEdgeCollection.java rename to core/src/main/java/com/arangodb/ArangoEdgeCollection.java diff --git a/driver/src/main/java/com/arangodb/ArangoGraph.java b/core/src/main/java/com/arangodb/ArangoGraph.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoGraph.java rename to core/src/main/java/com/arangodb/ArangoGraph.java diff --git a/driver/src/main/java/com/arangodb/ArangoIterable.java b/core/src/main/java/com/arangodb/ArangoIterable.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoIterable.java rename to core/src/main/java/com/arangodb/ArangoIterable.java diff --git a/driver/src/main/java/com/arangodb/ArangoIterator.java b/core/src/main/java/com/arangodb/ArangoIterator.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoIterator.java rename to core/src/main/java/com/arangodb/ArangoIterator.java diff --git a/driver/src/main/java/com/arangodb/ArangoMetrics.java b/core/src/main/java/com/arangodb/ArangoMetrics.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoMetrics.java rename to core/src/main/java/com/arangodb/ArangoMetrics.java diff --git a/driver/src/main/java/com/arangodb/ArangoSearch.java b/core/src/main/java/com/arangodb/ArangoSearch.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoSearch.java rename to core/src/main/java/com/arangodb/ArangoSearch.java diff --git a/driver/src/main/java/com/arangodb/ArangoSerdeAccessor.java b/core/src/main/java/com/arangodb/ArangoSerdeAccessor.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoSerdeAccessor.java rename to core/src/main/java/com/arangodb/ArangoSerdeAccessor.java diff --git a/driver/src/main/java/com/arangodb/ArangoVertexCollection.java b/core/src/main/java/com/arangodb/ArangoVertexCollection.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoVertexCollection.java rename to core/src/main/java/com/arangodb/ArangoVertexCollection.java diff --git a/driver/src/main/java/com/arangodb/ArangoView.java b/core/src/main/java/com/arangodb/ArangoView.java similarity index 100% rename from driver/src/main/java/com/arangodb/ArangoView.java rename to core/src/main/java/com/arangodb/ArangoView.java diff --git a/driver/src/main/java/com/arangodb/DbName.java b/core/src/main/java/com/arangodb/DbName.java similarity index 100% rename from driver/src/main/java/com/arangodb/DbName.java rename to core/src/main/java/com/arangodb/DbName.java diff --git a/driver/src/main/java/com/arangodb/PackageVersion.java.in b/core/src/main/java/com/arangodb/PackageVersion.java.in similarity index 100% rename from driver/src/main/java/com/arangodb/PackageVersion.java.in rename to core/src/main/java/com/arangodb/PackageVersion.java.in diff --git a/driver/src/main/java/com/arangodb/Protocol.java b/core/src/main/java/com/arangodb/Protocol.java similarity index 100% rename from driver/src/main/java/com/arangodb/Protocol.java rename to core/src/main/java/com/arangodb/Protocol.java diff --git a/driver/src/main/java/com/arangodb/QueueTimeMetrics.java b/core/src/main/java/com/arangodb/QueueTimeMetrics.java similarity index 100% rename from driver/src/main/java/com/arangodb/QueueTimeMetrics.java rename to core/src/main/java/com/arangodb/QueueTimeMetrics.java diff --git a/driver/src/main/java/com/arangodb/Request.java b/core/src/main/java/com/arangodb/Request.java similarity index 100% rename from driver/src/main/java/com/arangodb/Request.java rename to core/src/main/java/com/arangodb/Request.java diff --git a/driver/src/main/java/com/arangodb/Response.java b/core/src/main/java/com/arangodb/Response.java similarity index 100% rename from driver/src/main/java/com/arangodb/Response.java rename to core/src/main/java/com/arangodb/Response.java diff --git a/driver/src/main/java/com/arangodb/SearchAlias.java b/core/src/main/java/com/arangodb/SearchAlias.java similarity index 100% rename from driver/src/main/java/com/arangodb/SearchAlias.java rename to core/src/main/java/com/arangodb/SearchAlias.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoCollectionAsync.java b/core/src/main/java/com/arangodb/async/ArangoCollectionAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoCollectionAsync.java rename to core/src/main/java/com/arangodb/async/ArangoCollectionAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoCursorAsync.java b/core/src/main/java/com/arangodb/async/ArangoCursorAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoCursorAsync.java rename to core/src/main/java/com/arangodb/async/ArangoCursorAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoDBAsync.java b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoDBAsync.java rename to core/src/main/java/com/arangodb/async/ArangoDBAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java b/core/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java rename to core/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java b/core/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java rename to core/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoGraphAsync.java b/core/src/main/java/com/arangodb/async/ArangoGraphAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoGraphAsync.java rename to core/src/main/java/com/arangodb/async/ArangoGraphAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoRouteAsync.java b/core/src/main/java/com/arangodb/async/ArangoRouteAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoRouteAsync.java rename to core/src/main/java/com/arangodb/async/ArangoRouteAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoSearchAsync.java b/core/src/main/java/com/arangodb/async/ArangoSearchAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoSearchAsync.java rename to core/src/main/java/com/arangodb/async/ArangoSearchAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java b/core/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java rename to core/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java diff --git a/driver/src/main/java/com/arangodb/async/ArangoViewAsync.java b/core/src/main/java/com/arangodb/async/ArangoViewAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/ArangoViewAsync.java rename to core/src/main/java/com/arangodb/async/ArangoViewAsync.java diff --git a/driver/src/main/java/com/arangodb/async/SearchAliasAsync.java b/core/src/main/java/com/arangodb/async/SearchAliasAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/SearchAliasAsync.java rename to core/src/main/java/com/arangodb/async/SearchAliasAsync.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoCursorAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoCursorAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoCursorAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoCursorAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoDatabaseAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoEdgeCollectionAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoEdgeCollectionAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoEdgeCollectionAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoEdgeCollectionAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java b/core/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java rename to core/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoGraphAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoGraphAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoGraphAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoGraphAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoRouteAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoSearchAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoSearchAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoSearchAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoSearchAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoVertexCollectionAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoVertexCollectionAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoVertexCollectionAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoVertexCollectionAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ArangoViewAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoViewAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ArangoViewAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/ArangoViewAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/ExceptionUtil.java b/core/src/main/java/com/arangodb/async/internal/ExceptionUtil.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/ExceptionUtil.java rename to core/src/main/java/com/arangodb/async/internal/ExceptionUtil.java diff --git a/driver/src/main/java/com/arangodb/async/internal/SearchAliasAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/SearchAliasAsyncImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/SearchAliasAsyncImpl.java rename to core/src/main/java/com/arangodb/async/internal/SearchAliasAsyncImpl.java diff --git a/driver/src/main/java/com/arangodb/async/internal/utils/CompletableFutureUtils.java b/core/src/main/java/com/arangodb/async/internal/utils/CompletableFutureUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/utils/CompletableFutureUtils.java rename to core/src/main/java/com/arangodb/async/internal/utils/CompletableFutureUtils.java diff --git a/driver/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java rename to core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java diff --git a/driver/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java rename to core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java diff --git a/driver/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java similarity index 100% rename from driver/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java rename to core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java diff --git a/driver/src/main/java/com/arangodb/config/ArangoConfigProperties.java b/core/src/main/java/com/arangodb/config/ArangoConfigProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/config/ArangoConfigProperties.java rename to core/src/main/java/com/arangodb/config/ArangoConfigProperties.java diff --git a/driver/src/main/java/com/arangodb/config/HostDescription.java b/core/src/main/java/com/arangodb/config/HostDescription.java similarity index 100% rename from driver/src/main/java/com/arangodb/config/HostDescription.java rename to core/src/main/java/com/arangodb/config/HostDescription.java diff --git a/driver/src/main/java/com/arangodb/entity/AbstractBaseDocument.java b/core/src/main/java/com/arangodb/entity/AbstractBaseDocument.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/AbstractBaseDocument.java rename to core/src/main/java/com/arangodb/entity/AbstractBaseDocument.java diff --git a/driver/src/main/java/com/arangodb/entity/AqlExecutionExplainEntity.java b/core/src/main/java/com/arangodb/entity/AqlExecutionExplainEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/AqlExecutionExplainEntity.java rename to core/src/main/java/com/arangodb/entity/AqlExecutionExplainEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/AqlFunctionEntity.java b/core/src/main/java/com/arangodb/entity/AqlFunctionEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/AqlFunctionEntity.java rename to core/src/main/java/com/arangodb/entity/AqlFunctionEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/AqlParseEntity.java b/core/src/main/java/com/arangodb/entity/AqlParseEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/AqlParseEntity.java rename to core/src/main/java/com/arangodb/entity/AqlParseEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/ArangoDBEngine.java b/core/src/main/java/com/arangodb/entity/ArangoDBEngine.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ArangoDBEngine.java rename to core/src/main/java/com/arangodb/entity/ArangoDBEngine.java diff --git a/driver/src/main/java/com/arangodb/entity/ArangoDBVersion.java b/core/src/main/java/com/arangodb/entity/ArangoDBVersion.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ArangoDBVersion.java rename to core/src/main/java/com/arangodb/entity/ArangoDBVersion.java diff --git a/driver/src/main/java/com/arangodb/entity/BaseDocument.java b/core/src/main/java/com/arangodb/entity/BaseDocument.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/BaseDocument.java rename to core/src/main/java/com/arangodb/entity/BaseDocument.java diff --git a/driver/src/main/java/com/arangodb/entity/BaseEdgeDocument.java b/core/src/main/java/com/arangodb/entity/BaseEdgeDocument.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/BaseEdgeDocument.java rename to core/src/main/java/com/arangodb/entity/BaseEdgeDocument.java diff --git a/driver/src/main/java/com/arangodb/entity/CollectionEntity.java b/core/src/main/java/com/arangodb/entity/CollectionEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/CollectionEntity.java rename to core/src/main/java/com/arangodb/entity/CollectionEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java b/core/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java rename to core/src/main/java/com/arangodb/entity/CollectionPropertiesEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/CollectionRevisionEntity.java b/core/src/main/java/com/arangodb/entity/CollectionRevisionEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/CollectionRevisionEntity.java rename to core/src/main/java/com/arangodb/entity/CollectionRevisionEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/CollectionStatus.java b/core/src/main/java/com/arangodb/entity/CollectionStatus.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/CollectionStatus.java rename to core/src/main/java/com/arangodb/entity/CollectionStatus.java diff --git a/driver/src/main/java/com/arangodb/entity/CollectionType.java b/core/src/main/java/com/arangodb/entity/CollectionType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/CollectionType.java rename to core/src/main/java/com/arangodb/entity/CollectionType.java diff --git a/driver/src/main/java/com/arangodb/entity/CursorWarning.java b/core/src/main/java/com/arangodb/entity/CursorWarning.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/CursorWarning.java rename to core/src/main/java/com/arangodb/entity/CursorWarning.java diff --git a/driver/src/main/java/com/arangodb/entity/DatabaseEntity.java b/core/src/main/java/com/arangodb/entity/DatabaseEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/DatabaseEntity.java rename to core/src/main/java/com/arangodb/entity/DatabaseEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/DocumentCreateEntity.java b/core/src/main/java/com/arangodb/entity/DocumentCreateEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/DocumentCreateEntity.java rename to core/src/main/java/com/arangodb/entity/DocumentCreateEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/DocumentDeleteEntity.java b/core/src/main/java/com/arangodb/entity/DocumentDeleteEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/DocumentDeleteEntity.java rename to core/src/main/java/com/arangodb/entity/DocumentDeleteEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/DocumentEntity.java b/core/src/main/java/com/arangodb/entity/DocumentEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/DocumentEntity.java rename to core/src/main/java/com/arangodb/entity/DocumentEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/DocumentImportEntity.java b/core/src/main/java/com/arangodb/entity/DocumentImportEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/DocumentImportEntity.java rename to core/src/main/java/com/arangodb/entity/DocumentImportEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/DocumentUpdateEntity.java b/core/src/main/java/com/arangodb/entity/DocumentUpdateEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/DocumentUpdateEntity.java rename to core/src/main/java/com/arangodb/entity/DocumentUpdateEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/EdgeDefinition.java b/core/src/main/java/com/arangodb/entity/EdgeDefinition.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/EdgeDefinition.java rename to core/src/main/java/com/arangodb/entity/EdgeDefinition.java diff --git a/driver/src/main/java/com/arangodb/entity/EdgeEntity.java b/core/src/main/java/com/arangodb/entity/EdgeEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/EdgeEntity.java rename to core/src/main/java/com/arangodb/entity/EdgeEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/EdgeUpdateEntity.java b/core/src/main/java/com/arangodb/entity/EdgeUpdateEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/EdgeUpdateEntity.java rename to core/src/main/java/com/arangodb/entity/EdgeUpdateEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/ErrorEntity.java b/core/src/main/java/com/arangodb/entity/ErrorEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ErrorEntity.java rename to core/src/main/java/com/arangodb/entity/ErrorEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/GraphEntity.java b/core/src/main/java/com/arangodb/entity/GraphEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/GraphEntity.java rename to core/src/main/java/com/arangodb/entity/GraphEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/IndexEntity.java b/core/src/main/java/com/arangodb/entity/IndexEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/IndexEntity.java rename to core/src/main/java/com/arangodb/entity/IndexEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/IndexType.java b/core/src/main/java/com/arangodb/entity/IndexType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/IndexType.java rename to core/src/main/java/com/arangodb/entity/IndexType.java diff --git a/driver/src/main/java/com/arangodb/entity/InvertedIndexEntity.java b/core/src/main/java/com/arangodb/entity/InvertedIndexEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/InvertedIndexEntity.java rename to core/src/main/java/com/arangodb/entity/InvertedIndexEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/InvertedIndexField.java b/core/src/main/java/com/arangodb/entity/InvertedIndexField.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/InvertedIndexField.java rename to core/src/main/java/com/arangodb/entity/InvertedIndexField.java diff --git a/driver/src/main/java/com/arangodb/entity/InvertedIndexPrimarySort.java b/core/src/main/java/com/arangodb/entity/InvertedIndexPrimarySort.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/InvertedIndexPrimarySort.java rename to core/src/main/java/com/arangodb/entity/InvertedIndexPrimarySort.java diff --git a/driver/src/main/java/com/arangodb/entity/KeyOptions.java b/core/src/main/java/com/arangodb/entity/KeyOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/KeyOptions.java rename to core/src/main/java/com/arangodb/entity/KeyOptions.java diff --git a/driver/src/main/java/com/arangodb/entity/KeyType.java b/core/src/main/java/com/arangodb/entity/KeyType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/KeyType.java rename to core/src/main/java/com/arangodb/entity/KeyType.java diff --git a/driver/src/main/java/com/arangodb/entity/License.java b/core/src/main/java/com/arangodb/entity/License.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/License.java rename to core/src/main/java/com/arangodb/entity/License.java diff --git a/driver/src/main/java/com/arangodb/entity/LoadBalancingStrategy.java b/core/src/main/java/com/arangodb/entity/LoadBalancingStrategy.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/LoadBalancingStrategy.java rename to core/src/main/java/com/arangodb/entity/LoadBalancingStrategy.java diff --git a/driver/src/main/java/com/arangodb/entity/LogEntriesEntity.java b/core/src/main/java/com/arangodb/entity/LogEntriesEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/LogEntriesEntity.java rename to core/src/main/java/com/arangodb/entity/LogEntriesEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/LogLevel.java b/core/src/main/java/com/arangodb/entity/LogLevel.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/LogLevel.java rename to core/src/main/java/com/arangodb/entity/LogLevel.java diff --git a/driver/src/main/java/com/arangodb/entity/LogLevelEntity.java b/core/src/main/java/com/arangodb/entity/LogLevelEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/LogLevelEntity.java rename to core/src/main/java/com/arangodb/entity/LogLevelEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/MetaAware.java b/core/src/main/java/com/arangodb/entity/MetaAware.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/MetaAware.java rename to core/src/main/java/com/arangodb/entity/MetaAware.java diff --git a/driver/src/main/java/com/arangodb/entity/MultiDocumentEntity.java b/core/src/main/java/com/arangodb/entity/MultiDocumentEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/MultiDocumentEntity.java rename to core/src/main/java/com/arangodb/entity/MultiDocumentEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/Permissions.java b/core/src/main/java/com/arangodb/entity/Permissions.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/Permissions.java rename to core/src/main/java/com/arangodb/entity/Permissions.java diff --git a/driver/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java b/core/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java rename to core/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/QueryEntity.java b/core/src/main/java/com/arangodb/entity/QueryEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/QueryEntity.java rename to core/src/main/java/com/arangodb/entity/QueryEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/QueryExecutionState.java b/core/src/main/java/com/arangodb/entity/QueryExecutionState.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/QueryExecutionState.java rename to core/src/main/java/com/arangodb/entity/QueryExecutionState.java diff --git a/driver/src/main/java/com/arangodb/entity/QueryOptimizerRule.java b/core/src/main/java/com/arangodb/entity/QueryOptimizerRule.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/QueryOptimizerRule.java rename to core/src/main/java/com/arangodb/entity/QueryOptimizerRule.java diff --git a/driver/src/main/java/com/arangodb/entity/QueryTrackingPropertiesEntity.java b/core/src/main/java/com/arangodb/entity/QueryTrackingPropertiesEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/QueryTrackingPropertiesEntity.java rename to core/src/main/java/com/arangodb/entity/QueryTrackingPropertiesEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/ReplicationFactor.java b/core/src/main/java/com/arangodb/entity/ReplicationFactor.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ReplicationFactor.java rename to core/src/main/java/com/arangodb/entity/ReplicationFactor.java diff --git a/driver/src/main/java/com/arangodb/entity/ServerMode.java b/core/src/main/java/com/arangodb/entity/ServerMode.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ServerMode.java rename to core/src/main/java/com/arangodb/entity/ServerMode.java diff --git a/driver/src/main/java/com/arangodb/entity/ServerRole.java b/core/src/main/java/com/arangodb/entity/ServerRole.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ServerRole.java rename to core/src/main/java/com/arangodb/entity/ServerRole.java diff --git a/driver/src/main/java/com/arangodb/entity/ShardEntity.java b/core/src/main/java/com/arangodb/entity/ShardEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ShardEntity.java rename to core/src/main/java/com/arangodb/entity/ShardEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/ShardingStrategy.java b/core/src/main/java/com/arangodb/entity/ShardingStrategy.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ShardingStrategy.java rename to core/src/main/java/com/arangodb/entity/ShardingStrategy.java diff --git a/driver/src/main/java/com/arangodb/entity/StreamTransactionEntity.java b/core/src/main/java/com/arangodb/entity/StreamTransactionEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/StreamTransactionEntity.java rename to core/src/main/java/com/arangodb/entity/StreamTransactionEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/StreamTransactionStatus.java b/core/src/main/java/com/arangodb/entity/StreamTransactionStatus.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/StreamTransactionStatus.java rename to core/src/main/java/com/arangodb/entity/StreamTransactionStatus.java diff --git a/driver/src/main/java/com/arangodb/entity/TransactionEntity.java b/core/src/main/java/com/arangodb/entity/TransactionEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/TransactionEntity.java rename to core/src/main/java/com/arangodb/entity/TransactionEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/UserEntity.java b/core/src/main/java/com/arangodb/entity/UserEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/UserEntity.java rename to core/src/main/java/com/arangodb/entity/UserEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/VertexEntity.java b/core/src/main/java/com/arangodb/entity/VertexEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/VertexEntity.java rename to core/src/main/java/com/arangodb/entity/VertexEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/VertexUpdateEntity.java b/core/src/main/java/com/arangodb/entity/VertexUpdateEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/VertexUpdateEntity.java rename to core/src/main/java/com/arangodb/entity/VertexUpdateEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/ViewEntity.java b/core/src/main/java/com/arangodb/entity/ViewEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ViewEntity.java rename to core/src/main/java/com/arangodb/entity/ViewEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/ViewType.java b/core/src/main/java/com/arangodb/entity/ViewType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/ViewType.java rename to core/src/main/java/com/arangodb/entity/ViewType.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/AnalyzerFeature.java b/core/src/main/java/com/arangodb/entity/arangosearch/AnalyzerFeature.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/AnalyzerFeature.java rename to core/src/main/java/com/arangodb/entity/arangosearch/AnalyzerFeature.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/AnalyzerType.java b/core/src/main/java/com/arangodb/entity/arangosearch/AnalyzerType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/AnalyzerType.java rename to core/src/main/java/com/arangodb/entity/arangosearch/AnalyzerType.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchCompression.java b/core/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchCompression.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchCompression.java rename to core/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchCompression.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchPropertiesEntity.java b/core/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchPropertiesEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchPropertiesEntity.java rename to core/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchPropertiesEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java b/core/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java rename to core/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/ConsolidationPolicy.java b/core/src/main/java/com/arangodb/entity/arangosearch/ConsolidationPolicy.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/ConsolidationPolicy.java rename to core/src/main/java/com/arangodb/entity/arangosearch/ConsolidationPolicy.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/ConsolidationType.java b/core/src/main/java/com/arangodb/entity/arangosearch/ConsolidationType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/ConsolidationType.java rename to core/src/main/java/com/arangodb/entity/arangosearch/ConsolidationType.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java b/core/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java rename to core/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java b/core/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java rename to core/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/SearchAliasIndex.java b/core/src/main/java/com/arangodb/entity/arangosearch/SearchAliasIndex.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/SearchAliasIndex.java rename to core/src/main/java/com/arangodb/entity/arangosearch/SearchAliasIndex.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/SearchAliasPropertiesEntity.java b/core/src/main/java/com/arangodb/entity/arangosearch/SearchAliasPropertiesEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/SearchAliasPropertiesEntity.java rename to core/src/main/java/com/arangodb/entity/arangosearch/SearchAliasPropertiesEntity.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/StoreValuesType.java b/core/src/main/java/com/arangodb/entity/arangosearch/StoreValuesType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/StoreValuesType.java rename to core/src/main/java/com/arangodb/entity/arangosearch/StoreValuesType.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/StoredValue.java b/core/src/main/java/com/arangodb/entity/arangosearch/StoredValue.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/StoredValue.java rename to core/src/main/java/com/arangodb/entity/arangosearch/StoredValue.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/AQLAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/ClassificationAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/CollationAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/DelimiterAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/EdgeNgram.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/EdgeNgram.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/EdgeNgram.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/EdgeNgram.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoAnalyzerOptions.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoAnalyzerOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoAnalyzerOptions.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoAnalyzerOptions.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoJSONAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/GeoPointAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/IdentityAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/IdentityAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/IdentityAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/IdentityAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/MinHashAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NGramAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NearestNeighborsAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/NormAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/PipelineAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzerCase.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzerCase.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzerCase.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SearchAnalyzerCase.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/SegmentationAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StemAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StopwordsAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StreamType.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StreamType.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/StreamType.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/StreamType.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzer.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzer.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzer.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzer.java diff --git a/driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzerProperties.java b/core/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzerProperties.java similarity index 100% rename from driver/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzerProperties.java rename to core/src/main/java/com/arangodb/entity/arangosearch/analyzer/TextAnalyzerProperties.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java b/core/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoCollectionImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoCursorExecute.java b/core/src/main/java/com/arangodb/internal/ArangoCursorExecute.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoCursorExecute.java rename to core/src/main/java/com/arangodb/internal/ArangoCursorExecute.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoDBImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoDBImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoDefaults.java b/core/src/main/java/com/arangodb/internal/ArangoDefaults.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoDefaults.java rename to core/src/main/java/com/arangodb/internal/ArangoDefaults.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoEdgeCollectionImpl.java b/core/src/main/java/com/arangodb/internal/ArangoEdgeCollectionImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoEdgeCollectionImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoEdgeCollectionImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoErrors.java b/core/src/main/java/com/arangodb/internal/ArangoErrors.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoErrors.java rename to core/src/main/java/com/arangodb/internal/ArangoErrors.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java b/core/src/main/java/com/arangodb/internal/ArangoExecuteable.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoExecuteable.java rename to core/src/main/java/com/arangodb/internal/ArangoExecuteable.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecutor.java b/core/src/main/java/com/arangodb/internal/ArangoExecutor.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoExecutor.java rename to core/src/main/java/com/arangodb/internal/ArangoExecutor.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoExecutorSync.java b/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoExecutorSync.java rename to core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoGraphImpl.java b/core/src/main/java/com/arangodb/internal/ArangoGraphImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoGraphImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoGraphImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoMetricsImpl.java b/core/src/main/java/com/arangodb/internal/ArangoMetricsImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoMetricsImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoMetricsImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoRequestParam.java b/core/src/main/java/com/arangodb/internal/ArangoRequestParam.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoRequestParam.java rename to core/src/main/java/com/arangodb/internal/ArangoRequestParam.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoResponseField.java b/core/src/main/java/com/arangodb/internal/ArangoResponseField.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoResponseField.java rename to core/src/main/java/com/arangodb/internal/ArangoResponseField.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoSearchImpl.java b/core/src/main/java/com/arangodb/internal/ArangoSearchImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoSearchImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoSearchImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoVertexCollectionImpl.java b/core/src/main/java/com/arangodb/internal/ArangoVertexCollectionImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoVertexCollectionImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoVertexCollectionImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/ArangoViewImpl.java b/core/src/main/java/com/arangodb/internal/ArangoViewImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/ArangoViewImpl.java rename to core/src/main/java/com/arangodb/internal/ArangoViewImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/DocumentFields.java b/core/src/main/java/com/arangodb/internal/DocumentFields.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/DocumentFields.java rename to core/src/main/java/com/arangodb/internal/DocumentFields.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/core/src/main/java/com/arangodb/internal/InternalArangoCollection.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoCollection.java rename to core/src/main/java/com/arangodb/internal/InternalArangoCollection.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoDB.java b/core/src/main/java/com/arangodb/internal/InternalArangoDB.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoDB.java rename to core/src/main/java/com/arangodb/internal/InternalArangoDB.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java rename to core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/core/src/main/java/com/arangodb/internal/InternalArangoDatabase.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoDatabase.java rename to core/src/main/java/com/arangodb/internal/InternalArangoDatabase.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java b/core/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java rename to core/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java b/core/src/main/java/com/arangodb/internal/InternalArangoGraph.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoGraph.java rename to core/src/main/java/com/arangodb/internal/InternalArangoGraph.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java b/core/src/main/java/com/arangodb/internal/InternalArangoRoute.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoRoute.java rename to core/src/main/java/com/arangodb/internal/InternalArangoRoute.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java b/core/src/main/java/com/arangodb/internal/InternalArangoSearch.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoSearch.java rename to core/src/main/java/com/arangodb/internal/InternalArangoSearch.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java b/core/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java rename to core/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalArangoView.java b/core/src/main/java/com/arangodb/internal/InternalArangoView.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalArangoView.java rename to core/src/main/java/com/arangodb/internal/InternalArangoView.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalRequest.java b/core/src/main/java/com/arangodb/internal/InternalRequest.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalRequest.java rename to core/src/main/java/com/arangodb/internal/InternalRequest.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalResponse.java b/core/src/main/java/com/arangodb/internal/InternalResponse.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalResponse.java rename to core/src/main/java/com/arangodb/internal/InternalResponse.java diff --git a/driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java b/core/src/main/java/com/arangodb/internal/InternalSearchAlias.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/InternalSearchAlias.java rename to core/src/main/java/com/arangodb/internal/InternalSearchAlias.java diff --git a/driver/src/main/java/com/arangodb/internal/QueueTimeMetricsImpl.java b/core/src/main/java/com/arangodb/internal/QueueTimeMetricsImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/QueueTimeMetricsImpl.java rename to core/src/main/java/com/arangodb/internal/QueueTimeMetricsImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/RequestType.java b/core/src/main/java/com/arangodb/internal/RequestType.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/RequestType.java rename to core/src/main/java/com/arangodb/internal/RequestType.java diff --git a/driver/src/main/java/com/arangodb/internal/SearchAliasImpl.java b/core/src/main/java/com/arangodb/internal/SearchAliasImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/SearchAliasImpl.java rename to core/src/main/java/com/arangodb/internal/SearchAliasImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/config/ArangoConfigPropertiesImpl.java b/core/src/main/java/com/arangodb/internal/config/ArangoConfigPropertiesImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/config/ArangoConfigPropertiesImpl.java rename to core/src/main/java/com/arangodb/internal/config/ArangoConfigPropertiesImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java b/core/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java rename to core/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java diff --git a/driver/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java b/core/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java rename to core/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/cursor/ArangoCursorIterator.java b/core/src/main/java/com/arangodb/internal/cursor/ArangoCursorIterator.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/cursor/ArangoCursorIterator.java rename to core/src/main/java/com/arangodb/internal/cursor/ArangoCursorIterator.java diff --git a/driver/src/main/java/com/arangodb/internal/cursor/entity/InternalCursorEntity.java b/core/src/main/java/com/arangodb/internal/cursor/entity/InternalCursorEntity.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/cursor/entity/InternalCursorEntity.java rename to core/src/main/java/com/arangodb/internal/cursor/entity/InternalCursorEntity.java diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java b/core/src/main/java/com/arangodb/internal/http/HttpCommunication.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/http/HttpCommunication.java rename to core/src/main/java/com/arangodb/internal/http/HttpCommunication.java diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpConnection.java b/core/src/main/java/com/arangodb/internal/http/HttpConnection.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/http/HttpConnection.java rename to core/src/main/java/com/arangodb/internal/http/HttpConnection.java diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java b/core/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java rename to core/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java diff --git a/driver/src/main/java/com/arangodb/internal/http/HttpProtocol.java b/core/src/main/java/com/arangodb/internal/http/HttpProtocol.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/http/HttpProtocol.java rename to core/src/main/java/com/arangodb/internal/http/HttpProtocol.java diff --git a/driver/src/main/java/com/arangodb/internal/net/AccessType.java b/core/src/main/java/com/arangodb/internal/net/AccessType.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/AccessType.java rename to core/src/main/java/com/arangodb/internal/net/AccessType.java diff --git a/driver/src/main/java/com/arangodb/internal/net/ArangoDBRedirectException.java b/core/src/main/java/com/arangodb/internal/net/ArangoDBRedirectException.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/ArangoDBRedirectException.java rename to core/src/main/java/com/arangodb/internal/net/ArangoDBRedirectException.java diff --git a/driver/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java b/core/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java rename to core/src/main/java/com/arangodb/internal/net/CommunicationProtocol.java diff --git a/driver/src/main/java/com/arangodb/internal/net/Connection.java b/core/src/main/java/com/arangodb/internal/net/Connection.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/Connection.java rename to core/src/main/java/com/arangodb/internal/net/Connection.java diff --git a/driver/src/main/java/com/arangodb/internal/net/ConnectionFactory.java b/core/src/main/java/com/arangodb/internal/net/ConnectionFactory.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/ConnectionFactory.java rename to core/src/main/java/com/arangodb/internal/net/ConnectionFactory.java diff --git a/driver/src/main/java/com/arangodb/internal/net/ConnectionPool.java b/core/src/main/java/com/arangodb/internal/net/ConnectionPool.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/ConnectionPool.java rename to core/src/main/java/com/arangodb/internal/net/ConnectionPool.java diff --git a/driver/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java b/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java rename to core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java b/core/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java rename to core/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java diff --git a/driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java b/core/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java rename to core/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java diff --git a/driver/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java b/core/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java rename to core/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java diff --git a/driver/src/main/java/com/arangodb/internal/net/Host.java b/core/src/main/java/com/arangodb/internal/net/Host.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/Host.java rename to core/src/main/java/com/arangodb/internal/net/Host.java diff --git a/driver/src/main/java/com/arangodb/internal/net/HostHandle.java b/core/src/main/java/com/arangodb/internal/net/HostHandle.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/HostHandle.java rename to core/src/main/java/com/arangodb/internal/net/HostHandle.java diff --git a/driver/src/main/java/com/arangodb/internal/net/HostHandler.java b/core/src/main/java/com/arangodb/internal/net/HostHandler.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/HostHandler.java rename to core/src/main/java/com/arangodb/internal/net/HostHandler.java diff --git a/driver/src/main/java/com/arangodb/internal/net/HostImpl.java b/core/src/main/java/com/arangodb/internal/net/HostImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/HostImpl.java rename to core/src/main/java/com/arangodb/internal/net/HostImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/net/HostResolver.java b/core/src/main/java/com/arangodb/internal/net/HostResolver.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/HostResolver.java rename to core/src/main/java/com/arangodb/internal/net/HostResolver.java diff --git a/driver/src/main/java/com/arangodb/internal/net/HostSet.java b/core/src/main/java/com/arangodb/internal/net/HostSet.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/HostSet.java rename to core/src/main/java/com/arangodb/internal/net/HostSet.java diff --git a/driver/src/main/java/com/arangodb/internal/net/RandomHostHandler.java b/core/src/main/java/com/arangodb/internal/net/RandomHostHandler.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/RandomHostHandler.java rename to core/src/main/java/com/arangodb/internal/net/RandomHostHandler.java diff --git a/driver/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java b/core/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java rename to core/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java diff --git a/driver/src/main/java/com/arangodb/internal/net/SimpleHostResolver.java b/core/src/main/java/com/arangodb/internal/net/SimpleHostResolver.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/net/SimpleHostResolver.java rename to core/src/main/java/com/arangodb/internal/net/SimpleHostResolver.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/ContentTypeFactory.java b/core/src/main/java/com/arangodb/internal/serde/ContentTypeFactory.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/ContentTypeFactory.java rename to core/src/main/java/com/arangodb/internal/serde/ContentTypeFactory.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalAnnotationIntrospector.java b/core/src/main/java/com/arangodb/internal/serde/InternalAnnotationIntrospector.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalAnnotationIntrospector.java rename to core/src/main/java/com/arangodb/internal/serde/InternalAnnotationIntrospector.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java b/core/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java rename to core/src/main/java/com/arangodb/internal/serde/InternalDeserializers.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java rename to core/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java rename to core/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalModule.java b/core/src/main/java/com/arangodb/internal/serde/InternalModule.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalModule.java rename to core/src/main/java/com/arangodb/internal/serde/InternalModule.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalParameterizedType.java b/core/src/main/java/com/arangodb/internal/serde/InternalParameterizedType.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalParameterizedType.java rename to core/src/main/java/com/arangodb/internal/serde/InternalParameterizedType.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalSerde.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerde.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalSerde.java rename to core/src/main/java/com/arangodb/internal/serde/InternalSerde.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java rename to core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java rename to core/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalSerializers.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerializers.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalSerializers.java rename to core/src/main/java/com/arangodb/internal/serde/InternalSerializers.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java rename to core/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/SerdeUtils.java b/core/src/main/java/com/arangodb/internal/serde/SerdeUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/SerdeUtils.java rename to core/src/main/java/com/arangodb/internal/serde/SerdeUtils.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/UserData.java b/core/src/main/java/com/arangodb/internal/serde/UserData.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/UserData.java rename to core/src/main/java/com/arangodb/internal/serde/UserData.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/UserDataDeserializer.java b/core/src/main/java/com/arangodb/internal/serde/UserDataDeserializer.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/UserDataDeserializer.java rename to core/src/main/java/com/arangodb/internal/serde/UserDataDeserializer.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/UserDataInside.java b/core/src/main/java/com/arangodb/internal/serde/UserDataInside.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/UserDataInside.java rename to core/src/main/java/com/arangodb/internal/serde/UserDataInside.java diff --git a/driver/src/main/java/com/arangodb/internal/serde/UserDataSerializer.java b/core/src/main/java/com/arangodb/internal/serde/UserDataSerializer.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/serde/UserDataSerializer.java rename to core/src/main/java/com/arangodb/internal/serde/UserDataSerializer.java diff --git a/driver/src/main/java/com/arangodb/internal/util/DocumentUtil.java b/core/src/main/java/com/arangodb/internal/util/DocumentUtil.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/util/DocumentUtil.java rename to core/src/main/java/com/arangodb/internal/util/DocumentUtil.java diff --git a/driver/src/main/java/com/arangodb/internal/util/EncodeUtils.java b/core/src/main/java/com/arangodb/internal/util/EncodeUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/util/EncodeUtils.java rename to core/src/main/java/com/arangodb/internal/util/EncodeUtils.java diff --git a/driver/src/main/java/com/arangodb/internal/util/HostUtils.java b/core/src/main/java/com/arangodb/internal/util/HostUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/util/HostUtils.java rename to core/src/main/java/com/arangodb/internal/util/HostUtils.java diff --git a/driver/src/main/java/com/arangodb/internal/util/RequestUtils.java b/core/src/main/java/com/arangodb/internal/util/RequestUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/util/RequestUtils.java rename to core/src/main/java/com/arangodb/internal/util/RequestUtils.java diff --git a/driver/src/main/java/com/arangodb/internal/util/ResponseUtils.java b/core/src/main/java/com/arangodb/internal/util/ResponseUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/util/ResponseUtils.java rename to core/src/main/java/com/arangodb/internal/util/ResponseUtils.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java rename to core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java rename to core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java b/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java rename to core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java b/core/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java rename to core/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/Message.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/Message.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/Message.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/Message.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java diff --git a/driver/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java similarity index 100% rename from driver/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java rename to core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java diff --git a/driver/src/main/java/com/arangodb/model/AqlFunctionCreateOptions.java b/core/src/main/java/com/arangodb/model/AqlFunctionCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/AqlFunctionCreateOptions.java rename to core/src/main/java/com/arangodb/model/AqlFunctionCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/AqlFunctionDeleteOptions.java b/core/src/main/java/com/arangodb/model/AqlFunctionDeleteOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/AqlFunctionDeleteOptions.java rename to core/src/main/java/com/arangodb/model/AqlFunctionDeleteOptions.java diff --git a/driver/src/main/java/com/arangodb/model/AqlFunctionGetOptions.java b/core/src/main/java/com/arangodb/model/AqlFunctionGetOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/AqlFunctionGetOptions.java rename to core/src/main/java/com/arangodb/model/AqlFunctionGetOptions.java diff --git a/driver/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java b/core/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java rename to core/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java diff --git a/driver/src/main/java/com/arangodb/model/AqlQueryOptions.java b/core/src/main/java/com/arangodb/model/AqlQueryOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/AqlQueryOptions.java rename to core/src/main/java/com/arangodb/model/AqlQueryOptions.java diff --git a/driver/src/main/java/com/arangodb/model/AqlQueryParseOptions.java b/core/src/main/java/com/arangodb/model/AqlQueryParseOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/AqlQueryParseOptions.java rename to core/src/main/java/com/arangodb/model/AqlQueryParseOptions.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionCountOptions.java b/core/src/main/java/com/arangodb/model/CollectionCountOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionCountOptions.java rename to core/src/main/java/com/arangodb/model/CollectionCountOptions.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionCreateOptions.java b/core/src/main/java/com/arangodb/model/CollectionCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionCreateOptions.java rename to core/src/main/java/com/arangodb/model/CollectionCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java b/core/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java rename to core/src/main/java/com/arangodb/model/CollectionPropertiesOptions.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionRenameOptions.java b/core/src/main/java/com/arangodb/model/CollectionRenameOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionRenameOptions.java rename to core/src/main/java/com/arangodb/model/CollectionRenameOptions.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionSchema.java b/core/src/main/java/com/arangodb/model/CollectionSchema.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionSchema.java rename to core/src/main/java/com/arangodb/model/CollectionSchema.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionTruncateOptions.java b/core/src/main/java/com/arangodb/model/CollectionTruncateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionTruncateOptions.java rename to core/src/main/java/com/arangodb/model/CollectionTruncateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/CollectionsReadOptions.java b/core/src/main/java/com/arangodb/model/CollectionsReadOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/CollectionsReadOptions.java rename to core/src/main/java/com/arangodb/model/CollectionsReadOptions.java diff --git a/driver/src/main/java/com/arangodb/model/ComputedValue.java b/core/src/main/java/com/arangodb/model/ComputedValue.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/ComputedValue.java rename to core/src/main/java/com/arangodb/model/ComputedValue.java diff --git a/driver/src/main/java/com/arangodb/model/DBCreateOptions.java b/core/src/main/java/com/arangodb/model/DBCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DBCreateOptions.java rename to core/src/main/java/com/arangodb/model/DBCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DatabaseOptions.java b/core/src/main/java/com/arangodb/model/DatabaseOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DatabaseOptions.java rename to core/src/main/java/com/arangodb/model/DatabaseOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DatabaseUsersOptions.java b/core/src/main/java/com/arangodb/model/DatabaseUsersOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DatabaseUsersOptions.java rename to core/src/main/java/com/arangodb/model/DatabaseUsersOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentCreateOptions.java b/core/src/main/java/com/arangodb/model/DocumentCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentCreateOptions.java rename to core/src/main/java/com/arangodb/model/DocumentCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentDeleteOptions.java b/core/src/main/java/com/arangodb/model/DocumentDeleteOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentDeleteOptions.java rename to core/src/main/java/com/arangodb/model/DocumentDeleteOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentExistsOptions.java b/core/src/main/java/com/arangodb/model/DocumentExistsOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentExistsOptions.java rename to core/src/main/java/com/arangodb/model/DocumentExistsOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentImportOptions.java b/core/src/main/java/com/arangodb/model/DocumentImportOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentImportOptions.java rename to core/src/main/java/com/arangodb/model/DocumentImportOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentReadOptions.java b/core/src/main/java/com/arangodb/model/DocumentReadOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentReadOptions.java rename to core/src/main/java/com/arangodb/model/DocumentReadOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentReplaceOptions.java b/core/src/main/java/com/arangodb/model/DocumentReplaceOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentReplaceOptions.java rename to core/src/main/java/com/arangodb/model/DocumentReplaceOptions.java diff --git a/driver/src/main/java/com/arangodb/model/DocumentUpdateOptions.java b/core/src/main/java/com/arangodb/model/DocumentUpdateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/DocumentUpdateOptions.java rename to core/src/main/java/com/arangodb/model/DocumentUpdateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/EdgeCreateOptions.java b/core/src/main/java/com/arangodb/model/EdgeCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/EdgeCreateOptions.java rename to core/src/main/java/com/arangodb/model/EdgeCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/EdgeDeleteOptions.java b/core/src/main/java/com/arangodb/model/EdgeDeleteOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/EdgeDeleteOptions.java rename to core/src/main/java/com/arangodb/model/EdgeDeleteOptions.java diff --git a/driver/src/main/java/com/arangodb/model/EdgeReplaceOptions.java b/core/src/main/java/com/arangodb/model/EdgeReplaceOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/EdgeReplaceOptions.java rename to core/src/main/java/com/arangodb/model/EdgeReplaceOptions.java diff --git a/driver/src/main/java/com/arangodb/model/EdgeUpdateOptions.java b/core/src/main/java/com/arangodb/model/EdgeUpdateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/EdgeUpdateOptions.java rename to core/src/main/java/com/arangodb/model/EdgeUpdateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/FulltextIndexOptions.java b/core/src/main/java/com/arangodb/model/FulltextIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/FulltextIndexOptions.java rename to core/src/main/java/com/arangodb/model/FulltextIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/GeoIndexOptions.java b/core/src/main/java/com/arangodb/model/GeoIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/GeoIndexOptions.java rename to core/src/main/java/com/arangodb/model/GeoIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/GraphCreateOptions.java b/core/src/main/java/com/arangodb/model/GraphCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/GraphCreateOptions.java rename to core/src/main/java/com/arangodb/model/GraphCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/GraphDocumentReadOptions.java b/core/src/main/java/com/arangodb/model/GraphDocumentReadOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/GraphDocumentReadOptions.java rename to core/src/main/java/com/arangodb/model/GraphDocumentReadOptions.java diff --git a/driver/src/main/java/com/arangodb/model/HashIndexOptions.java b/core/src/main/java/com/arangodb/model/HashIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/HashIndexOptions.java rename to core/src/main/java/com/arangodb/model/HashIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/ImportType.java b/core/src/main/java/com/arangodb/model/ImportType.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/ImportType.java rename to core/src/main/java/com/arangodb/model/ImportType.java diff --git a/driver/src/main/java/com/arangodb/model/IndexOptions.java b/core/src/main/java/com/arangodb/model/IndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/IndexOptions.java rename to core/src/main/java/com/arangodb/model/IndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/InvertedIndexOptions.java b/core/src/main/java/com/arangodb/model/InvertedIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/InvertedIndexOptions.java rename to core/src/main/java/com/arangodb/model/InvertedIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/LogOptions.java b/core/src/main/java/com/arangodb/model/LogOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/LogOptions.java rename to core/src/main/java/com/arangodb/model/LogOptions.java diff --git a/driver/src/main/java/com/arangodb/model/OptionsBuilder.java b/core/src/main/java/com/arangodb/model/OptionsBuilder.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/OptionsBuilder.java rename to core/src/main/java/com/arangodb/model/OptionsBuilder.java diff --git a/driver/src/main/java/com/arangodb/model/OverwriteMode.java b/core/src/main/java/com/arangodb/model/OverwriteMode.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/OverwriteMode.java rename to core/src/main/java/com/arangodb/model/OverwriteMode.java diff --git a/driver/src/main/java/com/arangodb/model/PersistentIndexOptions.java b/core/src/main/java/com/arangodb/model/PersistentIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/PersistentIndexOptions.java rename to core/src/main/java/com/arangodb/model/PersistentIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/QueueTimeSample.java b/core/src/main/java/com/arangodb/model/QueueTimeSample.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/QueueTimeSample.java rename to core/src/main/java/com/arangodb/model/QueueTimeSample.java diff --git a/driver/src/main/java/com/arangodb/model/SkiplistIndexOptions.java b/core/src/main/java/com/arangodb/model/SkiplistIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/SkiplistIndexOptions.java rename to core/src/main/java/com/arangodb/model/SkiplistIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/StreamTransactionOptions.java b/core/src/main/java/com/arangodb/model/StreamTransactionOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/StreamTransactionOptions.java rename to core/src/main/java/com/arangodb/model/StreamTransactionOptions.java diff --git a/driver/src/main/java/com/arangodb/model/TransactionCollectionOptions.java b/core/src/main/java/com/arangodb/model/TransactionCollectionOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/TransactionCollectionOptions.java rename to core/src/main/java/com/arangodb/model/TransactionCollectionOptions.java diff --git a/driver/src/main/java/com/arangodb/model/TransactionOptions.java b/core/src/main/java/com/arangodb/model/TransactionOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/TransactionOptions.java rename to core/src/main/java/com/arangodb/model/TransactionOptions.java diff --git a/driver/src/main/java/com/arangodb/model/TtlIndexOptions.java b/core/src/main/java/com/arangodb/model/TtlIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/TtlIndexOptions.java rename to core/src/main/java/com/arangodb/model/TtlIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/UserAccessOptions.java b/core/src/main/java/com/arangodb/model/UserAccessOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/UserAccessOptions.java rename to core/src/main/java/com/arangodb/model/UserAccessOptions.java diff --git a/driver/src/main/java/com/arangodb/model/UserCreateOptions.java b/core/src/main/java/com/arangodb/model/UserCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/UserCreateOptions.java rename to core/src/main/java/com/arangodb/model/UserCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/UserUpdateOptions.java b/core/src/main/java/com/arangodb/model/UserUpdateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/UserUpdateOptions.java rename to core/src/main/java/com/arangodb/model/UserUpdateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/VertexCollectionCreateOptions.java b/core/src/main/java/com/arangodb/model/VertexCollectionCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/VertexCollectionCreateOptions.java rename to core/src/main/java/com/arangodb/model/VertexCollectionCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/VertexCreateOptions.java b/core/src/main/java/com/arangodb/model/VertexCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/VertexCreateOptions.java rename to core/src/main/java/com/arangodb/model/VertexCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/VertexDeleteOptions.java b/core/src/main/java/com/arangodb/model/VertexDeleteOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/VertexDeleteOptions.java rename to core/src/main/java/com/arangodb/model/VertexDeleteOptions.java diff --git a/driver/src/main/java/com/arangodb/model/VertexReplaceOptions.java b/core/src/main/java/com/arangodb/model/VertexReplaceOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/VertexReplaceOptions.java rename to core/src/main/java/com/arangodb/model/VertexReplaceOptions.java diff --git a/driver/src/main/java/com/arangodb/model/VertexUpdateOptions.java b/core/src/main/java/com/arangodb/model/VertexUpdateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/VertexUpdateOptions.java rename to core/src/main/java/com/arangodb/model/VertexUpdateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/ViewCreateOptions.java b/core/src/main/java/com/arangodb/model/ViewCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/ViewCreateOptions.java rename to core/src/main/java/com/arangodb/model/ViewCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/ViewRenameOptions.java b/core/src/main/java/com/arangodb/model/ViewRenameOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/ViewRenameOptions.java rename to core/src/main/java/com/arangodb/model/ViewRenameOptions.java diff --git a/driver/src/main/java/com/arangodb/model/ZKDIndexOptions.java b/core/src/main/java/com/arangodb/model/ZKDIndexOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/ZKDIndexOptions.java rename to core/src/main/java/com/arangodb/model/ZKDIndexOptions.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/AnalyzerDeleteOptions.java b/core/src/main/java/com/arangodb/model/arangosearch/AnalyzerDeleteOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/AnalyzerDeleteOptions.java rename to core/src/main/java/com/arangodb/model/arangosearch/AnalyzerDeleteOptions.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java b/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java rename to core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/ArangoSearchOptionsBuilder.java b/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchOptionsBuilder.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/ArangoSearchOptionsBuilder.java rename to core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchOptionsBuilder.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/ArangoSearchPropertiesOptions.java b/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchPropertiesOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/ArangoSearchPropertiesOptions.java rename to core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchPropertiesOptions.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/SearchAliasCreateOptions.java b/core/src/main/java/com/arangodb/model/arangosearch/SearchAliasCreateOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/SearchAliasCreateOptions.java rename to core/src/main/java/com/arangodb/model/arangosearch/SearchAliasCreateOptions.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/SearchAliasOptionsBuilder.java b/core/src/main/java/com/arangodb/model/arangosearch/SearchAliasOptionsBuilder.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/SearchAliasOptionsBuilder.java rename to core/src/main/java/com/arangodb/model/arangosearch/SearchAliasOptionsBuilder.java diff --git a/driver/src/main/java/com/arangodb/model/arangosearch/SearchAliasPropertiesOptions.java b/core/src/main/java/com/arangodb/model/arangosearch/SearchAliasPropertiesOptions.java similarity index 100% rename from driver/src/main/java/com/arangodb/model/arangosearch/SearchAliasPropertiesOptions.java rename to core/src/main/java/com/arangodb/model/arangosearch/SearchAliasPropertiesOptions.java diff --git a/driver/src/main/java/com/arangodb/util/RawBytes.java b/core/src/main/java/com/arangodb/util/RawBytes.java similarity index 100% rename from driver/src/main/java/com/arangodb/util/RawBytes.java rename to core/src/main/java/com/arangodb/util/RawBytes.java diff --git a/driver/src/main/java/com/arangodb/util/RawData.java b/core/src/main/java/com/arangodb/util/RawData.java similarity index 100% rename from driver/src/main/java/com/arangodb/util/RawData.java rename to core/src/main/java/com/arangodb/util/RawData.java diff --git a/driver/src/main/java/com/arangodb/util/RawJson.java b/core/src/main/java/com/arangodb/util/RawJson.java similarity index 100% rename from driver/src/main/java/com/arangodb/util/RawJson.java rename to core/src/main/java/com/arangodb/util/RawJson.java diff --git a/driver/src/main/java/com/arangodb/util/UnicodeUtils.java b/core/src/main/java/com/arangodb/util/UnicodeUtils.java similarity index 100% rename from driver/src/main/java/com/arangodb/util/UnicodeUtils.java rename to core/src/main/java/com/arangodb/util/UnicodeUtils.java diff --git a/driver/pom.xml b/driver/pom.xml index ad7383c75..7d57a0b4e 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -94,48 +94,6 @@ - - com.google.code.maven-replacer-plugin - replacer - 1.5.3 - - - generate-sources - - replace - - - - - ${project.basedir}/src/main/java/com/arangodb/PackageVersion.java.in - ${project.build.directory}/generated-sources/replacer/com/arangodb/PackageVersion.java - - - - @project.version@ - ${project.version} - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.3.0 - - - generate-sources - - add-source - - - - ${project.build.directory}/generated-sources/replacer - - - - - org.apache.maven.plugins maven-enforcer-plugin @@ -171,12 +129,13 @@ true + com.arangodb:core com.arangodb:serde-api - com.arangodb:serde-api + com.arangodb:* META-INF/MANIFEST.MF @@ -194,6 +153,10 @@ + + com.arangodb + core + com.arangodb serde-api @@ -227,12 +190,6 @@ jackson-dataformat-velocypack true - - com.google.code.findbugs - jsr305 - 3.0.2 - provided - org.reflections reflections diff --git a/pom.xml b/pom.xml index 854c3b76a..e258c81a1 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ 7.0.0-ALPHA.2 2016 + core driver shaded jackson-serde @@ -124,6 +125,11 @@ arangodb-java-driver ${project.version} + + com.arangodb + core + ${project.version} + com.arangodb serde-api From c582b9511bde917d9cea2be0eb2a7bdfe06174f9 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Fri, 10 Feb 2023 12:14:55 +0100 Subject: [PATCH 04/18] discover and register Jackson modules via SPI --- .../serde/jackson/JacksonSerdeProvider.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java b/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java index 4fcbf2fcf..abc0a5e3c 100644 --- a/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java +++ b/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java @@ -1,22 +1,33 @@ package com.arangodb.serde.jackson; import com.arangodb.ContentType; -import com.arangodb.serde.jackson.internal.JacksonSerdeImpl; -import com.arangodb.serde.jackson.internal.JacksonMapperProvider; import com.arangodb.serde.ArangoSerdeProvider; +import com.arangodb.serde.jackson.internal.JacksonMapperProvider; +import com.arangodb.serde.jackson.internal.JacksonSerdeImpl; +import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ServiceLoader; public class JacksonSerdeProvider implements ArangoSerdeProvider { + private final static Logger LOG = LoggerFactory.getLogger(JacksonSerdeProvider.class); + /** * Creates a new JacksonSerde with default settings for the specified data type. + * Registers all the Jackson modules ({@link com.fasterxml.jackson.databind.Module}) discovered via SPI. * * @param contentType serialization target data type * @return the created JacksonSerde */ @Override public JacksonSerde of(final ContentType contentType) { - return create(JacksonMapperProvider.of(contentType)); + JacksonSerde serde = create(JacksonMapperProvider.of(contentType)); + ServiceLoader loader = ServiceLoader.load(Module.class); + serde.configure(mapper -> mapper.registerModules(loader)); + return serde; } /** From e3e0ea211f4a34f9cfc1bda8e19aac591df19227 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Fri, 10 Feb 2023 13:55:33 +0100 Subject: [PATCH 05/18] http module --- core/pom.xml | 4 -- core/src/main/java/com/arangodb/ArangoDB.java | 7 +-- .../com/arangodb/internal/ArangoDBImpl.java | 23 +++++---- .../internal/InternalArangoDBBuilder.java | 10 ++++ .../internal/net/ProtocolProvider.java | 19 +++++++ driver/pom.xml | 8 +-- http/pom.xml | 50 +++++++++++++++++++ .../com/arangodb}/http/HttpCommunication.java | 23 +-------- .../com/arangodb}/http/HttpConnection.java | 2 +- .../arangodb}/http/HttpConnectionFactory.java | 2 +- .../java/com/arangodb}/http/HttpProtocol.java | 2 +- .../arangodb/http/HttpProtocolProvider.java | 41 +++++++++++++++ ...com.arangodb.internal.net.ProtocolProvider | 1 + pom.xml | 20 +++----- 14 files changed, 150 insertions(+), 62 deletions(-) create mode 100644 core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java create mode 100644 http/pom.xml rename {core/src/main/java/com/arangodb/internal => http/src/main/java/com/arangodb}/http/HttpCommunication.java (89%) rename {core/src/main/java/com/arangodb/internal => http/src/main/java/com/arangodb}/http/HttpConnection.java (99%) rename {core/src/main/java/com/arangodb/internal => http/src/main/java/com/arangodb}/http/HttpConnectionFactory.java (98%) rename {core/src/main/java/com/arangodb/internal => http/src/main/java/com/arangodb}/http/HttpProtocol.java (97%) create mode 100644 http/src/main/java/com/arangodb/http/HttpProtocolProvider.java create mode 100644 http/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider diff --git a/core/pom.xml b/core/pom.xml index 1b793bd95..54a452f82 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -42,10 +42,6 @@ com.fasterxml.jackson.core jackson-annotations - - io.vertx - vertx-web-client - com.arangodb jackson-dataformat-velocypack diff --git a/core/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java index 5533c9bef..522ff6ed3 100644 --- a/core/src/main/java/com/arangodb/ArangoDB.java +++ b/core/src/main/java/com/arangodb/ArangoDB.java @@ -25,8 +25,6 @@ import com.arangodb.internal.ArangoDBImpl; import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; -import com.arangodb.internal.http.HttpCommunication; -import com.arangodb.internal.http.HttpConnectionFactory; import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.Host; import com.arangodb.internal.net.HostHandler; @@ -45,7 +43,6 @@ import javax.annotation.concurrent.ThreadSafe; import javax.net.ssl.SSLContext; import java.util.Collection; -import java.util.Locale; /** * Central access point for applications to communicate with an ArangoDB server. @@ -603,7 +600,7 @@ public ArangoDB build() { final ConnectionFactory connectionFactory = Protocol.VST == protocol ? new VstConnectionFactorySync(timeout, connectionTtl, keepAliveInterval, useSsl, sslContext) - : new HttpConnectionFactory(timeout, user, password, useSsl, sslContext, verifyHost, serde, + : protocolProvider(protocol).createConnectionFactory(timeout, user, password, useSsl, sslContext, verifyHost, serde, protocol, connectionTtl); final Collection hostList = createHostList(max, connectionFactory); @@ -615,10 +612,10 @@ public ArangoDB build() { new VstCommunicationSync.Builder(hostHandler).timeout(timeout).user(user).password(password) .jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize) .maxConnections(maxConnections).connectionTtl(connectionTtl), - new HttpCommunication.Builder().hostHandler(hostHandler), serde, protocol, hostResolver, + protocolProvider(protocol), hostHandler, responseQueueTimeSamples, timeout); } diff --git a/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java index 22a0e95a1..bcadc3a35 100644 --- a/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -22,11 +22,10 @@ import com.arangodb.*; import com.arangodb.entity.*; -import com.arangodb.internal.http.HttpCommunication; -import com.arangodb.internal.http.HttpProtocol; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; +import com.arangodb.internal.net.ProtocolProvider; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.serde.SerdeUtils; import com.arangodb.internal.velocystream.VstCommunicationSync; @@ -50,13 +49,13 @@ public class ArangoDBImpl extends InternalArangoDB implement private static final Logger LOGGER = LoggerFactory.getLogger(ArangoDBImpl.class); private final HostHandler hostHandler; - public ArangoDBImpl(final VstCommunicationSync.Builder vstBuilder, final HttpCommunication.Builder httpBuilder, - final InternalSerde util, final Protocol protocol, final HostResolver hostResolver, + public ArangoDBImpl(final VstCommunicationSync.Builder vstBuilder, + final InternalSerde util, final Protocol protocol, final HostResolver hostResolver, final ProtocolProvider protocolProvider, final HostHandler hostHandler, int responseQueueTimeSamples, final int timeoutMs) { super(new ArangoExecutorSync( - createProtocol(vstBuilder, httpBuilder, util, protocol), + createProtocol(vstBuilder, hostHandler, util, protocol, protocolProvider), util, new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs), util); @@ -67,12 +66,13 @@ util, new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs), private static CommunicationProtocol createProtocol( final VstCommunicationSync.Builder vstBuilder, - final HttpCommunication.Builder httpBuilder, + final HostHandler hostHandler, final InternalSerde util, - final Protocol protocol) { + final Protocol protocol, + final ProtocolProvider protocolProvider) { return (protocol == null || Protocol.VST == protocol) ? createVST(vstBuilder, util) - : createHTTP(httpBuilder, util); + : createHTTP(hostHandler, util, protocolProvider); } private static CommunicationProtocol createVST( @@ -82,9 +82,10 @@ private static CommunicationProtocol createVST( } private static CommunicationProtocol createHTTP( - final HttpCommunication.Builder builder, - final InternalSerde util) { - return new HttpProtocol(builder.serde(util).build()); + final HostHandler hostHandler, + final InternalSerde util, + final ProtocolProvider protocolProvider) { + return protocolProvider.createProtocol(hostHandler, util); } @Override diff --git a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index b98d9b561..4a8900ef2 100644 --- a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -69,6 +69,16 @@ protected InternalArangoDBBuilder() { }); } + protected ProtocolProvider protocolProvider(Protocol protocol) { + ServiceLoader loader = ServiceLoader.load(ProtocolProvider.class); + for (ProtocolProvider p : loader) { + if (p.supportsProtocol(protocol)) { + return p; + } + } + throw new ArangoDBException("No ProtocolProvider found for protocol: " + protocol); + } + protected static ArangoSerdeProvider serdeProvider() { ServiceLoader loader = ServiceLoader.load(ArangoSerdeProvider.class); Iterator it = loader.iterator(); diff --git a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java new file mode 100644 index 000000000..64c228e51 --- /dev/null +++ b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java @@ -0,0 +1,19 @@ +package com.arangodb.internal.net; + + +import com.arangodb.Protocol; +import com.arangodb.internal.serde.InternalSerde; + +import javax.net.ssl.SSLContext; + +public interface ProtocolProvider { + + boolean supportsProtocol(Protocol protocol); + + ConnectionFactory createConnectionFactory(Integer timeout, String user, String password, Boolean useSsl, + SSLContext sslContext, Boolean verifyHost, + InternalSerde util, Protocol protocol, Long connectionTtl); + + CommunicationProtocol createProtocol(HostHandler hostHandler, InternalSerde serde); + +} diff --git a/driver/pom.xml b/driver/pom.xml index 7d57a0b4e..d93b0f833 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -157,6 +157,10 @@ com.arangodb core + + com.arangodb + http-protocol + com.arangodb serde-api @@ -181,10 +185,6 @@ com.fasterxml.jackson.core jackson-annotations - - io.vertx - vertx-web-client - com.arangodb jackson-dataformat-velocypack diff --git a/http/pom.xml b/http/pom.xml new file mode 100644 index 000000000..cc8591c49 --- /dev/null +++ b/http/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + com.arangodb + arangodb-java-driver-parent + 7.0.0-ALPHA.2 + + + http-protocol + http-protocol + HTTP Protocol module for ArangoDB Java Driver + + + false + com.arangodb.http + + + + + com.arangodb + core + + + io.vertx + vertx-web-client + + + + + + + io.vertx + vertx-stack-depchain + 4.3.5 + pom + import + + + io.netty + netty-bom + 4.1.85.Final + pom + import + + + + \ No newline at end of file diff --git a/core/src/main/java/com/arangodb/internal/http/HttpCommunication.java b/http/src/main/java/com/arangodb/http/HttpCommunication.java similarity index 89% rename from core/src/main/java/com/arangodb/internal/http/HttpCommunication.java rename to http/src/main/java/com/arangodb/http/HttpCommunication.java index a0be3f649..7e97b0925 100644 --- a/core/src/main/java/com/arangodb/internal/http/HttpCommunication.java +++ b/http/src/main/java/com/arangodb/http/HttpCommunication.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.http; +package com.arangodb.http; import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; @@ -48,7 +48,7 @@ public class HttpCommunication implements Closeable { private final InternalSerde serde; private final AtomicLong reqCount; - private HttpCommunication(final HostHandler hostHandler, final InternalSerde serde) { + HttpCommunication(final HostHandler hostHandler, final InternalSerde serde) { super(); this.hostHandler = hostHandler; this.serde = serde; @@ -123,23 +123,4 @@ private boolean isSafe(final InternalRequest request) { return type == RequestType.GET || type == RequestType.HEAD || type == RequestType.OPTIONS; } - public static class Builder { - private HostHandler hostHandler; - private InternalSerde serde; - - public Builder hostHandler(HostHandler hostHandler) { - this.hostHandler = hostHandler; - return this; - } - - public Builder serde(InternalSerde serde) { - this.serde = serde; - return this; - } - - public HttpCommunication build() { - return new HttpCommunication(hostHandler, serde); - } - } - } diff --git a/core/src/main/java/com/arangodb/internal/http/HttpConnection.java b/http/src/main/java/com/arangodb/http/HttpConnection.java similarity index 99% rename from core/src/main/java/com/arangodb/internal/http/HttpConnection.java rename to http/src/main/java/com/arangodb/http/HttpConnection.java index f81786432..2afc2b4a2 100644 --- a/core/src/main/java/com/arangodb/internal/http/HttpConnection.java +++ b/http/src/main/java/com/arangodb/http/HttpConnection.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.http; +package com.arangodb.http; import com.arangodb.*; import com.arangodb.internal.net.Connection; diff --git a/core/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java b/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java similarity index 98% rename from core/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java rename to http/src/main/java/com/arangodb/http/HttpConnectionFactory.java index e4525511e..4f08fea2f 100644 --- a/core/src/main/java/com/arangodb/internal/http/HttpConnectionFactory.java +++ b/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.http; +package com.arangodb.http; import com.arangodb.Protocol; import com.arangodb.internal.net.Connection; diff --git a/core/src/main/java/com/arangodb/internal/http/HttpProtocol.java b/http/src/main/java/com/arangodb/http/HttpProtocol.java similarity index 97% rename from core/src/main/java/com/arangodb/internal/http/HttpProtocol.java rename to http/src/main/java/com/arangodb/http/HttpProtocol.java index 15d35c2d4..a78f5487f 100644 --- a/core/src/main/java/com/arangodb/internal/http/HttpProtocol.java +++ b/http/src/main/java/com/arangodb/http/HttpProtocol.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.http; +package com.arangodb.http; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; diff --git a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java new file mode 100644 index 000000000..09d88f7d1 --- /dev/null +++ b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java @@ -0,0 +1,41 @@ +package com.arangodb.http; + +import com.arangodb.Protocol; +import com.arangodb.internal.net.CommunicationProtocol; +import com.arangodb.internal.net.ConnectionFactory; +import com.arangodb.internal.net.HostHandler; +import com.arangodb.internal.net.ProtocolProvider; +import com.arangodb.internal.serde.InternalSerde; + +import javax.net.ssl.SSLContext; + +public class HttpProtocolProvider implements ProtocolProvider { + + @Override + public boolean supportsProtocol(Protocol protocol) { + return Protocol.HTTP_VPACK.equals(protocol) || + Protocol.HTTP_JSON.equals(protocol) || + Protocol.HTTP2_VPACK.equals(protocol) || + Protocol.HTTP2_JSON.equals(protocol); + } + + @Override + public ConnectionFactory createConnectionFactory( + final Integer timeout, + final String user, + final String password, + final Boolean useSsl, + final SSLContext sslContext, + final Boolean verifyHost, + final InternalSerde util, + final Protocol protocol, + final Long connectionTtl + ) { + return new HttpConnectionFactory(timeout, user, password, useSsl, sslContext, verifyHost, util, protocol, connectionTtl); + } + + @Override + public CommunicationProtocol createProtocol(final HostHandler hostHandler, final InternalSerde serde) { + return new HttpProtocol(new HttpCommunication(hostHandler, serde)); + } +} diff --git a/http/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider b/http/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider new file mode 100644 index 000000000..f48d178b7 --- /dev/null +++ b/http/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider @@ -0,0 +1 @@ +com.arangodb.http.HttpProtocolProvider diff --git a/pom.xml b/pom.xml index e258c81a1..f56ee0442 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,7 @@ shaded jackson-serde serde-api + http pom @@ -99,20 +100,6 @@ import pom - - io.vertx - vertx-stack-depchain - 4.3.5 - pom - import - - - io.netty - netty-bom - 4.1.85.Final - pom - import - org.junit junit-bom @@ -130,6 +117,11 @@ core ${project.version} + + com.arangodb + http-protocol + ${project.version} + com.arangodb serde-api From 0beeeb9982d859c598f10b3e0fbffbb6e3dd4d94 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Fri, 10 Feb 2023 22:37:42 +0100 Subject: [PATCH 06/18] config refactoring --- core/src/main/java/com/arangodb/ArangoDB.java | 270 ++------------ .../com/arangodb/async/ArangoDBAsync.java | 247 ++----------- .../internal/InternalArangoDBBuilder.java | 337 ++++++++++++------ .../internal/config/ArangoConfig.java | 204 +++++++++++ .../arangodb/async/serde/CustomSerdeTest.java | 2 +- 5 files changed, 493 insertions(+), 567 deletions(-) create mode 100644 core/src/main/java/com/arangodb/internal/config/ArangoConfig.java diff --git a/core/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java index 522ff6ed3..36b4fe4a6 100644 --- a/core/src/main/java/com/arangodb/ArangoDB.java +++ b/core/src/main/java/com/arangodb/ArangoDB.java @@ -21,6 +21,7 @@ package com.arangodb; import com.arangodb.config.ArangoConfigProperties; +import com.arangodb.config.HostDescription; import com.arangodb.entity.*; import com.arangodb.internal.ArangoDBImpl; import com.arangodb.internal.ArangoDefaults; @@ -43,6 +44,7 @@ import javax.annotation.concurrent.ThreadSafe; import javax.net.ssl.SSLContext; import java.util.Collection; +import java.util.Optional; /** * Central access point for applications to communicate with an ArangoDB server. @@ -330,257 +332,28 @@ public interface ArangoDB extends ArangoSerdeAccessor { * * @author Mark Vollmary */ - class Builder extends InternalArangoDBBuilder { + class Builder extends InternalArangoDBBuilder { public Builder() { super(); } - public Builder loadProperties(final ArangoConfigProperties properties) { - doLoadProperties(properties); - return this; - } - - public Builder useProtocol(final Protocol protocol) { - this.protocol = protocol; - return this; - } - - /** - * Adds a host to connect to. Multiple hosts can be added to provide fallbacks. - * - * @param host address of the host - * @param port port of the host - * @return {@link ArangoDB.Builder} - */ - public Builder host(final String host, final int port) { - setHost(host, port); - return this; - } - - /** - * Sets the connection and request timeout in milliseconds. - * - * @param timeout timeout in milliseconds - * @return {@link ArangoDB.Builder} - */ - public Builder timeout(final Integer timeout) { - setTimeout(timeout); - return this; - } - - /** - * Sets the username to use for authentication. - * - * @param user the user in the database (default: {@code root}) - * @return {@link ArangoDB.Builder} - */ - public Builder user(final String user) { - setUser(user); - return this; - } - - /** - * Sets the password for the user for authentication. - * - * @param password the password of the user in the database (default: {@code null}) - * @return {@link ArangoDB.Builder} - */ - public Builder password(final String password) { - setPassword(password); - return this; - } - - /** - * Sets the JWT for the user authentication. - * - * @param jwt token to use (default: {@code null}) - * @return {@link ArangoDB.Builder} - */ - public Builder jwt(final String jwt) { - setJwt(jwt); - return this; - } - - /** - * If set to {@code true} SSL will be used when connecting to an ArangoDB server. - * - * @param useSsl whether or not use SSL (default: {@code false}) - * @return {@link ArangoDB.Builder} - */ - public Builder useSsl(final Boolean useSsl) { - setUseSsl(useSsl); - return this; - } - - /** - * Sets the SSL context to be used when {@code true} is passed through {@link #useSsl(Boolean)}. - * - * @param sslContext SSL context to be used - * @return {@link ArangoDB.Builder} - */ - public Builder sslContext(final SSLContext sslContext) { - setSslContext(sslContext); - return this; - } - - /** - * Set whether hostname verification is enabled - * - * @param verifyHost {@code true} if enabled - * @return {@link ArangoDB.Builder} - */ - public Builder verifyHost(final Boolean verifyHost) { - setVerifyHost(verifyHost); - return this; - } - - /** - * Sets the chunk size when {@link Protocol#VST} is used. - * - * @param chunksize size of a chunk in bytes - * @return {@link ArangoDB.Builder} - */ - public Builder chunksize(final Integer chunksize) { - setChunkSize(chunksize); - return this; - } - - /** - * Sets the maximum number of connections the built in connection pool will open per host. - * - *

- * Defaults: - *

- * - *
-         * {@link Protocol#VST} == 1
-         * {@link Protocol#HTTP_JSON} == 20
-         * {@link Protocol#HTTP_VPACK} == 20
-         * 
- * - * @param maxConnections max number of connections - * @return {@link ArangoDB.Builder} - */ - public Builder maxConnections(final Integer maxConnections) { - setMaxConnections(maxConnections); - return this; - } - - /** - * Set the maximum time to life of a connection. After this time the connection will be closed automatically. - * - * @param connectionTtl the maximum time to life of a connection in milliseconds - * @return {@link ArangoDB.Builder} - */ - public Builder connectionTtl(final Long connectionTtl) { - setConnectionTtl(connectionTtl); - return this; - } - - /** - * Set the keep-alive interval for VST connections. If set, every VST connection will perform a no-op request - * every {@code keepAliveInterval} seconds, to avoid to be closed due to inactivity by the server (or by the - * external environment, eg. firewall, intermediate routers, operating system). - * - * @param keepAliveInterval interval in seconds - * @return {@link ArangoDB.Builder} - */ - public Builder keepAliveInterval(final Integer keepAliveInterval) { - setKeepAliveInterval(keepAliveInterval); - return this; - } - - /** - * Whether or not the driver should acquire a list of available coordinators in an ArangoDB cluster or a single - * server with active failover. In case of Active-Failover deployment set to {@code true} to enable automatic - * master discovery. - * - *

- * The host list will be used for failover and load balancing. - *

- * - * @param acquireHostList whether or not automatically acquire a list of available hosts (default: false) - * @return {@link ArangoDB.Builder} - */ - public Builder acquireHostList(final Boolean acquireHostList) { - setAcquireHostList(acquireHostList); - return this; - } - - /** - * Setting the Interval for acquireHostList - * - * @param acquireHostListInterval Interval in milliseconds - * @return {@link ArangoDB.Builder} - */ - public Builder acquireHostListInterval(final Integer acquireHostListInterval) { - setAcquireHostListInterval(acquireHostListInterval); - return this; - } - - /** - * Sets the load balancing strategy to be used in an ArangoDB cluster setup. In case of Active-Failover - * deployment set to {@link LoadBalancingStrategy#NONE} or not set at all, since that would be the default. - * - * @param loadBalancingStrategy the load balancing strategy to be used (default: - * {@link LoadBalancingStrategy#NONE} - * @return {@link ArangoDB.Builder} - */ - public Builder loadBalancingStrategy(final LoadBalancingStrategy loadBalancingStrategy) { - setLoadBalancingStrategy(loadBalancingStrategy); - return this; - } - - /** - * Setting the amount of samples kept for queue time metrics - * - * @param responseQueueTimeSamples amount of samples to keep - * @return {@link ArangoDB.Builder} - */ - public Builder responseQueueTimeSamples(final Integer responseQueueTimeSamples) { - setResponseQueueTimeSamples(responseQueueTimeSamples); - return this; - } - - /** - * Sets the serde for the user data. - * This is used to serialize and deserialize all the data payload such as: - * - documents, vertexes, edges - * - AQL bind vars - * - body payload of requests and responses in {@link ArangoDB#execute(Request, Class)} - *

- * However, note that the following types will always be serialized and deserialized using the internal serde: - * - {@link com.fasterxml.jackson.databind.JsonNode} - * - {@link com.arangodb.util.RawJson} - * - {@link com.arangodb.util.RawBytes} - * - {@link com.arangodb.entity.BaseDocument} - * - {@link com.arangodb.entity.BaseEdgeDocument} - * - * @param serde custom serde for the user data - * @return {@link ArangoDB.Builder} - */ - public Builder serde(final ArangoSerde serde) { - setUserDataSerde(serde); - return this; - } - /** * Returns an instance of {@link ArangoDB}. * * @return {@link ArangoDB} */ public ArangoDB build() { - if (hosts.isEmpty()) { + if (config.getHosts().isEmpty()) { throw new ArangoDBException("No host has been set!"); } - final ArangoSerde userSerde = this.userDataSerde != null ? this.userDataSerde : - serdeProvider().of(ContentTypeFactory.of(protocol)); - final InternalSerde serde = InternalSerdeProvider.create(ContentTypeFactory.of(protocol), userSerde); + final ArangoSerde userSerde = Optional.ofNullable(config.getUserDataSerde()) + .orElseGet(() -> serdeProvider().of(ContentTypeFactory.of(config.getProtocol()))); + final InternalSerde serde = InternalSerdeProvider.create(ContentTypeFactory.of(config.getProtocol()), userSerde); int protocolMaxConnections; - switch (protocol) { + switch (config.getProtocol()) { case VST: protocolMaxConnections = ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT; break; @@ -596,28 +369,31 @@ public ArangoDB build() { throw new IllegalArgumentException(); } - final int max = maxConnections != null ? Math.max(1, maxConnections) : protocolMaxConnections; + final int max = Optional.ofNullable(config.getMaxConnections()) + .map(maxConnections -> Math.max(1, maxConnections)) + .orElse(protocolMaxConnections); - final ConnectionFactory connectionFactory = Protocol.VST == protocol - ? new VstConnectionFactorySync(timeout, connectionTtl, keepAliveInterval, useSsl, sslContext) - : protocolProvider(protocol).createConnectionFactory(timeout, user, password, useSsl, sslContext, verifyHost, serde, - protocol, connectionTtl); + final ConnectionFactory connectionFactory = Protocol.VST == config.getProtocol() + ? new VstConnectionFactorySync(config.getTimeout(), config.getConnectionTtl(), config.getKeepAliveInterval(), config.getUseSsl(), config.getSslContext()) + : protocolProvider(config.getProtocol()).createConnectionFactory(config.getTimeout(), config.getUser(), config.getPassword(), config.getUseSsl(), + config.getSslContext(), config.getVerifyHost(), serde, + config.getProtocol(), config.getConnectionTtl()); final Collection hostList = createHostList(max, connectionFactory); final HostResolver hostResolver = createHostResolver(hostList, max, connectionFactory); final HostHandler hostHandler = createHostHandler(hostResolver); - hostHandler.setJwt(jwt); + hostHandler.setJwt(config.getJwt()); return new ArangoDBImpl( - new VstCommunicationSync.Builder(hostHandler).timeout(timeout).user(user).password(password) - .jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize) - .maxConnections(maxConnections).connectionTtl(connectionTtl), + new VstCommunicationSync.Builder(hostHandler).timeout(config.getTimeout()).user(config.getUser()).password(config.getPassword()) + .jwt(config.getJwt()).useSsl(config.getUseSsl()).sslContext(config.getSslContext()).chunksize(config.getChunkSize()) + .maxConnections(config.getMaxConnections()).connectionTtl(config.getConnectionTtl()), serde, - protocol, + config.getProtocol(), hostResolver, - protocolProvider(protocol), + protocolProvider(config.getProtocol()), hostHandler, - responseQueueTimeSamples, timeout); + config.getResponseQueueTimeSamples(), config.getTimeout()); } } diff --git a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java index 46ab0d422..580c1f184 100644 --- a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -24,7 +24,6 @@ import com.arangodb.async.internal.ArangoDBAsyncImpl; import com.arangodb.async.internal.velocystream.VstCommunicationAsync; import com.arangodb.async.internal.velocystream.VstConnectionFactoryAsync; -import com.arangodb.config.ArangoConfigProperties; import com.arangodb.entity.*; import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; @@ -42,8 +41,8 @@ import com.arangodb.serde.ArangoSerde; import javax.annotation.concurrent.ThreadSafe; -import javax.net.ssl.SSLContext; import java.util.Collection; +import java.util.Optional; import java.util.concurrent.CompletableFuture; /** @@ -276,8 +275,7 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { * * @param options Additional options, can be null * @return the log messages - * @see - * API + * @see API * Documentation * @since ArangoDB 3.8 */ @@ -309,222 +307,43 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { * * @author Mark Vollmary */ - class Builder extends InternalArangoDBBuilder { + class Builder extends InternalArangoDBBuilder { public Builder() { super(); } - public Builder loadProperties(final ArangoConfigProperties config) { - super.doLoadProperties(config); - return this; - } - - /** - * Adds a host to connect to. Multiple hosts can be added to provide fallbacks. - * - * @param host address of the host - * @param port port of the host - * @return {@link ArangoDBAsync.Builder} - */ - public Builder host(final String host, final int port) { - setHost(host, port); - return this; - } - - /** - * Sets the timeout in milliseconds. It is used as socket timeout when opening a VecloyStream. - * - * @param timeout timeout in milliseconds - * @return {@link ArangoDBAsync.Builder} - */ - public Builder timeout(final Integer timeout) { - setTimeout(timeout); - return this; - } - - /** - * Sets the username to use for authentication. - * - * @param user the user in the database (default: root) - * @return {@link ArangoDBAsync.Builder} - */ - public Builder user(final String user) { - setUser(user); - return this; - } - - /** - * Sets the password for the user for authentication. - * - * @param password the password of the user in the database (default: null) - * @return {@link ArangoDBAsync.Builder} - */ - public Builder password(final String password) { - setPassword(password); - return this; - } - - /** - * Sets the JWT for the user authentication. - * - * @param jwt token to use (default: {@code null}) - * @return {@link ArangoDBAsync.Builder} - */ - public Builder jwt(final String jwt) { - setJwt(jwt); - return this; - } - - /** - * If set to true SSL will be used when connecting to an ArangoDB server. - * - * @param useSsl whether or not use SSL (default: false) - * @return {@link ArangoDBAsync.Builder} - */ - public Builder useSsl(final Boolean useSsl) { - setUseSsl(useSsl); - return this; - } - - /** - * Sets the SSL context to be used when true is passed through {@link #useSsl(Boolean)}. - * - * @param sslContext SSL context to be used - * @return {@link ArangoDBAsync.Builder} - */ - public Builder sslContext(final SSLContext sslContext) { - setSslContext(sslContext); - return this; - } - - /** - * Sets the chunk size when {@link Protocol#VST} is used. - * - * @param chunksize size of a chunk in bytes - * @return {@link ArangoDBAsync.Builder} - */ - public Builder chunksize(final Integer chunksize) { - setChunkSize(chunksize); - return this; - } - - /** - * Sets the maximum number of connections the built in connection pool will open. - * - *

- * In an ArangoDB cluster setup with {@link LoadBalancingStrategy#ROUND_ROBIN} set, this value should be at - * least as high as the number of ArangoDB coordinators in the cluster. - *

- * - * @param maxConnections max number of connections (default: 1) - * @return {@link ArangoDBAsync.Builder} - */ - public Builder maxConnections(final Integer maxConnections) { - setMaxConnections(maxConnections); - return this; - } - - /** - * Set the maximum time to life of a connection. After this time the connection will be closed automatically. - * - * @param connectionTtl the maximum time to life of a connection. - * @return {@link ArangoDBAsync.Builder} - */ - public Builder connectionTtl(final Long connectionTtl) { - setConnectionTtl(connectionTtl); - return this; - } - - /** - * Set the keep-alive interval for VST connections. If set, every VST connection will perform a no-op request - * every - * {@code keepAliveInterval} seconds, to avoid to be closed due to inactivity by the server (or by the external - * environment, eg. firewall, intermediate routers, operating system). - * - * @param keepAliveInterval interval in seconds - * @return {@link ArangoDBAsync.Builder} - */ - public Builder keepAliveInterval(final Integer keepAliveInterval) { - setKeepAliveInterval(keepAliveInterval); - return this; - } - - /** - * Whether or not the driver should acquire a list of available coordinators in an ArangoDB cluster or a single - * server with active failover. - * In case of Active-Failover deployment set to {@code true} to enable automatic master discovery. - * - *

- * The host list will be used for failover and load balancing. - *

- * - * @param acquireHostList whether or not automatically acquire a list of available hosts (default: false) - * @return {@link ArangoDBAsync.Builder} - */ - public Builder acquireHostList(final Boolean acquireHostList) { - setAcquireHostList(acquireHostList); - return this; - } - - /** - * Setting the amount of samples kept for queue time metrics - * - * @param responseQueueTimeSamples amount of samples to keep - * @return {@link ArangoDBAsync.Builder} - */ - public Builder responseQueueTimeSamples(final Integer responseQueueTimeSamples) { - setResponseQueueTimeSamples(responseQueueTimeSamples); - return this; - } - - /** - * Sets the load balancing strategy to be used in an ArangoDB cluster setup. - * In case of Active-Failover deployment set to {@link LoadBalancingStrategy#NONE} or not set at all, since that - * would be the default. - * - * @param loadBalancingStrategy the load balancing strategy to be used (default: - * {@link LoadBalancingStrategy#NONE} - * @return {@link ArangoDBAsync.Builder} - */ - public Builder loadBalancingStrategy(final LoadBalancingStrategy loadBalancingStrategy) { - setLoadBalancingStrategy(loadBalancingStrategy); - return this; - } - - /** - * Replace the built-in serializer/deserializer with the given one. - *

- *
- * ATTENTION!: Any registered custom serializer/deserializer or module will be ignored. - * - * @param serialization custom serializer/deserializer - * @return {@link ArangoDBAsync.Builder} - */ - public Builder serializer(final ArangoSerde serialization) { - setUserDataSerde(serialization); - return this; - } - /** * Returns an instance of {@link ArangoDBAsync}. * * @return {@link ArangoDBAsync} */ public ArangoDBAsync build() { - if (hosts.isEmpty()) { + if (config.getHosts().isEmpty()) { throw new ArangoDBException("No host has been set!"); } - final ArangoSerde userSerde = this.userDataSerde != null ? this.userDataSerde : serdeProvider().of(ContentType.VPACK); + final ArangoSerde userSerde = Optional.ofNullable(config.getUserDataSerde()) + .orElseGet(() -> serdeProvider().of(ContentType.VPACK)); final InternalSerde serde = InternalSerdeProvider.create(ContentType.VPACK, userSerde); - final int max = maxConnections != null ? Math.max(1, maxConnections) - : ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT; - final ConnectionFactory syncConnectionFactory = new VstConnectionFactorySync(timeout, connectionTtl, - keepAliveInterval, useSsl, sslContext); - final ConnectionFactory asyncConnectionFactory = new VstConnectionFactoryAsync(timeout, connectionTtl, - keepAliveInterval, useSsl, sslContext); + final int max = Optional.ofNullable(config.getMaxConnections()) + .map(maxConnections -> Math.max(1, maxConnections)) + .orElse(ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT); + final ConnectionFactory syncConnectionFactory = new VstConnectionFactorySync( + config.getTimeout(), + config.getConnectionTtl(), + config.getKeepAliveInterval(), + config.getUseSsl(), + config.getSslContext() + ); + final ConnectionFactory asyncConnectionFactory = new VstConnectionFactoryAsync( + config.getTimeout(), + config.getConnectionTtl(), + config.getKeepAliveInterval(), + config.getUseSsl(), + config.getSslContext() + ); final HostResolver syncHostResolver = createHostResolver(createHostList(max, syncConnectionFactory), max, syncConnectionFactory); final HostResolver asyncHostResolver = createHostResolver(createHostList(max, asyncConnectionFactory), max, @@ -539,20 +358,24 @@ public ArangoDBAsync build() { syncHostResolver, asyncHostHandler, syncHostHandler, - responseQueueTimeSamples, - timeout); + config.getResponseQueueTimeSamples(), + config.getTimeout() + ); } private VstCommunicationAsync.Builder asyncBuilder(final HostHandler hostHandler) { - return new VstCommunicationAsync.Builder(hostHandler).timeout(timeout).user(user).password(password) - .jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize).maxConnections(maxConnections) - .connectionTtl(connectionTtl); + return new VstCommunicationAsync.Builder(hostHandler).timeout(config.getTimeout()).user(config.getUser()) + .password(config.getPassword()) + .jwt(config.getJwt()).useSsl(config.getUseSsl()).sslContext(config.getSslContext()) + .chunksize(config.getChunkSize()).maxConnections(config.getMaxConnections()) + .connectionTtl(config.getConnectionTtl()); } private VstCommunicationSync.Builder syncBuilder(final HostHandler hostHandler) { - return new VstCommunicationSync.Builder(hostHandler).timeout(timeout).user(user).password(password) - .jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize).maxConnections(maxConnections) - .connectionTtl(connectionTtl); + return new VstCommunicationSync.Builder(hostHandler).timeout(config.getTimeout()).user(config.getUser()).password(config.getPassword()) + .jwt(config.getJwt()).useSsl(config.getUseSsl()).sslContext(config.getSslContext()).chunksize(config.getChunkSize()) + .maxConnections(config.getMaxConnections()) + .connectionTtl(config.getConnectionTtl()); } } diff --git a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index 4a8900ef2..e10c4e89f 100644 --- a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -20,11 +20,14 @@ package com.arangodb.internal; +import com.arangodb.ArangoDB; import com.arangodb.ArangoDBException; import com.arangodb.Protocol; +import com.arangodb.Request; import com.arangodb.config.ArangoConfigProperties; import com.arangodb.config.HostDescription; import com.arangodb.entity.LoadBalancingStrategy; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.*; import com.arangodb.internal.serde.InternalSerdeProvider; import com.arangodb.internal.util.HostUtils; @@ -34,166 +37,286 @@ import org.slf4j.LoggerFactory; import javax.net.ssl.SSLContext; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.ServiceLoader; /** * @author Mark Vollmary */ -public abstract class InternalArangoDBBuilder { +public abstract class InternalArangoDBBuilder> { private static final Logger LOG = LoggerFactory.getLogger(InternalArangoDBBuilder.class); - - protected final List hosts = new ArrayList<>(); - protected Protocol protocol; - protected Integer timeout; - protected String user; - protected String password; - protected String jwt; - protected Boolean useSsl; - protected SSLContext sslContext; - protected Boolean verifyHost; - protected Integer chunkSize; - protected Integer maxConnections; - protected Long connectionTtl; - protected Integer keepAliveInterval; - protected Boolean acquireHostList; - protected Integer acquireHostListInterval; - protected LoadBalancingStrategy loadBalancingStrategy; - protected ArangoSerde userDataSerde; - protected Integer responseQueueTimeSamples; + protected final ArangoConfig config = new ArangoConfig(); protected InternalArangoDBBuilder() { // load default properties - doLoadProperties(new ArangoConfigProperties() { + config.loadProperties(new ArangoConfigProperties() { }); } - protected ProtocolProvider protocolProvider(Protocol protocol) { - ServiceLoader loader = ServiceLoader.load(ProtocolProvider.class); - for (ProtocolProvider p : loader) { - if (p.supportsProtocol(protocol)) { - return p; - } - } - throw new ArangoDBException("No ProtocolProvider found for protocol: " + protocol); + public T loadProperties(final ArangoConfigProperties properties) { + config.loadProperties(properties); + return (T) this; } - protected static ArangoSerdeProvider serdeProvider() { - ServiceLoader loader = ServiceLoader.load(ArangoSerdeProvider.class); - Iterator it = loader.iterator(); - ArangoSerdeProvider serdeProvider; - if (!it.hasNext()) { - LOG.warn("No ArangoSerdeProvider found, using InternalSerdeProvider. Please consider registering a custom " + - "ArangoSerdeProvider to avoid depending on internal classes which are not part of the public API."); - serdeProvider = new InternalSerdeProvider(); - } else { - serdeProvider = it.next(); - if (it.hasNext()) { - throw new ArangoDBException("Found multiple serde providers! Please set explicitly the one to use."); - } - } - return serdeProvider; + public T useProtocol(final Protocol protocol) { + config.setProtocol(protocol); + return (T) this; + } + + /** + * Adds a host to connect to. Multiple hosts can be added to provide fallbacks. + * + * @param host address of the host + * @param port port of the host + * @return {@link ArangoDB.Builder} + */ + public T host(final String host, final int port) { + config.addHost(new HostDescription(host, port)); + return (T) this; } - protected void doLoadProperties(final ArangoConfigProperties properties) { - hosts.addAll(properties.getHosts().orElse(ArangoDefaults.DEFAULT_HOSTS).stream() - .map(it -> new HostDescription(it.getHost(), it.getPort())) - .collect(Collectors.toList())); - protocol = properties.getProtocol().orElse(ArangoDefaults.DEFAULT_PROTOCOL); - timeout = properties.getTimeout().orElse(ArangoDefaults.DEFAULT_TIMEOUT); - user = properties.getUser().orElse(ArangoDefaults.DEFAULT_USER); - // FIXME: make password field Optional - password = properties.getPassword().orElse(null); - // FIXME: make jwt field Optional - jwt = properties.getJwt().orElse(null); - useSsl = properties.getUseSsl().orElse(ArangoDefaults.DEFAULT_USE_SSL); - verifyHost = properties.getVerifyHost().orElse(ArangoDefaults.DEFAULT_VERIFY_HOST); - chunkSize = properties.getChunkSize().orElse(ArangoDefaults.DEFAULT_CHUNK_SIZE); - // FIXME: make maxConnections field Optional - maxConnections = properties.getMaxConnections().orElse(null); - // FIXME: make connectionTtl field Optional - connectionTtl = properties.getConnectionTtl().orElse(null); - // FIXME: make keepAliveInterval field Optional - keepAliveInterval = properties.getKeepAliveInterval().orElse(null); - acquireHostList = properties.getAcquireHostList().orElse(ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST); - acquireHostListInterval = properties.getAcquireHostListInterval().orElse(ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST_INTERVAL); - loadBalancingStrategy = properties.getLoadBalancingStrategy().orElse(ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY); - responseQueueTimeSamples = properties.getResponseQueueTimeSamples().orElse(ArangoDefaults.DEFAULT_RESPONSE_QUEUE_TIME_SAMPLES); + /** + * Sets the connection and request timeout in milliseconds. + * + * @param timeout timeout in milliseconds + * @return {@link ArangoDB.Builder} + */ + public T timeout(final Integer timeout) { + config.setTimeout(timeout); + return (T) this; } - protected void setHost(final String host, final int port) { - hosts.add(new HostDescription(host, port)); + /** + * Sets the username to use for authentication. + * + * @param user the user in the database (default: {@code root}) + * @return {@link ArangoDB.Builder} + */ + public T user(final String user) { + config.setUser(user); + return (T) this; } - protected void setTimeout(final Integer timeout) { - this.timeout = timeout; + /** + * Sets the password for the user for authentication. + * + * @param password the password of the user in the database (default: {@code null}) + * @return {@link ArangoDB.Builder} + */ + public T password(final String password) { + config.setPassword(password); + return (T) this; } - protected void setUser(final String user) { - this.user = user; + /** + * Sets the JWT for the user authentication. + * + * @param jwt token to use (default: {@code null}) + * @return {@link ArangoDB.Builder} + */ + public T jwt(final String jwt) { + config.setJwt(jwt); + return (T) this; } - protected void setPassword(final String password) { - this.password = password; + /** + * If set to {@code true} SSL will be used when connecting to an ArangoDB server. + * + * @param useSsl whether or not use SSL (default: {@code false}) + * @return {@link ArangoDB.Builder} + */ + public T useSsl(final Boolean useSsl) { + config.setUseSsl(useSsl); + return (T) this; } - protected void setJwt(final String jwt) { - this.jwt = jwt; + /** + * Sets the SSL context to be used when {@code true} is passed through {@link #useSsl(Boolean)}. + * + * @param sslContext SSL context to be used + * @return {@link ArangoDB.Builder} + */ + public T sslContext(final SSLContext sslContext) { + config.setSslContext(sslContext); + return (T) this; } - protected void setUseSsl(final Boolean useSsl) { - this.useSsl = useSsl; + /** + * Set whether hostname verification is enabled + * + * @param verifyHost {@code true} if enabled + * @return {@link ArangoDB.Builder} + */ + public T verifyHost(final Boolean verifyHost) { + config.setVerifyHost(verifyHost); + return (T) this; } - protected void setSslContext(final SSLContext sslContext) { - this.sslContext = sslContext; + /** + * Sets the chunk size when {@link Protocol#VST} is used. + * + * @param chunksize size of a chunk in bytes + * @return {@link ArangoDB.Builder} + */ + public T chunksize(final Integer chunksize) { + config.setChunkSize(chunksize); + return (T) this; } - protected void setVerifyHost(final Boolean verifyHost) { - this.verifyHost = verifyHost; + /** + * Sets the maximum number of connections the built in connection pool will open per host. + * + *

+ * Defaults: + *

+ * + *
+     * {@link Protocol#VST} == 1
+     * {@link Protocol#HTTP_JSON} == 20
+     * {@link Protocol#HTTP_VPACK} == 20
+     * 
+ * + * @param maxConnections max number of connections + * @return {@link ArangoDB.Builder} + */ + public T maxConnections(final Integer maxConnections) { + config.setMaxConnections(maxConnections); + return (T) this; } - protected void setChunkSize(final Integer chunkSize) { - this.chunkSize = chunkSize; + /** + * Set the maximum time to life of a connection. After this time the connection will be closed automatically. + * + * @param connectionTtl the maximum time to life of a connection in milliseconds + * @return {@link ArangoDB.Builder} + */ + public T connectionTtl(final Long connectionTtl) { + config.setConnectionTtl(connectionTtl); + return (T) this; } - protected void setMaxConnections(final Integer maxConnections) { - this.maxConnections = maxConnections; + /** + * Set the keep-alive interval for VST connections. If set, every VST connection will perform a no-op request + * every {@code keepAliveInterval} seconds, to avoid to be closed due to inactivity by the server (or by the + * external environment, eg. firewall, intermediate routers, operating system). + * + * @param keepAliveInterval interval in seconds + * @return {@link ArangoDB.Builder} + */ + public T keepAliveInterval(final Integer keepAliveInterval) { + config.setKeepAliveInterval(keepAliveInterval); + return (T) this; } - protected void setConnectionTtl(final Long connectionTtl) { - this.connectionTtl = connectionTtl; + /** + * Whether or not the driver should acquire a list of available coordinators in an ArangoDB cluster or a single + * server with active failover. In case of Active-Failover deployment set to {@code true} to enable automatic + * master discovery. + * + *

+ * The host list will be used for failover and load balancing. + *

+ * + * @param acquireHostList whether or not automatically acquire a list of available hosts (default: false) + * @return {@link ArangoDB.Builder} + */ + public T acquireHostList(final Boolean acquireHostList) { + config.setAcquireHostList(acquireHostList); + return (T) this; } - protected void setKeepAliveInterval(final Integer keepAliveInterval) { - this.keepAliveInterval = keepAliveInterval; + /** + * Setting the Interval for acquireHostList + * + * @param acquireHostListInterval Interval in milliseconds + * @return {@link ArangoDB.Builder} + */ + public T acquireHostListInterval(final Integer acquireHostListInterval) { + config.setAcquireHostListInterval(acquireHostListInterval); + return (T) this; } - protected void setAcquireHostList(final Boolean acquireHostList) { - this.acquireHostList = acquireHostList; + /** + * Sets the load balancing strategy to be used in an ArangoDB cluster setup. In case of Active-Failover + * deployment set to {@link LoadBalancingStrategy#NONE} or not set at all, since that would be the default. + * + * @param loadBalancingStrategy the load balancing strategy to be used (default: + * {@link LoadBalancingStrategy#NONE} + * @return {@link ArangoDB.Builder} + */ + public T loadBalancingStrategy(final LoadBalancingStrategy loadBalancingStrategy) { + config.setLoadBalancingStrategy(loadBalancingStrategy); + return (T) this; } - protected void setAcquireHostListInterval(final Integer acquireHostListInterval) { - this.acquireHostListInterval = acquireHostListInterval; + /** + * Setting the amount of samples kept for queue time metrics + * + * @param responseQueueTimeSamples amount of samples to keep + * @return {@link ArangoDB.Builder} + */ + public T responseQueueTimeSamples(final Integer responseQueueTimeSamples) { + config.setResponseQueueTimeSamples(responseQueueTimeSamples); + return (T) this; } - protected void setLoadBalancingStrategy(final LoadBalancingStrategy loadBalancingStrategy) { - this.loadBalancingStrategy = loadBalancingStrategy; + /** + * Sets the serde for the user data. + * This is used to serialize and deserialize all the data payload such as: + * - documents, vertexes, edges + * - AQL bind vars + * - body payload of requests and responses in {@link ArangoDB#execute(Request, Class)} + *

+ * However, note that the following types will always be serialized and deserialized using the internal serde: + * - {@link com.fasterxml.jackson.databind.JsonNode} + * - {@link com.arangodb.util.RawJson} + * - {@link com.arangodb.util.RawBytes} + * - {@link com.arangodb.entity.BaseDocument} + * - {@link com.arangodb.entity.BaseEdgeDocument} + * + * @param serde custom serde for the user data + * @return {@link ArangoDB.Builder} + */ + public T serde(final ArangoSerde serde) { + config.setUserDataSerde(serde); + return (T) this; } - protected void setResponseQueueTimeSamples(final Integer responseQueueTimeSamples) { - this.responseQueueTimeSamples = responseQueueTimeSamples; + protected ProtocolProvider protocolProvider(Protocol protocol) { + ServiceLoader loader = ServiceLoader.load(ProtocolProvider.class); + for (ProtocolProvider p : loader) { + if (p.supportsProtocol(protocol)) { + return p; + } + } + throw new ArangoDBException("No ProtocolProvider found for protocol: " + protocol); } - protected void setUserDataSerde(final ArangoSerde serde) { - this.userDataSerde = serde; + protected static ArangoSerdeProvider serdeProvider() { + ServiceLoader loader = ServiceLoader.load(ArangoSerdeProvider.class); + Iterator it = loader.iterator(); + ArangoSerdeProvider serdeProvider; + if (!it.hasNext()) { + LOG.warn("No ArangoSerdeProvider found, using InternalSerdeProvider. Please consider registering a custom " + + "ArangoSerdeProvider to avoid depending on internal classes which are not part of the public API."); + serdeProvider = new InternalSerdeProvider(); + } else { + serdeProvider = it.next(); + if (it.hasNext()) { + throw new ArangoDBException("Found multiple serde providers! Please set explicitly the one to use."); + } + } + return serdeProvider; } protected HostHandler createHostHandler(final HostResolver hostResolver) { final HostHandler hostHandler; + LoadBalancingStrategy loadBalancingStrategy = config.getLoadBalancingStrategy(); if (loadBalancingStrategy != null) { switch (loadBalancingStrategy) { case ONE_RANDOM: @@ -218,11 +341,11 @@ protected HostHandler createHostHandler(final HostResolver hostResolver) { protected HostResolver createHostResolver(final Collection hosts, final int maxConnections, final ConnectionFactory connectionFactory) { - + Boolean acquireHostList = config.getAcquireHostList(); if (acquireHostList != null && acquireHostList) { LOG.debug("acquireHostList -> Use ExtendedHostResolver"); return new ExtendedHostResolver(new ArrayList<>(hosts), maxConnections, connectionFactory, - acquireHostListInterval); + config.getAcquireHostListInterval()); } else { LOG.debug("Use SimpleHostResolver"); return new SimpleHostResolver(new ArrayList<>(hosts)); @@ -234,7 +357,7 @@ protected Collection createHostList( final int maxConnections, final ConnectionFactory connectionFactory) { final Collection hostList = new ArrayList<>(); - for (final HostDescription host : hosts) { + for (final HostDescription host : config.getHosts()) { hostList.add(HostUtils.createHost(host, maxConnections, connectionFactory)); } return hostList; diff --git a/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java b/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java new file mode 100644 index 000000000..1c3f66709 --- /dev/null +++ b/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java @@ -0,0 +1,204 @@ +package com.arangodb.internal.config; + +import com.arangodb.Protocol; +import com.arangodb.config.ArangoConfigProperties; +import com.arangodb.config.HostDescription; +import com.arangodb.entity.LoadBalancingStrategy; +import com.arangodb.internal.ArangoDefaults; +import com.arangodb.serde.ArangoSerde; + +import javax.net.ssl.SSLContext; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class ArangoConfig { + private final List hosts = new ArrayList<>(); + private Protocol protocol; + private Integer timeout; + private String user; + private String password; + private String jwt; + private Boolean useSsl; + private SSLContext sslContext; + private Boolean verifyHost; + private Integer chunkSize; + private Integer maxConnections; + private Long connectionTtl; + private Integer keepAliveInterval; + private Boolean acquireHostList; + private Integer acquireHostListInterval; + private LoadBalancingStrategy loadBalancingStrategy; + private ArangoSerde userDataSerde; + private Integer responseQueueTimeSamples; + + public void loadProperties(final ArangoConfigProperties properties) { + hosts.addAll(properties.getHosts().orElse(ArangoDefaults.DEFAULT_HOSTS).stream() + .map(it -> new HostDescription(it.getHost(), it.getPort())) + .collect(Collectors.toList())); + protocol = properties.getProtocol().orElse(ArangoDefaults.DEFAULT_PROTOCOL); + timeout = properties.getTimeout().orElse(ArangoDefaults.DEFAULT_TIMEOUT); + user = properties.getUser().orElse(ArangoDefaults.DEFAULT_USER); + // FIXME: make password field Optional + password = properties.getPassword().orElse(null); + // FIXME: make jwt field Optional + jwt = properties.getJwt().orElse(null); + useSsl = properties.getUseSsl().orElse(ArangoDefaults.DEFAULT_USE_SSL); + verifyHost = properties.getVerifyHost().orElse(ArangoDefaults.DEFAULT_VERIFY_HOST); + chunkSize = properties.getChunkSize().orElse(ArangoDefaults.DEFAULT_CHUNK_SIZE); + // FIXME: make maxConnections field Optional + maxConnections = properties.getMaxConnections().orElse(null); + // FIXME: make connectionTtl field Optional + connectionTtl = properties.getConnectionTtl().orElse(null); + // FIXME: make keepAliveInterval field Optional + keepAliveInterval = properties.getKeepAliveInterval().orElse(null); + acquireHostList = properties.getAcquireHostList().orElse(ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST); + acquireHostListInterval = properties.getAcquireHostListInterval().orElse(ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST_INTERVAL); + loadBalancingStrategy = properties.getLoadBalancingStrategy().orElse(ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY); + responseQueueTimeSamples = properties.getResponseQueueTimeSamples().orElse(ArangoDefaults.DEFAULT_RESPONSE_QUEUE_TIME_SAMPLES); + } + + public List getHosts() { + return hosts; + } + + public void addHost(HostDescription hostDescription) { + hosts.add(hostDescription); + } + + public Protocol getProtocol() { + return protocol; + } + + public void setProtocol(Protocol protocol) { + this.protocol = protocol; + } + + public Integer getTimeout() { + return timeout; + } + + public void setTimeout(Integer timeout) { + this.timeout = timeout; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getJwt() { + return jwt; + } + + public void setJwt(String jwt) { + this.jwt = jwt; + } + + public Boolean getUseSsl() { + return useSsl; + } + + public void setUseSsl(Boolean useSsl) { + this.useSsl = useSsl; + } + + public SSLContext getSslContext() { + return sslContext; + } + + public void setSslContext(SSLContext sslContext) { + this.sslContext = sslContext; + } + + public Boolean getVerifyHost() { + return verifyHost; + } + + public void setVerifyHost(Boolean verifyHost) { + this.verifyHost = verifyHost; + } + + public Integer getChunkSize() { + return chunkSize; + } + + public void setChunkSize(Integer chunkSize) { + this.chunkSize = chunkSize; + } + + public Integer getMaxConnections() { + return maxConnections; + } + + public void setMaxConnections(Integer maxConnections) { + this.maxConnections = maxConnections; + } + + public Long getConnectionTtl() { + return connectionTtl; + } + + public void setConnectionTtl(Long connectionTtl) { + this.connectionTtl = connectionTtl; + } + + public Integer getKeepAliveInterval() { + return keepAliveInterval; + } + + public void setKeepAliveInterval(Integer keepAliveInterval) { + this.keepAliveInterval = keepAliveInterval; + } + + public Boolean getAcquireHostList() { + return acquireHostList; + } + + public void setAcquireHostList(Boolean acquireHostList) { + this.acquireHostList = acquireHostList; + } + + public Integer getAcquireHostListInterval() { + return acquireHostListInterval; + } + + public void setAcquireHostListInterval(Integer acquireHostListInterval) { + this.acquireHostListInterval = acquireHostListInterval; + } + + public LoadBalancingStrategy getLoadBalancingStrategy() { + return loadBalancingStrategy; + } + + public void setLoadBalancingStrategy(LoadBalancingStrategy loadBalancingStrategy) { + this.loadBalancingStrategy = loadBalancingStrategy; + } + + public ArangoSerde getUserDataSerde() { + return userDataSerde; + } + + public void setUserDataSerde(ArangoSerde userDataSerde) { + this.userDataSerde = userDataSerde; + } + + public Integer getResponseQueueTimeSamples() { + return responseQueueTimeSamples; + } + + public void setResponseQueueTimeSamples(Integer responseQueueTimeSamples) { + this.responseQueueTimeSamples = responseQueueTimeSamples; + } +} diff --git a/driver/src/test/java/com/arangodb/async/serde/CustomSerdeTest.java b/driver/src/test/java/com/arangodb/async/serde/CustomSerdeTest.java index fdca9d3c0..6756ef847 100644 --- a/driver/src/test/java/com/arangodb/async/serde/CustomSerdeTest.java +++ b/driver/src/test/java/com/arangodb/async/serde/CustomSerdeTest.java @@ -65,7 +65,7 @@ void init() throws ExecutionException, InterruptedException { }); ArangoDBAsync arangoDB = new ArangoDBAsync.Builder() .loadProperties(ConfigUtils.loadConfig()) - .serializer(serde).build(); + .serde(serde).build(); DbName TEST_DB = DbName.of("custom-serde-test"); db = arangoDB.db(TEST_DB); From bfbde526db3f81854b5cd49779951f9c736239e4 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Sat, 11 Feb 2023 22:54:12 +0100 Subject: [PATCH 07/18] config refactoring --- core/src/main/java/com/arangodb/ArangoDB.java | 59 ++---------- .../com/arangodb/async/ArangoDBAsync.java | 36 ++----- .../async/internal/ArangoDBAsyncImpl.java | 4 +- .../velocystream/VstCommunicationAsync.java | 86 ++++------------- .../velocystream/VstConnectionAsync.java | 52 ++-------- .../VstConnectionFactoryAsync.java | 16 +--- .../com/arangodb/internal/ArangoDBImpl.java | 42 ++------- .../arangodb/internal/ArangoExecutorSync.java | 4 +- .../internal/InternalArangoDBBuilder.java | 26 ----- .../internal/config/ArangoConfig.java | 69 +++++++++++++- .../internal/net/ProtocolProvider.java | 10 +- .../velocystream/VstCommunication.java | 26 +++-- .../velocystream/VstCommunicationSync.java | 94 ++++--------------- .../VstConnectionFactorySync.java | 17 +--- .../velocystream/VstProtocolProvider.java | 25 +++++ .../velocystream/internal/VstConnection.java | 25 ++--- .../internal/VstConnectionSync.java | 51 ++-------- ...com.arangodb.internal.net.ProtocolProvider | 1 + .../velocystream/CommunicationTest.java | 9 -- .../com/arangodb/http/HttpCommunication.java | 5 +- .../com/arangodb/http/HttpConnection.java | 92 +++++------------- .../arangodb/http/HttpConnectionFactory.java | 16 +--- .../arangodb/http/HttpProtocolProvider.java | 22 +---- 23 files changed, 235 insertions(+), 552 deletions(-) create mode 100644 core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java create mode 100644 core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider diff --git a/core/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java index 36b4fe4a6..cb51aa99a 100644 --- a/core/src/main/java/com/arangodb/ArangoDB.java +++ b/core/src/main/java/com/arangodb/ArangoDB.java @@ -20,31 +20,21 @@ package com.arangodb; -import com.arangodb.config.ArangoConfigProperties; -import com.arangodb.config.HostDescription; import com.arangodb.entity.*; import com.arangodb.internal.ArangoDBImpl; -import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.Host; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; -import com.arangodb.internal.serde.ContentTypeFactory; -import com.arangodb.internal.serde.InternalSerde; -import com.arangodb.internal.serde.InternalSerdeProvider; -import com.arangodb.internal.velocystream.VstCommunicationSync; import com.arangodb.internal.velocystream.VstConnectionFactorySync; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; import com.arangodb.model.UserUpdateOptions; -import com.arangodb.serde.ArangoSerde; import javax.annotation.concurrent.ThreadSafe; -import javax.net.ssl.SSLContext; import java.util.Collection; -import java.util.Optional; /** * Central access point for applications to communicate with an ArangoDB server. @@ -334,10 +324,6 @@ public interface ArangoDB extends ArangoSerdeAccessor { */ class Builder extends InternalArangoDBBuilder { - public Builder() { - super(); - } - /** * Returns an instance of {@link ArangoDB}. * @@ -348,52 +334,21 @@ public ArangoDB build() { throw new ArangoDBException("No host has been set!"); } - final ArangoSerde userSerde = Optional.ofNullable(config.getUserDataSerde()) - .orElseGet(() -> serdeProvider().of(ContentTypeFactory.of(config.getProtocol()))); - final InternalSerde serde = InternalSerdeProvider.create(ContentTypeFactory.of(config.getProtocol()), userSerde); - - int protocolMaxConnections; - switch (config.getProtocol()) { - case VST: - protocolMaxConnections = ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT; - break; - case HTTP_JSON: - case HTTP_VPACK: - protocolMaxConnections = ArangoDefaults.MAX_CONNECTIONS_HTTP_DEFAULT; - break; - case HTTP2_JSON: - case HTTP2_VPACK: - protocolMaxConnections = ArangoDefaults.MAX_CONNECTIONS_HTTP2_DEFAULT; - break; - default: - throw new IllegalArgumentException(); - } - - final int max = Optional.ofNullable(config.getMaxConnections()) - .map(maxConnections -> Math.max(1, maxConnections)) - .orElse(protocolMaxConnections); - final ConnectionFactory connectionFactory = Protocol.VST == config.getProtocol() - ? new VstConnectionFactorySync(config.getTimeout(), config.getConnectionTtl(), config.getKeepAliveInterval(), config.getUseSsl(), config.getSslContext()) - : protocolProvider(config.getProtocol()).createConnectionFactory(config.getTimeout(), config.getUser(), config.getPassword(), config.getUseSsl(), - config.getSslContext(), config.getVerifyHost(), serde, - config.getProtocol(), config.getConnectionTtl()); + ? new VstConnectionFactorySync(config) + : protocolProvider(config.getProtocol()).createConnectionFactory(config); - final Collection hostList = createHostList(max, connectionFactory); - final HostResolver hostResolver = createHostResolver(hostList, max, connectionFactory); + final Collection hostList = createHostList(config.getMaxConnections(), connectionFactory); + final HostResolver hostResolver = createHostResolver(hostList, config.getMaxConnections(), connectionFactory); final HostHandler hostHandler = createHostHandler(hostResolver); hostHandler.setJwt(config.getJwt()); return new ArangoDBImpl( - new VstCommunicationSync.Builder(hostHandler).timeout(config.getTimeout()).user(config.getUser()).password(config.getPassword()) - .jwt(config.getJwt()).useSsl(config.getUseSsl()).sslContext(config.getSslContext()).chunksize(config.getChunkSize()) - .maxConnections(config.getMaxConnections()).connectionTtl(config.getConnectionTtl()), - serde, - config.getProtocol(), + config, hostResolver, protocolProvider(config.getProtocol()), - hostHandler, - config.getResponseQueueTimeSamples(), config.getTimeout()); + hostHandler + ); } } diff --git a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java index 580c1f184..abcea8d73 100644 --- a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -309,41 +309,26 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { */ class Builder extends InternalArangoDBBuilder { - public Builder() { - super(); - } - /** * Returns an instance of {@link ArangoDBAsync}. * * @return {@link ArangoDBAsync} */ public ArangoDBAsync build() { + config.setProtocol(Protocol.VST); + if (config.getHosts().isEmpty()) { throw new ArangoDBException("No host has been set!"); } - final ArangoSerde userSerde = Optional.ofNullable(config.getUserDataSerde()) - .orElseGet(() -> serdeProvider().of(ContentType.VPACK)); + final ArangoSerde userSerde = config.getUserDataSerde(); final InternalSerde serde = InternalSerdeProvider.create(ContentType.VPACK, userSerde); final int max = Optional.ofNullable(config.getMaxConnections()) .map(maxConnections -> Math.max(1, maxConnections)) .orElse(ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT); - final ConnectionFactory syncConnectionFactory = new VstConnectionFactorySync( - config.getTimeout(), - config.getConnectionTtl(), - config.getKeepAliveInterval(), - config.getUseSsl(), - config.getSslContext() - ); - final ConnectionFactory asyncConnectionFactory = new VstConnectionFactoryAsync( - config.getTimeout(), - config.getConnectionTtl(), - config.getKeepAliveInterval(), - config.getUseSsl(), - config.getSslContext() - ); + final ConnectionFactory syncConnectionFactory = new VstConnectionFactorySync(config); + final ConnectionFactory asyncConnectionFactory = new VstConnectionFactoryAsync(config); final HostResolver syncHostResolver = createHostResolver(createHostList(max, syncConnectionFactory), max, syncConnectionFactory); final HostResolver asyncHostResolver = createHostResolver(createHostList(max, asyncConnectionFactory), max, @@ -364,18 +349,11 @@ public ArangoDBAsync build() { } private VstCommunicationAsync.Builder asyncBuilder(final HostHandler hostHandler) { - return new VstCommunicationAsync.Builder(hostHandler).timeout(config.getTimeout()).user(config.getUser()) - .password(config.getPassword()) - .jwt(config.getJwt()).useSsl(config.getUseSsl()).sslContext(config.getSslContext()) - .chunksize(config.getChunkSize()).maxConnections(config.getMaxConnections()) - .connectionTtl(config.getConnectionTtl()); + return new VstCommunicationAsync.Builder().hostHandler(hostHandler).config(config); } private VstCommunicationSync.Builder syncBuilder(final HostHandler hostHandler) { - return new VstCommunicationSync.Builder(hostHandler).timeout(config.getTimeout()).user(config.getUser()).password(config.getPassword()) - .jwt(config.getJwt()).useSsl(config.getUseSsl()).sslContext(config.getSslContext()).chunksize(config.getChunkSize()) - .maxConnections(config.getMaxConnections()) - .connectionTtl(config.getConnectionTtl()); + return new VstCommunicationSync.Builder().hostHandler(hostHandler).config(config); } } diff --git a/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java index 2ad1b2b0d..932b8d48d 100644 --- a/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java +++ b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java @@ -73,10 +73,10 @@ public ArangoDBAsyncImpl( final int timeoutMs ) { - super(new ArangoExecutorAsync(asyncCommBuilder.build(util), util, + super(new ArangoExecutorAsync(asyncCommBuilder.build(), util, new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs), util); - final VstCommunication cacheCom = syncCommBuilder.build(util); + final VstCommunication cacheCom = syncCommBuilder.build(); cp = new VstProtocol(cacheCom); this.asyncHostHandler = asyncHostHandler; diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java index bc111aa63..2fa814532 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java @@ -21,11 +21,13 @@ package com.arangodb.async.internal.velocystream; import com.arangodb.ArangoDBException; -import com.arangodb.internal.net.ArangoDBRedirectException; import com.arangodb.config.HostDescription; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.ArangoDBRedirectException; import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.velocystream.VstCommunication; import com.arangodb.internal.velocystream.internal.AuthenticationRequest; @@ -33,12 +35,9 @@ import com.arangodb.internal.velocystream.internal.Message; import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocypack.exception.VPackParserException; -import com.arangodb.internal.InternalRequest; -import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.net.ssl.SSLContext; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -49,11 +48,8 @@ public class VstCommunicationAsync extends VstCommunication execute(final InternalRequest requ try { final Message message = createMessage(request); if (LOGGER.isDebugEnabled()) { - String body = request.getBody() == null ? "" : util.toJsonString(request.getBody()); + String body = request.getBody() == null ? "" : serde.toJsonString(request.getBody()); LOGGER.debug("Send Request [id={}]: {} {}", message.getId(), request, body); } send(message, connection).whenComplete((m, ex) -> { @@ -107,7 +103,7 @@ protected CompletableFuture execute(final InternalRequest requ rfuture.completeExceptionally(e); } if (LOGGER.isDebugEnabled()) { - String body = response.getBody() == null ? "" : util.toJsonString(response.getBody()); + String body = response.getBody() == null ? "" : serde.toJsonString(response.getBody()); LOGGER.debug("Received Response [id={}]: {} {}", m.getId(), response, body); } rfuture.complete(response); @@ -157,71 +153,21 @@ protected void authenticate(final VstConnectionAsync connection) { public static class Builder { - private final HostHandler hostHandler; - private Integer timeout; - private Long connectionTtl; - private String user; - private String password; - private String jwt; - private Boolean useSsl; - private SSLContext sslContext; - private Integer chunksize; - private Integer maxConnections; - - public Builder(final HostHandler hostHandler) { - super(); - this.hostHandler = hostHandler; - } - - public Builder timeout(final Integer timeout) { - this.timeout = timeout; - return this; - } - - public Builder user(final String user) { - this.user = user; - return this; - } - - public Builder password(final String password) { - this.password = password; - return this; - } - - public Builder jwt(final String jwt) { - this.jwt = jwt; - return this; - } - - public Builder useSsl(final Boolean useSsl) { - this.useSsl = useSsl; - return this; - } + private ArangoConfig config; + private HostHandler hostHandler; - public Builder sslContext(final SSLContext sslContext) { - this.sslContext = sslContext; + public Builder config(final ArangoConfig config) { + this.config = config; return this; } - public Builder chunksize(final Integer chunksize) { - this.chunksize = chunksize; - return this; - } - - public Builder maxConnections(final Integer maxConnections) { - this.maxConnections = maxConnections; - return this; - } - - public Builder connectionTtl(final Long connectionTtl) { - this.connectionTtl = connectionTtl; + public Builder hostHandler(final HostHandler hostHandler) { + this.hostHandler = hostHandler; return this; } - public VstCommunicationAsync build(final InternalSerde util) { - return new VstCommunicationAsync(hostHandler, timeout, user, password, jwt, useSsl, sslContext, util, - chunksize, - maxConnections, connectionTtl); + public VstCommunicationAsync build() { + return new VstCommunicationAsync(config, hostHandler); } } diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java index 0e94bcc30..cc9aa8558 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java @@ -22,12 +22,11 @@ import com.arangodb.async.internal.utils.CompletableFutureUtils; import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.velocystream.internal.Chunk; import com.arangodb.internal.velocystream.internal.Message; -import com.arangodb.internal.velocystream.internal.MessageStore; import com.arangodb.internal.velocystream.internal.VstConnection; -import javax.net.ssl.SSLContext; import java.util.Collection; import java.util.concurrent.CompletableFuture; import java.util.concurrent.FutureTask; @@ -38,10 +37,8 @@ */ public class VstConnectionAsync extends VstConnection> { - private VstConnectionAsync(final HostDescription host, final Integer timeout, final Long ttl, - final Integer keepAliveInterval, - final Boolean useSsl, final SSLContext sslContext, final MessageStore messageStore) { - super(host, timeout, ttl, keepAliveInterval, useSsl, sslContext, messageStore); + private VstConnectionAsync(final ArangoConfig config, final HostDescription host) { + super(config, host); } @Override @@ -70,21 +67,11 @@ protected void doKeepAlive() { } public static class Builder { - - private MessageStore messageStore; + private ArangoConfig config; private HostDescription host; - private Integer timeout; - private Long ttl; - private Integer keepAliveInterval; - private Boolean useSsl; - private SSLContext sslContext; - - public Builder() { - super(); - } - public Builder messageStore(final MessageStore messageStore) { - this.messageStore = messageStore; + public Builder config(final ArangoConfig config) { + this.config = config; return this; } @@ -93,33 +80,8 @@ public Builder host(final HostDescription host) { return this; } - public Builder timeout(final Integer timeout) { - this.timeout = timeout; - return this; - } - - public Builder ttl(final Long ttl) { - this.ttl = ttl; - return this; - } - - public Builder keepAliveInterval(final Integer keepAliveInterval) { - this.keepAliveInterval = keepAliveInterval; - return this; - } - - public Builder useSsl(final Boolean useSsl) { - this.useSsl = useSsl; - return this; - } - - public Builder sslContext(final SSLContext sslContext) { - this.sslContext = sslContext; - return this; - } - public VstConnectionAsync build() { - return new VstConnectionAsync(host, timeout, ttl, keepAliveInterval, useSsl, sslContext, messageStore); + return new VstConnectionAsync(config, host); } } diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java index 72018d182..eb7f62a72 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java @@ -20,12 +20,10 @@ package com.arangodb.async.internal.velocystream; +import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.Connection; import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.config.HostDescription; -import com.arangodb.internal.velocystream.internal.MessageStore; - -import javax.net.ssl.SSLContext; /** * @author Mark Vollmary @@ -34,18 +32,14 @@ public class VstConnectionFactoryAsync implements ConnectionFactory { private final VstConnectionAsync.Builder builder; - public VstConnectionFactoryAsync(final Integer timeout, final Long connectionTtl, - final Integer keepAliveInterval, final Boolean useSsl, - final SSLContext sslContext) { + public VstConnectionFactoryAsync(final ArangoConfig config) { super(); - builder = new VstConnectionAsync.Builder().timeout(timeout).ttl(connectionTtl) - .keepAliveInterval(keepAliveInterval).useSsl(useSsl) - .sslContext(sslContext); + builder = new VstConnectionAsync.Builder().config(config); } @Override public Connection create(final HostDescription host) { - return builder.messageStore(new MessageStore()).host(host).build(); + return builder.host(host).build(); } } diff --git a/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java index bcadc3a35..c8280bca4 100644 --- a/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -22,14 +22,11 @@ import com.arangodb.*; import com.arangodb.entity.*; -import com.arangodb.internal.net.CommunicationProtocol; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; import com.arangodb.internal.net.ProtocolProvider; -import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.serde.SerdeUtils; -import com.arangodb.internal.velocystream.VstCommunicationSync; -import com.arangodb.internal.velocystream.VstProtocol; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; @@ -49,45 +46,20 @@ public class ArangoDBImpl extends InternalArangoDB implement private static final Logger LOGGER = LoggerFactory.getLogger(ArangoDBImpl.class); private final HostHandler hostHandler; - public ArangoDBImpl(final VstCommunicationSync.Builder vstBuilder, - final InternalSerde util, final Protocol protocol, final HostResolver hostResolver, final ProtocolProvider protocolProvider, - final HostHandler hostHandler, int responseQueueTimeSamples, - final int timeoutMs) { + public ArangoDBImpl(final ArangoConfig config, + final HostResolver hostResolver, final ProtocolProvider protocolProvider, + final HostHandler hostHandler) { super(new ArangoExecutorSync( - createProtocol(vstBuilder, hostHandler, util, protocol, protocolProvider), - util, new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs), - util); + protocolProvider.createProtocol(config, hostHandler), + config.getInternalSerde(), new QueueTimeMetricsImpl(config.getResponseQueueTimeSamples()), config.getTimeout()), + config.getInternalSerde()); this.hostHandler = hostHandler; hostResolver.init(this.executor(), getSerde()); LOGGER.debug("ArangoDB Client is ready to use"); } - private static CommunicationProtocol createProtocol( - final VstCommunicationSync.Builder vstBuilder, - final HostHandler hostHandler, - final InternalSerde util, - final Protocol protocol, - final ProtocolProvider protocolProvider) { - - return (protocol == null || Protocol.VST == protocol) ? createVST(vstBuilder, util) - : createHTTP(hostHandler, util, protocolProvider); - } - - private static CommunicationProtocol createVST( - final VstCommunicationSync.Builder builder, - final InternalSerde util) { - return new VstProtocol(builder.build(util)); - } - - private static CommunicationProtocol createHTTP( - final HostHandler hostHandler, - final InternalSerde util, - final ProtocolProvider protocolProvider) { - return protocolProvider.createProtocol(hostHandler, util); - } - @Override protected ArangoExecutorSync executor() { return executor; diff --git a/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java b/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java index 88b2f6f0f..0c8f42193 100644 --- a/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java +++ b/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java @@ -40,9 +40,9 @@ public class ArangoExecutorSync extends ArangoExecutor { private final CommunicationProtocol protocol; - public ArangoExecutorSync(final CommunicationProtocol protocol, final InternalSerde util, + public ArangoExecutorSync(final CommunicationProtocol protocol, final InternalSerde serde, final QueueTimeMetricsImpl qtMetrics, final int timeoutMs) { - super(util, qtMetrics, timeoutMs); + super(serde, qtMetrics, timeoutMs); this.protocol = protocol; } diff --git a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index e10c4e89f..cc937ed10 100644 --- a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -29,17 +29,14 @@ import com.arangodb.entity.LoadBalancingStrategy; import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.*; -import com.arangodb.internal.serde.InternalSerdeProvider; import com.arangodb.internal.util.HostUtils; import com.arangodb.serde.ArangoSerde; -import com.arangodb.serde.ArangoSerdeProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.net.ssl.SSLContext; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.ServiceLoader; @@ -50,12 +47,6 @@ public abstract class InternalArangoDBBuilder loader = ServiceLoader.load(ArangoSerdeProvider.class); - Iterator it = loader.iterator(); - ArangoSerdeProvider serdeProvider; - if (!it.hasNext()) { - LOG.warn("No ArangoSerdeProvider found, using InternalSerdeProvider. Please consider registering a custom " + - "ArangoSerdeProvider to avoid depending on internal classes which are not part of the public API."); - serdeProvider = new InternalSerdeProvider(); - } else { - serdeProvider = it.next(); - if (it.hasNext()) { - throw new ArangoDBException("Found multiple serde providers! Please set explicitly the one to use."); - } - } - return serdeProvider; - } - protected HostHandler createHostHandler(final HostResolver hostResolver) { final HostHandler hostHandler; diff --git a/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java b/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java index 1c3f66709..d9f886bdb 100644 --- a/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java +++ b/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java @@ -1,15 +1,21 @@ package com.arangodb.internal.config; +import com.arangodb.ArangoDBException; import com.arangodb.Protocol; import com.arangodb.config.ArangoConfigProperties; import com.arangodb.config.HostDescription; import com.arangodb.entity.LoadBalancingStrategy; import com.arangodb.internal.ArangoDefaults; +import com.arangodb.internal.serde.ContentTypeFactory; +import com.arangodb.internal.serde.InternalSerde; +import com.arangodb.internal.serde.InternalSerdeProvider; import com.arangodb.serde.ArangoSerde; +import com.arangodb.serde.ArangoSerdeProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.net.ssl.SSLContext; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; public class ArangoConfig { @@ -29,9 +35,35 @@ public class ArangoConfig { private Boolean acquireHostList; private Integer acquireHostListInterval; private LoadBalancingStrategy loadBalancingStrategy; + private InternalSerde internalSerde; private ArangoSerde userDataSerde; private Integer responseQueueTimeSamples; + private static final Logger LOG = LoggerFactory.getLogger(ArangoConfig.class); + + private static ArangoSerdeProvider serdeProvider() { + ServiceLoader loader = ServiceLoader.load(ArangoSerdeProvider.class); + Iterator it = loader.iterator(); + ArangoSerdeProvider serdeProvider; + if (!it.hasNext()) { + LOG.warn("No ArangoSerdeProvider found, using InternalSerdeProvider. Please consider registering a custom " + + "ArangoSerdeProvider to avoid depending on internal classes which are not part of the public API."); + serdeProvider = new InternalSerdeProvider(); + } else { + serdeProvider = it.next(); + if (it.hasNext()) { + throw new ArangoDBException("Found multiple serde providers! Please set explicitly the one to use."); + } + } + return serdeProvider; + } + + public ArangoConfig() { + // load default properties + loadProperties(new ArangoConfigProperties() { + }); + } + public void loadProperties(final ArangoConfigProperties properties) { hosts.addAll(properties.getHosts().orElse(ArangoDefaults.DEFAULT_HOSTS).stream() .map(it -> new HostDescription(it.getHost(), it.getPort())) @@ -139,9 +171,32 @@ public void setChunkSize(Integer chunkSize) { } public Integer getMaxConnections() { + if (maxConnections == null) { + maxConnections = getDefaultMaxConnections(); + } return maxConnections; } + private int getDefaultMaxConnections() { + int defaultMaxConnections; + switch (getProtocol()) { + case VST: + defaultMaxConnections = ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT; + break; + case HTTP_JSON: + case HTTP_VPACK: + defaultMaxConnections = ArangoDefaults.MAX_CONNECTIONS_HTTP_DEFAULT; + break; + case HTTP2_JSON: + case HTTP2_VPACK: + defaultMaxConnections = ArangoDefaults.MAX_CONNECTIONS_HTTP2_DEFAULT; + break; + default: + throw new IllegalArgumentException(); + } + return defaultMaxConnections; + } + public void setMaxConnections(Integer maxConnections) { this.maxConnections = maxConnections; } @@ -187,9 +242,19 @@ public void setLoadBalancingStrategy(LoadBalancingStrategy loadBalancingStrategy } public ArangoSerde getUserDataSerde() { + if (userDataSerde == null) { + userDataSerde = serdeProvider().of(ContentTypeFactory.of(getProtocol())); + } return userDataSerde; } + public InternalSerde getInternalSerde() { + if (internalSerde == null) { + internalSerde = InternalSerdeProvider.create(ContentTypeFactory.of(getProtocol()), getUserDataSerde()); + } + return internalSerde; + } + public void setUserDataSerde(ArangoSerde userDataSerde) { this.userDataSerde = userDataSerde; } diff --git a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java index 64c228e51..279bd67d2 100644 --- a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java +++ b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java @@ -2,18 +2,14 @@ import com.arangodb.Protocol; -import com.arangodb.internal.serde.InternalSerde; - -import javax.net.ssl.SSLContext; +import com.arangodb.internal.config.ArangoConfig; public interface ProtocolProvider { boolean supportsProtocol(Protocol protocol); - ConnectionFactory createConnectionFactory(Integer timeout, String user, String password, Boolean useSsl, - SSLContext sslContext, Boolean verifyHost, - InternalSerde util, Protocol protocol, Long connectionTtl); + ConnectionFactory createConnectionFactory(ArangoConfig config); - CommunicationProtocol createProtocol(HostHandler hostHandler, InternalSerde serde); + CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler); } diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java index 9276834bc..15dfd0333 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java @@ -21,8 +21,7 @@ package com.arangodb.internal.velocystream; import com.arangodb.ArangoDBException; -import com.arangodb.config.ArangoConfigProperties; -import com.arangodb.internal.ArangoDefaults; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.AccessType; import com.arangodb.internal.net.Host; import com.arangodb.internal.net.HostHandle; @@ -40,7 +39,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.net.ssl.SSLContext; import java.io.Closeable; import java.io.IOException; import java.util.ArrayList; @@ -56,7 +54,7 @@ public abstract class VstCommunication> implements protected static final String ENCRYPTION_JWT = "jwt"; protected static final AtomicLong mId = new AtomicLong(0L); private static final Logger LOGGER = LoggerFactory.getLogger(VstCommunication.class); - protected final InternalSerde util; + protected final InternalSerde serde; protected final String user; protected final String password; @@ -64,15 +62,13 @@ public abstract class VstCommunication> implements protected final HostHandler hostHandler; protected volatile String jwt; - protected VstCommunication(final Integer timeout, final String user, final String password, final String jwt, - final Boolean useSsl, final SSLContext sslContext, final InternalSerde util, - final Integer chunksize, final HostHandler hostHandler) { - this.user = user; - this.password = password; - this.jwt = jwt; - this.util = util; + protected VstCommunication(final ArangoConfig config, final HostHandler hostHandler) { + user = config.getUser(); + password = config.getPassword(); + jwt = config.getJwt(); + serde = config.getInternalSerde(); + chunksize = config.getChunkSize(); this.hostHandler = hostHandler; - this.chunksize = chunksize; } @SuppressWarnings("unchecked") @@ -153,11 +149,11 @@ protected R execute(final InternalRequest request, final HostHandle hostHandle, protected abstract R execute(final InternalRequest request, C connection, final int attemptCount); protected void checkError(final InternalResponse response) { - ResponseUtils.checkError(util, response); + ResponseUtils.checkError(serde, response); } protected InternalResponse createResponse(final Message message) throws VPackParserException { - final InternalResponse response = util.deserialize(message.getHead().toByteArray(), InternalResponse.class); + final InternalResponse response = serde.deserialize(message.getHead().toByteArray(), InternalResponse.class); if (message.getBody() != null) { response.setBody(message.getBody().toByteArray()); } @@ -168,7 +164,7 @@ protected final Message createMessage(final InternalRequest request) throws VPac request.putHeaderParam("accept", "application/x-velocypack"); request.putHeaderParam("content-type", "application/x-velocypack"); final long id = mId.incrementAndGet(); - return new Message(id, util.serialize(request), request.getBody()); + return new Message(id, serde.serialize(request), request.getBody()); } protected Collection buildChunks(final Message message) { diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java index f8416c74c..7b2ccc951 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java @@ -21,24 +21,22 @@ package com.arangodb.internal.velocystream; import com.arangodb.ArangoDBException; -import com.arangodb.internal.net.ArangoDBRedirectException; import com.arangodb.config.HostDescription; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.ArangoDBRedirectException; import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.velocystream.internal.AuthenticationRequest; import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.internal.velocystream.internal.Message; import com.arangodb.internal.velocystream.internal.VstConnectionSync; import com.arangodb.velocypack.exception.VPackParserException; -import com.arangodb.internal.InternalRequest; -import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.net.ssl.SSLContext; - /** * @author Mark Vollmary */ @@ -46,11 +44,8 @@ public class VstCommunicationSync extends VstCommunication build(final InternalSerde util) { - return new VstCommunicationSync(hostHandler, timeout, user, password, jwt, useSsl, sslContext, util, - chunksize, - maxConnections, connectionTtl); + public VstCommunication build() { + return new VstCommunicationSync(config, hostHandler); } } diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java b/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java index 713e5a422..2344fab44 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java @@ -20,14 +20,12 @@ package com.arangodb.internal.velocystream; +import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.Connection; import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.config.HostDescription; -import com.arangodb.internal.velocystream.internal.MessageStore; import com.arangodb.internal.velocystream.internal.VstConnectionSync; -import javax.net.ssl.SSLContext; - /** * @author Mark Vollmary */ @@ -35,18 +33,13 @@ public class VstConnectionFactorySync implements ConnectionFactory { private final VstConnectionSync.Builder builder; - public VstConnectionFactorySync(final Integer timeout, final Long connectionTtl, - final Integer keepAliveInterval, final Boolean useSsl, - final SSLContext sslContext) { - super(); - builder = new VstConnectionSync.Builder().timeout(timeout).ttl(connectionTtl) - .keepAliveInterval(keepAliveInterval).useSsl(useSsl) - .sslContext(sslContext); + public VstConnectionFactorySync(final ArangoConfig config) { + builder = new VstConnectionSync.Builder().config(config); } @Override public Connection create(final HostDescription host) { - return builder.messageStore(new MessageStore()).host(host).build(); + return builder.host(host).build(); } } diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java b/core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java new file mode 100644 index 000000000..698c1705c --- /dev/null +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java @@ -0,0 +1,25 @@ +package com.arangodb.internal.velocystream; + +import com.arangodb.Protocol; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.CommunicationProtocol; +import com.arangodb.internal.net.ConnectionFactory; +import com.arangodb.internal.net.HostHandler; +import com.arangodb.internal.net.ProtocolProvider; + +public class VstProtocolProvider implements ProtocolProvider { + @Override + public boolean supportsProtocol(Protocol protocol) { + return Protocol.VST.equals(protocol); + } + + @Override + public ConnectionFactory createConnectionFactory(ArangoConfig config) { + return new VstConnectionFactorySync(config); + } + + @Override + public CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler) { + return new VstProtocol(new VstCommunicationSync.Builder().config(config).hostHandler(hostHandler).build()); + } +} diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java index 29d80e0ea..ed93df4a5 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java @@ -21,10 +21,10 @@ package com.arangodb.internal.velocystream.internal; import com.arangodb.ArangoDBException; -import com.arangodb.config.ArangoConfigProperties; +import com.arangodb.config.HostDescription; import com.arangodb.internal.ArangoDefaults; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.Connection; -import com.arangodb.config.HostDescription; import com.arangodb.velocypack.VPackBuilder; import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.ValueType; @@ -56,7 +56,7 @@ public abstract class VstConnection implements Connection { private static final Logger LOGGER = LoggerFactory.getLogger(VstConnection.class); private static final byte[] PROTOCOL_HEADER = "VST/1.0\r\n\r\n".getBytes(); - protected final MessageStore messageStore; + protected final MessageStore messageStore = new MessageStore(); protected final Integer timeout; private final AtomicLong keepAliveId = new AtomicLong(); private final Long ttl; @@ -87,21 +87,14 @@ public abstract class VstConnection implements Connection { private OutputStream outputStream; private InputStream inputStream; - protected VstConnection(final HostDescription host, - final Integer timeout, - final Long ttl, - final Integer keepAliveInterval, - final Boolean useSsl, - final SSLContext sslContext, - final MessageStore messageStore) { + protected VstConnection(final ArangoConfig config, final HostDescription host) { super(); + timeout = config.getTimeout(); + ttl = config.getConnectionTtl(); + keepAliveInterval = config.getKeepAliveInterval(); + useSsl = config.getUseSsl(); + sslContext = config.getSslContext(); this.host = host; - this.timeout = timeout; - this.ttl = ttl; - this.keepAliveInterval = keepAliveInterval; - this.useSsl = useSsl; - this.sslContext = sslContext; - this.messageStore = messageStore; connectionName = "connection_" + System.currentTimeMillis() + "_" + Math.random(); LOGGER.debug("[" + connectionName + "]: Connection created"); diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java index 7c8b71384..124ee061e 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java @@ -22,8 +22,8 @@ import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; -import javax.net.ssl.SSLContext; import java.util.Collection; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; @@ -34,10 +34,8 @@ */ public class VstConnectionSync extends VstConnection { - private VstConnectionSync(final HostDescription host, final Integer timeout, final Long ttl, - final Integer keepAliveInterval, - final Boolean useSsl, final SSLContext sslContext, final MessageStore messageStore) { - super(host, timeout, ttl, keepAliveInterval, useSsl, sslContext, messageStore); + private VstConnectionSync(final ArangoConfig config, final HostDescription host) { + super(config, host); } @Override @@ -64,52 +62,21 @@ protected void doKeepAlive() { public static class Builder { + private ArangoConfig config; private HostDescription host; - private MessageStore messageStore; - private Integer timeout; - private Long ttl; - private Integer keepAliveInterval; - private Boolean useSsl; - private SSLContext sslContext; - public Builder host(final HostDescription host) { - this.host = host; - return this; - } - - public Builder messageStore(final MessageStore messageStore) { - this.messageStore = messageStore; + public Builder config(final ArangoConfig config) { + this.config = config; return this; } - public Builder timeout(final Integer timeout) { - this.timeout = timeout; - return this; - } - - public Builder useSsl(final Boolean useSsl) { - this.useSsl = useSsl; - return this; - } - - public Builder sslContext(final SSLContext sslContext) { - this.sslContext = sslContext; - return this; - } - - public Builder ttl(final Long ttl) { - this.ttl = ttl; - return this; - } - - public Builder keepAliveInterval(final Integer keepAliveInterval) { - this.keepAliveInterval = keepAliveInterval; + public Builder host(final HostDescription host) { + this.host = host; return this; } public VstConnectionSync build() { - return new VstConnectionSync(host, timeout, ttl, keepAliveInterval, - useSsl, sslContext, messageStore); + return new VstConnectionSync(config, host); } } diff --git a/core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider b/core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider new file mode 100644 index 000000000..24f838b36 --- /dev/null +++ b/core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider @@ -0,0 +1 @@ +com.arangodb.internal.velocystream.VstProtocolProvider diff --git a/driver/src/test/java/com/arangodb/internal/velocystream/CommunicationTest.java b/driver/src/test/java/com/arangodb/internal/velocystream/CommunicationTest.java index 120939786..58a87bd71 100644 --- a/driver/src/test/java/com/arangodb/internal/velocystream/CommunicationTest.java +++ b/driver/src/test/java/com/arangodb/internal/velocystream/CommunicationTest.java @@ -102,15 +102,6 @@ void multiThreadSameDatabases() throws Exception { assertThat(result.size()).isEqualTo(2); } - @Test - void minOneConnection() { - final ArangoDB arangoDB = new ArangoDB.Builder() - .loadProperties(ConfigUtils.loadConfig()) - .maxConnections(0).build(); - final ArangoDBVersion version = arangoDB.getVersion(); - assertThat(version).isNotNull(); - } - @Test void defaultMaxConnection() { final ArangoDB arangoDB = new ArangoDB.Builder() diff --git a/http/src/main/java/com/arangodb/http/HttpCommunication.java b/http/src/main/java/com/arangodb/http/HttpCommunication.java index 7e97b0925..fafc1b721 100644 --- a/http/src/main/java/com/arangodb/http/HttpCommunication.java +++ b/http/src/main/java/com/arangodb/http/HttpCommunication.java @@ -25,6 +25,7 @@ import com.arangodb.internal.InternalRequest; import com.arangodb.internal.RequestType; import com.arangodb.internal.InternalResponse; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.*; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; @@ -48,10 +49,10 @@ public class HttpCommunication implements Closeable { private final InternalSerde serde; private final AtomicLong reqCount; - HttpCommunication(final HostHandler hostHandler, final InternalSerde serde) { + HttpCommunication(final HostHandler hostHandler, final ArangoConfig config) { super(); this.hostHandler = hostHandler; - this.serde = serde; + this.serde = config.getInternalSerde(); reqCount = new AtomicLong(); } diff --git a/http/src/main/java/com/arangodb/http/HttpConnection.java b/http/src/main/java/com/arangodb/http/HttpConnection.java index 2afc2b4a2..b07eda333 100644 --- a/http/src/main/java/com/arangodb/http/HttpConnection.java +++ b/http/src/main/java/com/arangodb/http/HttpConnection.java @@ -21,8 +21,9 @@ package com.arangodb.http; import com.arangodb.*; -import com.arangodb.internal.net.Connection; import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.Connection; import com.arangodb.internal.serde.ContentTypeFactory; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.EncodeUtils; @@ -56,6 +57,7 @@ import java.security.NoSuchAlgorithmException; import java.util.Iterator; import java.util.Map.Entry; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -73,7 +75,7 @@ public class HttpConnection implements Connection { private static final String CONTENT_TYPE_VPACK = "application/x-velocypack"; private static final String USER_AGENT = getUserAgent(); private static final AtomicInteger THREAD_COUNT = new AtomicInteger(); - private final InternalSerde util; + private final InternalSerde serde; private final ContentType contentType; private String auth; private final WebClient client; @@ -84,21 +86,24 @@ private static String getUserAgent() { return "JavaDriver/" + PackageVersion.VERSION + " (JVM/" + System.getProperty("java.specification.version") + ")"; } - private HttpConnection(final HostDescription host, final Integer timeout, final String user, final String password, - final Boolean useSsl, final SSLContext sslContext, final Boolean verifyHost, - final InternalSerde util, final Protocol protocol, final Long ttl) { + private HttpConnection(final ArangoConfig config, final HostDescription host) { super(); - this.util = util; - this.contentType = ContentTypeFactory.of(protocol); - this.timeout = timeout; + serde = config.getInternalSerde(); + Protocol protocol = config.getProtocol(); + contentType = ContentTypeFactory.of(protocol); + timeout = config.getTimeout(); vertx = Vertx.vertx(new VertxOptions().setPreferNativeTransport(true).setEventLoopPoolSize(1)); vertx.runOnContext(e -> { Thread.currentThread().setName("adb-eventloop-" + THREAD_COUNT.getAndIncrement()); - auth = new UsernamePasswordCredentials(user, password != null ? password : "").toHttpAuthorization(); + auth = new UsernamePasswordCredentials( + config.getUser(), Optional.ofNullable(config.getPassword()).orElse("") + ).toHttpAuthorization(); LOGGER.debug("Created Vert.x context"); }); - int intTtl = ttl == null ? 0 : Math.toIntExact(ttl / 1000); + int intTtl = Optional.ofNullable(config.getConnectionTtl()) + .map(ttl -> Math.toIntExact(ttl / 1000)) + .orElse(0); HttpVersion httpVersion = protocol == Protocol.HTTP_JSON || protocol == Protocol.HTTP_VPACK ? HttpVersion.HTTP_1_1 : HttpVersion.HTTP_2; @@ -125,10 +130,10 @@ private HttpConnection(final HostDescription host, final Integer timeout, final .setDefaultPort(host.getPort()); - if (Boolean.TRUE.equals(useSsl)) { + if (Boolean.TRUE.equals(config.getUseSsl())) { SSLContext ctx; - if (sslContext != null) { - ctx = sslContext; + if (config.getSslContext() != null) { + ctx = config.getSslContext(); } else { try { ctx = SSLContext.getDefault(); @@ -140,7 +145,7 @@ private HttpConnection(final HostDescription host, final Integer timeout, final webClientOptions .setSsl(true) .setUseAlpn(true) - .setVerifyHost(verifyHost == null || verifyHost) + .setVerifyHost(config.getVerifyHost()) .setJdkSslEngineOptions(new JdkSSLEngineOptions() { @Override public JdkSSLEngineOptions copy() { @@ -291,7 +296,7 @@ private InternalResponse buildResponse(final HttpResponse httpResponse) } protected void checkError(final InternalResponse response) { - ResponseUtils.checkError(util, response); + ResponseUtils.checkError(serde, response); } @Override @@ -302,39 +307,11 @@ public void setJwt(String jwt) { } public static class Builder { - private String user; - private String password; - private InternalSerde util; - private Boolean useSsl; - private Protocol protocol; + private ArangoConfig config; private HostDescription host; - private Long ttl; - private SSLContext sslContext; - private Boolean verifyHost; - private Integer timeout; - - public Builder user(final String user) { - this.user = user; - return this; - } - - public Builder password(final String password) { - this.password = password; - return this; - } - - public Builder serializationUtil(final InternalSerde util) { - this.util = util; - return this; - } - - public Builder useSsl(final Boolean useSsl) { - this.useSsl = useSsl; - return this; - } - public Builder protocol(final Protocol protocol) { - this.protocol = protocol; + public Builder config(final ArangoConfig config) { + this.config = config; return this; } @@ -343,29 +320,8 @@ public Builder host(final HostDescription host) { return this; } - public Builder ttl(final Long ttl) { - this.ttl = ttl; - return this; - } - - public Builder sslContext(final SSLContext sslContext) { - this.sslContext = sslContext; - return this; - } - - public Builder verifyHost(final Boolean verifyHost) { - this.verifyHost = verifyHost; - return this; - } - - public Builder timeout(final Integer timeout) { - this.timeout = timeout; - return this; - } - public HttpConnection build() { - return new HttpConnection(host, timeout, user, password, useSsl, sslContext, verifyHost, util, - protocol, ttl); + return new HttpConnection(config, host); } } diff --git a/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java b/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java index 4f08fea2f..c431c726e 100644 --- a/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java +++ b/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java @@ -20,13 +20,10 @@ package com.arangodb.http; -import com.arangodb.Protocol; +import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.Connection; import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.config.HostDescription; -import com.arangodb.internal.serde.InternalSerde; - -import javax.net.ssl.SSLContext; /** * @author Mark Vollmary @@ -35,14 +32,9 @@ public class HttpConnectionFactory implements ConnectionFactory { private final HttpConnection.Builder builder; - public HttpConnectionFactory(final Integer timeout, final String user, final String password, final Boolean useSsl, - final SSLContext sslContext, final Boolean verifyHost, - final InternalSerde util, final Protocol protocol, final Long connectionTtl) { + public HttpConnectionFactory(final ArangoConfig config) { super(); - builder = new HttpConnection.Builder().timeout(timeout).user(user).password(password).useSsl(useSsl) - .sslContext(sslContext).verifyHost(verifyHost).serializationUtil(util).protocol(protocol) - .ttl(connectionTtl); - + builder = new HttpConnection.Builder().config(config); } @Override diff --git a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java index 09d88f7d1..dd98570e5 100644 --- a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java +++ b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java @@ -1,13 +1,11 @@ package com.arangodb.http; import com.arangodb.Protocol; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.ProtocolProvider; -import com.arangodb.internal.serde.InternalSerde; - -import javax.net.ssl.SSLContext; public class HttpProtocolProvider implements ProtocolProvider { @@ -20,22 +18,12 @@ public boolean supportsProtocol(Protocol protocol) { } @Override - public ConnectionFactory createConnectionFactory( - final Integer timeout, - final String user, - final String password, - final Boolean useSsl, - final SSLContext sslContext, - final Boolean verifyHost, - final InternalSerde util, - final Protocol protocol, - final Long connectionTtl - ) { - return new HttpConnectionFactory(timeout, user, password, useSsl, sslContext, verifyHost, util, protocol, connectionTtl); + public ConnectionFactory createConnectionFactory(final ArangoConfig config) { + return new HttpConnectionFactory(config); } @Override - public CommunicationProtocol createProtocol(final HostHandler hostHandler, final InternalSerde serde) { - return new HttpProtocol(new HttpCommunication(hostHandler, serde)); + public CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler) { + return new HttpProtocol(new HttpCommunication(hostHandler, config)); } } From 508082b077a7fe40b5ecde1c1b410bc63676554e Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Sun, 12 Feb 2023 19:01:01 +0100 Subject: [PATCH 08/18] rm protocol from async builder --- core/src/main/java/com/arangodb/ArangoDB.java | 5 +++++ .../java/com/arangodb/internal/InternalArangoDBBuilder.java | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java index cb51aa99a..96a6478ea 100644 --- a/core/src/main/java/com/arangodb/ArangoDB.java +++ b/core/src/main/java/com/arangodb/ArangoDB.java @@ -324,6 +324,11 @@ public interface ArangoDB extends ArangoSerdeAccessor { */ class Builder extends InternalArangoDBBuilder { + public Builder useProtocol(final Protocol protocol) { + config.setProtocol(protocol); + return this; + } + /** * Returns an instance of {@link ArangoDB}. * diff --git a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index cc937ed10..48db7a75d 100644 --- a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -52,11 +52,6 @@ public T loadProperties(final ArangoConfigProperties properties) { return (T) this; } - public T useProtocol(final Protocol protocol) { - config.setProtocol(protocol); - return (T) this; - } - /** * Adds a host to connect to. Multiple hosts can be added to provide fallbacks. * From 1827d05a72870f3aa052f950ea8cbdbf08701146 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Sun, 12 Feb 2023 19:29:43 +0100 Subject: [PATCH 09/18] builders internal refactoring --- .../velocystream/VstCommunicationAsync.java | 16 +------------- .../velocystream/VstConnectionAsync.java | 15 +------------ .../internal/InternalArangoDBBuilder.java | 18 +++++++++++++++ .../com/arangodb/internal/net/Connection.java | 22 +++++++++++++++++++ .../velocystream/VstCommunication.java | 21 ++++++++++++++++-- .../velocystream/VstCommunicationSync.java | 16 +------------- .../internal/VstConnectionSync.java | 16 +------------- .../com/arangodb/http/HttpConnection.java | 15 +------------ 8 files changed, 64 insertions(+), 75 deletions(-) diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java index 2fa814532..d9a27fe50 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java @@ -151,21 +151,7 @@ protected void authenticate(final VstConnectionAsync connection) { checkError(response); } - public static class Builder { - - private ArangoConfig config; - private HostHandler hostHandler; - - public Builder config(final ArangoConfig config) { - this.config = config; - return this; - } - - public Builder hostHandler(final HostHandler hostHandler) { - this.hostHandler = hostHandler; - return this; - } - + public static class Builder extends VstCommunication.Builder { public VstCommunicationAsync build() { return new VstCommunicationAsync(config, hostHandler); } diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java index cc9aa8558..6be20982f 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java @@ -66,20 +66,7 @@ protected void doKeepAlive() { sendKeepAlive().join(); } - public static class Builder { - private ArangoConfig config; - private HostDescription host; - - public Builder config(final ArangoConfig config) { - this.config = config; - return this; - } - - public Builder host(final HostDescription host) { - this.host = host; - return this; - } - + public static class Builder extends VstConnection.Builder { public VstConnectionAsync build() { return new VstConnectionAsync(config, host); } diff --git a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index 48db7a75d..a9211c42d 100644 --- a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -47,6 +47,7 @@ public abstract class InternalArangoDBBuilder> { + + protected ArangoConfig config; + protected HostDescription host; + + @SuppressWarnings("unchecked") + public T config(final ArangoConfig config) { + this.config = config; + return (T) this; + } + + @SuppressWarnings("unchecked") + public T host(final HostDescription host) { + this.host = host; + return (T) this; + } + + } } diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java index 15dfd0333..cafa9ada1 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java @@ -21,6 +21,8 @@ package com.arangodb.internal.velocystream; import com.arangodb.ArangoDBException; +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.AccessType; import com.arangodb.internal.net.Host; @@ -34,8 +36,6 @@ import com.arangodb.internal.velocystream.internal.VstConnection; import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.exception.VPackParserException; -import com.arangodb.internal.InternalRequest; -import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -194,4 +194,21 @@ public void setJwt(String jwt) { } + protected static class Builder> { + protected ArangoConfig config; + protected HostHandler hostHandler; + + @SuppressWarnings("unchecked") + public T config(final ArangoConfig config) { + this.config = config; + return (T) this; + } + + @SuppressWarnings("unchecked") + public T hostHandler(final HostHandler hostHandler) { + this.hostHandler = hostHandler; + return (T) this; + } + } + } diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java index 7b2ccc951..211b0172c 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java @@ -98,25 +98,11 @@ protected void authenticate(final VstConnectionSync connection) { checkError(response); } - public static class Builder { - - private ArangoConfig config; - private HostHandler hostHandler; - - public Builder config(final ArangoConfig config) { - this.config = config; - return this; - } - - public Builder hostHandler(final HostHandler hostHandler) { - this.hostHandler = hostHandler; - return this; - } + public static class Builder extends VstCommunication.Builder { public VstCommunication build() { return new VstCommunicationSync(config, hostHandler); } - } } diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java index 124ee061e..904085390 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java +++ b/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java @@ -60,21 +60,7 @@ protected void doKeepAlive() { sendKeepAlive(); } - public static class Builder { - - private ArangoConfig config; - private HostDescription host; - - public Builder config(final ArangoConfig config) { - this.config = config; - return this; - } - - public Builder host(final HostDescription host) { - this.host = host; - return this; - } - + public static class Builder extends VstConnection.Builder { public VstConnectionSync build() { return new VstConnectionSync(config, host); } diff --git a/http/src/main/java/com/arangodb/http/HttpConnection.java b/http/src/main/java/com/arangodb/http/HttpConnection.java index b07eda333..bbfcb62cd 100644 --- a/http/src/main/java/com/arangodb/http/HttpConnection.java +++ b/http/src/main/java/com/arangodb/http/HttpConnection.java @@ -306,20 +306,7 @@ public void setJwt(String jwt) { } } - public static class Builder { - private ArangoConfig config; - private HostDescription host; - - public Builder config(final ArangoConfig config) { - this.config = config; - return this; - } - - public Builder host(final HostDescription host) { - this.host = host; - return this; - } - + public static class Builder extends Connection.Builder { public HttpConnection build() { return new HttpConnection(config, host); } From 3ce6cf80cd70141c14de5ca8fc14aed2f429ced7 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Mon, 13 Feb 2023 10:22:33 +0100 Subject: [PATCH 10/18] AsyncProtocolProvider --- .../com/arangodb/async/ArangoDBAsync.java | 44 ++++++++----------- .../async/internal/ArangoDBAsyncImpl.java | 39 ++++++---------- .../async/internal/ArangoExecutorAsync.java | 14 +++--- .../velocystream/VstCommunicationAsync.java | 5 ++- .../com/arangodb/internal/ArangoDBImpl.java | 7 +-- .../com/arangodb/internal/ArangoExecutor.java | 9 ++-- .../arangodb/internal/ArangoExecutorSync.java | 7 ++- .../internal/net/AsyncCommunication.java | 14 ++++++ .../internal/net/AsyncProtocolProvider.java | 10 +++++ .../VstAsyncProtocolProvider.java | 14 ++++++ ...rangodb.internal.net.AsyncProtocolProvider | 1 + 11 files changed, 89 insertions(+), 75 deletions(-) create mode 100644 core/src/main/java/com/arangodb/internal/net/AsyncCommunication.java create mode 100644 core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java create mode 100644 core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java create mode 100644 core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider diff --git a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java index abcea8d73..d4a87be52 100644 --- a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -22,27 +22,24 @@ import com.arangodb.*; import com.arangodb.async.internal.ArangoDBAsyncImpl; -import com.arangodb.async.internal.velocystream.VstCommunicationAsync; import com.arangodb.async.internal.velocystream.VstConnectionFactoryAsync; import com.arangodb.entity.*; import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; +import com.arangodb.internal.net.AsyncProtocolProvider; import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; -import com.arangodb.internal.serde.InternalSerde; -import com.arangodb.internal.serde.InternalSerdeProvider; -import com.arangodb.internal.velocystream.VstCommunicationSync; import com.arangodb.internal.velocystream.VstConnectionFactorySync; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; import com.arangodb.model.UserUpdateOptions; -import com.arangodb.serde.ArangoSerde; import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; import java.util.Optional; +import java.util.ServiceLoader; import java.util.concurrent.CompletableFuture; /** @@ -309,6 +306,16 @@ public interface ArangoDBAsync extends ArangoSerdeAccessor { */ class Builder extends InternalArangoDBBuilder { + private AsyncProtocolProvider asyncProtocolProvider(Protocol protocol) { + ServiceLoader loader = ServiceLoader.load(AsyncProtocolProvider.class); + for (AsyncProtocolProvider p : loader) { + if (p.supportsProtocol(protocol)) { + return p; + } + } + throw new ArangoDBException("No ProtocolProvider found for protocol: " + protocol); + } + /** * Returns an instance of {@link ArangoDBAsync}. * @@ -321,9 +328,6 @@ public ArangoDBAsync build() { throw new ArangoDBException("No host has been set!"); } - final ArangoSerde userSerde = config.getUserDataSerde(); - final InternalSerde serde = InternalSerdeProvider.create(ContentType.VPACK, userSerde); - final int max = Optional.ofNullable(config.getMaxConnections()) .map(maxConnections -> Math.max(1, maxConnections)) .orElse(ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT); @@ -336,25 +340,13 @@ public ArangoDBAsync build() { final HostHandler syncHostHandler = createHostHandler(syncHostResolver); final HostHandler asyncHostHandler = createHostHandler(asyncHostResolver); return new ArangoDBAsyncImpl( - asyncBuilder(asyncHostHandler), - serde, - syncBuilder(syncHostHandler), - asyncHostResolver, - syncHostResolver, - asyncHostHandler, - syncHostHandler, - config.getResponseQueueTimeSamples(), - config.getTimeout() + config, + asyncHostResolver, + syncHostResolver, + asyncProtocolProvider(Protocol.VST), + asyncHostHandler, + syncHostHandler ); } - - private VstCommunicationAsync.Builder asyncBuilder(final HostHandler hostHandler) { - return new VstCommunicationAsync.Builder().hostHandler(hostHandler).config(config); - } - - private VstCommunicationSync.Builder syncBuilder(final HostHandler hostHandler) { - return new VstCommunicationSync.Builder().hostHandler(hostHandler).config(config); - } - } } diff --git a/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java index 932b8d48d..0a1e9b172 100644 --- a/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java +++ b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java @@ -26,23 +26,20 @@ import com.arangodb.Response; import com.arangodb.async.ArangoDBAsync; import com.arangodb.async.ArangoDatabaseAsync; -import com.arangodb.async.internal.velocystream.VstCommunicationAsync; import com.arangodb.entity.*; -import com.arangodb.internal.*; +import com.arangodb.internal.ArangoExecutorSync; +import com.arangodb.internal.ArangoMetricsImpl; +import com.arangodb.internal.InternalArangoDB; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.AsyncProtocolProvider; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.HostResolver; -import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.serde.SerdeUtils; -import com.arangodb.internal.velocystream.VstCommunication; -import com.arangodb.internal.velocystream.VstCommunicationSync; -import com.arangodb.internal.velocystream.VstProtocol; -import com.arangodb.internal.velocystream.internal.VstConnectionSync; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; import com.arangodb.model.UserUpdateOptions; -import com.arangodb.internal.InternalResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -62,31 +59,21 @@ public class ArangoDBAsyncImpl extends InternalArangoDB imp private final HostHandler syncHostHandler; public ArangoDBAsyncImpl( - final VstCommunicationAsync.Builder asyncCommBuilder, - final InternalSerde util, - final VstCommunicationSync.Builder syncCommBuilder, + final ArangoConfig config, final HostResolver asyncHostResolver, final HostResolver syncHostResolver, + final AsyncProtocolProvider protocolProvider, final HostHandler asyncHostHandler, - final HostHandler syncHostHandler, - final int responseQueueTimeSamples, - final int timeoutMs + final HostHandler syncHostHandler ) { - - super(new ArangoExecutorAsync(asyncCommBuilder.build(), util, - new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs), util); - - final VstCommunication cacheCom = syncCommBuilder.build(); - - cp = new VstProtocol(cacheCom); + super(new ArangoExecutorAsync(protocolProvider.createAsyncCommunication(config, asyncHostHandler), config), config.getInternalSerde()); + cp = protocolProvider.createProtocol(config, syncHostHandler); this.asyncHostHandler = asyncHostHandler; this.syncHostHandler = syncHostHandler; - ArangoExecutorSync arangoExecutorSync = new ArangoExecutorSync(cp, util, - new QueueTimeMetricsImpl(responseQueueTimeSamples), timeoutMs); - asyncHostResolver.init(arangoExecutorSync, util); - syncHostResolver.init(arangoExecutorSync, util); - + ArangoExecutorSync arangoExecutorSync = new ArangoExecutorSync(cp, config); + asyncHostResolver.init(arangoExecutorSync, config.getInternalSerde()); + syncHostResolver.init(arangoExecutorSync, config.getInternalSerde()); } @Override diff --git a/core/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java b/core/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java index 831b64e40..7c85ef495 100644 --- a/core/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/ArangoExecutorAsync.java @@ -21,12 +21,11 @@ package com.arangodb.async.internal; import com.arangodb.ArangoDBException; -import com.arangodb.async.internal.velocystream.VstCommunicationAsync; import com.arangodb.internal.ArangoExecutor; -import com.arangodb.internal.QueueTimeMetricsImpl; -import com.arangodb.internal.net.HostHandle; -import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.AsyncCommunication; +import com.arangodb.internal.net.HostHandle; import java.io.IOException; import java.lang.reflect.Type; @@ -40,12 +39,11 @@ */ public class ArangoExecutorAsync extends ArangoExecutor { - private final VstCommunicationAsync communication; + private final AsyncCommunication communication; private final ExecutorService outgoingExecutor = Executors.newSingleThreadExecutor(); - public ArangoExecutorAsync(final VstCommunicationAsync communication, final InternalSerde util, - final QueueTimeMetricsImpl qtMetrics, final int timeoutMs) { - super(util, qtMetrics, timeoutMs); + public ArangoExecutorAsync(final AsyncCommunication communication, final ArangoConfig config) { + super(config); this.communication = communication; } diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java index d9a27fe50..930c058a8 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java +++ b/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java @@ -26,6 +26,7 @@ import com.arangodb.internal.InternalResponse; import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.ArangoDBRedirectException; +import com.arangodb.internal.net.AsyncCommunication; import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.util.HostUtils; @@ -44,7 +45,9 @@ /** * @author Mark Vollmary */ -public class VstCommunicationAsync extends VstCommunication, VstConnectionAsync> { +public class VstCommunicationAsync + extends VstCommunication, VstConnectionAsync> + implements AsyncCommunication { private static final Logger LOGGER = LoggerFactory.getLogger(VstCommunicationAsync.class); diff --git a/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java index c8280bca4..52801b51e 100644 --- a/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/core/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -49,12 +49,7 @@ public class ArangoDBImpl extends InternalArangoDB implement public ArangoDBImpl(final ArangoConfig config, final HostResolver hostResolver, final ProtocolProvider protocolProvider, final HostHandler hostHandler) { - - super(new ArangoExecutorSync( - protocolProvider.createProtocol(config, hostHandler), - config.getInternalSerde(), new QueueTimeMetricsImpl(config.getResponseQueueTimeSamples()), config.getTimeout()), - config.getInternalSerde()); - + super(new ArangoExecutorSync(protocolProvider.createProtocol(config, hostHandler), config), config.getInternalSerde()); this.hostHandler = hostHandler; hostResolver.init(this.executor(), getSerde()); LOGGER.debug("ArangoDB Client is ready to use"); diff --git a/core/src/main/java/com/arangodb/internal/ArangoExecutor.java b/core/src/main/java/com/arangodb/internal/ArangoExecutor.java index ad9e0acda..a37f4b11c 100644 --- a/core/src/main/java/com/arangodb/internal/ArangoExecutor.java +++ b/core/src/main/java/com/arangodb/internal/ArangoExecutor.java @@ -21,6 +21,7 @@ package com.arangodb.internal; import com.arangodb.QueueTimeMetrics; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.serde.InternalSerde; import java.lang.reflect.Type; @@ -34,11 +35,11 @@ public abstract class ArangoExecutor { private final InternalSerde serde; private final String timeoutS; - protected ArangoExecutor(final InternalSerde serde, final QueueTimeMetricsImpl qtMetrics, final int timeoutMs) { + protected ArangoExecutor(final ArangoConfig config) { super(); - this.qtMetrics = qtMetrics; - this.serde = serde; - timeoutS = timeoutMs >= 1000 ? Integer.toString(timeoutMs / 1000) : null; + qtMetrics = new QueueTimeMetricsImpl(config.getResponseQueueTimeSamples()); + serde = config.getInternalSerde(); + timeoutS = config.getTimeout() >= 1000 ? Integer.toString(config.getTimeout() / 1000) : null; } protected T createResult(final Type type, final InternalResponse response) { diff --git a/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java b/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java index 0c8f42193..00a6ae6f7 100644 --- a/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java +++ b/core/src/main/java/com/arangodb/internal/ArangoExecutorSync.java @@ -22,9 +22,9 @@ import com.arangodb.ArangoDBException; import com.arangodb.entity.MetaAware; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; -import com.arangodb.internal.serde.InternalSerde; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,9 +40,8 @@ public class ArangoExecutorSync extends ArangoExecutor { private final CommunicationProtocol protocol; - public ArangoExecutorSync(final CommunicationProtocol protocol, final InternalSerde serde, - final QueueTimeMetricsImpl qtMetrics, final int timeoutMs) { - super(serde, qtMetrics, timeoutMs); + public ArangoExecutorSync(final CommunicationProtocol protocol, final ArangoConfig config) { + super(config); this.protocol = protocol; } diff --git a/core/src/main/java/com/arangodb/internal/net/AsyncCommunication.java b/core/src/main/java/com/arangodb/internal/net/AsyncCommunication.java new file mode 100644 index 000000000..abb630780 --- /dev/null +++ b/core/src/main/java/com/arangodb/internal/net/AsyncCommunication.java @@ -0,0 +1,14 @@ +package com.arangodb.internal.net; + +import com.arangodb.internal.InternalRequest; +import com.arangodb.internal.InternalResponse; + +import java.io.Closeable; +import java.util.concurrent.CompletableFuture; + +public interface AsyncCommunication extends Closeable { + + CompletableFuture execute(final InternalRequest request, final HostHandle hostHandle); + void setJwt(String jwt); + +} diff --git a/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java new file mode 100644 index 000000000..fed33bd9e --- /dev/null +++ b/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java @@ -0,0 +1,10 @@ +package com.arangodb.internal.net; + + +import com.arangodb.internal.config.ArangoConfig; + +public interface AsyncProtocolProvider extends ProtocolProvider { + + AsyncCommunication createAsyncCommunication(ArangoConfig config, HostHandler hostHandler); + +} diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java b/core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java new file mode 100644 index 000000000..9043d8031 --- /dev/null +++ b/core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java @@ -0,0 +1,14 @@ +package com.arangodb.internal.velocystream; + +import com.arangodb.async.internal.velocystream.VstCommunicationAsync; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.AsyncCommunication; +import com.arangodb.internal.net.AsyncProtocolProvider; +import com.arangodb.internal.net.HostHandler; + +public class VstAsyncProtocolProvider extends VstProtocolProvider implements AsyncProtocolProvider { + @Override + public AsyncCommunication createAsyncCommunication(final ArangoConfig config, final HostHandler hostHandler) { + return new VstCommunicationAsync.Builder().config(config).hostHandler(hostHandler).build(); + } +} diff --git a/core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider b/core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider new file mode 100644 index 000000000..47bce6e1d --- /dev/null +++ b/core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider @@ -0,0 +1 @@ +com.arangodb.internal.velocystream.VstAsyncProtocolProvider From 8b81a0c24c338b2af154c6c26c1355d018bb371e Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Mon, 13 Feb 2023 12:34:26 +0100 Subject: [PATCH 11/18] vst module --- core/src/main/java/com/arangodb/ArangoDB.java | 20 ++++----- .../com/arangodb/async/ArangoDBAsync.java | 44 +++++++++---------- .../async/internal/ArangoDBAsyncImpl.java | 10 ++--- .../internal/config/ArangoConfig.java | 8 +++- .../internal/net/AsyncProtocolProvider.java | 12 ++++- .../internal/net/ConnectionPoolImpl.java | 11 ----- .../internal/net/ProtocolProvider.java | 2 + .../internal/serde/InternalModule.java | 4 -- .../internal/serde/InternalSerdeImpl.java | 6 ++- .../internal/serde/InternalSerdeProvider.java | 9 ++-- .../internal/serde/InternalSerializers.java | 28 ------------ .../VstAsyncProtocolProvider.java | 14 ------ ...rangodb.internal.net.AsyncProtocolProvider | 1 - ...com.arangodb.internal.net.ProtocolProvider | 1 - driver/pom.xml | 5 +++ .../arangodb/http/HttpProtocolProvider.java | 7 +++ pom.xml | 11 +++++ vst/pom.xml | 32 ++++++++++++++ .../vst/VstAsyncProtocolProvider.java | 30 +++++++++++++ .../com/arangodb/vst}/VstCommunication.java | 8 ++-- .../arangodb/vst}/VstCommunicationSync.java | 10 ++--- .../vst}/VstConnectionFactorySync.java | 4 +- .../main/java/com/arangodb/vst/VstModule.java | 26 +++++++++++ .../java/com/arangodb/vst}/VstProtocol.java | 4 +- .../arangodb/vst}/VstProtocolProvider.java | 9 +++- .../java/com/arangodb/vst/VstSerializers.java | 40 +++++++++++++++++ .../vst/async}/VstCommunicationAsync.java | 10 ++--- .../vst/async}/VstConnectionAsync.java | 8 ++-- .../vst/async}/VstConnectionFactoryAsync.java | 2 +- .../vst}/internal/AuthenticationRequest.java | 2 +- .../com/arangodb/vst}/internal/Chunk.java | 2 +- .../arangodb/vst}/internal/ChunkStore.java | 2 +- .../internal/JwtAuthenticationRequest.java | 2 +- .../com/arangodb/vst}/internal/Message.java | 2 +- .../arangodb/vst}/internal/MessageStore.java | 2 +- .../arangodb/vst}/internal/VstConnection.java | 2 +- .../vst}/internal/VstConnectionSync.java | 2 +- ...rangodb.internal.net.AsyncProtocolProvider | 1 + ...com.arangodb.internal.net.ProtocolProvider | 1 + 39 files changed, 254 insertions(+), 140 deletions(-) delete mode 100644 core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java delete mode 100644 core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider delete mode 100644 core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider create mode 100644 vst/pom.xml create mode 100644 vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/VstCommunication.java (97%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/VstCommunicationSync.java (92%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/VstConnectionFactorySync.java (91%) create mode 100644 vst/src/main/java/com/arangodb/vst/VstModule.java rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/VstProtocol.java (93%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/VstProtocolProvider.java (83%) create mode 100644 vst/src/main/java/com/arangodb/vst/VstSerializers.java rename {core/src/main/java/com/arangodb/async/internal/velocystream => vst/src/main/java/com/arangodb/vst/async}/VstCommunicationAsync.java (95%) rename {core/src/main/java/com/arangodb/async/internal/velocystream => vst/src/main/java/com/arangodb/vst/async}/VstConnectionAsync.java (90%) rename {core/src/main/java/com/arangodb/async/internal/velocystream => vst/src/main/java/com/arangodb/vst/async}/VstConnectionFactoryAsync.java (96%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/AuthenticationRequest.java (96%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/Chunk.java (97%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/ChunkStore.java (97%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/JwtAuthenticationRequest.java (91%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/Message.java (97%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/MessageStore.java (98%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/VstConnection.java (99%) rename {core/src/main/java/com/arangodb/internal/velocystream => vst/src/main/java/com/arangodb/vst}/internal/VstConnectionSync.java (97%) create mode 100644 vst/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider create mode 100644 vst/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider diff --git a/core/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java index 96a6478ea..98cbf3403 100644 --- a/core/src/main/java/com/arangodb/ArangoDB.java +++ b/core/src/main/java/com/arangodb/ArangoDB.java @@ -23,11 +23,7 @@ import com.arangodb.entity.*; import com.arangodb.internal.ArangoDBImpl; import com.arangodb.internal.InternalArangoDBBuilder; -import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.net.HostResolver; -import com.arangodb.internal.velocystream.VstConnectionFactorySync; +import com.arangodb.internal.net.*; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; @@ -339,19 +335,19 @@ public ArangoDB build() { throw new ArangoDBException("No host has been set!"); } - final ConnectionFactory connectionFactory = Protocol.VST == config.getProtocol() - ? new VstConnectionFactorySync(config) - : protocolProvider(config.getProtocol()).createConnectionFactory(config); + ProtocolProvider protocolProvider = protocolProvider(config.getProtocol()); + config.setProtocolModule(protocolProvider.protocolModule()); - final Collection hostList = createHostList(config.getMaxConnections(), connectionFactory); - final HostResolver hostResolver = createHostResolver(hostList, config.getMaxConnections(), connectionFactory); - final HostHandler hostHandler = createHostHandler(hostResolver); + ConnectionFactory connectionFactory = protocolProvider.createConnectionFactory(config); + Collection hostList = createHostList(config.getMaxConnections(), connectionFactory); + HostResolver hostResolver = createHostResolver(hostList, config.getMaxConnections(), connectionFactory); + HostHandler hostHandler = createHostHandler(hostResolver); hostHandler.setJwt(config.getJwt()); return new ArangoDBImpl( config, hostResolver, - protocolProvider(config.getProtocol()), + protocolProvider, hostHandler ); } diff --git a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java index d4a87be52..69f97384e 100644 --- a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -22,15 +22,9 @@ import com.arangodb.*; import com.arangodb.async.internal.ArangoDBAsyncImpl; -import com.arangodb.async.internal.velocystream.VstConnectionFactoryAsync; import com.arangodb.entity.*; -import com.arangodb.internal.ArangoDefaults; import com.arangodb.internal.InternalArangoDBBuilder; -import com.arangodb.internal.net.AsyncProtocolProvider; -import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.net.HostResolver; -import com.arangodb.internal.velocystream.VstConnectionFactorySync; +import com.arangodb.internal.net.*; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; import com.arangodb.model.UserCreateOptions; @@ -38,7 +32,6 @@ import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; -import java.util.Optional; import java.util.ServiceLoader; import java.util.concurrent.CompletableFuture; @@ -322,30 +315,33 @@ private AsyncProtocolProvider asyncProtocolProvider(Protocol protocol) { * @return {@link ArangoDBAsync} */ public ArangoDBAsync build() { - config.setProtocol(Protocol.VST); - if (config.getHosts().isEmpty()) { throw new ArangoDBException("No host has been set!"); } - final int max = Optional.ofNullable(config.getMaxConnections()) - .map(maxConnections -> Math.max(1, maxConnections)) - .orElse(ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT); - final ConnectionFactory syncConnectionFactory = new VstConnectionFactorySync(config); - final ConnectionFactory asyncConnectionFactory = new VstConnectionFactoryAsync(config); - final HostResolver syncHostResolver = createHostResolver(createHostList(max, syncConnectionFactory), max, - syncConnectionFactory); + AsyncProtocolProvider asyncProtocolProvider = asyncProtocolProvider(Protocol.VST); + ProtocolProvider protocolProvider = protocolProvider(Protocol.VST); + + config.setProtocol(Protocol.VST); + config.setProtocolModule(protocolProvider.protocolModule()); + + final int max = config.getMaxConnections(); + final ConnectionFactory asyncConnectionFactory = asyncProtocolProvider.createConnectionFactory(config); + final ConnectionFactory syncConnectionFactory = protocolProvider.createConnectionFactory(config); final HostResolver asyncHostResolver = createHostResolver(createHostList(max, asyncConnectionFactory), max, asyncConnectionFactory); - final HostHandler syncHostHandler = createHostHandler(syncHostResolver); + final HostResolver syncHostResolver = createHostResolver(createHostList(max, syncConnectionFactory), max, + syncConnectionFactory); final HostHandler asyncHostHandler = createHostHandler(asyncHostResolver); + final HostHandler syncHostHandler = createHostHandler(syncHostResolver); return new ArangoDBAsyncImpl( - config, - asyncHostResolver, - syncHostResolver, - asyncProtocolProvider(Protocol.VST), - asyncHostHandler, - syncHostHandler + config, + asyncHostResolver, + syncHostResolver, + asyncProtocolProvider, + protocolProvider, + asyncHostHandler, + syncHostHandler ); } } diff --git a/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java index 0a1e9b172..12e946976 100644 --- a/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java +++ b/core/src/main/java/com/arangodb/async/internal/ArangoDBAsyncImpl.java @@ -31,10 +31,7 @@ import com.arangodb.internal.ArangoMetricsImpl; import com.arangodb.internal.InternalArangoDB; import com.arangodb.internal.config.ArangoConfig; -import com.arangodb.internal.net.AsyncProtocolProvider; -import com.arangodb.internal.net.CommunicationProtocol; -import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.net.HostResolver; +import com.arangodb.internal.net.*; import com.arangodb.internal.serde.SerdeUtils; import com.arangodb.model.DBCreateOptions; import com.arangodb.model.LogOptions; @@ -62,11 +59,12 @@ public ArangoDBAsyncImpl( final ArangoConfig config, final HostResolver asyncHostResolver, final HostResolver syncHostResolver, - final AsyncProtocolProvider protocolProvider, + final AsyncProtocolProvider asyncProtocolProvider, + final ProtocolProvider protocolProvider, final HostHandler asyncHostHandler, final HostHandler syncHostHandler ) { - super(new ArangoExecutorAsync(protocolProvider.createAsyncCommunication(config, asyncHostHandler), config), config.getInternalSerde()); + super(new ArangoExecutorAsync(asyncProtocolProvider.createCommunication(config, asyncHostHandler), config), config.getInternalSerde()); cp = protocolProvider.createProtocol(config, syncHostHandler); this.asyncHostHandler = asyncHostHandler; this.syncHostHandler = syncHostHandler; diff --git a/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java b/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java index d9f886bdb..987200ad6 100644 --- a/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java +++ b/core/src/main/java/com/arangodb/internal/config/ArangoConfig.java @@ -11,6 +11,7 @@ import com.arangodb.internal.serde.InternalSerdeProvider; import com.arangodb.serde.ArangoSerde; import com.arangodb.serde.ArangoSerdeProvider; +import com.fasterxml.jackson.databind.Module; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,6 +39,7 @@ public class ArangoConfig { private InternalSerde internalSerde; private ArangoSerde userDataSerde; private Integer responseQueueTimeSamples; + private Module protocolModule; private static final Logger LOG = LoggerFactory.getLogger(ArangoConfig.class); @@ -250,7 +252,7 @@ public ArangoSerde getUserDataSerde() { public InternalSerde getInternalSerde() { if (internalSerde == null) { - internalSerde = InternalSerdeProvider.create(ContentTypeFactory.of(getProtocol()), getUserDataSerde()); + internalSerde = InternalSerdeProvider.create(ContentTypeFactory.of(getProtocol()), getUserDataSerde(), protocolModule); } return internalSerde; } @@ -266,4 +268,8 @@ public Integer getResponseQueueTimeSamples() { public void setResponseQueueTimeSamples(Integer responseQueueTimeSamples) { this.responseQueueTimeSamples = responseQueueTimeSamples; } + + public void setProtocolModule(Module m) { + protocolModule = m; + } } diff --git a/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java index fed33bd9e..9d720f5da 100644 --- a/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java +++ b/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java @@ -1,10 +1,18 @@ package com.arangodb.internal.net; +import com.arangodb.Protocol; import com.arangodb.internal.config.ArangoConfig; +import com.fasterxml.jackson.databind.Module; -public interface AsyncProtocolProvider extends ProtocolProvider { +public interface AsyncProtocolProvider { - AsyncCommunication createAsyncCommunication(ArangoConfig config, HostHandler hostHandler); + boolean supportsProtocol(Protocol protocol); + + ConnectionFactory createConnectionFactory(ArangoConfig config); + + AsyncCommunication createCommunication(ArangoConfig config, HostHandler hostHandler); + + Module protocolModule(); } diff --git a/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java b/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java index b393ae421..e767f73df 100644 --- a/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java +++ b/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java @@ -22,11 +22,6 @@ import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; -import com.arangodb.internal.velocystream.internal.VstConnection; -import com.arangodb.internal.velocystream.internal.VstConnectionSync; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -36,8 +31,6 @@ */ public class ConnectionPoolImpl implements ConnectionPool { - private static final Logger LOGGER = LoggerFactory.getLogger(ConnectionPoolImpl.class); - private final HostDescription host; private final int maxConnections; private final List connections; @@ -80,10 +73,6 @@ public synchronized Connection connection() { connection = connections.get(index); } - if (connection instanceof VstConnectionSync) { - LOGGER.debug("Return Connection {}", ((VstConnection) connection).getConnectionName()); - } - return connection; } diff --git a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java index 279bd67d2..5ab476274 100644 --- a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java +++ b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java @@ -3,6 +3,7 @@ import com.arangodb.Protocol; import com.arangodb.internal.config.ArangoConfig; +import com.fasterxml.jackson.databind.Module; public interface ProtocolProvider { @@ -12,4 +13,5 @@ public interface ProtocolProvider { CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler); + Module protocolModule(); } diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalModule.java b/core/src/main/java/com/arangodb/internal/serde/InternalModule.java index 40943086f..3aeae3c24 100644 --- a/core/src/main/java/com/arangodb/internal/serde/InternalModule.java +++ b/core/src/main/java/com/arangodb/internal/serde/InternalModule.java @@ -4,8 +4,6 @@ import com.arangodb.entity.CollectionType; import com.arangodb.entity.InvertedIndexPrimarySort; import com.arangodb.entity.ReplicationFactor; -import com.arangodb.internal.velocystream.internal.AuthenticationRequest; -import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.util.RawBytes; import com.arangodb.util.RawJson; import com.arangodb.internal.InternalRequest; @@ -25,8 +23,6 @@ enum InternalModule implements Supplier { module.addSerializer(RawJson.class, InternalSerializers.RAW_JSON_SERIALIZER); 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(InternalRequest.class, InternalSerializers.REQUEST); module.addSerializer(CollectionType.class, InternalSerializers.COLLECTION_TYPE); diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java index 12a2dc40c..a7de05b20 100644 --- a/core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java +++ b/core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; @@ -29,12 +30,15 @@ final class InternalSerdeImpl implements InternalSerde { private final ArangoSerde userSerde; private final ObjectMapper mapper; - InternalSerdeImpl(final ObjectMapper mapper, final ArangoSerde userSerde) { + InternalSerdeImpl(final ObjectMapper mapper, final ArangoSerde userSerde, final Module protocolModule) { this.mapper = mapper; this.userSerde = userSerde; mapper.deactivateDefaultTyping(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.registerModule(InternalModule.INSTANCE.get()); + if (protocolModule != null) { + mapper.registerModule(protocolModule); + } mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setAnnotationIntrospector(new InternalAnnotationIntrospector( new UserDataSerializer(this), diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java index 9136d6a68..4044d6f17 100644 --- a/core/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java +++ b/core/src/main/java/com/arangodb/internal/serde/InternalSerdeProvider.java @@ -3,6 +3,7 @@ import com.arangodb.ContentType; import com.arangodb.serde.ArangoSerde; import com.arangodb.serde.ArangoSerdeProvider; +import com.fasterxml.jackson.databind.Module; public class InternalSerdeProvider implements ArangoSerdeProvider { @@ -14,17 +15,19 @@ public class InternalSerdeProvider implements ArangoSerdeProvider { */ @Override public InternalSerde of(final ContentType contentType) { - return create(contentType, null); + return create(contentType, null, null); } /** * Creates a new InternalSerde with default settings for the specified data type. * * @param contentType serialization target data type + * @param userSerde user serde + * @param protocolModule optional Jackson module to support protocol specific types * @return the created InternalSerde */ - public static InternalSerde create(final ContentType contentType, ArangoSerde userSerde) { - return new InternalSerdeImpl(InternalMapperProvider.of(contentType), userSerde); + public static InternalSerde create(final ContentType contentType, ArangoSerde userSerde, Module protocolModule) { + return new InternalSerdeImpl(InternalMapperProvider.of(contentType), userSerde, protocolModule); } } diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalSerializers.java b/core/src/main/java/com/arangodb/internal/serde/InternalSerializers.java index 7012f67fc..813025c49 100644 --- a/core/src/main/java/com/arangodb/internal/serde/InternalSerializers.java +++ b/core/src/main/java/com/arangodb/internal/serde/InternalSerializers.java @@ -3,8 +3,6 @@ import com.arangodb.entity.CollectionType; import com.arangodb.entity.arangosearch.CollectionLink; import com.arangodb.entity.arangosearch.FieldLink; -import com.arangodb.internal.velocystream.internal.AuthenticationRequest; -import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; import com.arangodb.util.RawBytes; import com.arangodb.util.RawJson; import com.arangodb.internal.InternalRequest; @@ -36,32 +34,6 @@ public void serialize(RawBytes value, JsonGenerator gen, SerializerProvider seri } } }; - static final JsonSerializer AUTHENTICATION_REQUEST = - new JsonSerializer() { - @Override - public void serialize(AuthenticationRequest value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - gen.writeStartArray(); - gen.writeNumber(value.getVersion()); - gen.writeNumber(value.getType()); - gen.writeString(value.getEncryption()); - gen.writeString(value.getUser()); - gen.writeString(value.getPassword()); - gen.writeEndArray(); - } - }; - static final JsonSerializer JWT_AUTHENTICATION_REQUEST = - new JsonSerializer() { - @Override - public void serialize(JwtAuthenticationRequest value, JsonGenerator gen, - SerializerProvider serializers) throws IOException { - gen.writeStartArray(); - gen.writeNumber(value.getVersion()); - gen.writeNumber(value.getType()); - gen.writeString(value.getEncryption()); - gen.writeString(value.getToken()); - gen.writeEndArray(); - } - }; static final JsonSerializer REQUEST = new JsonSerializer() { @Override public void serialize(InternalRequest value, JsonGenerator gen, SerializerProvider serializers) throws IOException { diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java b/core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java deleted file mode 100644 index 9043d8031..000000000 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstAsyncProtocolProvider.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.arangodb.internal.velocystream; - -import com.arangodb.async.internal.velocystream.VstCommunicationAsync; -import com.arangodb.internal.config.ArangoConfig; -import com.arangodb.internal.net.AsyncCommunication; -import com.arangodb.internal.net.AsyncProtocolProvider; -import com.arangodb.internal.net.HostHandler; - -public class VstAsyncProtocolProvider extends VstProtocolProvider implements AsyncProtocolProvider { - @Override - public AsyncCommunication createAsyncCommunication(final ArangoConfig config, final HostHandler hostHandler) { - return new VstCommunicationAsync.Builder().config(config).hostHandler(hostHandler).build(); - } -} diff --git a/core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider b/core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider deleted file mode 100644 index 47bce6e1d..000000000 --- a/core/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider +++ /dev/null @@ -1 +0,0 @@ -com.arangodb.internal.velocystream.VstAsyncProtocolProvider diff --git a/core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider b/core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider deleted file mode 100644 index 24f838b36..000000000 --- a/core/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider +++ /dev/null @@ -1 +0,0 @@ -com.arangodb.internal.velocystream.VstProtocolProvider diff --git a/driver/pom.xml b/driver/pom.xml index d93b0f833..3e132eea2 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -190,6 +190,11 @@ jackson-dataformat-velocypack true + + com.arangodb + vst-protocol + test + org.reflections reflections diff --git a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java index dd98570e5..abbf5e75f 100644 --- a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java +++ b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java @@ -6,6 +6,7 @@ import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.ProtocolProvider; +import com.fasterxml.jackson.databind.Module; public class HttpProtocolProvider implements ProtocolProvider { @@ -26,4 +27,10 @@ public ConnectionFactory createConnectionFactory(final ArangoConfig config) { public CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler) { return new HttpProtocol(new HttpCommunication(hostHandler, config)); } + + @Override + public Module protocolModule() { + return null; + } + } diff --git a/pom.xml b/pom.xml index f56ee0442..0a3f8a207 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ jackson-serde serde-api http + vst pom @@ -122,6 +123,11 @@ http-protocol ${project.version} + + com.arangodb + vst-protocol + ${project.version} + com.arangodb serde-api @@ -142,6 +148,11 @@ arangodb-java-driver-shaded ${project.version} + + com.arangodb + velocypack + 3.0.0 + com.arangodb jackson-dataformat-velocypack diff --git a/vst/pom.xml b/vst/pom.xml new file mode 100644 index 000000000..fd98d1084 --- /dev/null +++ b/vst/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + com.arangodb + arangodb-java-driver-parent + 7.0.0-ALPHA.2 + + + vst-protocol + vst-protocol + VST Protocol module for ArangoDB Java Driver + + + false + com.arangodb.vst + + + + + com.arangodb + core + + + com.arangodb + velocypack + + + + \ No newline at end of file diff --git a/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java b/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java new file mode 100644 index 000000000..38fe09f3d --- /dev/null +++ b/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java @@ -0,0 +1,30 @@ +package com.arangodb.vst; + +import com.arangodb.Protocol; +import com.arangodb.internal.config.ArangoConfig; +import com.arangodb.internal.net.*; +import com.arangodb.vst.async.VstCommunicationAsync; +import com.arangodb.vst.async.VstConnectionFactoryAsync; +import com.fasterxml.jackson.databind.Module; + +public class VstAsyncProtocolProvider implements AsyncProtocolProvider { + @Override + public boolean supportsProtocol(Protocol protocol) { + return Protocol.VST.equals(protocol); + } + + @Override + public ConnectionFactory createConnectionFactory(ArangoConfig config) { + return new VstConnectionFactoryAsync(config); + } + + @Override + public AsyncCommunication createCommunication(final ArangoConfig config, final HostHandler hostHandler) { + return new VstCommunicationAsync.Builder().config(config).hostHandler(hostHandler).build(); + } + + @Override + public Module protocolModule() { + return VstModule.INSTANCE.get(); + } +} diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/vst/src/main/java/com/arangodb/vst/VstCommunication.java similarity index 97% rename from core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java rename to vst/src/main/java/com/arangodb/vst/VstCommunication.java index cafa9ada1..52140252d 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java +++ b/vst/src/main/java/com/arangodb/vst/VstCommunication.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream; +package com.arangodb.vst; import com.arangodb.ArangoDBException; import com.arangodb.internal.InternalRequest; @@ -31,11 +31,11 @@ import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.RequestUtils; import com.arangodb.internal.util.ResponseUtils; -import com.arangodb.internal.velocystream.internal.Chunk; -import com.arangodb.internal.velocystream.internal.Message; -import com.arangodb.internal.velocystream.internal.VstConnection; import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.exception.VPackParserException; +import com.arangodb.vst.internal.Chunk; +import com.arangodb.vst.internal.Message; +import com.arangodb.vst.internal.VstConnection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java b/vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java similarity index 92% rename from core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java rename to vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java index 211b0172c..b83e9f690 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstCommunicationSync.java +++ b/vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream; +package com.arangodb.vst; import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; @@ -29,11 +29,11 @@ import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.util.HostUtils; -import com.arangodb.internal.velocystream.internal.AuthenticationRequest; -import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; -import com.arangodb.internal.velocystream.internal.Message; -import com.arangodb.internal.velocystream.internal.VstConnectionSync; import com.arangodb.velocypack.exception.VPackParserException; +import com.arangodb.vst.internal.AuthenticationRequest; +import com.arangodb.vst.internal.JwtAuthenticationRequest; +import com.arangodb.vst.internal.Message; +import com.arangodb.vst.internal.VstConnectionSync; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java b/vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java similarity index 91% rename from core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java rename to vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java index 2344fab44..102a88f4a 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstConnectionFactorySync.java +++ b/vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java @@ -18,13 +18,13 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream; +package com.arangodb.vst; import com.arangodb.config.HostDescription; import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.Connection; import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.internal.velocystream.internal.VstConnectionSync; +import com.arangodb.vst.internal.VstConnectionSync; /** * @author Mark Vollmary diff --git a/vst/src/main/java/com/arangodb/vst/VstModule.java b/vst/src/main/java/com/arangodb/vst/VstModule.java new file mode 100644 index 000000000..255a041fd --- /dev/null +++ b/vst/src/main/java/com/arangodb/vst/VstModule.java @@ -0,0 +1,26 @@ +package com.arangodb.vst; + +import com.arangodb.vst.internal.AuthenticationRequest; +import com.arangodb.vst.internal.JwtAuthenticationRequest; +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.module.SimpleModule; + +import java.util.function.Supplier; + +enum VstModule implements Supplier { + INSTANCE; + + private final SimpleModule module; + + VstModule() { + module = new SimpleModule(); + module.addSerializer(AuthenticationRequest.class, VstSerializers.AUTHENTICATION_REQUEST); + module.addSerializer(JwtAuthenticationRequest.class, VstSerializers.JWT_AUTHENTICATION_REQUEST); + } + + @Override + public Module get() { + return module; + } + +} diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java b/vst/src/main/java/com/arangodb/vst/VstProtocol.java similarity index 93% rename from core/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java rename to vst/src/main/java/com/arangodb/vst/VstProtocol.java index 4782cea74..3642f1826 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstProtocol.java +++ b/vst/src/main/java/com/arangodb/vst/VstProtocol.java @@ -18,13 +18,13 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream; +package com.arangodb.vst; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; -import com.arangodb.internal.velocystream.internal.VstConnectionSync; import com.arangodb.internal.InternalRequest; import com.arangodb.internal.InternalResponse; +import com.arangodb.vst.internal.VstConnectionSync; import java.io.IOException; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java b/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java similarity index 83% rename from core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java rename to vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java index 698c1705c..a4ebfd045 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/VstProtocolProvider.java +++ b/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java @@ -1,4 +1,4 @@ -package com.arangodb.internal.velocystream; +package com.arangodb.vst; import com.arangodb.Protocol; import com.arangodb.internal.config.ArangoConfig; @@ -6,6 +6,7 @@ import com.arangodb.internal.net.ConnectionFactory; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.net.ProtocolProvider; +import com.fasterxml.jackson.databind.Module; public class VstProtocolProvider implements ProtocolProvider { @Override @@ -22,4 +23,10 @@ public ConnectionFactory createConnectionFactory(ArangoConfig config) { public CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler) { return new VstProtocol(new VstCommunicationSync.Builder().config(config).hostHandler(hostHandler).build()); } + + @Override + public Module protocolModule() { + return VstModule.INSTANCE.get(); + } + } diff --git a/vst/src/main/java/com/arangodb/vst/VstSerializers.java b/vst/src/main/java/com/arangodb/vst/VstSerializers.java new file mode 100644 index 000000000..72289ec42 --- /dev/null +++ b/vst/src/main/java/com/arangodb/vst/VstSerializers.java @@ -0,0 +1,40 @@ +package com.arangodb.vst; + +import com.arangodb.vst.internal.AuthenticationRequest; +import com.arangodb.vst.internal.JwtAuthenticationRequest; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; + +public final class VstSerializers { + + static final JsonSerializer AUTHENTICATION_REQUEST = + new JsonSerializer() { + @Override + public void serialize(AuthenticationRequest value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeStartArray(); + gen.writeNumber(value.getVersion()); + gen.writeNumber(value.getType()); + gen.writeString(value.getEncryption()); + gen.writeString(value.getUser()); + gen.writeString(value.getPassword()); + gen.writeEndArray(); + } + }; + static final JsonSerializer JWT_AUTHENTICATION_REQUEST = + new JsonSerializer() { + @Override + public void serialize(JwtAuthenticationRequest value, JsonGenerator gen, + SerializerProvider serializers) throws IOException { + gen.writeStartArray(); + gen.writeNumber(value.getVersion()); + gen.writeNumber(value.getType()); + gen.writeString(value.getEncryption()); + gen.writeString(value.getToken()); + gen.writeEndArray(); + } + }; + +} diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java b/vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java similarity index 95% rename from core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java rename to vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java index 930c058a8..1b0a8c3f3 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstCommunicationAsync.java +++ b/vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.async.internal.velocystream; +package com.arangodb.vst.async; import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; @@ -30,12 +30,12 @@ import com.arangodb.internal.net.HostHandle; import com.arangodb.internal.net.HostHandler; import com.arangodb.internal.util.HostUtils; -import com.arangodb.internal.velocystream.VstCommunication; -import com.arangodb.internal.velocystream.internal.AuthenticationRequest; -import com.arangodb.internal.velocystream.internal.JwtAuthenticationRequest; -import com.arangodb.internal.velocystream.internal.Message; import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocypack.exception.VPackParserException; +import com.arangodb.vst.VstCommunication; +import com.arangodb.vst.internal.AuthenticationRequest; +import com.arangodb.vst.internal.JwtAuthenticationRequest; +import com.arangodb.vst.internal.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java b/vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java similarity index 90% rename from core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java rename to vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java index 6be20982f..49d29085d 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionAsync.java +++ b/vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java @@ -18,14 +18,14 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.async.internal.velocystream; +package com.arangodb.vst.async; import com.arangodb.async.internal.utils.CompletableFutureUtils; import com.arangodb.config.HostDescription; import com.arangodb.internal.config.ArangoConfig; -import com.arangodb.internal.velocystream.internal.Chunk; -import com.arangodb.internal.velocystream.internal.Message; -import com.arangodb.internal.velocystream.internal.VstConnection; +import com.arangodb.vst.internal.Chunk; +import com.arangodb.vst.internal.Message; +import com.arangodb.vst.internal.VstConnection; import java.util.Collection; import java.util.concurrent.CompletableFuture; diff --git a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java b/vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java similarity index 96% rename from core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java rename to vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java index eb7f62a72..a712555fd 100644 --- a/core/src/main/java/com/arangodb/async/internal/velocystream/VstConnectionFactoryAsync.java +++ b/vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.async.internal.velocystream; +package com.arangodb.vst.async; import com.arangodb.config.HostDescription; import com.arangodb.internal.config.ArangoConfig; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java b/vst/src/main/java/com/arangodb/vst/internal/AuthenticationRequest.java similarity index 96% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java rename to vst/src/main/java/com/arangodb/vst/internal/AuthenticationRequest.java index a7498e4ce..e57217011 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/AuthenticationRequest.java +++ b/vst/src/main/java/com/arangodb/vst/internal/AuthenticationRequest.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import com.arangodb.DbName; import com.arangodb.internal.InternalRequest; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java b/vst/src/main/java/com/arangodb/vst/internal/Chunk.java similarity index 97% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java rename to vst/src/main/java/com/arangodb/vst/internal/Chunk.java index 294aa18bb..93e2d7848 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/Chunk.java +++ b/vst/src/main/java/com/arangodb/vst/internal/Chunk.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; /** * @author Mark Vollmary diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java b/vst/src/main/java/com/arangodb/vst/internal/ChunkStore.java similarity index 97% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java rename to vst/src/main/java/com/arangodb/vst/internal/ChunkStore.java index e95be998b..a945ec79d 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java +++ b/vst/src/main/java/com/arangodb/vst/internal/ChunkStore.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java b/vst/src/main/java/com/arangodb/vst/internal/JwtAuthenticationRequest.java similarity index 91% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java rename to vst/src/main/java/com/arangodb/vst/internal/JwtAuthenticationRequest.java index 3d9fe56f9..982ee32df 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/JwtAuthenticationRequest.java +++ b/vst/src/main/java/com/arangodb/vst/internal/JwtAuthenticationRequest.java @@ -1,4 +1,4 @@ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import com.arangodb.DbName; import com.arangodb.internal.InternalRequest; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/Message.java b/vst/src/main/java/com/arangodb/vst/internal/Message.java similarity index 97% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/Message.java rename to vst/src/main/java/com/arangodb/vst/internal/Message.java index b2b7cc34e..7b673fb68 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/Message.java +++ b/vst/src/main/java/com/arangodb/vst/internal/Message.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import com.arangodb.velocypack.VPackSlice; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java b/vst/src/main/java/com/arangodb/vst/internal/MessageStore.java similarity index 98% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java rename to vst/src/main/java/com/arangodb/vst/internal/MessageStore.java index 9e9184a5c..7e8417205 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java +++ b/vst/src/main/java/com/arangodb/vst/internal/MessageStore.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import com.arangodb.ArangoDBException; import org.slf4j.Logger; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java b/vst/src/main/java/com/arangodb/vst/internal/VstConnection.java similarity index 99% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java rename to vst/src/main/java/com/arangodb/vst/internal/VstConnection.java index ed93df4a5..59ce03e0c 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java +++ b/vst/src/main/java/com/arangodb/vst/internal/VstConnection.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; diff --git a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java b/vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java similarity index 97% rename from core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java rename to vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java index 904085390..a0a4b7f2e 100644 --- a/core/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java +++ b/vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java @@ -18,7 +18,7 @@ * Copyright holder is ArangoDB GmbH, Cologne, Germany */ -package com.arangodb.internal.velocystream.internal; +package com.arangodb.vst.internal; import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; diff --git a/vst/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider b/vst/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider new file mode 100644 index 000000000..dc7f09560 --- /dev/null +++ b/vst/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider @@ -0,0 +1 @@ +com.arangodb.vst.VstAsyncProtocolProvider diff --git a/vst/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider b/vst/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider new file mode 100644 index 000000000..6d11ca0c7 --- /dev/null +++ b/vst/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider @@ -0,0 +1 @@ +com.arangodb.vst.VstProtocolProvider From 48a734ce68482907e361604efaa917abd08228e9 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Tue, 14 Feb 2023 20:06:55 +0100 Subject: [PATCH 12/18] JsonFactory service loader --- core/pom.xml | 9 --------- .../serde/InternalJsonMapperProvider.java | 12 ------------ .../internal/serde/InternalMapperProvider.java | 17 +++++++++++++++-- .../serde/InternalVPackMapperProvider.java | 13 ------------- driver/pom.xml | 2 +- jackson-serde/pom.xml | 4 ++-- .../serde/jackson/JacksonSerdeProvider.java | 10 +--------- .../jackson/internal/JacksonMapperProvider.java | 17 +++++++++++++++-- .../internal/JsonJacksonMapperProvider.java | 15 --------------- .../internal/VPackJacksonMapperProvider.java | 16 ---------------- pom.xml | 2 +- 11 files changed, 35 insertions(+), 82 deletions(-) delete mode 100644 core/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java delete mode 100644 core/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java delete mode 100644 jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JsonJacksonMapperProvider.java delete mode 100644 jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/VPackJacksonMapperProvider.java diff --git a/core/pom.xml b/core/pom.xml index 54a452f82..fc3ef32b5 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -22,10 +22,6 @@ com.arangodb serde-api - - com.arangodb - jackson-serde - org.slf4j slf4j-api @@ -42,11 +38,6 @@ com.fasterxml.jackson.core jackson-annotations - - com.arangodb - jackson-dataformat-velocypack - true - com.google.code.findbugs jsr305 diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java deleted file mode 100644 index 343c387d6..000000000 --- a/core/src/main/java/com/arangodb/internal/serde/InternalJsonMapperProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.arangodb.internal.serde; - -import com.fasterxml.jackson.databind.ObjectMapper; - -enum InternalJsonMapperProvider implements InternalMapperProvider { - INSTANCE; - - @Override - public ObjectMapper get() { - return new ObjectMapper(); - } -} diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java index fca65bd24..241e0893d 100644 --- a/core/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java +++ b/core/src/main/java/com/arangodb/internal/serde/InternalMapperProvider.java @@ -1,18 +1,31 @@ package com.arangodb.internal.serde; +import com.arangodb.ArangoDBException; import com.arangodb.ContentType; +import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.ServiceLoader; import java.util.function.Supplier; public interface InternalMapperProvider extends Supplier { static ObjectMapper of(final ContentType contentType) { + String formatName; if (contentType == ContentType.JSON) { - return InternalJsonMapperProvider.INSTANCE.get(); + formatName = "JSON"; } else if (contentType == ContentType.VPACK) { - return InternalVPackMapperProvider.INSTANCE.get(); + formatName = "Velocypack"; } else { throw new IllegalArgumentException("Unexpected value: " + contentType); } + + ServiceLoader sl = ServiceLoader.load(JsonFactory.class); + for (JsonFactory jf : sl) { + if(formatName.equals(jf.getFormatName())){ + return new ObjectMapper(jf); + } + } + + throw new ArangoDBException("No JsonFactory found for content type: " + contentType); } } diff --git a/core/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java b/core/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java deleted file mode 100644 index e157b3dc2..000000000 --- a/core/src/main/java/com/arangodb/internal/serde/InternalVPackMapperProvider.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.arangodb.internal.serde; - -import com.arangodb.jackson.dataformat.velocypack.VPackMapper; -import com.fasterxml.jackson.databind.ObjectMapper; - -enum InternalVPackMapperProvider implements InternalMapperProvider { - INSTANCE; - - @Override - public ObjectMapper get() { - return new VPackMapper(); - } -} diff --git a/driver/pom.xml b/driver/pom.xml index 3e132eea2..83a4e1c7d 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -188,7 +188,7 @@ com.arangodb jackson-dataformat-velocypack - true + test com.arangodb diff --git a/jackson-serde/pom.xml b/jackson-serde/pom.xml index f7d9dcb0a..a2b67fedd 100644 --- a/jackson-serde/pom.xml +++ b/jackson-serde/pom.xml @@ -33,8 +33,8 @@ com.arangodb - jackson-dataformat-velocypack - true + core + provided com.arangodb diff --git a/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java b/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java index abc0a5e3c..c2f437e21 100644 --- a/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java +++ b/jackson-serde/src/main/java/com/arangodb/serde/jackson/JacksonSerdeProvider.java @@ -4,17 +4,10 @@ import com.arangodb.serde.ArangoSerdeProvider; import com.arangodb.serde.jackson.internal.JacksonMapperProvider; import com.arangodb.serde.jackson.internal.JacksonSerdeImpl; -import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ServiceLoader; public class JacksonSerdeProvider implements ArangoSerdeProvider { - private final static Logger LOG = LoggerFactory.getLogger(JacksonSerdeProvider.class); - /** * Creates a new JacksonSerde with default settings for the specified data type. * Registers all the Jackson modules ({@link com.fasterxml.jackson.databind.Module}) discovered via SPI. @@ -25,8 +18,7 @@ public class JacksonSerdeProvider implements ArangoSerdeProvider { @Override public JacksonSerde of(final ContentType contentType) { JacksonSerde serde = create(JacksonMapperProvider.of(contentType)); - ServiceLoader loader = ServiceLoader.load(Module.class); - serde.configure(mapper -> mapper.registerModules(loader)); + serde.configure(mapper -> mapper.registerModules(ObjectMapper.findModules())); return serde; } diff --git a/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JacksonMapperProvider.java b/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JacksonMapperProvider.java index b961b009d..936192d0e 100644 --- a/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JacksonMapperProvider.java +++ b/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JacksonMapperProvider.java @@ -1,8 +1,11 @@ package com.arangodb.serde.jackson.internal; +import com.arangodb.ArangoDBException; import com.arangodb.ContentType; +import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.ServiceLoader; import java.util.function.Supplier; /** @@ -10,12 +13,22 @@ */ public interface JacksonMapperProvider extends Supplier { static ObjectMapper of(final ContentType contentType) { + String formatName; if (contentType == ContentType.JSON) { - return JsonJacksonMapperProvider.INSTANCE.get(); + formatName = "JSON"; } else if (contentType == ContentType.VPACK) { - return VPackJacksonMapperProvider.INSTANCE.get(); + formatName = "Velocypack"; } else { throw new IllegalArgumentException("Unexpected value: " + contentType); } + + ServiceLoader sl = ServiceLoader.load(JsonFactory.class); + for (JsonFactory jf : sl) { + if(formatName.equals(jf.getFormatName())){ + return new ObjectMapper(jf); + } + } + + throw new ArangoDBException("No JsonFactory found for content type: " + contentType); } } diff --git a/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JsonJacksonMapperProvider.java b/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JsonJacksonMapperProvider.java deleted file mode 100644 index c2e1c4afd..000000000 --- a/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/JsonJacksonMapperProvider.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.arangodb.serde.jackson.internal; - -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Not shaded in arangodb-java-driver-shaded. - */ -enum JsonJacksonMapperProvider implements JacksonMapperProvider { - INSTANCE; - - @Override - public ObjectMapper get() { - return new ObjectMapper(); - } -} diff --git a/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/VPackJacksonMapperProvider.java b/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/VPackJacksonMapperProvider.java deleted file mode 100644 index d44ed0a2d..000000000 --- a/jackson-serde/src/main/java/com/arangodb/serde/jackson/internal/VPackJacksonMapperProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.arangodb.serde.jackson.internal; - -import com.arangodb.jackson.dataformat.velocypack.VPackMapper; -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Not shaded in arangodb-java-driver-shaded. - */ -enum VPackJacksonMapperProvider implements JacksonMapperProvider { - INSTANCE; - - @Override - public ObjectMapper get() { - return new VPackMapper(); - } -} diff --git a/pom.xml b/pom.xml index 0a3f8a207..69ecc080c 100644 --- a/pom.xml +++ b/pom.xml @@ -156,7 +156,7 @@ com.arangodb jackson-dataformat-velocypack - 3.1.0 + 3.2.0-SNAPSHOT org.slf4j From b3b41803015bf002a12f3222ce614fae3a2ad84b Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 16 Feb 2023 09:43:11 +0100 Subject: [PATCH 13/18] removed connection builders --- core/src/main/java/com/arangodb/ArangoDB.java | 6 ++--- .../com/arangodb/async/ArangoDBAsync.java | 15 +++++-------- .../internal/InternalArangoDBBuilder.java | 11 ++++------ .../internal/net/AsyncProtocolProvider.java | 2 +- .../com/arangodb/internal/net/Connection.java | 22 ------------------- .../internal/net/ConnectionFactory.java | 5 ++--- .../internal/net/ConnectionPoolImpl.java | 10 +++++---- .../internal/net/ExtendedHostResolver.java | 11 +++++----- .../internal/net/ProtocolProvider.java | 2 +- .../com/arangodb/internal/util/HostUtils.java | 5 +++-- .../com/arangodb/http/HttpConnection.java | 8 +------ .../arangodb/http/HttpConnectionFactory.java | 13 ++--------- .../arangodb/http/HttpProtocolProvider.java | 4 ++-- .../vst/VstAsyncProtocolProvider.java | 4 ++-- .../vst/VstConnectionFactorySync.java | 11 ++-------- .../com/arangodb/vst/VstProtocolProvider.java | 4 ++-- .../vst/async/VstConnectionAsync.java | 8 +------ .../vst/async/VstConnectionFactoryAsync.java | 12 ++-------- .../vst/internal/VstConnectionSync.java | 8 +------ 19 files changed, 47 insertions(+), 114 deletions(-) diff --git a/core/src/main/java/com/arangodb/ArangoDB.java b/core/src/main/java/com/arangodb/ArangoDB.java index 98cbf3403..1a22d50c3 100644 --- a/core/src/main/java/com/arangodb/ArangoDB.java +++ b/core/src/main/java/com/arangodb/ArangoDB.java @@ -338,9 +338,9 @@ public ArangoDB build() { ProtocolProvider protocolProvider = protocolProvider(config.getProtocol()); config.setProtocolModule(protocolProvider.protocolModule()); - ConnectionFactory connectionFactory = protocolProvider.createConnectionFactory(config); - Collection hostList = createHostList(config.getMaxConnections(), connectionFactory); - HostResolver hostResolver = createHostResolver(hostList, config.getMaxConnections(), connectionFactory); + ConnectionFactory connectionFactory = protocolProvider.createConnectionFactory(); + Collection hostList = createHostList(connectionFactory); + HostResolver hostResolver = createHostResolver(hostList, connectionFactory); HostHandler hostHandler = createHostHandler(hostResolver); hostHandler.setJwt(config.getJwt()); diff --git a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java index 69f97384e..98386c500 100644 --- a/core/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/core/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -323,15 +323,12 @@ public ArangoDBAsync build() { ProtocolProvider protocolProvider = protocolProvider(Protocol.VST); config.setProtocol(Protocol.VST); - config.setProtocolModule(protocolProvider.protocolModule()); - - final int max = config.getMaxConnections(); - final ConnectionFactory asyncConnectionFactory = asyncProtocolProvider.createConnectionFactory(config); - final ConnectionFactory syncConnectionFactory = protocolProvider.createConnectionFactory(config); - final HostResolver asyncHostResolver = createHostResolver(createHostList(max, asyncConnectionFactory), max, - asyncConnectionFactory); - final HostResolver syncHostResolver = createHostResolver(createHostList(max, syncConnectionFactory), max, - syncConnectionFactory); + config.setProtocolModule(asyncProtocolProvider.protocolModule()); + + final ConnectionFactory asyncConnectionFactory = asyncProtocolProvider.createConnectionFactory(); + final ConnectionFactory syncConnectionFactory = protocolProvider.createConnectionFactory(); + final HostResolver asyncHostResolver = createHostResolver(createHostList(asyncConnectionFactory), asyncConnectionFactory); + final HostResolver syncHostResolver = createHostResolver(createHostList(syncConnectionFactory), syncConnectionFactory); final HostHandler asyncHostHandler = createHostHandler(asyncHostResolver); final HostHandler syncHostHandler = createHostHandler(syncHostResolver); return new ArangoDBAsyncImpl( diff --git a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index a9211c42d..e482e405c 100644 --- a/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/core/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -326,12 +326,11 @@ protected HostHandler createHostHandler(final HostResolver hostResolver) { return new DirtyReadHostHandler(hostHandler, new RoundRobinHostHandler(hostResolver)); } - protected HostResolver createHostResolver(final Collection hosts, final int maxConnections, - final ConnectionFactory connectionFactory) { + protected HostResolver createHostResolver(final Collection hosts, final ConnectionFactory connectionFactory) { Boolean acquireHostList = config.getAcquireHostList(); if (acquireHostList != null && acquireHostList) { LOG.debug("acquireHostList -> Use ExtendedHostResolver"); - return new ExtendedHostResolver(new ArrayList<>(hosts), maxConnections, connectionFactory, + return new ExtendedHostResolver(new ArrayList<>(hosts), config, connectionFactory, config.getAcquireHostListInterval()); } else { LOG.debug("Use SimpleHostResolver"); @@ -340,12 +339,10 @@ protected HostResolver createHostResolver(final Collection hosts, final in } - protected Collection createHostList( - final int maxConnections, - final ConnectionFactory connectionFactory) { + protected Collection createHostList(final ConnectionFactory connectionFactory) { final Collection hostList = new ArrayList<>(); for (final HostDescription host : config.getHosts()) { - hostList.add(HostUtils.createHost(host, maxConnections, connectionFactory)); + hostList.add(HostUtils.createHost(host, config, connectionFactory)); } return hostList; } diff --git a/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java index 9d720f5da..d77a8e2a9 100644 --- a/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java +++ b/core/src/main/java/com/arangodb/internal/net/AsyncProtocolProvider.java @@ -9,7 +9,7 @@ public interface AsyncProtocolProvider { boolean supportsProtocol(Protocol protocol); - ConnectionFactory createConnectionFactory(ArangoConfig config); + ConnectionFactory createConnectionFactory(); AsyncCommunication createCommunication(ArangoConfig config, HostHandler hostHandler); diff --git a/core/src/main/java/com/arangodb/internal/net/Connection.java b/core/src/main/java/com/arangodb/internal/net/Connection.java index dcc3474c6..c2701361e 100644 --- a/core/src/main/java/com/arangodb/internal/net/Connection.java +++ b/core/src/main/java/com/arangodb/internal/net/Connection.java @@ -20,9 +20,6 @@ package com.arangodb.internal.net; -import com.arangodb.config.HostDescription; -import com.arangodb.internal.config.ArangoConfig; - import java.io.Closeable; /** @@ -30,23 +27,4 @@ */ public interface Connection extends Closeable { void setJwt(String jwt); - - abstract class Builder> { - - protected ArangoConfig config; - protected HostDescription host; - - @SuppressWarnings("unchecked") - public T config(final ArangoConfig config) { - this.config = config; - return (T) this; - } - - @SuppressWarnings("unchecked") - public T host(final HostDescription host) { - this.host = host; - return (T) this; - } - - } } diff --git a/core/src/main/java/com/arangodb/internal/net/ConnectionFactory.java b/core/src/main/java/com/arangodb/internal/net/ConnectionFactory.java index 65c83fc15..ed3d5571c 100644 --- a/core/src/main/java/com/arangodb/internal/net/ConnectionFactory.java +++ b/core/src/main/java/com/arangodb/internal/net/ConnectionFactory.java @@ -21,12 +21,11 @@ package com.arangodb.internal.net; import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; /** * @author Mark Vollmary */ public interface ConnectionFactory { - - Connection create(final HostDescription host); - + Connection create(ArangoConfig config, HostDescription host); } diff --git a/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java b/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java index e767f73df..0de7d3474 100644 --- a/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java +++ b/core/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java @@ -22,6 +22,7 @@ import com.arangodb.ArangoDBException; import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -32,6 +33,7 @@ public class ConnectionPoolImpl implements ConnectionPool { private final HostDescription host; + private final ArangoConfig config; private final int maxConnections; private final List connections; private final ConnectionFactory factory; @@ -39,11 +41,11 @@ public class ConnectionPoolImpl implements ConnectionPool { private volatile String jwt = null; private boolean closed = false; - public ConnectionPoolImpl(final HostDescription host, final Integer maxConnections, - final ConnectionFactory factory) { + public ConnectionPoolImpl(final HostDescription host, final ArangoConfig config, final ConnectionFactory factory) { super(); this.host = host; - this.maxConnections = maxConnections; + this.config = config; + this.maxConnections = config.getMaxConnections(); this.factory = factory; connections = new ArrayList<>(); current = 0; @@ -51,7 +53,7 @@ public ConnectionPoolImpl(final HostDescription host, final Integer maxConnectio @Override public Connection createConnection(final HostDescription host) { - Connection c = factory.create(host); + Connection c = factory.create(config, host); c.setJwt(jwt); return c; } diff --git a/core/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java b/core/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java index ade06a47e..ad2c3c915 100644 --- a/core/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java +++ b/core/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java @@ -24,6 +24,7 @@ import com.arangodb.DbName; import com.arangodb.config.HostDescription; import com.arangodb.internal.ArangoExecutorSync; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.serde.InternalSerde; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.InternalRequest; @@ -44,7 +45,7 @@ public class ExtendedHostResolver implements HostResolver { private final HostSet hosts; - private final Integer maxConnections; + private final ArangoConfig config; private final ConnectionFactory connectionFactory; private final Integer acquireHostListInterval; private long lastUpdate; @@ -52,12 +53,12 @@ public class ExtendedHostResolver implements HostResolver { private InternalSerde arangoSerialization; - public ExtendedHostResolver(final List hosts, final Integer maxConnections, + public ExtendedHostResolver(final List hosts, final ArangoConfig config, final ConnectionFactory connectionFactory, Integer acquireHostListInterval) { this.acquireHostListInterval = acquireHostListInterval; this.hosts = new HostSet(hosts); - this.maxConnections = maxConnections; + this.config = config; this.connectionFactory = connectionFactory; lastUpdate = 0; @@ -94,12 +95,12 @@ public HostSet resolve(boolean initial, boolean closeConnections) { final String[] s = endpoint.replaceAll(".*://", "").split(":"); if (s.length == 2) { final HostDescription description = new HostDescription(s[0], Integer.parseInt(s[1])); - hosts.addHost(HostUtils.createHost(description, maxConnections, connectionFactory)); + hosts.addHost(HostUtils.createHost(description, config, connectionFactory)); } else if (s.length == 4) { // IPV6 Address - TODO: we need a proper function to resolve AND support IPV4 & IPV6 functions // globally final HostDescription description = new HostDescription("127.0.0.1", Integer.parseInt(s[3])); - hosts.addHost(HostUtils.createHost(description, maxConnections, connectionFactory)); + hosts.addHost(HostUtils.createHost(description, config, connectionFactory)); } else { LOGGER.warn("Skip Endpoint (Missing Port) {}", endpoint); } diff --git a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java index 5ab476274..583740938 100644 --- a/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java +++ b/core/src/main/java/com/arangodb/internal/net/ProtocolProvider.java @@ -9,7 +9,7 @@ public interface ProtocolProvider { boolean supportsProtocol(Protocol protocol); - ConnectionFactory createConnectionFactory(ArangoConfig config); + ConnectionFactory createConnectionFactory(); CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler); diff --git a/core/src/main/java/com/arangodb/internal/util/HostUtils.java b/core/src/main/java/com/arangodb/internal/util/HostUtils.java index c03d955b0..591ed91af 100644 --- a/core/src/main/java/com/arangodb/internal/util/HostUtils.java +++ b/core/src/main/java/com/arangodb/internal/util/HostUtils.java @@ -21,6 +21,7 @@ package com.arangodb.internal.util; import com.arangodb.config.HostDescription; +import com.arangodb.internal.config.ArangoConfig; import com.arangodb.internal.net.*; /** @@ -45,8 +46,8 @@ public static HostDescription createFromLocation(final String location) { public static Host createHost( final HostDescription description, - final int maxConnections, + final ArangoConfig config, final ConnectionFactory factory) { - return new HostImpl(new ConnectionPoolImpl(description, maxConnections, factory), description); + return new HostImpl(new ConnectionPoolImpl(description, config, factory), description); } } diff --git a/http/src/main/java/com/arangodb/http/HttpConnection.java b/http/src/main/java/com/arangodb/http/HttpConnection.java index bbfcb62cd..5c8d424cf 100644 --- a/http/src/main/java/com/arangodb/http/HttpConnection.java +++ b/http/src/main/java/com/arangodb/http/HttpConnection.java @@ -86,7 +86,7 @@ private static String getUserAgent() { return "JavaDriver/" + PackageVersion.VERSION + " (JVM/" + System.getProperty("java.specification.version") + ")"; } - private HttpConnection(final ArangoConfig config, final HostDescription host) { + HttpConnection(final ArangoConfig config, final HostDescription host) { super(); serde = config.getInternalSerde(); Protocol protocol = config.getProtocol(); @@ -306,10 +306,4 @@ public void setJwt(String jwt) { } } - public static class Builder extends Connection.Builder { - public HttpConnection build() { - return new HttpConnection(config, host); - } - } - } diff --git a/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java b/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java index c431c726e..4c24c06c1 100644 --- a/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java +++ b/http/src/main/java/com/arangodb/http/HttpConnectionFactory.java @@ -29,17 +29,8 @@ * @author Mark Vollmary */ public class HttpConnectionFactory implements ConnectionFactory { - - private final HttpConnection.Builder builder; - - public HttpConnectionFactory(final ArangoConfig config) { - super(); - builder = new HttpConnection.Builder().config(config); - } - @Override - public Connection create(final HostDescription host) { - return builder.host(host).build(); + public Connection create(final ArangoConfig config, final HostDescription host) { + return new HttpConnection(config, host); } - } diff --git a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java index abbf5e75f..e6bc1d3b9 100644 --- a/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java +++ b/http/src/main/java/com/arangodb/http/HttpProtocolProvider.java @@ -19,8 +19,8 @@ public boolean supportsProtocol(Protocol protocol) { } @Override - public ConnectionFactory createConnectionFactory(final ArangoConfig config) { - return new HttpConnectionFactory(config); + public ConnectionFactory createConnectionFactory() { + return new HttpConnectionFactory(); } @Override diff --git a/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java b/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java index 38fe09f3d..a56ef2ff5 100644 --- a/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java +++ b/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java @@ -14,8 +14,8 @@ public boolean supportsProtocol(Protocol protocol) { } @Override - public ConnectionFactory createConnectionFactory(ArangoConfig config) { - return new VstConnectionFactoryAsync(config); + public ConnectionFactory createConnectionFactory() { + return new VstConnectionFactoryAsync(); } @Override diff --git a/vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java b/vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java index 102a88f4a..0ab5860aa 100644 --- a/vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java +++ b/vst/src/main/java/com/arangodb/vst/VstConnectionFactorySync.java @@ -31,15 +31,8 @@ */ public class VstConnectionFactorySync implements ConnectionFactory { - private final VstConnectionSync.Builder builder; - - public VstConnectionFactorySync(final ArangoConfig config) { - builder = new VstConnectionSync.Builder().config(config); - } - @Override - public Connection create(final HostDescription host) { - return builder.host(host).build(); + public Connection create(final ArangoConfig config, final HostDescription host) { + return new VstConnectionSync(config, host); } - } diff --git a/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java b/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java index a4ebfd045..3e0d7f291 100644 --- a/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java +++ b/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java @@ -15,8 +15,8 @@ public boolean supportsProtocol(Protocol protocol) { } @Override - public ConnectionFactory createConnectionFactory(ArangoConfig config) { - return new VstConnectionFactorySync(config); + public ConnectionFactory createConnectionFactory() { + return new VstConnectionFactorySync(); } @Override diff --git a/vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java b/vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java index 49d29085d..41e6265d3 100644 --- a/vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java +++ b/vst/src/main/java/com/arangodb/vst/async/VstConnectionAsync.java @@ -37,7 +37,7 @@ */ public class VstConnectionAsync extends VstConnection> { - private VstConnectionAsync(final ArangoConfig config, final HostDescription host) { + VstConnectionAsync(final ArangoConfig config, final HostDescription host) { super(config, host); } @@ -66,10 +66,4 @@ protected void doKeepAlive() { sendKeepAlive().join(); } - public static class Builder extends VstConnection.Builder { - public VstConnectionAsync build() { - return new VstConnectionAsync(config, host); - } - } - } diff --git a/vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java b/vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java index a712555fd..3c02a24fd 100644 --- a/vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java +++ b/vst/src/main/java/com/arangodb/vst/async/VstConnectionFactoryAsync.java @@ -30,16 +30,8 @@ */ public class VstConnectionFactoryAsync implements ConnectionFactory { - private final VstConnectionAsync.Builder builder; - - public VstConnectionFactoryAsync(final ArangoConfig config) { - super(); - builder = new VstConnectionAsync.Builder().config(config); - } - @Override - public Connection create(final HostDescription host) { - return builder.host(host).build(); + public Connection create(final ArangoConfig config, final HostDescription host) { + return new VstConnectionAsync(config, host); } - } diff --git a/vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java b/vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java index a0a4b7f2e..28a8bcd89 100644 --- a/vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java +++ b/vst/src/main/java/com/arangodb/vst/internal/VstConnectionSync.java @@ -34,7 +34,7 @@ */ public class VstConnectionSync extends VstConnection { - private VstConnectionSync(final ArangoConfig config, final HostDescription host) { + public VstConnectionSync(final ArangoConfig config, final HostDescription host) { super(config, host); } @@ -60,10 +60,4 @@ protected void doKeepAlive() { sendKeepAlive(); } - public static class Builder extends VstConnection.Builder { - public VstConnectionSync build() { - return new VstConnectionSync(config, host); - } - } - } From 025fbcefb32aa326618f926f09b1f5c302122bb9 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 16 Feb 2023 09:54:27 +0100 Subject: [PATCH 14/18] removed communication builders --- .../arangodb/vst/VstAsyncProtocolProvider.java | 2 +- .../com/arangodb/vst/VstCommunication.java | 18 ------------------ .../com/arangodb/vst/VstCommunicationSync.java | 9 +-------- .../com/arangodb/vst/VstProtocolProvider.java | 2 +- .../vst/async/VstCommunicationAsync.java | 8 +------- 5 files changed, 4 insertions(+), 35 deletions(-) diff --git a/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java b/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java index a56ef2ff5..8bb1a19d9 100644 --- a/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java +++ b/vst/src/main/java/com/arangodb/vst/VstAsyncProtocolProvider.java @@ -20,7 +20,7 @@ public ConnectionFactory createConnectionFactory() { @Override public AsyncCommunication createCommunication(final ArangoConfig config, final HostHandler hostHandler) { - return new VstCommunicationAsync.Builder().config(config).hostHandler(hostHandler).build(); + return new VstCommunicationAsync(config, hostHandler); } @Override diff --git a/vst/src/main/java/com/arangodb/vst/VstCommunication.java b/vst/src/main/java/com/arangodb/vst/VstCommunication.java index 52140252d..d90510f6d 100644 --- a/vst/src/main/java/com/arangodb/vst/VstCommunication.java +++ b/vst/src/main/java/com/arangodb/vst/VstCommunication.java @@ -193,22 +193,4 @@ public void setJwt(String jwt) { this.jwt = jwt; } - - protected static class Builder> { - protected ArangoConfig config; - protected HostHandler hostHandler; - - @SuppressWarnings("unchecked") - public T config(final ArangoConfig config) { - this.config = config; - return (T) this; - } - - @SuppressWarnings("unchecked") - public T hostHandler(final HostHandler hostHandler) { - this.hostHandler = hostHandler; - return (T) this; - } - } - } diff --git a/vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java b/vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java index b83e9f690..97b7671c7 100644 --- a/vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java +++ b/vst/src/main/java/com/arangodb/vst/VstCommunicationSync.java @@ -44,7 +44,7 @@ public class VstCommunicationSync extends VstCommunication { - public VstCommunication build() { - return new VstCommunicationSync(config, hostHandler); - } - } - } diff --git a/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java b/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java index 3e0d7f291..8a6341fc7 100644 --- a/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java +++ b/vst/src/main/java/com/arangodb/vst/VstProtocolProvider.java @@ -21,7 +21,7 @@ public ConnectionFactory createConnectionFactory() { @Override public CommunicationProtocol createProtocol(ArangoConfig config, HostHandler hostHandler) { - return new VstProtocol(new VstCommunicationSync.Builder().config(config).hostHandler(hostHandler).build()); + return new VstProtocol(new VstCommunicationSync(config, hostHandler)); } @Override diff --git a/vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java b/vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java index 1b0a8c3f3..c787c0cbf 100644 --- a/vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java +++ b/vst/src/main/java/com/arangodb/vst/async/VstCommunicationAsync.java @@ -51,7 +51,7 @@ public class VstCommunicationAsync private static final Logger LOGGER = LoggerFactory.getLogger(VstCommunicationAsync.class); - private VstCommunicationAsync(ArangoConfig config, HostHandler hostHandler) { + public VstCommunicationAsync(ArangoConfig config, HostHandler hostHandler) { super(config, hostHandler); } @@ -154,10 +154,4 @@ protected void authenticate(final VstConnectionAsync connection) { checkError(response); } - public static class Builder extends VstCommunication.Builder { - public VstCommunicationAsync build() { - return new VstCommunicationAsync(config, hostHandler); - } - } - } From c3554202f71378abaa2812252675812db125f186 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 16 Feb 2023 14:38:57 +0100 Subject: [PATCH 15/18] merged serde-api into core --- core/pom.xml | 4 --- .../main/java/com/arangodb/ContentType.java | 0 .../java/com/arangodb/serde/ArangoSerde.java | 0 .../arangodb/serde/ArangoSerdeProvider.java | 0 driver/pom.xml | 34 ------------------- jackson-serde/pom.xml | 15 +++----- jsonb-serde/pom.xml | 2 +- pom.xml | 6 ---- serde-api/pom.xml | 20 ----------- shaded/pom.xml | 6 ---- vst/pom.xml | 1 + 11 files changed, 7 insertions(+), 81 deletions(-) rename {serde-api => core}/src/main/java/com/arangodb/ContentType.java (100%) rename {serde-api => core}/src/main/java/com/arangodb/serde/ArangoSerde.java (100%) rename {serde-api => core}/src/main/java/com/arangodb/serde/ArangoSerdeProvider.java (100%) delete mode 100644 serde-api/pom.xml diff --git a/core/pom.xml b/core/pom.xml index fc3ef32b5..2ea81eb5c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -18,10 +18,6 @@ - - com.arangodb - serde-api - org.slf4j slf4j-api diff --git a/serde-api/src/main/java/com/arangodb/ContentType.java b/core/src/main/java/com/arangodb/ContentType.java similarity index 100% rename from serde-api/src/main/java/com/arangodb/ContentType.java rename to core/src/main/java/com/arangodb/ContentType.java diff --git a/serde-api/src/main/java/com/arangodb/serde/ArangoSerde.java b/core/src/main/java/com/arangodb/serde/ArangoSerde.java similarity index 100% rename from serde-api/src/main/java/com/arangodb/serde/ArangoSerde.java rename to core/src/main/java/com/arangodb/serde/ArangoSerde.java diff --git a/serde-api/src/main/java/com/arangodb/serde/ArangoSerdeProvider.java b/core/src/main/java/com/arangodb/serde/ArangoSerdeProvider.java similarity index 100% rename from serde-api/src/main/java/com/arangodb/serde/ArangoSerdeProvider.java rename to core/src/main/java/com/arangodb/serde/ArangoSerdeProvider.java diff --git a/driver/pom.xml b/driver/pom.xml index 83a4e1c7d..fcef17131 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -115,36 +115,6 @@ - - maven-shade-plugin - 3.4.1 - - - package - - shade - - - true - true - - - com.arangodb:core - com.arangodb:serde-api - - - - - com.arangodb:* - - META-INF/MANIFEST.MF - - - - - - - org.codehaus.mojo flatten-maven-plugin @@ -161,10 +131,6 @@ com.arangodb http-protocol - - com.arangodb - serde-api - com.arangodb jackson-serde diff --git a/jackson-serde/pom.xml b/jackson-serde/pom.xml index a2b67fedd..fcdf5ded7 100644 --- a/jackson-serde/pom.xml +++ b/jackson-serde/pom.xml @@ -19,6 +19,11 @@ + + com.arangodb + core + provided + com.fasterxml.jackson.core jackson-databind @@ -31,15 +36,5 @@ com.fasterxml.jackson.core jackson-annotations - - com.arangodb - core - provided - - - com.arangodb - serde-api - provided - \ No newline at end of file diff --git a/jsonb-serde/pom.xml b/jsonb-serde/pom.xml index 11b4af198..b28ea81b6 100644 --- a/jsonb-serde/pom.xml +++ b/jsonb-serde/pom.xml @@ -22,7 +22,7 @@ com.arangodb - serde-api + core provided diff --git a/pom.xml b/pom.xml index 69ecc080c..a199dec43 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,6 @@ driver shaded jackson-serde - serde-api http vst @@ -128,11 +127,6 @@ vst-protocol ${project.version} - - com.arangodb - serde-api - ${project.version} - com.arangodb jackson-serde diff --git a/serde-api/pom.xml b/serde-api/pom.xml deleted file mode 100644 index 4186b5f31..000000000 --- a/serde-api/pom.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 4.0.0 - - com.arangodb - arangodb-java-driver-parent - 7.0.0-ALPHA.2 - - - serde-api - serde-api - Serde API module for ArangoDB Java Driver - - - com.arangodb.serde - - - \ No newline at end of file diff --git a/shaded/pom.xml b/shaded/pom.xml index 3218bb5c0..db9204fc9 100644 --- a/shaded/pom.xml +++ b/shaded/pom.xml @@ -23,12 +23,6 @@ com.arangodb arangodb-java-driver - - - com.arangodb - serde-api - - com.arangodb diff --git a/vst/pom.xml b/vst/pom.xml index fd98d1084..76943f277 100644 --- a/vst/pom.xml +++ b/vst/pom.xml @@ -22,6 +22,7 @@ com.arangodb core + provided com.arangodb From 4cad113aea5994bff517e9ac9cc5fde9025d0551 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 16 Feb 2023 16:07:30 +0100 Subject: [PATCH 16/18] fixed shaded module --- driver/pom.xml | 16 ------- http/pom.xml | 1 + .../META-INF/vertx/vertx-version.txt | 0 shaded-integration-tests/pom.xml | 12 ----- .../test/jsonb/java/arch/RelocationsTest.java | 8 ---- shaded/pom.xml | 48 +++++++++++++------ ...rangodb.internal.net.AsyncProtocolProvider | 1 + ...com.arangodb.internal.net.ProtocolProvider | 2 + ....shaded.fasterxml.jackson.core.JsonFactory | 2 + 9 files changed, 40 insertions(+), 50 deletions(-) rename {driver => http}/src/main/resources/META-INF/vertx/vertx-version.txt (100%) create mode 100644 shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider create mode 100644 shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider create mode 100644 shaded/src/main/resources/META-INF/services/com.arangodb.shaded.fasterxml.jackson.core.JsonFactory diff --git a/driver/pom.xml b/driver/pom.xml index fcef17131..e379c3639 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -135,22 +135,6 @@ com.arangodb jackson-serde - - org.slf4j - slf4j-api - - - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.core - jackson-core - - - com.fasterxml.jackson.core - jackson-annotations - com.arangodb jackson-dataformat-velocypack diff --git a/http/pom.xml b/http/pom.xml index cc8591c49..10e710bb7 100644 --- a/http/pom.xml +++ b/http/pom.xml @@ -22,6 +22,7 @@ com.arangodb core + provided io.vertx diff --git a/driver/src/main/resources/META-INF/vertx/vertx-version.txt b/http/src/main/resources/META-INF/vertx/vertx-version.txt similarity index 100% rename from driver/src/main/resources/META-INF/vertx/vertx-version.txt rename to http/src/main/resources/META-INF/vertx/vertx-version.txt diff --git a/shaded-integration-tests/pom.xml b/shaded-integration-tests/pom.xml index 968dfead6..bbbcf47b9 100644 --- a/shaded-integration-tests/pom.xml +++ b/shaded-integration-tests/pom.xml @@ -46,12 +46,6 @@ com.arangodb arangodb-java-driver-shaded - - - com.arangodb - jackson-serde - - com.arangodb @@ -101,12 +95,6 @@ com.arangodb arangodb-java-driver-shaded - - - com.arangodb - jackson-serde - - com.arangodb diff --git a/shaded-integration-tests/src/test/jsonb/java/arch/RelocationsTest.java b/shaded-integration-tests/src/test/jsonb/java/arch/RelocationsTest.java index db2516a94..b78a416bb 100644 --- a/shaded-integration-tests/src/test/jsonb/java/arch/RelocationsTest.java +++ b/shaded-integration-tests/src/test/jsonb/java/arch/RelocationsTest.java @@ -35,14 +35,6 @@ public class RelocationsTest { .should().dependOnClassesThat() .resideInAPackage("com.arangodb.jackson.dataformat.velocypack.."); - @ArchTest - public static final ArchRule noVelocypackDependency = noClasses().that() - .resideInAPackage("com.arangodb..").and() - .resideOutsideOfPackage("..velocystream..").and() - .resideOutsideOfPackage("com.arangodb.shaded.jackson.dataformat.velocypack..") - .should().dependOnClassesThat() - .resideInAPackage("com.arangodb.velocypack.."); - @ArchTest // jsonb-serde is accessed via SPI public static final ArchRule noExplicitDependencyOnJsonbSerde = noClasses().that() diff --git a/shaded/pom.xml b/shaded/pom.xml index db9204fc9..40db119e9 100644 --- a/shaded/pom.xml +++ b/shaded/pom.xml @@ -22,15 +22,19 @@ com.arangodb - arangodb-java-driver + core com.arangodb - jackson-dataformat-velocypack + http-protocol + + + com.arangodb + vst-protocol com.arangodb - jackson-serde + jackson-dataformat-velocypack org.slf4j @@ -60,15 +64,9 @@ org.slf4j:slf4j-api - com.arangodb:jackson-serde - com.arangodb:velocypack - - io.netty - com.arangodb.shaded.netty - com.fasterxml.jackson com.arangodb.shaded.fasterxml.jackson @@ -77,6 +75,10 @@ com.arangodb.jackson.dataformat.velocypack com.arangodb.shaded.jackson.dataformat.velocypack + + io.netty + com.arangodb.shaded.netty + io.vertx com.arangodb.shaded.vertx @@ -84,10 +86,28 @@ - com.arangodb:arangodb-java-driver + com.arangodb:core + + META-INF/** + + + + com.arangodb:vst-protocol + + META-INF/** + + + + com.arangodb:http-protocol META-INF/MANIFEST.MF - META-INF/native-image/** + META-INF/services/** + + + + com.arangodb:velocypack + + META-INF/** @@ -107,7 +127,6 @@ io.netty:* META-INF/** - module-info.class @@ -116,7 +135,6 @@ *.adoc examples/** META-INF/** - module-info.class @@ -160,7 +178,9 @@ ${project.build.directory}/shaded-sources - com.arangodb.shaded.**,**.internal** + + com.arangodb.shaded.**,**.internal**,com.arangodb.vst.**,com.arangodb.http.**,com.arangodb.velocypack.** + diff --git a/shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider b/shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider new file mode 100644 index 000000000..dc7f09560 --- /dev/null +++ b/shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.AsyncProtocolProvider @@ -0,0 +1 @@ +com.arangodb.vst.VstAsyncProtocolProvider diff --git a/shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider b/shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider new file mode 100644 index 000000000..faf8cac63 --- /dev/null +++ b/shaded/src/main/resources/META-INF/services/com.arangodb.internal.net.ProtocolProvider @@ -0,0 +1,2 @@ +com.arangodb.http.HttpProtocolProvider +com.arangodb.vst.VstProtocolProvider diff --git a/shaded/src/main/resources/META-INF/services/com.arangodb.shaded.fasterxml.jackson.core.JsonFactory b/shaded/src/main/resources/META-INF/services/com.arangodb.shaded.fasterxml.jackson.core.JsonFactory new file mode 100644 index 000000000..89123f5a5 --- /dev/null +++ b/shaded/src/main/resources/META-INF/services/com.arangodb.shaded.fasterxml.jackson.core.JsonFactory @@ -0,0 +1,2 @@ +com.arangodb.shaded.fasterxml.jackson.core.JsonFactory +com.arangodb.shaded.jackson.dataformat.velocypack.VPackFactory From fd27169569f5ae0211e7fae0d758a518020a07aa Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 16 Feb 2023 16:25:03 +0100 Subject: [PATCH 17/18] fixed shaded native tests --- .../java/com/arangodb/async/serde/CustomSerdeTest.java | 2 +- .../internal/velocystream/CommunicationTest.java | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/shaded-integration-tests/src/test/native/java/com/arangodb/async/serde/CustomSerdeTest.java b/shaded-integration-tests/src/test/native/java/com/arangodb/async/serde/CustomSerdeTest.java index fdca9d3c0..6756ef847 100644 --- a/shaded-integration-tests/src/test/native/java/com/arangodb/async/serde/CustomSerdeTest.java +++ b/shaded-integration-tests/src/test/native/java/com/arangodb/async/serde/CustomSerdeTest.java @@ -65,7 +65,7 @@ void init() throws ExecutionException, InterruptedException { }); ArangoDBAsync arangoDB = new ArangoDBAsync.Builder() .loadProperties(ConfigUtils.loadConfig()) - .serializer(serde).build(); + .serde(serde).build(); DbName TEST_DB = DbName.of("custom-serde-test"); db = arangoDB.db(TEST_DB); diff --git a/shaded-integration-tests/src/test/native/java/com/arangodb/internal/velocystream/CommunicationTest.java b/shaded-integration-tests/src/test/native/java/com/arangodb/internal/velocystream/CommunicationTest.java index 120939786..58a87bd71 100644 --- a/shaded-integration-tests/src/test/native/java/com/arangodb/internal/velocystream/CommunicationTest.java +++ b/shaded-integration-tests/src/test/native/java/com/arangodb/internal/velocystream/CommunicationTest.java @@ -102,15 +102,6 @@ void multiThreadSameDatabases() throws Exception { assertThat(result.size()).isEqualTo(2); } - @Test - void minOneConnection() { - final ArangoDB arangoDB = new ArangoDB.Builder() - .loadProperties(ConfigUtils.loadConfig()) - .maxConnections(0).build(); - final ArangoDBVersion version = arangoDB.getVersion(); - assertThat(version).isNotNull(); - } - @Test void defaultMaxConnection() { final ArangoDB arangoDB = new ArangoDB.Builder() From 937bc357c0a55a5c561975b1191767ad767abb1a Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 16 Feb 2023 17:04:42 +0100 Subject: [PATCH 18/18] updated jackson-dataformat --- docs/v7_java-reference-serialization.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/v7_java-reference-serialization.md b/docs/v7_java-reference-serialization.md index a2459abca..da9127f08 100644 --- a/docs/v7_java-reference-serialization.md +++ b/docs/v7_java-reference-serialization.md @@ -38,7 +38,7 @@ The default user-data serde is `JacksonSerde`, which is provided by the module ` This is used by default from the driver, if no custom serde is registered explicitly. It is implemented delegating [Jackson](https://github.com/FasterXML/jackson) `ObjectMapper`, therefore it is compatible with Jackson Streaming, Data Binding and Tree Model API. -It supports both `JSON` and `VPACK` data formats. To use `VPACK`, the optional dependency on +It supports both `JSON` and `VPACK` data formats. To use `VPACK`, the additional dependency on [jackson-dataformat-velocypack](https://github.com/arangodb/jackson-dataformat-velocypack) is required. diff --git a/pom.xml b/pom.xml index a199dec43..c17fb6232 100644 --- a/pom.xml +++ b/pom.xml @@ -150,7 +150,7 @@ com.arangodb jackson-dataformat-velocypack - 3.2.0-SNAPSHOT + 4.0.0 org.slf4j