@Test public void shouldUsePickTheEngineWithLowestPriority() { // Given QueryEngineProvider provider1 = mock( QueryEngineProvider.class ); QueryEngineProvider provider2 = mock( QueryEngineProvider.class ); when( provider1.enginePriority() ).thenReturn( 1 ); when( provider2.enginePriority() ).thenReturn( 2 ); Dependencies deps = new Dependencies(); GraphDatabaseAPI graphAPI = mock( GraphDatabaseAPI.class ); QueryExecutionEngine executionEngine = mock( QueryExecutionEngine.class ); QueryExecutionEngine executionEngine2 = mock( QueryExecutionEngine.class ); when( provider1.createEngine( any(), any() ) ).thenReturn( executionEngine ); when( provider2.createEngine( any(), any() ) ).thenReturn( executionEngine2 ); // When Iterable<QueryEngineProvider> providers = Iterables.asIterable( provider1, provider2 ); QueryExecutionEngine engine = QueryEngineProvider.initialize( deps, graphAPI, providers ); // Then assertSame( executionEngine, engine ); }
public static QueryExecutionEngine initialize( Dependencies deps, GraphDatabaseAPI graphAPI, Iterable<QueryEngineProvider> providers ) { List<QueryEngineProvider> engineProviders = asList( providers ); engineProviders.sort( Comparator.comparingInt( QueryEngineProvider::enginePriority ) ); QueryEngineProvider provider = Iterables.firstOrNull( engineProviders ); if ( provider == null ) { return noEngine(); } QueryExecutionEngine engine = provider.createEngine( deps, graphAPI ); return deps.satisfyDependency( engine ); }
dataSourceDependencies.satisfyDependency( storageEngine ); executionEngine = QueryEngineProvider.initialize( dataSourceDependencies, facade, engineProviders );
dataSourceDependencies.satisfyDependency( storageEngine ); executionEngine = QueryEngineProvider.initialize( dataSourceDependencies, facade, engineProviders );
@Test public void shouldPickTheOneAndOnlyQueryEngineAvailable() { // Given QueryEngineProvider provider = mock( QueryEngineProvider.class ); when( provider.enginePriority() ).thenReturn( 1 ); Dependencies deps = new Dependencies(); GraphDatabaseAPI graphAPI = mock( GraphDatabaseAPI.class ); QueryExecutionEngine executionEngine = mock( QueryExecutionEngine.class ); when( provider.createEngine( any(), any() ) ).thenReturn( executionEngine ); // When Iterable<QueryEngineProvider> providers = Iterables.asIterable( provider ); QueryExecutionEngine engine = QueryEngineProvider.initialize( deps, graphAPI, providers ); // Then assertSame( executionEngine, engine ); } }
public static QueryExecutionEngine initialize( Dependencies deps, GraphDatabaseAPI graphAPI, Iterable<QueryEngineProvider> providers ) { List<QueryEngineProvider> engineProviders = asList( providers ); engineProviders.sort( Comparator.comparingInt( QueryEngineProvider::enginePriority ) ); QueryEngineProvider provider = Iterables.firstOrNull( engineProviders ); if ( provider == null ) { return noEngine(); } QueryExecutionEngine engine = provider.createEngine( deps, graphAPI ); return deps.satisfyDependency( engine ); }