All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.quarkus.mongodb.impl.ReactiveMongoClientImpl Maven / Gradle / Ivy

package io.quarkus.mongodb.impl;

import java.util.List;
import java.util.concurrent.CompletionStage;

import org.bson.Document;
import org.bson.conversions.Bson;
import org.eclipse.microprofile.reactive.streams.operators.PublisherBuilder;
import org.reactivestreams.Publisher;

import com.mongodb.ClientSessionOptions;
import com.mongodb.client.model.changestream.ChangeStreamDocument;
import com.mongodb.reactivestreams.client.ChangeStreamPublisher;
import com.mongodb.reactivestreams.client.ClientSession;
import com.mongodb.reactivestreams.client.ListDatabasesPublisher;
import com.mongodb.reactivestreams.client.MongoClient;

import io.quarkus.mongodb.ChangeStreamOptions;
import io.quarkus.mongodb.DatabaseListOptions;
import io.quarkus.mongodb.ReactiveMongoClient;
import io.quarkus.mongodb.ReactiveMongoDatabase;

public class ReactiveMongoClientImpl implements ReactiveMongoClient {

    private final MongoClient client;

    public ReactiveMongoClientImpl(MongoClient client) {
        this.client = client;
    }

    @Override
    public ReactiveMongoDatabase getDatabase(String name) {
        return new ReactiveMongoDatabaseImpl(client.getDatabase(name));
    }

    @Override
    public void close() {
        client.close();
    }

    @Override
    public PublisherBuilder listDatabaseNames() {
        return Wrappers.toPublisherBuilder(client.listDatabaseNames());
    }

    @Override
    public Publisher listDatabaseNamesAsPublisher() {
        return client.listDatabaseNames();
    }

    @Override
    public PublisherBuilder listDatabaseNames(ClientSession clientSession) {
        return Wrappers.toPublisherBuilder(client.listDatabaseNames(clientSession));
    }

    @Override
    public Publisher listDatabaseNamesAsPublisher(ClientSession clientSession) {
        return client.listDatabaseNames(clientSession);
    }

    @Override
    public ListDatabasesPublisher listDatabasesAsPublisher() {
        return client.listDatabases();
    }

    @Override
    public PublisherBuilder listDatabases() {
        return Wrappers.toPublisherBuilder(client.listDatabases());
    }

    @Override
    public PublisherBuilder listDatabases(DatabaseListOptions options) {
        if (options != null) {
            ListDatabasesPublisher publisher = apply(options, client.listDatabases());
            return Wrappers.toPublisherBuilder(publisher);
        } else {
            return listDatabases();
        }
    }

    private  ListDatabasesPublisher apply(DatabaseListOptions options, ListDatabasesPublisher publisher) {
        if (options == null) {
            return publisher;
        }
        return options.apply(publisher);
    }

    private  ChangeStreamPublisher apply(ChangeStreamOptions options, ChangeStreamPublisher publisher) {
        if (options == null) {
            return publisher;
        }
        return options.apply(publisher);
    }

    @Override
    public  ListDatabasesPublisher listDatabasesAsPublisher(Class clazz) {
        return client.listDatabases(clazz);
    }

    @Override
    public  PublisherBuilder listDatabases(Class clazz) {
        return Wrappers.toPublisherBuilder(client.listDatabases(clazz));
    }

    @Override
    public  PublisherBuilder listDatabases(Class clazz, DatabaseListOptions options) {
        if (options != null) {
            ListDatabasesPublisher publisher = apply(options, client.listDatabases(clazz));
            return Wrappers.toPublisherBuilder(publisher);
        } else {
            return listDatabases(clazz);
        }
    }

    @Override
    public ListDatabasesPublisher listDatabasesAsPublisher(ClientSession clientSession) {
        return client.listDatabases(clientSession);
    }

    @Override
    public PublisherBuilder listDatabases(ClientSession clientSession) {
        return Wrappers.toPublisherBuilder(client.listDatabases(clientSession));
    }

