Ejemplo n.º 1
0
        public static IAppProvider CreateAppProvider(
            IAccountRepository adminRepository,
            ISessionRepository adminSessionRepository,
            int adminAccountSessionCollectionCapacity,
            IActionRightResolver adminActionRightResolver,

            IAccountRepository userRepository,
            ISessionRepository userSessionRepository,
            int userAccountSessionCollectionCapacity,
            IActionRightResolver userActionRightResolver)
        {
            // todo1[ak] check args

            RegisterMappings();

            IAppProvider appProvider = new AppProvider();

            ITimeSource timeSource = CreateTimeSource();

            if (adminAccountSessionCollectionCapacity == 0)
            {
                adminAccountSessionCollectionCapacity = Constants.DEFAULT_ADMIN_ACCOUNT_SESSION_COLLECTION_CAPACITY;
            }

            if (userAccountSessionCollectionCapacity == 0)
            {
                userAccountSessionCollectionCapacity = Constants.DEFAULT_USER_ACCOUNT_SESSION_COLLECTION_CAPACITY;
            }

            IAccountManager adminManager = CreateAdminManager(
                timeSource,
                adminRepository,
                adminSessionRepository,
                adminAccountSessionCollectionCapacity,
                adminActionRightResolver);

            IAccountManager userManager = CreateUserManager(
                timeSource,
                userRepository,
                userSessionRepository,
                userAccountSessionCollectionCapacity,
                userActionRightResolver);

            appProvider.RegisterService<IGuestService>(new GuestService(adminManager, userManager));
            appProvider.RegisterService<IAdminService>(new AdminService(adminManager, userManager));
            appProvider.RegisterService<IUserService>(new UserService(userManager));

            return appProvider;
        }