fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell/*
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * The contents of this file are subject to the terms of the Common Development and
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * Distribution License (the License). You may not use this file except in compliance with the
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * License.
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell *
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * specific language governing permission and limitations under the License.
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell *
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * When distributing Covered Software, include this CDDL Header Notice in each file and include
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * Header, with the fields enclosed by brackets [] replaced by your own identifying
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * information: "Portions copyright [year] [name of copyright owner]".
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell *
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell * Copyright 2016 ForgeRock AS.
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell */
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell#import "FRAAccountsTableViewController.h"
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell#import "FRAAccountTableViewController.h"
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell#import "FRAApplicationAssembly.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRADatabaseConfiguration.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRAFMDatabaseFactory.h"
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell#import "FRALAContextFactory.h"
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell#import "FRAIdentityDatabase.h"
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell#import "FRAIdentityDatabaseSQLiteOperations.h"
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell#import "FRAIdentityModel.h"
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni#import "FRAMechanismReaderAction.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRAMessageUtils.h"
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#import "FRANotificationGateway.h"
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#import "FRANotificationHandler.h"
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell#import "FRANotificationViewController.h"
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#import "FRAOathMechanismFactory.h"
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#import "FRAPushMechanismFactory.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRAQRScanViewController.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRAFMDatabaseConnectionHelper.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRAUriMechanismReader.h"
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott#import "FRASplashViewController.h"
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell@implementation FRAApplicationAssembly
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell- (FRAAccountsTableViewController *)accountsTableViewController {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell return [TyphoonDefinition withClass:[FRAAccountsTableViewController class] configuration:^(TyphoonDefinition *definition) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [definition injectProperty:@selector(identityModel) with:[self identityModel]];
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell }];
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell}
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell- (FRALAContextFactory *)authContextFactory {
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell return [TyphoonDefinition withClass:[FRALAContextFactory class] configuration:^(TyphoonDefinition *definition) {
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell definition.scope = TyphoonScopeSingleton;
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell }];
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell}
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRAFMDatabaseConnectionHelper *)databaseConnectionHelper {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRAFMDatabaseConnectionHelper class] configuration:^(TyphoonDefinition *definition) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [definition useInitializer:@selector(initWithConfiguration:databaseFactory:) parameters:^(TyphoonMethod *initializer) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [initializer injectParameterWith:[[FRADatabaseConfiguration alloc] init]];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [initializer injectParameterWith:[[FRAFMDatabaseFactory alloc] init]];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell definition.scope = TyphoonScopeSingleton;
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell}
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell- (FRAIdentityDatabase *)identityDatabase {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell return [TyphoonDefinition withClass:[FRAIdentityDatabase class] configuration:^(TyphoonDefinition *definition) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [definition useInitializer:@selector(initWithSqlOperations:) parameters:^(TyphoonMethod *initializer) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [initializer injectParameterWith:[self identityDatabaseSQLiteOperations]];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell }];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell definition.scope = TyphoonScopeSingleton;
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell }];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell}
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott- (FRAIdentityDatabaseSQLiteOperations *)identityDatabaseSQLiteOperations {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell return [TyphoonDefinition withClass:[FRAIdentityDatabaseSQLiteOperations class] configuration:^(TyphoonDefinition *definition) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott [definition useInitializer:@selector(initWithDatabase:) parameters:^(TyphoonMethod *initializer) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott [initializer injectParameterWith:[self databaseConnectionHelper]];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott }];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell }];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell}
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell- (FRAIdentityModel *)identityModel {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell return [TyphoonDefinition withClass:[FRAIdentityModel class] configuration:^(TyphoonDefinition *definition) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott [definition useInitializer:@selector(initWithDatabase:sqlDatabase:) parameters:^(TyphoonMethod *initializer) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [initializer injectParameterWith:[self identityDatabase]];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott [initializer injectParameterWith:[self databaseConnectionHelper]];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell }];
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell definition.scope = TyphoonScopeSingleton;
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott }];
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott}
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRAMechanismReaderAction *)mechanismReaderAction {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRAMechanismReaderAction class] configuration:^(TyphoonDefinition *definition) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [definition useInitializer:@selector(initWithMechanismReader:) parameters:^(TyphoonMethod *initializer) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [initializer injectParameterWith:[self uriMechanismReader]];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell}
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRANotificationGateway *)notificationGateway {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRANotificationGateway class] configuration:^(TyphoonDefinition *definition) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [definition useInitializer:@selector(initWithHandler:) parameters:^(TyphoonMethod *initializer) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [initializer injectParameterWith:[self notificationHandler]];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell definition.scope = TyphoonScopeSingleton;
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell}
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRANotificationHandler *)notificationHandler {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRANotificationHandler class] configuration:^(TyphoonDefinition *definition) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [definition useInitializer:@selector(initWithDatabase:identityModel:) parameters:^(TyphoonMethod *initializer) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [initializer injectParameterWith:[self identityDatabase]];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [initializer injectParameterWith:[self identityModel]];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell }];
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings definition.scope = TyphoonScopeSingleton;
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings }];
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings}
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRANotificationViewController *)notificationViewController {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRANotificationViewController class] configuration:^(TyphoonDefinition *definition) {
1680db67c31badf9127409069c107fbbeb386fa0Craig McDonnell [definition injectProperty:@selector(authContextFactory) with:[self authContextFactory]];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell}
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings- (FRAOathMechanismFactory *)oathMechanismFactory {
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings return [TyphoonDefinition withClass:[FRAOathMechanismFactory class] configuration:^(TyphoonDefinition *definition) {
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings [definition useInitializer:@selector(init)];
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings definition.scope = TyphoonScopeSingleton;
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings }];
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings}
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings- (FRAPushMechanismFactory *)pushMechanismFactory {
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings return [TyphoonDefinition withClass:[FRAPushMechanismFactory class] configuration:^(TyphoonDefinition *definition) {
a1e92b2783be4bfeb0c7e267223cc7779a6f324cKen Stubbings [definition useInitializer:@selector(initWithGateway:) parameters:^(TyphoonMethod *initializer) {
a1e92b2783be4bfeb0c7e267223cc7779a6f324cKen Stubbings [initializer injectParameterWith:[self notificationGateway]];
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings }];
a1e92b2783be4bfeb0c7e267223cc7779a6f324cKen Stubbings definition.scope = TyphoonScopeSingleton;
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell }];
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell}
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRAQRScanViewController *)qrScanViewController {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRAQRScanViewController class] configuration:^(TyphoonDefinition *definition) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [definition injectProperty:@selector(mechanismReaderAction) with:[self mechanismReaderAction]];
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell }];
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell}
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell- (FRAUriMechanismReader *)uriMechanismReader {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell return [TyphoonDefinition withClass:[FRAUriMechanismReader class] configuration:^(TyphoonDefinition *definition) {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [definition useInitializer:@selector(initWithDatabase:identityModel:) parameters:^(TyphoonMethod *initializer) {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell [initializer injectParameterWith:[self identityDatabase]];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell [initializer injectParameterWith:[self identityModel]];
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [definition injectMethod:@selector(addMechanismFactory:) parameters:^(TyphoonMethod *initializer) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [initializer injectParameterWith:[self oathMechanismFactory]];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [definition injectMethod:@selector(addMechanismFactory:) parameters:^(TyphoonMethod *initializer) {
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell [initializer injectParameterWith:[self pushMechanismFactory]];
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni }];
6d34df76ea55353d972de9caf3585e04714b2780Craig McDonnell definition.scope = TyphoonScopeSingleton;
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni }];
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni}
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott- (FRASplashViewController *)splashViewController {
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott return [TyphoonDefinition withClass:[FRASplashViewController class] configuration:^(TyphoonDefinition *definition) {
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott [definition injectProperty:@selector(identityModel) with:[self identityModel]];
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott }];
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott}
566f735e84e576e1592d0bf367182a0586944380Robert Wapshott
fb63998ce7684bddab24e10c0b593809df1b7bffCraig McDonnell@end