    @Override
    public PublisherBuilder listDatabases(ClientSession clientSession, DatabaseListOptions options) {
        ListDatabasesPublisher publisher = apply(options, client.listDatabases(clientSession));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public  ListDatabasesPublisher listDatabasesAsPublisher(ClientSession clientSession, Class clazz) {
        return client.listDatabases(clientSession, clazz);
    }

    @Override
    public  PublisherBuilder listDatabases(ClientSession clientSession, Class clazz) {
        return Wrappers.toPublisherBuilder(client.listDatabases(clientSession, clazz));
    }

    @Override
    public  PublisherBuilder listDatabases(ClientSession clientSession, Class clazz, DatabaseListOptions options) {
        return Wrappers.toPublisherBuilder(apply(options, client.listDatabases(clientSession, clazz)));
    }

    @Override
    public ChangeStreamPublisher watchAsPublisher() {
        return client.watch();
    }

    @Override
    public PublisherBuilder> watch() {
        return Wrappers.toPublisherBuilder(client.watch());
    }

    @Override
    public PublisherBuilder> watch(ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch());
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public  ChangeStreamPublisher watchAsPublisher(Class clazz) {
        return client.watch(clazz);
    }

    @Override
    public  PublisherBuilder> watch(Class clazz) {
        return Wrappers.toPublisherBuilder(client.watch(clazz));
    }

    @Override
    public  PublisherBuilder> watch(Class clazz, ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(clazz));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public ChangeStreamPublisher watchAsPublisher(List pipeline) {
        return client.watch(pipeline);
    }

    @Override
    public PublisherBuilder> watch(List pipeline) {
        return Wrappers.toPublisherBuilder(client.watch(pipeline));
    }

    @Override
    public PublisherBuilder> watch(List pipeline, ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(pipeline));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public  ChangeStreamPublisher watchAsPublisher(List pipeline, Class clazz) {
        return client.watch(pipeline, clazz);
    }

    @Override
    public  PublisherBuilder> watch(List pipeline, Class clazz) {
        return Wrappers.toPublisherBuilder(client.watch(pipeline, clazz));
    }

    @Override
    public  PublisherBuilder> watch(List pipeline, Class clazz,
            ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(pipeline, clazz));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public ChangeStreamPublisher watchAsPublisher(ClientSession clientSession) {
        return client.watch(clientSession);
    }

    @Override
    public PublisherBuilder> watch(ClientSession clientSession) {
        return Wrappers.toPublisherBuilder(client.watch(clientSession));
    }

    @Override
    public PublisherBuilder> watch(ClientSession clientSession, ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(clientSession));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public  ChangeStreamPublisher watchAsPublisher(ClientSession clientSession, Class clazz) {
        return client.watch(clientSession, clazz);
    }

    @Override
    public  PublisherBuilder> watch(ClientSession clientSession, Class clazz) {
        return Wrappers.toPublisherBuilder(client.watch(clientSession, clazz));
    }

    @Override
    public  PublisherBuilder> watch(ClientSession clientSession, Class clazz,
            ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(clientSession, clazz));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public ChangeStreamPublisher watchAsPublisher(ClientSession clientSession, List pipeline) {
        return client.watch(clientSession, pipeline);
    }

    @Override
    public PublisherBuilder> watch(ClientSession clientSession,
            List pipeline) {
        return Wrappers.toPublisherBuilder(client.watch(clientSession, pipeline));
    }

    @Override
    public PublisherBuilder> watch(ClientSession clientSession, List pipeline,
            ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(clientSession, pipeline));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public  ChangeStreamPublisher watchAsPublisher(ClientSession clientSession, List pipeline,
            Class clazz) {
        return client.watch(clientSession, pipeline, clazz);
    }

    @Override
    public  PublisherBuilder> watch(ClientSession clientSession, List pipeline,
            Class clazz) {
        return Wrappers.toPublisherBuilder(client.watch(clientSession, pipeline, clazz));
    }

    @Override
    public  PublisherBuilder> watch(ClientSession clientSession, List pipeline,
            Class clazz, ChangeStreamOptions options) {
        ChangeStreamPublisher publisher = apply(options, client.watch(clientSession, pipeline, clazz));
        return Wrappers.toPublisherBuilder(publisher);
    }

    @Override
    public CompletionStage startSession() {
        return Wrappers.toCompletionStage(client.startSession());
    }

    @Override
    public CompletionStage startSession(ClientSessionOptions options) {
        return Wrappers.toCompletionStage(client.startSession(options));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy