Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Procedures have their own way of dealing with access control, and are not served well by the access check made when acquiring the *Operations interfaces. This commit moves the procedure call methods to a dedicated interface, which can be acquired by any caller.
- Loading branch information
Showing
19 changed files
with
213 additions
and
90 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
95 changes: 95 additions & 0 deletions
95
community/kernel/src/main/java/org/neo4j/kernel/api/ProcedureCallOperations.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/* | ||
* Copyright (c) 2002-2016 "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 <http://www.gnu.org/licenses/>. | ||
*/ | ||
package org.neo4j.kernel.api; | ||
|
||
import org.neo4j.collection.RawIterator; | ||
import org.neo4j.kernel.api.exceptions.ProcedureException; | ||
import org.neo4j.kernel.api.proc.QualifiedName; | ||
import org.neo4j.kernel.api.security.AccessMode; | ||
|
||
/** | ||
* Specifies procedure call operations for the three types of procedure calls that can be made. | ||
*/ | ||
public interface ProcedureCallOperations | ||
{ | ||
/** | ||
* Invoke a read-only procedure by name. | ||
* @param name the name of the procedure. | ||
* @param arguments the procedure arguments. | ||
* @return an iterator containing the procedure results. | ||
* @throws ProcedureException if there was an exception thrown during procedure execution. | ||
*/ | ||
RawIterator<Object[], ProcedureException> procedureCallRead( QualifiedName name, Object[] arguments ) | ||
throws ProcedureException; | ||
|
||
/** | ||
* Invoke a read-only procedure by name, and override the transaction's access mode with | ||
* the given access mode for the duration of the procedure execution. | ||
* @param name the name of the procedure. | ||
* @param arguments the procedure arguments. | ||
* @param override the access mode to be used for the execution of the procedure. | ||
* @return an iterator containing the procedure results. | ||
* @throws ProcedureException if there was an exception thrown during procedure execution. | ||
*/ | ||
RawIterator<Object[], ProcedureException> procedureCallRead( QualifiedName name, Object[] arguments, AccessMode override ) | ||
throws ProcedureException; | ||
|
||
/** | ||
* Invoke a read/write procedure by name. | ||
* @param name the name of the procedure. | ||
* @param arguments the procedure arguments. | ||
* @return an iterator containing the procedure results. | ||
* @throws ProcedureException if there was an exception thrown during procedure execution. | ||
*/ | ||
RawIterator<Object[], ProcedureException> procedureCallWrite( QualifiedName name, Object[] arguments ) | ||
throws ProcedureException; | ||
/** | ||
* Invoke a read/write procedure by name, and override the transaction's access mode with | ||
* the given access mode for the duration of the procedure execution. | ||
* @param name the name of the procedure. | ||
* @param arguments the procedure arguments. | ||
* @param override the access mode to be used for the execution of the procedure. | ||
* @return an iterator containing the procedure results. | ||
* @throws ProcedureException if there was an exception thrown during procedure execution. | ||
*/ | ||
RawIterator<Object[], ProcedureException> procedureCallWrite( QualifiedName name, Object[] arguments, AccessMode override ) | ||
throws ProcedureException; | ||
|
||
/** | ||
* Invoke a schema write procedure by name. | ||
* @param name the name of the procedure. | ||
* @param arguments the procedure arguments. | ||
* @return an iterator containing the procedure results. | ||
* @throws ProcedureException if there was an exception thrown during procedure execution. | ||
*/ | ||
RawIterator<Object[], ProcedureException> procedureCallSchema( QualifiedName name, Object[] arguments ) | ||
throws ProcedureException; | ||
/** | ||
* Invoke a schema write procedure by name, and override the transaction's access mode with | ||
* the given access mode for the duration of the procedure execution. | ||
* @param name the name of the procedure. | ||
* @param arguments the procedure arguments. | ||
* @param override the access mode to be used for the execution of the procedure. | ||
* @return an iterator containing the procedure results. | ||
* @throws ProcedureException if there was an exception thrown during procedure execution. | ||
*/ | ||
RawIterator<Object[], ProcedureException> procedureCallSchema( QualifiedName name, Object[] arguments, AccessMode override ) | ||
throws ProcedureException; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.