/// <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 candidates for publishing /// </summary> protected override ISourceObservable <CandidateValidationContext> CreatePublishSourceStream(DateTime started, PublishOptions options, IPublishCandidateSource publishSourceRepository, IPublishValidator validator, IPublisherOperationService publisherOperationService, CancellationTokenSource errorSource) { IPublishCandidate result = publishSourceRepository.GetNode(options.ItemId.Value).Result; if (result == null) { throw new ArgumentNullException(string.Format("The publish could not be performed from a start item that doesn't exist : {0}.", (object)options.ItemId.Value)); } IPublishCandidate publishCandidate = result.ParentId.HasValue ? publishSourceRepository.GetNode(result.ParentId.Value).Result : result; ISourceObservable <CandidateValidationContext> sourceObservable = (ISourceObservable <CandidateValidationContext>) new TreeNodeSourceProducer( publishSourceRepository, result, validator, options.Descendants, this._options.SourceTreeReaderBatchSize, errorSource, (ILogger)LoggerFactoryExtensions.CreateLogger <TreeNodeSourceProducer>(this._loggerFactory)); if (PublishOptionsMetadataExtensions.GetItemBucketsEnabled(options) && publishCandidate.Node.TemplateId == PublishOptionsMetadataExtensions.GetBucketTemplateId(options)) { sourceObservable = (ISourceObservable <CandidateValidationContext>) new BucketNodeSourceProducer( sourceObservable, publishSourceRepository, result, PublishOptionsMetadataExtensions.GetBucketTemplateId(options), errorSource, (ILogger)LoggerFactoryExtensions.CreateLogger <BucketNodeSourceProducer>(this._loggerFactory)); } DeletedNodesSourceProducer dnsp = new DeletedNodesSourceProducer( sourceObservable, started, options.Languages, options.Targets, (IEnumerable <string>) new string[1] { PublishOptionsMetadataExtensions.GetPublishType(options) }, publisherOperationService, this._options.UnpublishedOperationsLoadingBatchSize, errorSource, (ILogger)LoggerFactoryExtensions.CreateLogger <UnpublishedNodeSourceProducer>(this._loggerFactory), (Predicate <PublisherOperation>)(op => Enumerable.Contains <Guid>((IEnumerable <Guid>)op.Path.Ancestors, options.ItemId.Value))); return((ISourceObservable <CandidateValidationContext>)dnsp); }