public TreePublishHandler(IRequiredPublishFieldsResolver requiredPublishFieldsResolver, 
     IPublisherOperationService publisherOpsService, 
     IDataStoreFactory dataStoreFactory, 
     IRepositoryFactory<IMediaRepository> mediaRepositoryFactory, 
     IRepositoryFactory<IItemIndexRepository> targetIndexRepositoryFactory, 
     IRepositoryFactory<IItemRepository> itemRepositoryFactory, 
     IRepositoryFactory<IItemRelationshipRepository> itemRelationshipRepoFactory, 
     IRepositoryFactory<IItemNodeRepository> itemNodeRepositoryFactory, 
     IRepositoryFactory<ITemplateGraphRepository> templateGraphRepositoryFactory, 
     IRepositoryFactory<IIndexableItemRepository> indexablePublishTargetRepositoryFactory, 
     IRepositoryFactory<IWorkflowStateRepository> workflowRepositoryFactory, 
     IRepositoryFactory<ITestableContentRepository> testableContentRepositoryFactory, 
     IRepositoryFactory<IManifestRepository> manifestRepositoryFactory,
     IRepositoryFactory<IPublishExclusionsRepository> publishExclusionsRepositoryFactory,
     IPromotionCoordinator promoterCoordinator, 
     IEventRegistry eventRegistry, 
     ILoggerFactory loggerFactory, 
     IApplicationLifetime applicationLifetime, 
     IConfiguration config)
     : this(requiredPublishFieldsResolver, publisherOpsService, dataStoreFactory, mediaRepositoryFactory, targetIndexRepositoryFactory, itemRepositoryFactory, itemRelationshipRepoFactory, itemNodeRepositoryFactory, templateGraphRepositoryFactory, indexablePublishTargetRepositoryFactory, workflowRepositoryFactory, testableContentRepositoryFactory, manifestRepositoryFactory, publishExclusionsRepositoryFactory, promoterCoordinator, eventRegistry, loggerFactory, applicationLifetime, SitecoreConfigurationExtensions.As<PublishJobHandlerOptions>(config))
 {
 }
 /// <summary>
 /// Creates a new instance of Incremental Publish Handler
 /// </summary>
 public IncrementalPublishHandler(IRequiredPublishFieldsResolver requiredPublishFieldsResolver,
                                  IPublisherOperationService publisherOpsService,
                                  IDataStoreFactory dataStoreFactory,
                                  IRepositoryFactory <IMediaRepository> mediaRepositoryFactory,
                                  IRepositoryFactory <IItemIndexRepository> targetIndexRepositoryFactory,
                                  IRepositoryFactory <IItemRepository> itemRepositoryFactory,
                                  IRepositoryFactory <IItemRelationshipRepository> itemRelationshipRepoFactory,
                                  IRepositoryFactory <IItemNodeRepository> itemNodeRepositoryFactory,
                                  IRepositoryFactory <ITemplateGraphRepository> templateGraphRepositoryFactory,
                                  IRepositoryFactory <IIndexableItemRepository> indexablePublishTargetRepositoryFactory,
                                  IRepositoryFactory <IWorkflowStateRepository> workflowRepositoryFactory,
                                  IRepositoryFactory <ITestableContentRepository> testableContentRepositoryFactory,
                                  IRepositoryFactory <IManifestRepository> manifestRepositoryFactory,
                                  IRepositoryFactory <IPublishExclusionsRepository> publishExclusionsRepositoryFactory,
                                  IPromotionCoordinator promoterCoordinator,
                                  IEventRegistry eventRegistry,
                                  ILoggerFactory loggerFactory,
                                  IApplicationLifetime applicationLifetime,
                                  IConfiguration config)
     : this(requiredPublishFieldsResolver, publisherOpsService, dataStoreFactory, mediaRepositoryFactory, targetIndexRepositoryFactory, itemRepositoryFactory, itemRelationshipRepoFactory, itemNodeRepositoryFactory, templateGraphRepositoryFactory, indexablePublishTargetRepositoryFactory, workflowRepositoryFactory, testableContentRepositoryFactory, manifestRepositoryFactory, publishExclusionsRepositoryFactory, promoterCoordinator, eventRegistry, loggerFactory, applicationLifetime, SitecoreConfigurationExtensions.As <PublishJobHandlerOptions>(config))
 {
 }
 public TreePublishHandler(IRequiredPublishFieldsResolver requiredPublishFieldsResolver,
                           IPublisherOperationService publisherOpsService,
                           IDataStoreFactory dataStoreFactory,
                           IRepositoryFactory <IMediaRepository> mediaRepositoryFactory,
                           IRepositoryFactory <IItemIndexRepository> targetIndexRepositoryFactory,
                           IRepositoryFactory <IItemRepository> itemRepositoryFactory,
                           IRepositoryFactory <IItemRelationshipRepository> itemRelationshipRepoFactory,
                           IRepositoryFactory <IItemNodeRepository> itemNodeRepositoryFactory,
                           IRepositoryFactory <ITemplateGraphRepository> templateGraphRepositoryFactory,
                           IRepositoryFactory <IIndexableItemRepository> indexablePublishTargetRepositoryFactory,
                           IRepositoryFactory <IWorkflowStateRepository> workflowRepositoryFactory,
                           IRepositoryFactory <ITestableContentRepository> testableContentRepositoryFactory,
                           IRepositoryFactory <IManifestRepository> manifestRepositoryFactory,
                           IRepositoryFactory <IPublishExclusionsRepository> publishExclusionsRepositoryFactory,
                           IPromotionCoordinator promoterCoordinator,
                           IEventRegistry eventRegistry,
                           ILoggerFactory loggerFactory,
                           IApplicationLifetime applicationLifetime,
                           PublishJobHandlerOptions options = null)
     : base(requiredPublishFieldsResolver, publisherOpsService, dataStoreFactory, mediaRepositoryFactory, targetIndexRepositoryFactory, itemRepositoryFactory, itemRelationshipRepoFactory, itemNodeRepositoryFactory, templateGraphRepositoryFactory, indexablePublishTargetRepositoryFactory, workflowRepositoryFactory, testableContentRepositoryFactory, manifestRepositoryFactory, publishExclusionsRepositoryFactory, promoterCoordinator, eventRegistry, loggerFactory, applicationLifetime, options ?? new PublishJobHandlerOptions())
 {
 }
 /// <summary>
 /// Creates a new instance of Incremental Publish Handler
 /// </summary>
 public IncrementalPublishHandler(IRequiredPublishFieldsResolver requiredPublishFieldsResolver,
     IPublisherOperationService publisherOpsService,
     IDataStoreFactory dataStoreFactory,
     IRepositoryFactory<IMediaRepository> mediaRepositoryFactory,
     IRepositoryFactory<IItemIndexRepository> targetIndexRepositoryFactory,
     IRepositoryFactory<IItemRepository> itemRepositoryFactory,
     IRepositoryFactory<IItemRelationshipRepository> itemRelationshipRepoFactory,
     IRepositoryFactory<IItemNodeRepository> itemNodeRepositoryFactory,
     IRepositoryFactory<ITemplateGraphRepository> templateGraphRepositoryFactory,
     IRepositoryFactory<IIndexableItemRepository> indexablePublishTargetRepositoryFactory,
     IRepositoryFactory<IWorkflowStateRepository> workflowRepositoryFactory,
     IRepositoryFactory<ITestableContentRepository> testableContentRepositoryFactory,
     IRepositoryFactory<IManifestRepository> manifestRepositoryFactory,
     IRepositoryFactory<IPublishExclusionsRepository> publishExclusionsRepositoryFactory,
     IPromotionCoordinator promoterCoordinator,
     IEventRegistry eventRegistry,
     ILoggerFactory loggerFactory,
     IApplicationLifetime applicationLifetime,
     PublishJobHandlerOptions options = null)
     : base(requiredPublishFieldsResolver, publisherOpsService, dataStoreFactory, mediaRepositoryFactory, targetIndexRepositoryFactory, itemRepositoryFactory, itemRelationshipRepoFactory, itemNodeRepositoryFactory, templateGraphRepositoryFactory, indexablePublishTargetRepositoryFactory, workflowRepositoryFactory, testableContentRepositoryFactory, manifestRepositoryFactory, publishExclusionsRepositoryFactory, promoterCoordinator, eventRegistry, loggerFactory, applicationLifetime, options ?? new PublishJobHandlerOptions())
 {
 }
