/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.datastore.neo4j.remote.bolt.impl; import org.hibernate.ogm.datastore.neo4j.logging.impl.Log; import org.hibernate.ogm.datastore.neo4j.logging.impl.LoggerFactory; import org.hibernate.ogm.datastore.neo4j.remote.common.impl.RemoteNeo4jConfiguration; import org.hibernate.ogm.datastore.neo4j.remote.common.impl.RemoteNeo4jDatabaseIdentifier; import org.neo4j.driver.v1.AuthToken; import org.neo4j.driver.v1.AuthTokens; import org.neo4j.driver.v1.Driver; import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.v1.exceptions.Neo4jException; /** * @author Davide D'Alto */ public class BoltNeo4jClient { private static final Log log = LoggerFactory.getLogger(); private final Driver driver; private final String databaseUri; public BoltNeo4jClient(RemoteNeo4jDatabaseIdentifier identifier, RemoteNeo4jConfiguration configuration) { this.databaseUri = identifier.getDatabaseUri(); this.driver = createNeo4jDriver( identifier, configuration ); } private Driver createNeo4jDriver(RemoteNeo4jDatabaseIdentifier identifier, RemoteNeo4jConfiguration configuration) { String uri = identifier.getDatabaseUri(); if ( configuration.isAuthenticationRequired() ) { AuthToken authToken = AuthTokens.basic( configuration.getUsername(), configuration.getPassword() ); return GraphDatabase.driver( uri, authToken ); } else { return GraphDatabase.driver( uri ); } } public void validateConnection() { try { driver.session().close(); } catch (Neo4jException e) { throw log.connectionFailed( databaseUri, e.neo4jErrorCode(), e.getMessage() ); } } public void close() { if ( driver != null ) { driver.close(); } } public Driver getDriver() { return driver; } }