Skip to content

Commit f77d3da

Browse files
author
Mark
committed
added generic executions (custom foxx service support)
1 parent dcc1d83 commit f77d3da

26 files changed

+175
-158
lines changed

docs/api_overview.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,4 +343,19 @@ Now an edge can be created to set a relation between vertices
343343
``` Java
344344
arangoDB.db("myDatabase").graph("myGraph").edgeCollection("myEdgeCollection").insertEdge(myEdgeObject, null);
345345

346+
```
347+
348+
# Foxx
349+
##execute a service
350+
``` Java
351+
Request request = new Request("mydb", RequestType.GET, "/my/foxx/service")
352+
Response response = arangoDB.execute(request);
353+
354+
```
355+
356+
##execute a service (async)
357+
``` Java
358+
Request request = new Request("mydb", RequestType.GET, "/my/foxx/service")
359+
CompletableFuture<Response> response = arangoDB.executeAsync(request);
360+
346361
```

src/main/java/com/arangodb/ArangoCollection.java

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@
4141
import com.arangodb.entity.DocumentUpdateEntity;
4242
import com.arangodb.entity.IndexEntity;
4343
import com.arangodb.internal.ArangoDBConstants;
44-
import com.arangodb.internal.net.Request;
45-
import com.arangodb.internal.net.Response;
46-
import com.arangodb.internal.net.velocystream.RequestType;
4744
import com.arangodb.model.CollectionPropertiesOptions;
4845
import com.arangodb.model.CollectionRenameOptions;
4946
import com.arangodb.model.DocumentCreateOptions;
@@ -60,6 +57,9 @@
6057
import com.arangodb.model.SkiplistIndexOptions;
6158
import com.arangodb.velocypack.Type;
6259
import com.arangodb.velocypack.VPackSlice;
60+
import com.arangodb.velocystream.Request;
61+
import com.arangodb.velocystream.RequestType;
62+
import com.arangodb.velocystream.Response;
6363