Beispiel #5
0
        /// <summary>
        /// Creates a collection of target operations for items to be published
        /// </summary>
        protected override IObservable <ICandidateOperation> CreateTargetOperationsStream(DateTime started, IPublishCandidateSource publishCandidateSource, IPublishValidator validator, PublishOptions jobOptions, IObservable <CandidateValidationContext> publishStream, IItemIndexService targetIndex, ITestableContentRepository testableContentRepository, IMediaRepository targetMediaRepository, IRequiredPublishFieldsResolver requiredPublishFieldsResolver, CancellationTokenSource errorSource, Guid targetId)
        {
            IObservable <CandidateValidationTargetContext> processingStream1 = this.CreateTargetProcessingStream(started, publishCandidateSource, validator, jobOptions, publishStream, targetIndex, testableContentRepository, targetMediaRepository, this._requiredPublishFieldsResolver, errorSource, targetId);
            RelatedNodesSourceProducer nodesSourceProducer = new RelatedNodesSourceProducer(processingStream1.Where <CandidateValidationTargetContext>((Func <CandidateValidationTargetContext, bool>)(ctx => ctx.IsValid)).Select <CandidateValidationTargetContext, ValidCandidateTargetContext>((Func <CandidateValidationTargetContext, ValidCandidateTargetContext>)(ctx => ctx.AsValid())), publishCandidateSource, validator, this._options.RelatedItemBatchSize, jobOptions.RelatedItems, jobOptions.GetDetectCloneSources(), errorSource, this._logger);
            IObservable <CandidateValidationTargetContext>            processingStream2 = this.CreateTargetProcessingStream(started, publishCandidateSource, validator, jobOptions, (IObservable <CandidateValidationContext>)nodesSourceProducer, targetIndex, testableContentRepository, targetMediaRepository, this._requiredPublishFieldsResolver, errorSource, targetId);
            IConnectableObservable <CandidateValidationTargetContext> source            = processingStream1.Merge <CandidateValidationTargetContext>(processingStream2).Publish <CandidateValidationTargetContext>();

            source.Connect();
            UpdatedCandidatesOperationsProducer          operationsProducer1   = new UpdatedCandidatesOperationsProducer(source.Where <CandidateValidationTargetContext>((Func <CandidateValidationTargetContext, bool>)(ctx => ctx.IsValid)).Select <CandidateValidationTargetContext, ValidCandidateTargetContext>((Func <CandidateValidationTargetContext, ValidCandidateTargetContext>)(ctx => ctx.AsValid())), started, errorSource, this._loggerFactory.CreateLogger <UpdatedCandidatesOperationsProducer>());
            MediaOperationsProducer                      operationsProducer2   = new MediaOperationsProducer(source.Where <CandidateValidationTargetContext>((Func <CandidateValidationTargetContext, bool>)(ctx => ctx.IsValid)).Select <CandidateValidationTargetContext, ValidCandidateTargetContext>((Func <CandidateValidationTargetContext, ValidCandidateTargetContext>)(ctx => ctx.AsValid())), targetMediaRepository, requiredPublishFieldsResolver.MediaFieldsIds, started, this._options.MediaBatchSize, errorSource, this._loggerFactory.CreateLogger <MediaOperationsProducer>());
            IConnectableObservable <ICandidateOperation> connectableObservable = Observable.Merge <ICandidateOperation>(new IObservable <ICandidateOperation>[3]
            {
                (IObservable <ICandidateOperation>) new DeletedCandidateOperationsProducer(source.Where <CandidateValidationTargetContext>((Func <CandidateValidationTargetContext, bool>)(ctx => !ctx.IsValid)).Select <CandidateValidationTargetContext, Guid>((Func <CandidateValidationTargetContext, Guid>)(ctx => ctx.AsInvalid().Id)), targetIndex, started, this._options.DeletedItemsBatchSize, errorSource, this._sourceName, this._loggerFactory.CreateLogger <DeletedCandidateOperationsProducer>()),
                (IObservable <ICandidateOperation>)operationsProducer1,
                (IObservable <ICandidateOperation>)operationsProducer2
            }).Publish <ICandidateOperation>();

            connectableObservable.Connect();
            return((IObservable <ICandidateOperation>)connectableObservable);
        }
        /// <summary>
        /// Creates a stream of items that are to be published
        /// </summary>
        protected override IObservable<CandidateValidationTargetContext> CreateTargetProcessingStream(DateTime started, IPublishCandidateSource publishSourceRepository, IPublishValidator validator, PublishOptions jobOptions, IObservable<CandidateValidationContext> publishStream, IItemIndexService targetIndex, ITestableContentRepository testableContentRepository, IMediaRepository targetMediaRepository, IRequiredPublishFieldsResolver requiredPublishFieldsResolver, CancellationTokenSource errorSource, Guid targetId)
        {
            IPublishCandidateTargetValidator publishCandidateTargetValidator = !PublishOptionsMetadataExtensions.GetItemBucketsEnabled(jobOptions) ?
                                                            (IPublishCandidateTargetValidator)new PublishTargetParentValidator(publishSourceRepository, targetIndex) :
                                                            (IPublishCandidateTargetValidator)new PublishTargetBucketParentValidator(publishSourceRepository, targetIndex, PublishOptionsMetadataExtensions.GetBucketTemplateId(jobOptions));

            publishStream = (IObservable<CandidateValidationContext>)new CandidatesParentValidationTargetProducer(
                publishStream,
                publishCandidateTargetValidator,
                errorSource,
                (ILogger)LoggerFactoryExtensions.CreateLogger<CandidatesParentValidationTargetProducer>(this._loggerFactory));

            return base.CreateTargetProcessingStream(
                started,
                publishSourceRepository,
                validator,
                jobOptions,
                publishStream,
                targetIndex,
                testableContentRepository,
                targetMediaRepository,
                requiredPublishFieldsResolver,
                errorSource,
                targetId);
        }
        /// <summary>
        /// Creates a stream of items that are to be published
        /// </summary>
        protected override IObservable <CandidateValidationTargetContext> CreateTargetProcessingStream(DateTime started, IPublishCandidateSource publishSourceRepository, IPublishValidator validator, PublishOptions jobOptions, IObservable <CandidateValidationContext> publishStream, IItemIndexService targetIndex, ITestableContentRepository testableContentRepository, IMediaRepository targetMediaRepository, IRequiredPublishFieldsResolver requiredPublishFieldsResolver, CancellationTokenSource errorSource, Guid targetId)
        {
            IPublishCandidateTargetValidator publishCandidateTargetValidator = !PublishOptionsMetadataExtensions.GetItemBucketsEnabled(jobOptions) ?
                                                                               (IPublishCandidateTargetValidator) new PublishTargetParentValidator(publishSourceRepository, targetIndex) :
                                                                               (IPublishCandidateTargetValidator) new PublishTargetBucketParentValidator(publishSourceRepository, targetIndex, PublishOptionsMetadataExtensions.GetBucketTemplateId(jobOptions));

            publishStream = (IObservable <CandidateValidationContext>) new CandidatesParentValidationTargetProducer(
                publishStream,
                publishCandidateTargetValidator,
                errorSource,
                (ILogger)LoggerFactoryExtensions.CreateLogger <CandidatesParentValidationTargetProducer>(this._loggerFactory));

            return(base.CreateTargetProcessingStream(
                       started,
                       publishSourceRepository,
                       validator,
                       jobOptions,
                       publishStream,
                       targetIndex,
                       testableContentRepository,
                       targetMediaRepository,
                       requiredPublishFieldsResolver,
                       errorSource,
                       targetId));
        }