diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/ProcedureSignature.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/ProcedureSignature.java index 065d1ba00f9d2..d529a0ebd8b5b 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/ProcedureSignature.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/ProcedureSignature.java @@ -33,7 +33,7 @@ * This describes the signature of a procedure, made up of its namespace, name, and input/output description. * Procedure uniqueness is currently *only* on the namespace/name level - no procedure overloading allowed (yet). */ -public class ProcedureSignature +public class ProcedureSignature implements Signature { public static final List VOID = unmodifiableList( new ArrayList<>() ); @@ -65,6 +65,7 @@ public ProcedureSignature( QualifiedName name, this.warning = warning; } + @Override public QualifiedName name() { return name; @@ -75,16 +76,19 @@ public Mode mode() return mode; } + @Override public Optional deprecated() { return Optional.ofNullable( deprecated ); } + @Override public String[] allowed() { return allowed; } + @Override public List inputSignature() { return inputSignature; @@ -100,6 +104,7 @@ public boolean isVoid() return outputSignature == VOID; } + @Override public Optional description() { return Optional.ofNullable( description ); diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/Signature.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/Signature.java new file mode 100644 index 0000000000000..7f86b57e4b281 --- /dev/null +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/Signature.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2002-2018 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.internal.kernel.api.procs; + +import java.util.List; +import java.util.Optional; + +public interface Signature +{ + QualifiedName name(); + + Optional deprecated(); + + List inputSignature(); + + Optional description(); + + String[] allowed(); +} diff --git a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/UserFunctionSignature.java b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/UserFunctionSignature.java index b861c0531f47c..c6cf674879df2 100644 --- a/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/UserFunctionSignature.java +++ b/community/kernel-api/src/main/java/org/neo4j/internal/kernel/api/procs/UserFunctionSignature.java @@ -34,7 +34,7 @@ * This describes the signature of a function, made up of its namespace, name, and input/output description. * Function uniqueness is currently *only* on the namespace/name level - no function overloading allowed (yet). */ -public final class UserFunctionSignature +public final class UserFunctionSignature implements Signature { private final QualifiedName name; private final List inputSignature; @@ -58,16 +58,19 @@ public UserFunctionSignature( QualifiedName name, this.allowed = allowed; } + @Override public QualifiedName name() { return name; } + @Override public Optional deprecated() { return Optional.ofNullable( deprecated ); } + @Override public List inputSignature() { return inputSignature; @@ -78,11 +81,13 @@ public Neo4jTypes.AnyType outputType() return type; } + @Override public Optional description() { return Optional.ofNullable( description ); } + @Override public String[] allowed() { return allowed; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/proc/ProcedureHolder.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/proc/ProcedureHolder.java index 1dd6b63407a48..2651e0354c8e2 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/proc/ProcedureHolder.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/proc/ProcedureHolder.java @@ -26,6 +26,7 @@ import java.util.Map; import org.neo4j.internal.kernel.api.procs.QualifiedName; +import org.neo4j.internal.kernel.api.procs.Signature; /** * Simple in memory store for procedures. @@ -33,7 +34,7 @@ * Should only be accessed from a single thread * @param the type to be stored */ -class ProcedureHolder +class ProcedureHolder { private final Map nameToId = new HashMap<>(); private final ArrayList store = new ArrayList<>();