6464
/**
6565
* @author Mark - mark at arangodb.com
@@ -163,8 +163,8 @@ private <T> Request insertDocumentRequest(final T value, final DocumentCreateOpt
163163
final Request request = new Request(db.name(), RequestType.POST,
164164
createPath(ArangoDBConstants.PATH_API_DOCUMENT, name));
165165
final DocumentCreateOptions params = (options != null ? options : new DocumentCreateOptions());
166-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
167-
request.putParameter(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
166+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
167+
request.putQueryParam(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
168168
request.setBody(serialize(value));
169169
return request;
170170
}
@@ -262,8 +262,8 @@ public <T> CompletableFuture<Collection<DocumentCreateEntity<T>>> insertDocument
262262
private <T> Request insertDocumentsRequest(final Collection<T> values, final DocumentCreateOptions params) {
263263
final Request request = new Request(db.name(), RequestType.POST,
264264
createPath(ArangoDBConstants.PATH_API_DOCUMENT, name));
265-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
266-
request.putParameter(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
265+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
266+
request.putQueryParam(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
267267
request.setBody(serialize(values));
268268
return request;
269269
}
@@ -396,8 +396,8 @@ private Request getDocumentRequest(final String key, final DocumentReadOptions o
396396
final Request request = new Request(db.name(), RequestType.GET,
397397
createPath(ArangoDBConstants.PATH_API_DOCUMENT, createDocumentHandle(key)));
398398
final DocumentReadOptions params = (options != null ? options : new DocumentReadOptions());
399-
request.putMeta(ArangoDBConstants.IF_NONE_MATCH, params.getIfNoneMatch());
400-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
399+
request.putHeaderParam(ArangoDBConstants.IF_NONE_MATCH, params.getIfNoneMatch());
400+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
401401
return request;
402402
}
403403

@@ -483,11 +483,11 @@ private <T> Request replaceDocumentRequest(final String key, final T value, fina
483483
final Request request = new Request(db.name(), RequestType.PUT,
484484
createPath(ArangoDBConstants.PATH_API_DOCUMENT, createDocumentHandle(key)));
485485
final DocumentReplaceOptions params = (options != null ? options : new DocumentReplaceOptions());
486-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
487-
request.putParameter(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
488-
request.putParameter(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
489-
request.putParameter(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
490-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
486+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
487+
request.putQueryParam(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
488+
request.putQueryParam(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
489+
request.putQueryParam(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
490+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
491491
request.setBody(serialize(value));
492492
return request;
493493
}
@@ -590,11 +590,11 @@ public <T> CompletableFuture<Collection<DocumentUpdateEntity<T>>> replaceDocumen
590590
private <T> Request replaceDocumentsRequest(final Collection<T> values, final DocumentReplaceOptions params) {
591591
final Request request;
592592
request = new Request(db.name(), RequestType.PUT, createPath(ArangoDBConstants.PATH_API_DOCUMENT, name));
593-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
594-
request.putParameter(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
595-
request.putParameter(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
596-
request.putParameter(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
597-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
593+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
594+
request.putQueryParam(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
595+
request.putQueryParam(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
596+
request.putQueryParam(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
597+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
598598
request.setBody(serialize(values));
599599
return request;
600600
}
@@ -718,13 +718,13 @@ private <T> Request updateDocumentRequest(final String key, final T value, final
718718
request = new Request(db.name(), RequestType.PATCH,
719719
createPath(ArangoDBConstants.PATH_API_DOCUMENT, createDocumentHandle(key)));
720720
final DocumentUpdateOptions params = (options != null ? options : new DocumentUpdateOptions());
721-
request.putParameter(ArangoDBConstants.KEEP_NULL, params.getKeepNull());
722-
request.putParameter(ArangoDBConstants.MERGE_OBJECTS, params.getMergeObjects());
723-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
724-
request.putParameter(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
725-
request.putParameter(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
726-
request.putParameter(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
727-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
721+
request.putQueryParam(ArangoDBConstants.KEEP_NULL, params.getKeepNull());
722+
request.putQueryParam(ArangoDBConstants.MERGE_OBJECTS, params.getMergeObjects());
723+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
724+
request.putQueryParam(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
725+
request.putQueryParam(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
726+
request.putQueryParam(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
727+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
728728
request.setBody(serialize(value, true));
729729
return request;
730730
}
@@ -830,13 +830,13 @@ private <T> Request updateDocumentsRequest(final Collection<T> values, final Doc
830830
final Request request;
831831
request = new Request(db.name(), RequestType.PATCH, createPath(ArangoDBConstants.PATH_API_DOCUMENT, name));
832832
final Boolean keepNull = params.getKeepNull();
833-
request.putParameter(ArangoDBConstants.KEEP_NULL, keepNull);
834-
request.putParameter(ArangoDBConstants.MERGE_OBJECTS, params.getMergeObjects());
835-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
836-
request.putParameter(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
837-
request.putParameter(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
838-
request.putParameter(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
839-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
833+
request.putQueryParam(ArangoDBConstants.KEEP_NULL, keepNull);
834+
request.putQueryParam(ArangoDBConstants.MERGE_OBJECTS, params.getMergeObjects());
835+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
836+
request.putQueryParam(ArangoDBConstants.IGNORE_REVS, params.getIgnoreRevs());
837+
request.putQueryParam(ArangoDBConstants.RETURN_NEW, params.getReturnNew());
838+
request.putQueryParam(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
839+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
840840
request.setBody(serialize(values, true));
841841
return request;
842842
}
@@ -958,9 +958,9 @@ private Request deleteDocumentRequest(final String key, final DocumentDeleteOpti
958958
request = new Request(db.name(), RequestType.DELETE,
959959
createPath(ArangoDBConstants.PATH_API_DOCUMENT, createDocumentHandle(key)));
960960
final DocumentDeleteOptions params = (options != null ? options : new DocumentDeleteOptions());
961-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
962-
request.putParameter(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
963-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
961+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
962+
request.putQueryParam(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
963+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
964964
return request;
965965
}
966966

@@ -1064,8 +1064,8 @@ private Request deleteDocumentsRequest(final Collection<String> keys, final Docu
10641064
final Request request;
10651065
request = new Request(db.name(), RequestType.DELETE, createPath(ArangoDBConstants.PATH_API_DOCUMENT, name));
10661066
final DocumentDeleteOptions params = (options != null ? options : new DocumentDeleteOptions());
1067-
request.putParameter(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
1068-
request.putParameter(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
1067+
request.putQueryParam(ArangoDBConstants.WAIT_FOR_SYNC, params.getWaitForSync());
1068+
request.putQueryParam(ArangoDBConstants.RETURN_OLD, params.getReturnOld());
10691069
request.setBody(serialize(keys));
10701070
return request;
10711071
}
@@ -1161,8 +1161,8 @@ private Request documentExistsRequest(final String key, final DocumentExistsOpti
11611161
request = new Request(db.name(), RequestType.HEAD,
11621162
createPath(ArangoDBConstants.PATH_API_DOCUMENT, createDocumentHandle(key)));
11631163
final DocumentExistsOptions params = (options != null ? options : new DocumentExistsOptions());
1164-
request.putMeta(ArangoDBConstants.IF_MATCH, params.getIfMatch());
1165-
request.putMeta(ArangoDBConstants.IF_NONE_MATCH, params.getIfNoneMatch());
1164+
request.putHeaderParam(ArangoDBConstants.IF_MATCH, params.getIfMatch());
1165+
request.putHeaderParam(ArangoDBConstants.IF_NONE_MATCH, params.getIfNoneMatch());
11661166
return request;
11671167
}
11681168

@@ -1214,7 +1214,7 @@ public CompletableFuture<IndexEntity> createHashIndexAsync(
12141214
private Request createHashIndexRequest(final Collection<String> fields, final HashIndexOptions options) {
12151215
final Request request;
12161216
request = new Request(db.name(), RequestType.POST, ArangoDBConstants.PATH_API_INDEX);
1217-
request.putParameter(ArangoDBConstants.COLLECTION, name);
1217+
request.putQueryParam(ArangoDBConstants.COLLECTION, name);
12181218
request.setBody(serialize(OptionsBuilder.build(options != null ? options : new HashIndexOptions(), fields)));
12191219
return request;
12201220
}
@@ -1256,7 +1256,7 @@ public CompletableFuture<IndexEntity> createSkiplistIndexAsync(
12561256
private Request createSkiplistIndexRequest(final Collection<String> fields, final SkiplistIndexOptions options) {
12571257
final Request request;
12581258
request = new Request(db.name(), RequestType.POST, ArangoDBConstants.PATH_API_INDEX);
1259-
request.putParameter(ArangoDBConstants.COLLECTION, name);
1259+
request.putQueryParam(ArangoDBConstants.COLLECTION, name);
12601260
request.setBody(
12611261
serialize(OptionsBuilder.build(options != null ? options : new SkiplistIndexOptions(), fields)));
12621262
return request;
@@ -1301,7 +1301,7 @@ private Request createPersistentIndexRequest(
13011301
final PersistentIndexOptions options) {
13021302
final Request request;
13031303
request = new Request(db.name(), RequestType.POST, ArangoDBConstants.PATH_API_INDEX);
1304-
request.putParameter(ArangoDBConstants.COLLECTION, name);
1304+
request.putQueryParam(ArangoDBConstants.COLLECTION, name);
13051305
request.setBody(
13061306
serialize(OptionsBuilder.build(options != null ? options : new PersistentIndexOptions(), fields)));
13071307
return request;
@@ -1344,7 +1344,7 @@ public CompletableFuture<IndexEntity> createGeoIndexAsync(
13441344
private Request createGeoIndexRequest(final Collection<String> fields, final GeoIndexOptions options) {
13451345
final Request request;
13461346
request = new Request(db.name(), RequestType.POST, ArangoDBConstants.PATH_API_INDEX);
1347-
request.putParameter(ArangoDBConstants.COLLECTION, name);
1347+
request.putQueryParam(ArangoDBConstants.COLLECTION, name);
13481348
request.setBody(serialize(OptionsBuilder.build(options != null ? options : new GeoIndexOptions(), fields)));
13491349
return request;
13501350
}
@@ -1386,7 +1386,7 @@ public CompletableFuture<IndexEntity> createFulltextIndexAsync(
13861386
private Request createFulltextIndexRequest(final Collection<String> fields, final FulltextIndexOptions options) {
13871387
final Request request;
13881388
request = new Request(db.name(), RequestType.POST, ArangoDBConstants.PATH_API_INDEX);
1389-
request.putParameter(ArangoDBConstants.COLLECTION, name);
1389+
request.putQueryParam(ArangoDBConstants.COLLECTION, name);
13901390
request.setBody(
13911391
serialize(OptionsBuilder.build(options != null ? options : new FulltextIndexOptions(), fields)));
13921392
return request;
@@ -1420,7 +1420,7 @@ public CompletableFuture<Collection<IndexEntity>> getIndexesAsync() {
14201420
private Request getIndexesRequest() {
14211421
final Request request;
14221422
request = new Request(db.name(), RequestType.GET, ArangoDBConstants.PATH_API_INDEX);
1423-
request.putParameter(ArangoDBConstants.COLLECTION, name);
1423+
request.putQueryParam(ArangoDBConstants.COLLECTION, name);
14241424
return request;
14251425
}
14261426

src/main/java/com/arangodb/ArangoCursor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
import com.arangodb.entity.CursorEntity.Stats;
3737
import com.arangodb.entity.CursorEntity.Warning;
3838
import com.arangodb.internal.ArangoDBConstants;
39-
import com.arangodb.internal.net.Request;
40-
import com.arangodb.internal.net.velocystream.RequestType;
39+
import com.arangodb.velocystream.Request;
40+
import com.arangodb.velocystream.RequestType;
4141

4242
/**
4343
* @author Mark - mark at arangodb.com

src/main/java/com/arangodb/ArangoDB.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,8 @@
3333
import com.arangodb.internal.ArangoDBConstants;
3434
import com.arangodb.internal.CollectionCache;
3535
import com.arangodb.internal.DocumentCache;
36-
import com.arangodb.internal.net.Communication;
37-
import com.arangodb.internal.net.Request;
38-
import com.arangodb.internal.net.velocystream.RequestType;
3936
import com.arangodb.internal.velocypack.VPackConfigure;
37+
import com.arangodb.internal.velocystream.Communication;
4038
import com.arangodb.model.DBCreateOptions;
4139
import com.arangodb.model.OptionsBuilder;
4240
import com.arangodb.model.UserCreateOptions;
@@ -48,6 +46,9 @@
4846
import com.arangodb.velocypack.VPackParser;
4947
import com.arangodb.velocypack.VPackSerializer;
5048
import com.arangodb.velocypack.VPackSlice;
49+
import com.arangodb.velocystream.Request;
50+
import com.arangodb.velocystream.RequestType;
51+
import com.arangodb.velocystream.Response;
5152

5253
/**
5354
* @author Mark - mark at arangodb.com
@@ -577,4 +578,11 @@ private Request replaceUserRequest(final String user, final UserUpdateOptions op
577578
return request;
578579
}
579580

581+
public Response execute(final Request request) {
582+
return executeSync(request, response -> response);
583+
}
584+
585+
public CompletableFuture<Response> executeAsync(final Request request) {
586+
return executeAsync(request, response -> response);
587+
}
580588
}

src/main/java/com/arangodb/ArangoDatabase.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@
4141
import com.arangodb.internal.ArangoDBConstants;
4242
import com.arangodb.internal.CollectionCache;
4343
import com.arangodb.internal.DocumentCache;
44-
import com.arangodb.internal.net.Communication;
45-
import com.arangodb.internal.net.Request;
46-
import com.arangodb.internal.net.velocystream.RequestType;
44+
import com.arangodb.internal.velocystream.Communication;
4745
import com.arangodb.model.AqlFunctionCreateOptions;
4846
import com.arangodb.model.AqlFunctionDeleteOptions;
4947
import com.arangodb.model.AqlFunctionGetOptions;
@@ -63,6 +61,8 @@
6361
import com.arangodb.velocypack.VPackParser;
6462
import com.arangodb.velocypack.VPackSlice;
6563
import com.arangodb.velocypack.exception.VPackException;
64+
import com.arangodb.velocystream.Request;
65+
import com.arangodb.velocystream.RequestType;
6666

6767
/**
6868
* @author Mark - mark at arangodb.com
@@ -218,7 +218,7 @@ private Request getCollectionsRequest(final CollectionsReadOptions options) {
218218
final Request request;
219219
request = new Request(name(), RequestType.GET, ArangoDBConstants.PATH_API_COLLECTION);
220220
final CollectionsReadOptions params = (options != null ? options : new CollectionsReadOptions());
221-
request.putParameter(ArangoDBConstants.EXCLUDE_SYSTEM, params.getExcludeSystem());
221+
request.putQueryParam(ArangoDBConstants.EXCLUDE_SYSTEM, params.getExcludeSystem());
222222
return request;
223223
}
224224

@@ -620,7 +620,7 @@ private Request deleteAqlFunctionRequest(final String name, final AqlFunctionDel
620620
final Request request = new Request(name(), RequestType.DELETE,
621621
createPath(ArangoDBConstants.PATH_API_AQLFUNCTION, name));
622622
final AqlFunctionDeleteOptions params = options != null ? options : new AqlFunctionDeleteOptions();
623-
request.putParameter(ArangoDBConstants.GROUP, params.getGroup());
623+
request.putQueryParam(ArangoDBConstants.GROUP, params.getGroup());
624624
return request;
625625
}
626626

@@ -658,7 +658,7 @@ public CompletableFuture<Collection<AqlFunctionEntity>> getAqlFunctionsAsync(fin
658658
private Request getAqlFunctionsRequest(final AqlFunctionGetOptions options) {
659659
final Request request = new Request(name(), RequestType.GET, ArangoDBConstants.PATH_API_AQLFUNCTION);
660660
final AqlFunctionGetOptions params = options != null ? options : new AqlFunctionGetOptions();
661-
request.putParameter(ArangoDBConstants.NAMESPACE, params.getNamespace());
661+
request.putQueryParam(ArangoDBConstants.NAMESPACE, params.getNamespace());
662662
return request;
663663
}
664664

0 commit comments

Comments
 (0)