FRAApplicationAssembly.m revision 721bb987c406979bcfe705fa1ca8d54497d40fcb
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster/*
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * The contents of this file are subject to the terms of the Common Development and
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * Distribution License (the License). You may not use this file except in compliance with the
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * License.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * specific language governing permission and limitations under the License.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * When distributing Covered Software, include this CDDL Header Notice in each file and include
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * Header, with the fields enclosed by brackets [] replaced by your own identifying
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * information: "Portions copyright [year] [name of copyright owner]".
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster *
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster * Copyright 2016 ForgeRock AS.
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster */
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAAccountsTableViewController.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAAccountTableViewController.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAApplicationAssembly.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRADatabaseConfiguration.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAFMDatabaseFactory.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAIdentityDatabase.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAIdentityDatabaseSQLiteOperations.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAIdentityModel.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAMessageUtils.h"
d1b57e78cf72f41c7c6a52bd7c2a6d6aa4da6ba4Craig McDonnell#import "FRANotificationGateway.h"
d1b57e78cf72f41c7c6a52bd7c2a6d6aa4da6ba4Craig McDonnell#import "FRANotificationHandler.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAOathMechanismFactory.h"
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster#import "FRAPushMechanismFactory.h"
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste#import "FRAQRScanViewController.h"
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste#import "FRAFMDatabaseConnectionHelper.h"
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste#import "FRAUriMechanismReader.h"
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster@implementation FRAApplicationAssembly
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAAccountTableViewController *)accountTableViewController {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAAccountTableViewController class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition injectProperty:@selector(identityModel) with:[self identityModel]];
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAAccountsTableViewController *)accountsTableViewController {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAAccountsTableViewController class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition injectProperty:@selector(identityModel) with:[self identityModel]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAIdentityDatabase *)identityDatabase {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAIdentityDatabase class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithSqlOperations:) parameters:^(TyphoonMethod *initializer) {
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste [initializer injectParameterWith:[self identityDatabaseSQLiteOperations]];
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAIdentityDatabaseSQLiteOperations *)identityDatabaseSQLiteOperations {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAIdentityDatabaseSQLiteOperations class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithDatabase:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self databaseConnectionHelper]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAIdentityModel *)identityModel {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAIdentityModel class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithDatabase:sqlDatabase:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self identityDatabase]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self databaseConnectionHelper]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAUriMechanismReader *)uriMechanismReader {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAUriMechanismReader class] configuration:^(TyphoonDefinition *definition) {
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste [definition useInitializer:@selector(initWithDatabase:identityModel:) parameters:^(TyphoonMethod *initializer) {
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste [initializer injectParameterWith:[self identityDatabase]];
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste [initializer injectParameterWith:[self identityModel]];
6909255a1970175507277a0f2f105979625f76b2Jaco Jooste }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition injectMethod:@selector(addMechanismFactory:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self oathMechanismFactory]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition injectMethod:@selector(addMechanismFactory:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self pushMechanismFactory]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
d1b57e78cf72f41c7c6a52bd7c2a6d6aa4da6ba4Craig McDonnell- (FRAOathMechanismFactory *)oathMechanismFactory {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAOathMechanismFactory class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(init)];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAPushMechanismFactory *)pushMechanismFactory {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAPushMechanismFactory class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithMessageUtil:) parameters:^(TyphoonMethod *initializer) {
d1b57e78cf72f41c7c6a52bd7c2a6d6aa4da6ba4Craig McDonnell [initializer injectParameterWith:[self messageUtils]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRANotificationGateway *)notificationGateway {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRANotificationGateway class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithHandler:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self notificationHandler]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRANotificationHandler *)notificationHandler {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRANotificationHandler class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithDatabase:identityModel:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self identityDatabase]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[self identityModel]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAQRScanViewController *)qrScanViewController {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAQRScanViewController class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition injectProperty:@selector(uriMechanismReader) with:[self uriMechanismReader]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAMessageUtils *)messageUtils {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAMessageUtils class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster- (FRAFMDatabaseConnectionHelper *)databaseConnectionHelper {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster return [TyphoonDefinition withClass:[FRAFMDatabaseConnectionHelper class] configuration:^(TyphoonDefinition *definition) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [definition useInitializer:@selector(initWithConfiguration:databaseFactory:) parameters:^(TyphoonMethod *initializer) {
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[[FRADatabaseConfiguration alloc] init]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster [initializer injectParameterWith:[[FRAFMDatabaseFactory alloc] init]];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster definition.scope = TyphoonScopeSingleton;
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster }];
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster}
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster@end
869a36e2649ae064c98063cf1e55198488d78d12Allan Foster