@Override public Object invoke( Object proxy, Method method, Object[] args ) { try { if ( method.getReturnType().equals( Supplier.class ) ) { return dependencyResolver.provideDependency( (Class<?>) ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments()[0] ); } else { return dependencyResolver.resolveDependency( method.getReturnType() ); } } catch ( IllegalArgumentException e ) { throw new UnsatisfiedDependencyException( e ); } } }
@Override public void start() { dependencyResolver = database.getGraph().getDependencyResolver(); authManagerSupplier = dependencyResolver.provideDependency( AuthManager.class ); userManagerSupplier = dependencyResolver.provideDependency( UserManagerSupplier.class ); sslPolicyFactorySupplier = dependencyResolver.provideDependency( SslPolicyLoader.class ); webServer = createWebServer(); for ( ServerModule moduleClass : createServerModules() ) { registerModule( moduleClass ); } } }
private static TransactionIdTracker newTransactionIdTracker( GraphDatabaseAPI db ) { Supplier<TransactionIdStore> transactionIdStoreSupplier = db.getDependencyResolver().provideDependency( TransactionIdStore.class ); AvailabilityGuard guard = resolveDependency( db, DatabaseAvailabilityGuard.class ); return new TransactionIdTracker( transactionIdStoreSupplier, guard ); }
private static TransactionStateMachineV1SPI createTxSpi( Supplier<TransactionIdStore> txIdStore, Duration txAwaitDuration, DatabaseAvailabilityGuard availabilityGuard, Clock clock ) { QueryExecutionEngine queryExecutionEngine = mock( QueryExecutionEngine.class ); DependencyResolver dependencyResolver = mock( DependencyResolver.class ); ThreadToStatementContextBridge bridge = new ThreadToStatementContextBridge( availabilityGuard ); when( dependencyResolver.resolveDependency( ThreadToStatementContextBridge.class ) ).thenReturn( bridge ); when( dependencyResolver.resolveDependency( QueryExecutionEngine.class ) ).thenReturn( queryExecutionEngine ); when( dependencyResolver.resolveDependency( DatabaseAvailabilityGuard.class ) ).thenReturn( availabilityGuard ); when( dependencyResolver.provideDependency( TransactionIdStore.class ) ).thenReturn( txIdStore ); GraphDatabaseAPI db = mock( GraphDatabaseAPI.class ); when( db.getDependencyResolver() ).thenReturn( dependencyResolver ); GraphDatabaseQueryService queryService = mock( GraphDatabaseQueryService.class ); when( queryService.getDependencyResolver() ).thenReturn( dependencyResolver ); when( dependencyResolver.resolveDependency( GraphDatabaseQueryService.class ) ).thenReturn( queryService ); BoltChannel boltChannel = new BoltChannel( "bolt-42", "bolt", new EmbeddedChannel() ); return new TransactionStateMachineV1SPI( db, boltChannel, txAwaitDuration, clock ); } }
@Test public void deprecatedProcedureResultField() throws Exception { db().getDependencyResolver().provideDependency( Procedures.class ).get().registerProcedure( TestProcedures.class ); Stream.of( "CYPHER 3.5" ).forEach( version -> assertNotifications( version + "explain CALL changedProc() YIELD oldField RETURN oldField", containsItem( deprecatedProcedureReturnFieldWarning ) ) ); }
@Test public void deprecatedProcedureCalls() throws Exception { db().getDependencyResolver().provideDependency( Procedures.class ).get().registerProcedure( TestProcedures.class ); Stream.of( "CYPHER 3.1", "CYPHER 3.5" ).forEach( version -> { assertNotifications( version + "explain CALL oldProc()", containsItem( deprecatedProcedureWarning ) ); assertNotifications( version + "explain CALL oldProc() RETURN 1", containsItem( deprecatedProcedureWarning ) ); } ); }
@Override protected Iterable<ServerModule> createServerModules() { return Arrays.asList( createDBMSModule(), new RESTApiModule( webServer, getConfig(), getDependencyResolver().provideDependency( UsageData.class ), userLogProvider ), new ManagementApiModule( webServer, getConfig() ), new ThirdPartyJAXRSModule( webServer, getConfig(), userLogProvider, this ), new ConsoleModule( webServer, getConfig() ), new Neo4jBrowserModule( webServer ), createAuthorizationModule(), new SecurityRulesModule( webServer, getConfig(), userLogProvider ) ); }
@Override public Object invoke( Object proxy, Method method, Object[] args ) { try { if ( method.getReturnType().equals( Supplier.class ) ) { return dependencyResolver.provideDependency( (Class<?>) ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments()[0] ); } else { return dependencyResolver.resolveDependency( method.getReturnType() ); } } catch ( IllegalArgumentException e ) { throw new UnsatisfiedDependencyException( e ); } } }
@Override public void start() { dependencyResolver = database.getGraph().getDependencyResolver(); authManagerSupplier = dependencyResolver.provideDependency( AuthManager.class ); userManagerSupplier = dependencyResolver.provideDependency( UserManagerSupplier.class ); sslPolicyFactorySupplier = dependencyResolver.provideDependency( SslPolicyLoader.class ); webServer = createWebServer(); for ( ServerModule moduleClass : createServerModules() ) { registerModule( moduleClass ); } } }
private static TransactionIdTracker newTransactionIdTracker( GraphDatabaseAPI db ) { Supplier<TransactionIdStore> transactionIdStoreSupplier = db.getDependencyResolver().provideDependency( TransactionIdStore.class ); AvailabilityGuard guard = resolveDependency( db, DatabaseAvailabilityGuard.class ); return new TransactionIdTracker( transactionIdStoreSupplier, guard ); }
@Override protected Iterable<ServerModule> createServerModules() { return Arrays.asList( createDBMSModule(), new RESTApiModule( webServer, getConfig(), getDependencyResolver().provideDependency( UsageData.class ), userLogProvider ), new ManagementApiModule( webServer, getConfig() ), new ThirdPartyJAXRSModule( webServer, getConfig(), userLogProvider, this ), new ConsoleModule( webServer, getConfig() ), new Neo4jBrowserModule( webServer ), createAuthorizationModule(), new SecurityRulesModule( webServer, getConfig(), userLogProvider ) ); }