@Test public void shouldLoadProcedureWithArgumentFromJar() throws Throwable { // Given URL jar = createJarFor( ClassWithProcedureWithArgument.class ); // When List<CallableProcedure> procedures = jarloader.loadProceduresFromDir( parentDir( jar ) ).procedures(); // Then List<ProcedureSignature> signatures = procedures.stream().map( CallableProcedure::signature ).collect( toList() ); assertThat( signatures, contains( procedureSignature( "org","neo4j", "kernel", "impl", "proc", "myProcedure" ) .in( "value", NTInteger ) .out( "someNumber", NTInteger ) .build() )); assertThat( asList(procedures.get( 0 ).apply( new BasicContext(), new Object[]{42L}, resourceTracker ) ), contains( IsEqual.equalTo( new Object[]{42L} )) ); }
public InstalledProtocolsProcedure( Supplier<Stream<Pair<AdvertisedSocketAddress,ProtocolStack>>> clientInstalledProtocols, Supplier<Stream<Pair<SocketAddress,ProtocolStack>>> serverInstalledProtocols ) { super( ProcedureSignature.procedureSignature( new QualifiedName( PROCEDURE_NAMESPACE, PROCEDURE_NAME ) ) .out( "orientation", Neo4jTypes.NTString ) .out( "remoteAddress", Neo4jTypes.NTString ) .out( "applicationProtocol", Neo4jTypes.NTString ) .out( "applicationProtocolVersion", Neo4jTypes.NTInteger ) .out( "modifierProtocols", Neo4jTypes.NTString ) .description( "Overview of installed protocols" ) .build() ); this.clientInstalledProtocols = clientInstalledProtocols; this.serverInstalledProtocols = serverInstalledProtocols; }
public static Builder procedureSignature( String[] namespace, String name ) { return new Builder( namespace, name ); }
public ListComponentsProcedure( QualifiedName name, String neo4jVersion, String neo4jEdition ) { super( procedureSignature( name ) .out( "name", NTString ) // Since Bolt, Cypher and other components support multiple versions // at the same time, list of versions rather than single version. .out( "versions", NTList( NTString ) ) .out( "edition", NTString ) .mode( Mode.DBMS ) .description( "List DBMS components and their versions." ) .build() ); this.neo4jVersion = neo4jVersion; this.neo4jEdition = neo4jEdition; }
public static Builder procedureSignature( QualifiedName name ) { return new Builder( name.namespace(), name.name() ); }
public ClusterOverviewProcedure( TopologyService topologyService, LogProvider logProvider ) { super( procedureSignature( new QualifiedName( PROCEDURE_NAMESPACE, PROCEDURE_NAME ) ) .out( "id", Neo4jTypes.NTString ) .out( "addresses", Neo4jTypes.NTList( Neo4jTypes.NTString ) ) .out( "role", Neo4jTypes.NTString ) .out( "groups", Neo4jTypes.NTList( Neo4jTypes.NTString ) ) .out( "database", Neo4jTypes.NTString ) .description( "Overview of all currently accessible cluster members and their roles." ) .build() ); this.topologyService = topologyService; this.log = logProvider.getLog( getClass() ); }
public static QualifiedName procedureName( String... namespaceAndName ) { return procedureSignature( namespaceAndName ).build().name(); } }
RoleProcedure() { super( procedureSignature( new QualifiedName( PROCEDURE_NAMESPACE, PROCEDURE_NAME ) ) .out( OUTPUT_NAME, Neo4jTypes.NTString ) .description( "The role of a specific instance in the cluster." ) .build() ); }
public JmxQueryProcedure( QualifiedName name, MBeanServer jmxServer ) { super( procedureSignature( name ) .in( "query", Neo4jTypes.NTString ) .out( "name", Neo4jTypes.NTString ) .out( "description", Neo4jTypes.NTString ) .out( "attributes", Neo4jTypes.NTMap ) .mode( Mode.DBMS ) .description( "Query JMX management data by domain and name. For instance, \"org.neo4j:*\"" ) .build() ); this.jmxServer = jmxServer; }
private static void installSleepProcedure( GraphDatabaseService db ) throws ProcedureException { GraphDatabaseAPI dbApi = (GraphDatabaseAPI) db; dbApi.getDependencyResolver().resolveDependency( Procedures.class ).register( new CallableProcedure.BasicProcedure( procedureSignature( "boltissue", "sleep" ) .in( "data", Neo4jTypes.NTString ) .out( ProcedureSignature.VOID ) .build() ) { @Override public RawIterator<Object[],ProcedureException> apply( Context context, Object[] objects, ResourceTracker resourceTracker ) throws ProcedureException { try { Thread.sleep( 50 ); } catch ( InterruptedException e ) { throw new ProcedureException( Status.General.UnknownError, e, "Interrupted" ); } return RawIterator.empty(); } } ); }
@Test public void shouldGetAllProcedures() throws Throwable { // Given internalKernel().registerProcedure( procedure ); internalKernel().registerProcedure( procedure( procedureSignature( "example", "exampleProc2" ).out( "name", NTString ).build() ) ); internalKernel().registerProcedure( procedure( procedureSignature( "example", "exampleProc3" ).out( "name", NTString ).build() ) ); // When List<ProcedureSignature> signatures = Iterables.asList( newTransaction().procedures().proceduresGetAll() ); // Then assertThat( signatures, hasItems( procedure.signature(), procedureSignature( "example", "exampleProc2" ).out( "name", NTString ).build(), procedureSignature( "example", "exampleProc3" ).out( "name", NTString ).build() ) ); commit(); }
@Test public void shouldLoadProcedureFromJarWithSpacesInFilename() throws Throwable { // Given URL jar = new JarBuilder().createJarFor( tmpdir.newFile( new Random().nextInt() + " some spaces in filename.jar" ), ClassWithOneProcedure.class); // When List<CallableProcedure> procedures = jarloader.loadProceduresFromDir( parentDir( jar ) ).procedures(); // Then List<ProcedureSignature> signatures = procedures.stream().map( CallableProcedure::signature ).collect( toList() ); assertThat( signatures, contains( procedureSignature( "org", "neo4j", "kernel", "impl", "proc", "myProcedure" ).out( "someNumber", NTInteger ).build() ) ); assertThat( asList( procedures.get( 0 ).apply( new BasicContext(), new Object[0], resourceTracker ) ), contains( IsEqual.equalTo( new Object[]{1337L} ) ) ); }
@Test public void shouldGetAllRegisteredProcedures() throws Throwable { // When procs.register( procedure( procedureSignature( "org", "myproc1" ).out( "age", NTInteger ).build() ) ); procs.register( procedure( procedureSignature( "org", "myproc2" ).out( "age", NTInteger ).build() ) ); procs.register( procedure( procedureSignature( "org", "myproc3" ).out( "age", NTInteger ).build() ) ); // Then List<ProcedureSignature> signatures = Iterables.asList( procs.getAllProcedures() ); assertThat( signatures, containsInAnyOrder( procedureSignature( "org", "myproc1" ).out( "age", NTInteger ).build(), procedureSignature( "org", "myproc2" ).out( "age", NTInteger ).build(), procedureSignature( "org", "myproc3" ).out( "age", NTInteger ).build() ) ); }
@Test public void shouldLoadProceduresFromDirectory() throws Throwable { // Given createJarFor( ClassWithOneProcedure.class ); createJarFor( ClassWithAnotherProcedure.class ); // When List<CallableProcedure> procedures = jarloader.loadProceduresFromDir( tmpdir.getRoot() ).procedures(); // Then List<ProcedureSignature> signatures = procedures.stream().map( CallableProcedure::signature ).collect( toList() ); assertThat( signatures, containsInAnyOrder( procedureSignature( "org","neo4j", "kernel", "impl", "proc", "myOtherProcedure" ).out( "someNumber", NTInteger ).build(), procedureSignature( "org","neo4j", "kernel", "impl", "proc", "myProcedure" ).out( "someNumber", NTInteger ).build() )); }
@Test public void toStringForVoidProcedureShouldMatchCypherSyntax() { // Given ProcedureSignature proc = procedureSignature( "org", "myProcedure" ) .in( "inputArg", Neo4jTypes.NTList( Neo4jTypes.NTString ) ) .out( ProcedureSignature.VOID ) .build(); // When String toStr = proc.toString(); // Then assertEquals( "org.myProcedure(inputArg :: LIST? OF STRING?) :: VOID", toStr ); } }
public ListComponentsProcedure( QualifiedName name, String neo4jVersion, String neo4jEdition ) { super( procedureSignature( name ) .out( "name", NTString ) // Since Bolt, Cypher and other components support multiple versions // at the same time, list of versions rather than single version. .out( "versions", NTList( NTString ) ) .out( "edition", NTString ) .mode( Mode.DBMS ) .description( "List DBMS components and their versions." ) .build() ); this.neo4jVersion = neo4jVersion; this.neo4jEdition = neo4jEdition; }
@Test public void shouldLoadProcedureFromJar() throws Throwable { // Given URL jar = createJarFor( ClassWithOneProcedure.class ); // When List<CallableProcedure> procedures = jarloader.loadProceduresFromDir( parentDir( jar ) ).procedures(); // Then List<ProcedureSignature> signatures = procedures.stream().map( CallableProcedure::signature ).collect( toList() ); assertThat( signatures, contains( procedureSignature( "org","neo4j", "kernel", "impl", "proc", "myProcedure" ).out( "someNumber", NTInteger ).build() )); assertThat( asList( procedures.get( 0 ).apply( new BasicContext(), new Object[0], resourceTracker ) ), contains( IsEqual.equalTo( new Object[]{1337L} )) ); }
public static Builder procedureSignature( QualifiedName name ) { return new Builder( name.namespace(), name.name() ); }
public static Builder procedureSignature( String[] namespace, String name ) { return new Builder( namespace, name ); }
public static QualifiedName procedureName( String... namespaceAndName ) { return procedureSignature( namespaceAndName ).build().name(); } }