Пример #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void registerProcedures(org.neo4j.kernel.impl.proc.Procedures procedures, org.neo4j.kernel.impl.proc.ProcedureConfig procedureConfig) throws org.neo4j.internal.kernel.api.exceptions.KernelException
        public virtual void RegisterProcedures(Procedures procedures, ProcedureConfig procedureConfig)
        {
            procedures.RegisterProcedure(typeof(Org.Neo4j.Kernel.builtinprocs.BuiltInProcedures));
            procedures.RegisterProcedure(typeof(Org.Neo4j.Kernel.builtinprocs.TokenProcedures));
            procedures.RegisterProcedure(typeof(Org.Neo4j.Kernel.builtinprocs.BuiltInDbmsProcedures));
            procedures.RegisterBuiltInFunctions(typeof(Org.Neo4j.Kernel.builtinprocs.BuiltInFunctions));
            registerTemporalFunctions(procedures, procedureConfig);

            RegisterEditionSpecificProcedures(procedures);
        }
Пример #2
0
        private static Procedures SetupProcedures(PlatformModule platform, AbstractEditionModule editionModule, GraphDatabaseFacade facade)
        {
            File pluginDir   = platform.Config.get(GraphDatabaseSettings.plugin_dir);
            Log  internalLog = platform.Logging.getInternalLog(typeof(Procedures));

            ProcedureConfig procedureConfig = new ProcedureConfig(platform.Config);
            Procedures      procedures      = new Procedures(facade, new SpecialBuiltInProcedures(Version.Neo4jVersion, platform.DatabaseInfo.edition.ToString()), pluginDir, internalLog, procedureConfig);

            platform.Life.add(procedures);
            platform.Dependencies.satisfyDependency(procedures);

            procedures.RegisterType(typeof(Node), NTNode);
            procedures.RegisterType(typeof(Relationship), NTRelationship);
            procedures.RegisterType(typeof(Path), NTPath);
            procedures.RegisterType(typeof(Geometry), NTGeometry);
            procedures.RegisterType(typeof(Point), NTPoint);

            // Register injected public API components
            Log proceduresLog = platform.Logging.getUserLog(typeof(Procedures));

            procedures.RegisterComponent(typeof(Log), ctx => proceduresLog, true);

            procedures.RegisterComponent(typeof(ProcedureTransaction), new ProcedureTransactionProvider(), true);
            procedures.RegisterComponent(typeof(Org.Neo4j.Procedure.TerminationGuard), new TerminationGuardProvider(), true);

            // Below components are not public API, but are made available for internal
            // procedures to call, and to provide temporary workarounds for the following
            // patterns:
            //  - Batch-transaction imports (GDAPI, needs to be real and passed to background processing threads)
            //  - Group-transaction writes (same pattern as above, but rather than splitting large transactions,
            //                              combine lots of small ones)
            //  - Bleeding-edge performance (KernelTransaction, to bypass overhead of working with Core API)
            procedures.RegisterComponent(typeof(DependencyResolver), ctx => ctx.get(DEPENDENCY_RESOLVER), false);
            procedures.RegisterComponent(typeof(KernelTransaction), ctx => ctx.get(KERNEL_TRANSACTION), false);
            procedures.RegisterComponent(typeof(GraphDatabaseAPI), ctx => ctx.get(DATABASE_API), false);

            // Security procedures
            procedures.RegisterComponent(typeof(SecurityContext), ctx => ctx.get(SECURITY_CONTEXT), true);

            procedures.RegisterComponent(typeof(ProcedureCallContext), ctx => ctx.get(PROCEDURE_CALL_CONTEXT), true);

            // Edition procedures
            try
            {
                editionModule.RegisterProcedures(procedures, procedureConfig);
            }
            catch (KernelException e)
            {
                internalLog.Error("Failed to register built-in edition procedures at start up: " + e.Message);
            }

            return(procedures);
        }