
com.arangodb.internal.ArangoDBAsyncImpl Maven / Gradle / Ivy
/*
* DISCLAIMER
*
* Copyright 2016 ArangoDB GmbH, Cologne, Germany
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright holder is ArangoDB GmbH, Cologne, Germany
*/
package com.arangodb.internal;
import com.arangodb.*;
import com.arangodb.entity.*;
import com.arangodb.internal.serde.SerdeUtils;
import com.arangodb.model.*;
import java.util.Collection;
import java.util.concurrent.CompletableFuture;
/**
* @author Mark Vollmary
* @author Heiko Kernbach
* @author Michele Rastelli
*/
public class ArangoDBAsyncImpl extends InternalArangoDB implements ArangoDBAsync {
private final ArangoDB arangoDB;
public ArangoDBAsyncImpl(final ArangoDBImpl arangoDB) {
super(arangoDB);
this.arangoDB = arangoDB;
}
@Override
public void shutdown() {
arangoDB.shutdown();
}
@Override
public void updateJwt(String jwt) {
arangoDB.updateJwt(jwt);
}
@Override
public ArangoDatabaseAsync db() {
return db(ArangoRequestParam.SYSTEM);
}
@Override
public ArangoDatabaseAsync db(final String dbName) {
return new ArangoDatabaseAsyncImpl(this, dbName);
}
@Override
public ArangoMetrics metrics() {
return new ArangoMetricsImpl(executorAsync().getQueueTimeMetrics());
}
@Override
public CompletableFuture createDatabase(final String dbName) {
return createDatabase(new DBCreateOptions().name(dbName));
}
@Override
public CompletableFuture createDatabase(DBCreateOptions options) {
return executorAsync().execute(() -> createDatabaseRequest(options), createDatabaseResponseDeserializer());
}
@Override
public CompletableFuture> getDatabases() {
return executorAsync().execute(() -> getDatabasesRequest(ArangoRequestParam.SYSTEM), getDatabaseResponseDeserializer());
}
@Override
public CompletableFuture> getAccessibleDatabases() {
return db().getAccessibleDatabases();
}
@Override
public CompletableFuture> getAccessibleDatabasesFor(final String user) {
return executorAsync().execute(() -> getAccessibleDatabasesForRequest(ArangoRequestParam.SYSTEM, user),
getAccessibleDatabasesForResponseDeserializer());
}
@Override
public CompletableFuture getVersion() {
return db().getVersion();
}
@Override
public CompletableFuture getEngine() {
return db().getEngine();
}
@Override
public CompletableFuture getRole() {
return executorAsync().execute(this::getRoleRequest, getRoleResponseDeserializer());
}
@Override
public CompletableFuture getServerId() {
return executorAsync().execute(this::getServerIdRequest, getServerIdResponseDeserializer());
}
@Override
public CompletableFuture createUser(final String user, final String passwd) {
return executorAsync().execute(() -> createUserRequest(ArangoRequestParam.SYSTEM, user, passwd, new UserCreateOptions()),
UserEntity.class);
}
@Override
public CompletableFuture createUser(final String user, final String passwd, final UserCreateOptions options) {
return executorAsync().execute(() -> createUserRequest(ArangoRequestParam.SYSTEM, user, passwd, options), UserEntity.class);
}
@Override
public CompletableFuture deleteUser(final String user) {
return executorAsync().execute(() -> deleteUserRequest(ArangoRequestParam.SYSTEM, user), Void.class);
}
@Override
public CompletableFuture getUser(final String user) {
return executorAsync().execute(() -> getUserRequest(ArangoRequestParam.SYSTEM, user), UserEntity.class);
}
@Override
public CompletableFuture> getUsers() {
return executorAsync().execute(() -> getUsersRequest(ArangoRequestParam.SYSTEM), getUsersResponseDeserializer());
}
@Override
public CompletableFuture updateUser(final String user, final UserUpdateOptions options) {
return executorAsync().execute(() -> updateUserRequest(ArangoRequestParam.SYSTEM, user, options), UserEntity.class);
}
@Override
public CompletableFuture replaceUser(final String user, final UserUpdateOptions options) {
return executorAsync().execute(() -> replaceUserRequest(ArangoRequestParam.SYSTEM, user, options), UserEntity.class);
}
@Override
public CompletableFuture grantDefaultDatabaseAccess(final String user, final Permissions permissions) {
return executorAsync().execute(() -> updateUserDefaultDatabaseAccessRequest(user, permissions), Void.class);
}
@Override
public CompletableFuture grantDefaultCollectionAccess(final String user, final Permissions permissions) {
return executorAsync().execute(() -> updateUserDefaultCollectionAccessRequest(user, permissions), Void.class);
}
@Override
public CompletableFuture> execute(Request> request, Class type) {
return executorAsync().execute(() -> executeRequest(request), responseDeserializer(type));
}
@Override
public CompletableFuture getLogEntries(final LogOptions options) {
return executorAsync().execute(() -> getLogEntriesRequest(options), LogEntriesEntity.class);
}
@Override
public CompletableFuture getLogLevel() {
return getLogLevel(new LogLevelOptions());
}
@Override
public CompletableFuture getLogLevel(final LogLevelOptions options) {
return executorAsync().execute(() -> getLogLevelRequest(options), LogLevelEntity.class);
}
@Override
public CompletableFuture setLogLevel(final LogLevelEntity entity) {
return setLogLevel(entity, new LogLevelOptions());
}
@Override
public CompletableFuture setLogLevel(final LogLevelEntity entity, final LogLevelOptions options) {
return executorAsync().execute(() -> setLogLevelRequest(entity, options), LogLevelEntity.class);
}
@Override
public CompletableFuture resetLogLevels(LogLevelOptions options) {
return executorAsync().execute(() -> resetLogLevelsRequest(options), LogLevelEntity.class);
}
@Override
public CompletableFuture> getQueryOptimizerRules() {
return executorAsync().execute(this::getQueryOptimizerRulesRequest, SerdeUtils.constructListType(QueryOptimizerRule.class));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy