Skip to content
This repository has been archived by the owner on Dec 23, 2021. It is now read-only.

Commit

Permalink
feat: #29 sub level inject
Browse files Browse the repository at this point in the history
  • Loading branch information
Soontao committed Aug 16, 2020
1 parent 6847d09 commit 1f27fd8
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import * as swaggerUi from 'swagger-ui-express';
import { ODataController } from './controller';
import { ContainerBase } from './edm';
import { HttpRequestError } from './error';
import { createInstanceProvider, InjectContainer } from './inject';
import { createInstanceProvider, InjectContainer, SubLevelInjectContainer } from './inject';
import { createMetadataJSON } from './metadata';
import { ensureODataHeaders, withODataBatchRequestHandler, withODataErrorHandler, withODataHeader, withODataRequestHandler, withODataVersionVerify, withSwaggerDocument } from './middlewares';
import * as odata from './odata';
Expand Down Expand Up @@ -156,12 +156,22 @@ export class ODataServerBase extends Transform {
}
}


private static _injectContainer: InjectContainer;

static getInjectContainer() {
if (this._injectContainer == undefined) {
this._injectContainer = new InjectContainer();
this._injectContainer.registerProvider(createInstanceProvider('server_type', this));
}
return this._injectContainer;
}

static async createProcessor(context: any, options?: ODataProcessorOptions) {
const container = new InjectContainer();
container.registerProvider(createInstanceProvider('request_context', context));
container.registerProvider(createInstanceProvider('server_type', this));
container.registerProvider(createInstanceProvider('processor_option', options));
return container.getInstance(ODataProcessor);
const subLevelInjectContainer = new SubLevelInjectContainer(this.getInjectContainer());
subLevelInjectContainer.registerProvider(createInstanceProvider('request_context', context));
subLevelInjectContainer.registerProvider(createInstanceProvider('processor_option', options));
return subLevelInjectContainer.getInstance(ODataProcessor);
}

static $metadata(): ServiceMetadata;
Expand Down

0 comments on commit 1f27fd8

Please sign in to comment.