Search in sources :

Example 11 with ProcedureSignature

use of org.neo4j.internal.kernel.api.procs.ProcedureSignature in project neo4j by neo4j.

the class TokenHoldersIdLookupTest method setup.

@BeforeAll
static void setup() throws KernelException {
    GlobalProcedures procs = new GlobalProceduresRegistry();
    procs.registerProcedure(TestProcedures.class);
    procs.registerFunction(TestProcedures.class);
    procs.registerAggregationFunction(TestProcedures.class);
    procName2id = new HashMap<>();
    for (ProcedureSignature signature : procs.getAllProcedures()) {
        QualifiedName name = signature.name();
        ProcedureHandle procedure = procs.procedure(name);
        procName2id.put(name.toString(), procedure.id());
    }
    funcName2id = new HashMap<>();
    procs.getAllNonAggregatingFunctions().forEach(signature -> {
        QualifiedName name = signature.name();
        UserFunctionHandle function = procs.function(name);
        funcName2id.put(name.toString(), function.id());
    });
    procs.getAllAggregatingFunctions().forEach(signature -> {
        QualifiedName name = signature.name();
        UserFunctionHandle function = procs.aggregationFunction(name);
        funcName2id.put(name.toString(), function.id());
    });
    idLookup = new TokenHoldersIdLookup(mockedTokenHolders(), procs);
}
Also used : ProcedureSignature(org.neo4j.internal.kernel.api.procs.ProcedureSignature) ProcedureHandle(org.neo4j.internal.kernel.api.procs.ProcedureHandle) GlobalProceduresRegistry(org.neo4j.procedure.impl.GlobalProceduresRegistry) UserFunctionHandle(org.neo4j.internal.kernel.api.procs.UserFunctionHandle) QualifiedName(org.neo4j.internal.kernel.api.procs.QualifiedName) GlobalProcedures(org.neo4j.kernel.api.procedure.GlobalProcedures) BeforeAll(org.junit.jupiter.api.BeforeAll)

Example 12 with ProcedureSignature

use of org.neo4j.internal.kernel.api.procs.ProcedureSignature in project neo4j by neo4j.

the class ProceduresKernelIT method shouldGetProcedureByName.

@Test
void shouldGetProcedureByName() throws Throwable {
    // Given
    internalKernel().registerProcedure(procedure);
    // When
    ProcedureSignature found = procs().procedureGet(new QualifiedName(new String[] { "example" }, "exampleProc")).signature();
    // Then
    assertThat(found).isEqualTo(signature);
    commit();
}
Also used : ProcedureSignature(org.neo4j.internal.kernel.api.procs.ProcedureSignature) QualifiedName(org.neo4j.internal.kernel.api.procs.QualifiedName) Test(org.junit.jupiter.api.Test)

Example 13 with ProcedureSignature

use of org.neo4j.internal.kernel.api.procs.ProcedureSignature in project neo4j by neo4j.

the class ProcedureJarLoaderTest method shouldLoadProcedureFromJar.

@Test
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).containsExactly(procedureSignature("org", "neo4j", "procedure", "impl", "myProcedure").out("someNumber", NTInteger).build());
    assertThat(asList(procedures.get(0).apply(prepareContext(), new AnyValue[0], EMPTY_RESOURCE_TRACKER))).containsExactly(new AnyValue[] { Values.longValue(1337L) });
}
Also used : ProcedureSignature(org.neo4j.internal.kernel.api.procs.ProcedureSignature) AnyValue(org.neo4j.values.AnyValue) CallableProcedure(org.neo4j.kernel.api.procedure.CallableProcedure) URL(java.net.URL) Test(org.junit.jupiter.api.Test)

Example 14 with ProcedureSignature

use of org.neo4j.internal.kernel.api.procs.ProcedureSignature in project neo4j by neo4j.

the class ProcedureJarLoaderTest method shouldLoadProcedureFromJarWithSpacesInFilename.

@Test
void shouldLoadProcedureFromJarWithSpacesInFilename() throws Throwable {
    // Given
    URL jar = new JarBuilder().createJarFor(testDirectory.createFile(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).containsExactly(procedureSignature("org", "neo4j", "procedure", "impl", "myProcedure").out("someNumber", NTInteger).build());
    assertThat(asList(procedures.get(0).apply(prepareContext(), new AnyValue[0], EMPTY_RESOURCE_TRACKER))).containsExactly(new AnyValue[] { Values.longValue(1337L) });
}
Also used : ProcedureSignature(org.neo4j.internal.kernel.api.procs.ProcedureSignature) Random(java.util.Random) AnyValue(org.neo4j.values.AnyValue) CallableProcedure(org.neo4j.kernel.api.procedure.CallableProcedure) JarBuilder(org.neo4j.test.jar.JarBuilder) URL(java.net.URL) Test(org.junit.jupiter.api.Test)

Example 15 with ProcedureSignature

use of org.neo4j.internal.kernel.api.procs.ProcedureSignature in project neo4j by neo4j.

the class ProcedureSignatureTest method toStringForVoidProcedureShouldMatchCypherSyntax.

@Test
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);
}
Also used : ProcedureSignature(org.neo4j.internal.kernel.api.procs.ProcedureSignature) Test(org.junit.jupiter.api.Test)

Aggregations

ProcedureSignature (org.neo4j.internal.kernel.api.procs.ProcedureSignature)18 Test (org.junit.jupiter.api.Test)14 CallableProcedure (org.neo4j.kernel.api.procedure.CallableProcedure)12 ProcedureException (org.neo4j.internal.kernel.api.exceptions.ProcedureException)5 URL (java.net.URL)4 QualifiedName (org.neo4j.internal.kernel.api.procs.QualifiedName)3 AnyValue (org.neo4j.values.AnyValue)3 Context (org.neo4j.kernel.api.procedure.Context)2 Method (java.lang.reflect.Method)1 Random (java.util.Random)1 Stream (java.util.stream.Stream)1 BeforeAll (org.junit.jupiter.api.BeforeAll)1 ClassGenerator (org.neo4j.codegen.ClassGenerator)1 ClassHandle (org.neo4j.codegen.ClassHandle)1 CodeBlock (org.neo4j.codegen.CodeBlock)1 CodeGenerator (org.neo4j.codegen.CodeGenerator)1 FieldReference (org.neo4j.codegen.FieldReference)1 FieldSignature (org.neo4j.internal.kernel.api.procs.FieldSignature)1 NTString (org.neo4j.internal.kernel.api.procs.Neo4jTypes.NTString)1 ProcedureHandle (org.neo4j.internal.kernel.api.procs.ProcedureHandle)1