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;
}