@Override public RawIterator<Object[],ProcedureException> procedureCallDbms( QualifiedName name, Object[] input, DependencyResolver dependencyResolver, SecurityContext securityContext, ResourceTracker resourceTracker ) throws ProcedureException { BasicContext ctx = createContext( securityContext, dependencyResolver ); return procedures.callProcedure( ctx, name, input, resourceTracker ); }
@Override public RawIterator<Object[],ProcedureException> procedureCallDbms( int id, Object[] input, DependencyResolver dependencyResolver, SecurityContext securityContext, ResourceTracker resourceTracker ) throws ProcedureException { BasicContext ctx = createContext( securityContext, dependencyResolver ); return procedures.callProcedure( ctx, id, input, resourceTracker ); }
private List<Object[]> call( String name, Object... args ) throws ProcedureException, IndexNotFoundKernelException { BasicContext ctx = new BasicContext(); ctx.put( KERNEL_TRANSACTION, tx ); ctx.put( DEPENDENCY_RESOLVER, resolver ); ctx.put( GRAPHDATABASEAPI, graphDatabaseAPI ); ctx.put( SECURITY_CONTEXT, SecurityContext.AUTH_DISABLED ); ctx.put( LOG, log ); when( graphDatabaseAPI.getDependencyResolver() ).thenReturn( resolver ); when( resolver.resolveDependency( Procedures.class ) ).thenReturn( procs ); when( resolver.resolveDependency( IndexingService.class ) ).thenReturn( indexingService ); when( schemaRead.indexGetPopulationProgress( any( IndexReference.class) ) ).thenReturn( PopulationProgress.DONE ); return Iterators.asList( procs.callProcedure( ctx, ProcedureSignature.procedureName( name.split( "\\." ) ), args, resourceTracker ) ); } }
@Test public void shouldCallRegisteredProcedure() throws Throwable { // Given procs.register( procedure ); // When RawIterator<Object[], ProcedureException> result = procs.callProcedure( new BasicContext(), signature.name(), new Object[]{1337}, resourceTracker ); // Then assertThat( asList( result ), contains( equalTo( new Object[]{1337} ) ) ); }
private RawIterator<Object[],ProcedureException> callProcedure( QualifiedName name, Object[] input, final AccessMode override ) throws ProcedureException { ktx.assertOpen(); final SecurityContext procedureSecurityContext = ktx.securityContext().withMode( override ); final RawIterator<Object[],ProcedureException> procedureCall; try ( KernelTransaction.Revertable ignore = ktx.overrideWith( procedureSecurityContext ); Statement statement = ktx.acquireStatement() ) { procedureCall = procedures .callProcedure( prepareContext( procedureSecurityContext ), name, input, statement ); } return createIterator( procedureSecurityContext, procedureCall ); }
private RawIterator<Object[],ProcedureException> callProcedure( int id, Object[] input, final AccessMode override ) throws ProcedureException { ktx.assertOpen(); final SecurityContext procedureSecurityContext = ktx.securityContext().withMode( override ); final RawIterator<Object[],ProcedureException> procedureCall; try ( KernelTransaction.Revertable ignore = ktx.overrideWith( procedureSecurityContext ); Statement statement = ktx.acquireStatement() ) { procedureCall = procedures .callProcedure( prepareContext( procedureSecurityContext ), id, input, statement ); } return createIterator( procedureSecurityContext, procedureCall ); }
@Test public void shouldNotAllowCallingNonExistingProcedure() throws Throwable { // Expect exception.expect( ProcedureException.class ); exception.expectMessage( "There is no procedure with the name `org.myproc` registered for this " + "database instance. Please ensure you've spelled the " + "procedure name correctly and that the procedure is properly deployed." ); // When procs.callProcedure( new BasicContext(), signature.name(), new Object[]{1337}, resourceTracker ); }
@Test public void shouldMakeContextAvailable() throws Throwable { // Given Key<String> someKey = key("someKey", String.class); procs.register( new CallableProcedure.BasicProcedure( signature ) { @Override public RawIterator<Object[], ProcedureException> apply( Context ctx, Object[] input, ResourceTracker resourceTracker ) throws ProcedureException { return RawIterator.<Object[], ProcedureException>of( new Object[]{ctx.get( someKey )} ); } } ); BasicContext ctx = new BasicContext(); ctx.put( someKey, "hello, world" ); // When RawIterator<Object[], ProcedureException> result = procs.callProcedure( ctx, signature.name(), new Object[0], resourceTracker ); // Then assertThat( asList( result ), contains( equalTo( new Object[]{ "hello, world" } ) ) ); }
@Override public RawIterator<Object[],ProcedureException> procedureCallDbms( QualifiedName name, Object[] input, DependencyResolver dependencyResolver, SecurityContext securityContext, ResourceTracker resourceTracker ) throws ProcedureException { BasicContext ctx = createContext( securityContext, dependencyResolver ); return procedures.callProcedure( ctx, name, input, resourceTracker ); }
@Override public RawIterator<Object[],ProcedureException> procedureCallDbms( int id, Object[] input, DependencyResolver dependencyResolver, SecurityContext securityContext, ResourceTracker resourceTracker ) throws ProcedureException { BasicContext ctx = createContext( securityContext, dependencyResolver ); return procedures.callProcedure( ctx, id, input, resourceTracker ); }
private RawIterator<Object[],ProcedureException> callProcedure( QualifiedName name, Object[] input, final AccessMode override ) throws ProcedureException { ktx.assertOpen(); final SecurityContext procedureSecurityContext = ktx.securityContext().withMode( override ); final RawIterator<Object[],ProcedureException> procedureCall; try ( KernelTransaction.Revertable ignore = ktx.overrideWith( procedureSecurityContext ); Statement statement = ktx.acquireStatement() ) { procedureCall = procedures .callProcedure( prepareContext( procedureSecurityContext ), name, input, statement ); } return createIterator( procedureSecurityContext, procedureCall ); }
private RawIterator<Object[],ProcedureException> callProcedure( int id, Object[] input, final AccessMode override ) throws ProcedureException { ktx.assertOpen(); final SecurityContext procedureSecurityContext = ktx.securityContext().withMode( override ); final RawIterator<Object[],ProcedureException> procedureCall; try ( KernelTransaction.Revertable ignore = ktx.overrideWith( procedureSecurityContext ); Statement statement = ktx.acquireStatement() ) { procedureCall = procedures .callProcedure( prepareContext( procedureSecurityContext ), id, input, statement ); } return createIterator( procedureSecurityContext, procedureCall ); }