public constructor()

in lib/request-context.ts [54:108]


    public constructor(base: RequestTemplate, request: Request) {
        assert(base != null);
        assert(request != null);

        // Fill default values and do schema validation.
        request = RequestHelper.fromJsValue(request);
        
        this._application = base.application;
        this._request = request;

        //let parentContext: ScopedObjectContext = base != null ? base.objectContext : app.objectContext;
        let parentContext = base.objectContext;

        // We only pass overriden stuff when per-request override is allowed.
        let perRequestObjectContextDef: ScopedObjectContextDef = 
            base.application.settings.allowPerRequestOverride ?
                new ScopedObjectContextDef(
                    parentContext.def,
                    request.overrideTypes,
                    request.overrideProviders,
                    request.overrideObjects,
                    false                           // Don't do dependency analysis at request level.
                )
                :
                new ScopedObjectContextDef(
                    parentContext.def,
                    [],
                    [], 
                    [], 
                    false);

        this._perRequestObjectContext = new ScopedObjectContext(
            "request",
            parentContext.baseDir,      // We always use application directory as base dir for resolving paths in request.
            parentContext,
            perRequestObjectContextDef);

        // Prepare logger, debuger and perf collector.
        this._logger = new RequestLogger(
            request.application + "." + request.entryPoint,
            request.traceId);

        this._debugger = new RequestDebugger();
        this._perf = new PerfDataCollector(this.metric);

        // Prepare execution stack and entry point.
        this._entryPoint = this.getEntryPoint(request.entryPoint);
        if (this._entryPoint == null) {
            throw new Error("Entrypoint does not exist: '" + request.entryPoint + "'");
        }

        // Set execution depth to 0 to be at top of execution stack.
        this._executionStack = this.prepareExecutionStack(request.entryPoint);
        this._executionDepth = 0;
    }