From f35e00ce68ffd5c9e84818fd1507cf9413251c7d Mon Sep 17 00:00:00 2001 From: Zak Henry Date: Wed, 6 Jul 2016 12:12:46 +0100 Subject: [PATCH] refactor(controller):Removed required dependency Server from abstract controller BREAKING CHANGE: The `Server` injected dependency is no longer required for all controllers as it is now passed into the `registerRoutes(server: Server)` method on bootstrap. All controllers should remove the server variable passed to super: Before: ```typescript class ExampleController extends AbstractController { constructor(server: Server, logger: Logger){ super(server, logger); } } ``` After: ```typescript class ExampleController extends AbstractController { constructor(logger: Logger){ super(logger); } } ``` --- .../bootstrap/controllers.bootstrapper.spec.ts | 4 ++-- .../bootstrap/controllers.bootstrapper.ts | 4 +++- .../controllers/abstract.controller.spec.ts | 10 +++++----- src/server/controllers/abstract.controller.ts | 18 ++++++------------ .../controllers/resource.controller.spec.ts | 10 +++++----- src/server/controllers/resource.controller.ts | 4 ++-- src/server/controllers/route.decorator.spec.ts | 6 +++--- .../middleware/debugLog.middleware.spec.ts | 6 +++--- src/server/middleware/middleware.spec.ts | 14 +++++++------- 9 files changed, 36 insertions(+), 40 deletions(-) diff --git a/src/server/bootstrap/controllers.bootstrapper.spec.ts b/src/server/bootstrap/controllers.bootstrapper.spec.ts index 4f8c2f2..86c1169 100644 --- a/src/server/bootstrap/controllers.bootstrapper.spec.ts +++ b/src/server/bootstrap/controllers.bootstrapper.spec.ts @@ -22,8 +22,8 @@ const providers: any[] = [ @Injectable() class TestController extends AbstractController { - constructor(server: Server, logger: Logger) { - super(server, logger); + constructor(logger: Logger) { + super(logger); } @Route('GET', '/test') diff --git a/src/server/bootstrap/controllers.bootstrapper.ts b/src/server/bootstrap/controllers.bootstrapper.ts index b11d0ac..ae78a50 100644 --- a/src/server/bootstrap/controllers.bootstrapper.ts +++ b/src/server/bootstrap/controllers.bootstrapper.ts @@ -6,6 +6,7 @@ import { EntityBootstrapper } from './entity.bootstrapper'; import { AbstractController } from '../controllers/abstract.controller'; import { RegistryEntityStatic } from '../../common/registry/entityRegistry'; import { ControllerMetadata } from '../../common/metadata/metadata'; +import { Server } from '../servers/abstract.server'; /** * Provides bootstrapping of the @[[Controller]] entities @@ -20,12 +21,13 @@ export class ControllerBootstrapper extends EntityBootstrapper { } public bootstrap(): void { + const server = this.injector.get(Server); this.entities.forEach((resolvedController: RegistryEntityStatic) => { let controller = this.getInstance(resolvedController); controller.registerInjector(this.injector) - .registerRoutes(); + .registerRoutes(server); }); } diff --git a/src/server/controllers/abstract.controller.spec.ts b/src/server/controllers/abstract.controller.spec.ts index 129fa8d..98f0cf3 100644 --- a/src/server/controllers/abstract.controller.spec.ts +++ b/src/server/controllers/abstract.controller.spec.ts @@ -15,8 +15,8 @@ import { UnavailableForLegalReasonsException } from '../exeptions/exceptions'; @Injectable() class TestController extends AbstractController { - constructor(server: Server, logger: Logger) { - super(server, logger); + constructor(logger: Logger) { + super(logger); } @Route('GET', '/test') @@ -52,7 +52,7 @@ describe('Controller', () => { it('Registers a route that returns a response', async(inject([TestController, Server], (c: TestController, s: Server) => { - c.registerRoutes(); + c.registerRoutes(s); const callStackHandler = s.configuredRoutes.find((r: RouteConfig) => r.methodName == 'test').callStackHandler; @@ -72,7 +72,7 @@ describe('Controller', () => { it('Registers a route that returns an http error response', async(inject([TestController, Server], (c: TestController, s: Server) => { - c.registerRoutes(); + c.registerRoutes(s); const callStackHandler = s.configuredRoutes.find((r: RouteConfig) => r.methodName == 'httpError').callStackHandler; @@ -95,7 +95,7 @@ describe('Controller', () => { it('Registers a route that falls back to an http error respnse', async(inject([TestController, Server], (c: TestController, s: Server) => { - c.registerRoutes(); + c.registerRoutes(s); const callStackHandler = s.configuredRoutes.find((r: RouteConfig) => r.methodName == 'unknownError').callStackHandler; diff --git a/src/server/controllers/abstract.controller.ts b/src/server/controllers/abstract.controller.ts index d5c1bde..e6d2f39 100644 --- a/src/server/controllers/abstract.controller.ts +++ b/src/server/controllers/abstract.controller.ts @@ -11,14 +11,8 @@ import { Response } from './response'; import { Request } from './request'; import { initializeMiddlewareRegister } from '../middleware/middleware.decorator'; import { HttpException, InternalServerErrorException } from '../exeptions/exceptions'; -import { - RegistryEntityStatic, - RegistryEntityConstructor, RegistryEntity -} from '../../common/registry/entityRegistry'; -import { - ModelMetadata, ControllerMetadata, - initializeMetadata -} from '../../common/metadata/metadata'; +import { RegistryEntityStatic, RegistryEntity } from '../../common/registry/entityRegistry'; +import { ControllerMetadata } from '../../common/metadata/metadata'; export interface MethodDefinition { method: HttpMethod; @@ -64,7 +58,7 @@ export abstract class AbstractController extends RegistryEntity { @@ -166,7 +160,7 @@ export abstract class AbstractController extends RegistryEntity { @Injectable() class TestController extends ResourceController { - constructor(server: Server, logger: Logger, fruitStore: FruitStore) { - super(server, logger, fruitStore); + constructor(logger: Logger, fruitStore: FruitStore) { + super(logger, fruitStore); } } @@ -71,7 +71,7 @@ describe('Resource Controller', () => { it('Registers a route to retrieve an entity', async(inject([TestController, Server], (c: TestController, s: Server) => { - c.registerRoutes(); + c.registerRoutes(s); const callStackHandler = s.configuredRoutes.find((r: RouteConfig) => r.methodName == 'getOne').callStackHandler; @@ -96,7 +96,7 @@ describe('Resource Controller', () => { it('Registers a route to retrieve many entities', async(inject([TestController, Server], (c: TestController, s: Server) => { - c.registerRoutes(); + c.registerRoutes(s); const callStackHandler = s.configuredRoutes.find((r: RouteConfig) => r.methodName == 'getMany').callStackHandler; @@ -120,7 +120,7 @@ describe('Resource Controller', () => { it('Registers a route put one entity', async(inject([TestController, Server], (c: TestController, s: Server) => { - c.registerRoutes(); + c.registerRoutes(s); const callStackHandler = s.configuredRoutes.find((r: RouteConfig) => r.methodName == 'putOne').callStackHandler; diff --git a/src/server/controllers/resource.controller.ts b/src/server/controllers/resource.controller.ts index 2b50a2a..95e6b8f 100644 --- a/src/server/controllers/resource.controller.ts +++ b/src/server/controllers/resource.controller.ts @@ -20,8 +20,8 @@ import { Collection } from '../../common/models/collection'; @Injectable() export abstract class ResourceController extends AbstractController { - constructor(server: Server, logger: Logger, protected modelStore:AbstractStore) { - super(server, logger); + constructor(logger: Logger, protected modelStore:AbstractStore) { + super(logger); } /** diff --git a/src/server/controllers/route.decorator.spec.ts b/src/server/controllers/route.decorator.spec.ts index b7b3a25..8626823 100644 --- a/src/server/controllers/route.decorator.spec.ts +++ b/src/server/controllers/route.decorator.spec.ts @@ -18,8 +18,8 @@ import { Controller } from '../../common/registry/decorators'; }) class TestController extends AbstractController { - constructor(server: Server, logger: Logger) { - super(server, logger); + constructor(logger: Logger) { + super(logger); } @Route('PUT', '/test/:id') @@ -46,7 +46,7 @@ describe('@Route decorator', () => { (c: TestController, i: Injector, s: Server) => { let controller = c.registerInjector(i) - .registerRoutes(); + .registerRoutes(s); const routeConfig: RouteConfig = s.getRoutes() .find((route: RouteConfig) => route.methodName == 'testMethod'); diff --git a/src/server/middleware/debugLog.middleware.spec.ts b/src/server/middleware/debugLog.middleware.spec.ts index 05ab134..c07433c 100644 --- a/src/server/middleware/debugLog.middleware.spec.ts +++ b/src/server/middleware/debugLog.middleware.spec.ts @@ -16,8 +16,8 @@ import { debugLog, DebugLogMiddleware } from './debugLog.middleware'; @Injectable() class MiddlewareController extends AbstractController { - constructor(server: Server, logger: Logger) { - super(server, logger); + constructor(logger: Logger) { + super(logger); } @Route('GET', '/test') @@ -68,7 +68,7 @@ describe('debugLog middleware', () => { (c: MiddlewareController, i: Injector, s: Server) => { controller = c.registerInjector(i) - .registerRoutes(); + .registerRoutes(s); const callStackHandler: any = s.getRoutes() .find((route: RouteConfig) => route.methodName == 'testMethod').callStackHandler; diff --git a/src/server/middleware/middleware.spec.ts b/src/server/middleware/middleware.spec.ts index 87753a5..1e9559b 100644 --- a/src/server/middleware/middleware.spec.ts +++ b/src/server/middleware/middleware.spec.ts @@ -28,8 +28,8 @@ function middlewareFixture(input: string): IsolatedMiddlewareFactory { @Injectable() class MiddlewareController extends AbstractController { - constructor(server: Server, logger: Logger) { - super(server, logger); + constructor(logger: Logger) { + super(logger); } @Route('GET', '/test') @@ -58,10 +58,10 @@ describe('Middleware Decorators', () => { }); it('defines registeredMiddleware on the controller', - inject([MiddlewareController, ReflectiveInjector], - (c: MiddlewareController, i: ReflectiveInjector) => { + inject([MiddlewareController, ReflectiveInjector, Server], + (c: MiddlewareController, i: ReflectiveInjector, s: Server) => { - controller = c.registerRoutes() + controller = c.registerRoutes(s) .registerInjector(i); expect(controller.getMetadata().middleware) @@ -77,7 +77,7 @@ describe('Middleware Decorators', () => { inject([MiddlewareController, ReflectiveInjector, Server], (c: MiddlewareController, i: ReflectiveInjector, s: Server) => { - controller = c.registerRoutes() + controller = c.registerRoutes(s) .registerInjector(i); const callStack: any = s.getRoutes() @@ -102,7 +102,7 @@ describe('Middleware Decorators', () => { async(inject([MiddlewareController, ReflectiveInjector, Server], (c: MiddlewareController, i: ReflectiveInjector, s: Server) => { - controller = c.registerRoutes() + controller = c.registerRoutes(s) .registerInjector(i); const callStackHandler: any = s.getRoutes()