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

com.lordofthejars.nosqlunit.couchdb.CouchDbConnectorFactory Maven / Gradle / Ivy

The newest version!
package com.lordofthejars.nosqlunit.couchdb;

import java.net.MalformedURLException;
import org.ektorp.CouchDbConnector;
import org.ektorp.CouchDbInstance;
import org.ektorp.http.StdHttpClient;
import org.ektorp.impl.StdCouchDbInstance;

public class CouchDbConnectorFactory {

    public static CouchDbConnector couchDbConnector(CouchDbConfiguration configuration) {

        if (!configuration.isDatabaseNameSet()) {
            throw new IllegalArgumentException("Database name should be provided.");
        }

        StdHttpClient.Builder httpBuilder = couchDbHttpClient(configuration);
        return couchDbConnector(configuration, httpBuilder);
    }

    private static CouchDbConnector couchDbConnector(CouchDbConfiguration configuration,
        StdHttpClient.Builder httpBuilder) {
        CouchDbInstance dbInstance = new StdCouchDbInstance(httpBuilder.build());
        return dbInstance.createConnector(configuration.getDatabaseName(), true);
    }

    private static StdHttpClient.Builder couchDbHttpClient(CouchDbConfiguration configuration) {
        StdHttpClient.Builder httpBuilder = new StdHttpClient.Builder();

        try {
            httpBuilder.url(configuration.getUrl()).caching(configuration.isCaching())
                .enableSSL(configuration.isEnableSsl()).relaxedSSLSettings(configuration.isRelaxedSsl());
        } catch (MalformedURLException e) {
            throw new IllegalArgumentException(e);
        }

        if (configuration.isUsernameSet()) {
            httpBuilder.username(configuration.getUsername());
        }

        if (configuration.isPasswordSet()) {
            httpBuilder.password(configuration.getPassword());
        }

        if (configuration.isSslServerSocketSet()) {
            httpBuilder.sslSocketFactory(configuration.getSslSocketFactory());
        }
        return httpBuilder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy