/// <summary>
 /// Initializes a new instance of the <see cref="ObjectRepositoryLoader"/> class.
 /// </summary>
 /// <param name="dataAccessorProvider">The data accessor provider.</param>
 /// <param name="repositoryProvider">The repository provider.</param>
 /// <param name="repositorySerializerFactory">The <see cref="IObjectRepositorySerializer"/> factory.</param>
 public ObjectRepositoryLoader(IModelDataAccessorProvider dataAccessorProvider, IRepositoryProvider repositoryProvider,
                               ObjectRepositorySerializerFactory repositorySerializerFactory)
 {
     _dataAccessorProvider        = dataAccessorProvider ?? throw new ArgumentNullException(nameof(dataAccessorProvider));
     _repositoryProvider          = repositoryProvider ?? throw new ArgumentNullException(nameof(repositoryProvider));
     _repositorySerializerFactory = repositorySerializerFactory ?? throw new ArgumentNullException(nameof(repositorySerializerFactory));
 }
Пример #2
0
 internal MigrationScaffolder(IObjectRepositoryContainer container, RepositoryDescription repositoryDescription,
                              IRepositoryProvider repositoryProvider, ObjectRepositorySerializerFactory repositorySerializerFactory)
 {
     _repositoryProvider          = repositoryProvider ?? throw new ArgumentNullException(nameof(repositoryProvider));
     _container                   = container ?? throw new ArgumentNullException(nameof(container));
     _repositoryDescription       = repositoryDescription ?? throw new ArgumentNullException(nameof(repositoryDescription));
     _repositorySerializerFactory = repositorySerializerFactory ?? throw new ArgumentNullException(nameof(repositorySerializerFactory));
 }
        public ObjectRepositoryMerge(IObjectRepository repository, ObjectId mergeCommitId, string branchName,
                                     MigrationScaffolderFactory migrationScaffolderFactory, MergeProcessor.Factory mergeProcessorFactory,
                                     ObjectRepositorySerializerFactory serializerFactory)
        {
            if (serializerFactory == null)
            {
                throw new ArgumentNullException(nameof(serializerFactory));
            }

            Repository    = repository ?? throw new ArgumentNullException(nameof(repository));
            HeadCommitId  = repository.CommitId ?? throw new GitObjectDbException("Repository instance is not linked to any commit.");
            MergeCommitId = mergeCommitId ?? throw new ArgumentNullException(nameof(mergeCommitId));
            BranchName    = branchName ?? throw new ArgumentNullException(nameof(branchName));

            _migrationScaffolderFactory = migrationScaffolderFactory ?? throw new ArgumentNullException(nameof(migrationScaffolderFactory));
            _mergeProcessorFactory      = mergeProcessorFactory ?? throw new ArgumentNullException(nameof(mergeProcessorFactory));
            Serializer = serializerFactory(new ModelObjectSerializationContext(Repository.Container));

            Initialize();
        }
Пример #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ObjectRepositoryContainer{TRepository}"/> class.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <param name="repositoryLoader">The repository loader.</param>
        /// <param name="computeTreeChangesFactory">The <see cref="IComputeTreeChanges"/> factory.</param>
        /// <param name="objectRepositoryMergeFactory">The <see cref="IObjectRepositoryMerge"/> factory.</param>
        /// <param name="objectRepositoryRebaseFactory">The <see cref="IObjectRepositoryRebase"/> factory.</param>
        /// <param name="objectRepositoryCherryPickFactory">The <see cref="IObjectRepositoryCherryPick"/> factory.</param>
        /// <param name="repositoryProvider">The repository provider.</param>
        /// <param name="hooks">The hooks.</param>
        /// <param name="serializerFactory">The <see cref="IObjectRepositorySerializer"/> factory.</param>
        /// <param name="logger">The logger.</param>
        public ObjectRepositoryContainer(string path,
                                         IObjectRepositoryLoader repositoryLoader, ComputeTreeChangesFactory computeTreeChangesFactory,
                                         ObjectRepositoryMergeFactory objectRepositoryMergeFactory, ObjectRepositoryRebaseFactory objectRepositoryRebaseFactory,
                                         ObjectRepositoryCherryPickFactory objectRepositoryCherryPickFactory,
                                         IRepositoryProvider repositoryProvider, GitHooks hooks,
                                         ObjectRepositorySerializerFactory serializerFactory, ILogger <ObjectRepositoryContainer> logger)
        {
            _repositoryLoader                  = repositoryLoader ?? throw new ArgumentNullException(nameof(repositoryLoader));
            _computeTreeChangesFactory         = computeTreeChangesFactory ?? throw new ArgumentNullException(nameof(computeTreeChangesFactory));
            _objectRepositoryMergeFactory      = objectRepositoryMergeFactory ?? throw new ArgumentNullException(nameof(objectRepositoryMergeFactory));
            _objectRepositoryRebaseFactory     = objectRepositoryRebaseFactory ?? throw new ArgumentNullException(nameof(objectRepositoryRebaseFactory));
            _objectRepositoryCherryPickFactory = objectRepositoryCherryPickFactory ?? throw new ArgumentNullException(nameof(objectRepositoryCherryPickFactory));
            _repositoryProvider                = repositoryProvider ?? throw new ArgumentNullException(nameof(repositoryProvider));
            _hooks             = hooks ?? throw new ArgumentNullException(nameof(hooks));
            _serializerFactory = serializerFactory ?? throw new ArgumentNullException(nameof(serializerFactory));
            _logger            = logger ?? throw new ArgumentNullException(nameof(logger));

            Path = path ?? throw new ArgumentNullException(nameof(path));
            Directory.CreateDirectory(path);

            Repositories = LoadRepositories();

            _logger.ContainerCreated(path);
        }
Пример #5
0
        internal CherryPickProcessor(ObjectRepositoryCherryPick objectRepositoryCherryPick,
                                     ComputeTreeChangesFactory computeTreeChangesFactory, ObjectRepositorySerializerFactory serializerFactory)
        {
            if (serializerFactory == null)
            {
                throw new ArgumentNullException(nameof(serializerFactory));
            }

            _cherryPick = objectRepositoryCherryPick ?? throw new ArgumentNullException(nameof(objectRepositoryCherryPick));

            _computeTreeChangesFactory = computeTreeChangesFactory ?? throw new ArgumentNullException(nameof(computeTreeChangesFactory));
            _serializer = serializerFactory(new ModelObjectSerializationContext(objectRepositoryCherryPick.Repository.Container));
        }
Пример #6
0
        internal RebaseProcessor(ObjectRepositoryRebase objectRepositoryRebase,
                                 ComputeTreeChangesFactory computeTreeChangesFactory, ObjectRepositorySerializerFactory serializerFactory)
        {
            if (serializerFactory == null)
            {
                throw new ArgumentNullException(nameof(serializerFactory));
            }

            _rebase = objectRepositoryRebase ?? throw new ArgumentNullException(nameof(objectRepositoryRebase));

            _computeTreeChangesFactory = computeTreeChangesFactory ?? throw new ArgumentNullException(nameof(computeTreeChangesFactory));
            _serializer = serializerFactory(new ModelObjectSerializationContext(objectRepositoryRebase.Repository.Container));
        }
Пример #7
0
        public ModelDataAccessor(Type type,
                                 ConstructorParameterBinding.Factory constructorParameterBindingFactory, ObjectRepositorySerializerFactory repositorySerializerFactory,
                                 IConstructorSelector constructorSelector)
        {
            if (constructorParameterBindingFactory == null)
            {
                throw new ArgumentNullException(nameof(constructorParameterBindingFactory));
            }
            if (repositorySerializerFactory == null)
            {
                throw new ArgumentNullException(nameof(repositorySerializerFactory));
            }
            if (constructorSelector == null)
            {
                throw new ArgumentNullException(nameof(constructorSelector));
            }

            Type = type ?? throw new ArgumentNullException(nameof(type));

            _childProperties      = new Lazy <IImmutableList <ChildPropertyInfo> >(GetChildProperties);
            _modifiableProperties = new Lazy <IImmutableList <ModifiablePropertyInfo> >(GetModifiableProperties);
            _constructorBinding   = new Lazy <ConstructorParameterBinding>(() =>
            {
                var constructors = from c in Type.GetTypeInfo().GetConstructors()
                                   select constructorParameterBindingFactory(c);
                return(constructorSelector.SelectConstructorBinding(Type, constructors.ToArray()));
            });

            repositorySerializerFactory().ValidateSerializable(Type);
        }