private void ParseHistory([NotNull] XElement root) { Debug.ArgumentNotNull(root, nameof(root)); history.Clear(); foreach (var element in root.Elements()) { var created = DateTimeExtensions.FromIso(element.GetAttributeValue("created")); var itemId = new ItemId(new Guid(element.GetAttributeValue("id"))); var language = new Language(element.GetAttributeValue("language")); var version = new Data.Version(element.GetAttributeInt("version", Data.Version.Latest.Number)); var entry = new HistoryEntry(Context.DatabaseUri) { Action = element.GetAttributeValue("action"), Category = element.GetAttributeValue("category"), Created = created, ItemId = itemId, Language = language, Version = version, Task = element.GetAttributeValue("task"), UserName = element.GetAttributeValue("username"), Path = element.GetAttributeValue("path"), AdditionalInfo = element.Value }; history.Add(entry); } }
public UploadContent(IDatabase db, Data.Version version, int sendTimeout, int receiveTimeout, int sendBufferSize, int receiveBufferSize) : base(sendTimeout, receiveTimeout, sendBufferSize, receiveBufferSize) { _db = db; _version = version; }
public override void ModifyVersion(EngineRequest request, Data.Version version) { CheckInitialization(); Logger.Storage.Debug("Modifying version '" + version.VersionId.ToString() + "'..."); EngineMethods.ModifyVersion act = new EngineMethods.ModifyVersion(request, version); act.Execute(); }
public ModifyVersion(IDatabase db, Data.Version version, Security.RequestingPartyType requestingPartyType, Security.Session session, int sendTimeout, int receiveTimeout, int sendBufferSize, int receiveBufferSize) : base(db, sendTimeout, receiveTimeout, sendBufferSize, receiveBufferSize) { _version = version; _requestingPartyType = requestingPartyType; _session = session; }
public Data.Version Transition(Model.Document document, out JObject remainder) { Data.Version version; Data.VersionId id; string rev; string verifyString; if (!VerifyDocumentIntegrity(document, out verifyString)) { Logger.Storage.Error("The document is not properly formatted. It is missing the property '" + verifyString + "'."); throw new FormattingException("The argument document does not have the necessary property '" + verifyString + "'."); } try { id = new Data.VersionId(document.Id); if (document["_rev"] != null) { rev = document.Rev; version = new Data.Version(id, rev); document.Remove("_rev"); } else { version = new Data.Version(id); } document.Remove("_id"); document.Remove("$type"); version.Md5 = document["$md5"].Value <string>(); version.Extension = document["$extension"].Value <string>(); version.Created = document["$created"].Value <DateTime>(); version.Creator = document["$creator"].Value <string>(); version.Modified = document["$modified"].Value <DateTime>(); version.Modifier = document["$modifier"].Value <string>(); document.Remove("$md5"); document.Remove("$extension"); document.Remove("$created"); document.Remove("$creator"); document.Remove("$modified"); document.Remove("$modifier"); } catch (Exception e) { Logger.Storage.Error("An exception occurred while attempting to parse the document.", e); throw; } remainder = document; return(version); }
public Data.Version Transition(Model.Document document, out JObject remainder) { Data.Version version; Data.VersionId id; string rev; string verifyString; if (!VerifyDocumentIntegrity(document, out verifyString)) { Logger.Storage.Error("The document is not properly formatted. It is missing the property '" + verifyString + "'."); throw new FormattingException("The argument document does not have the necessary property '" + verifyString + "'."); } try { id = new Data.VersionId(document.Id); if (document["_rev"] != null) { rev = document.Rev; version = new Data.Version(id, rev); document.Remove("_rev"); } else { version = new Data.Version(id); } document.Remove("_id"); document.Remove("$type"); version.Md5 = document["$md5"].Value<string>(); version.Extension = document["$extension"].Value<string>(); version.Created = document["$created"].Value<DateTime>(); version.Creator = document["$creator"].Value<string>(); version.Modified = document["$modified"].Value<DateTime>(); version.Modifier = document["$modifier"].Value<string>(); document.Remove("$md5"); document.Remove("$extension"); document.Remove("$created"); document.Remove("$creator"); document.Remove("$modified"); document.Remove("$modifier"); } catch (Exception e) { Logger.Storage.Error("An exception occurred while attempting to parse the document.", e); throw; } remainder = document; return version; }
private void RemoveFields([NotNull] ID itemId, [NotNull] Language language, [NotNull] Data.Version version) { SharedFields.Remove(itemId); { var itemFields = UnversionedFields[itemId]; itemFields.Where(r => r.Language == language.ToString()).ToList().Apply(r => itemFields.Remove(r)); } { var itemFields = VersionedFields[itemId]; itemFields.Where(r => (r.Language == language.ToString()) && (r.Version == version.ToInt32())) .ToList() .Apply(r => itemFields.Remove(r)); } }
private List <Exception> AddMetadata(Data.Version version, Model.Document doc) { List <Exception> errors = null; Dictionary <string, object> .Enumerator en = version.Metadata.GetEnumerator(); while (en.MoveNext()) { if ((errors = AddMetadata(en.Current.Key, en.Current.Value, doc)) != null) { return(errors); } } return(null); }
public CreateNewVersion(IDatabase db, CreateVersionArgs args, Security.RequestingPartyType requestingPartyType, Security.Session session, int sendTimeout, int receiveTimeout, int sendBufferSize, int receiveBufferSize) : base(db, sendTimeout, receiveTimeout, sendBufferSize, receiveBufferSize) { _args = args; _requestingPartyType = requestingPartyType; _session = session; _version = new Data.Version(_args.VersionId, _args.Metadata, _args.Content); _version.Md5 = _args.Md5; _version.Extension = _args.Extension; _version.Created = DateTime.Now; _version.Creator = session.User.Username; _version.Modified = _version.Created; _version.Modifier = _version.Creator; }
public PackageItem([NotNull] ZipEntry entry) { Assert.ArgumentNotNull(entry, nameof(entry)); Entry = entry; var parts = entry.Name.Split('/'); DatabaseName = parts[0]; ItemName = parts[parts.Length - 5]; ItemId = new ItemId(new Guid(parts[parts.Length - 4])); Language = new Language(parts[parts.Length - 3]); Version = new Data.Version(int.Parse(parts[parts.Length - 2])); var path = string.Empty; for (var n = 2; n < parts.Length - 5; n++) { path += @"/" + parts[n]; } Path = path; }
private Item GetItem(ID itemId, Language language, Data.Version version) { Item item; if (language == null && version == null) { item = WorkingDatabase.GetItem(itemId); } else if (language == null && version != null) { item = WorkingDatabase.GetItem(itemId, Sitecore.Context.Language, version); } else if (language != null && version == null) { item = WorkingDatabase.GetItem(itemId, language); } else { item = WorkingDatabase.GetItem(itemId, language, version); } return(item); }
public ModifyVersion(EngineRequest request, Data.Version version) : base(request) { _version = version; }
public SaveContent(IDatabase db, Data.Version version, int sendTimeout, int receiveTimeout, int sendBufferSize, int receiveBufferSize) : base(db, version.VersionId.ToString(), sendTimeout, receiveTimeout, sendBufferSize, receiveBufferSize) { _version = version; }
public bool Equals(Data.Version other) { return((other != null) && (other.Number == _number)); }
public override void TaskComplete(Tasks.Base sender, ICommandReply reply) { Type t = sender.GetType(); if (t == typeof(Tasks.DownloadResource)) { Tasks.DownloadResource task = (Tasks.DownloadResource)sender; _resource = task.Resource; _resourceRemainder = task.Remainder; RunTaskProcess(new Tasks.CheckResourcePermissions(_db, _resource, _requestingPartyType, _session, Security.Authorization.ResourcePermissionType.Modify, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.CheckResourcePermissions)) { Tasks.CheckResourcePermissions task = (Tasks.CheckResourcePermissions)sender; if (!task.IsAuthorized) { TriggerOnAuthorizationDenied(task); return; } RunTaskProcess(new Tasks.MarkResourceForCheckout(_resource, _session.User.Username, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.MarkResourceForCheckout)) { Tasks.MarkResourceForCheckout task = (Tasks.MarkResourceForCheckout)sender; _resource = task.Resource; List <Exception> errors; List <Model.Document> docs = new List <Model.Document>(); Transitions.Version txVersion = new Transitions.Version(); Transitions.Resource txResource = new Transitions.Resource(); docs.Add(txResource.Transition(_resource, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } docs[0].CombineWith(_resourceRemainder); docs.Add(txVersion.Transition(_version, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } RunTaskProcess(new Tasks.MakeBulkDocument(docs, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.MakeBulkDocument)) { Tasks.MakeBulkDocument task = (Tasks.MakeBulkDocument)sender; RunTaskProcess(new Tasks.UploadBulkDocuments(_db, task.BulkDocument, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadBulkDocuments)) { Tasks.UploadBulkDocuments task = (Tasks.UploadBulkDocuments)sender; Commands.PostBulkDocumentsReply.Entry entry = task.FindEntryById(_version.VersionId.ToString()); if (entry == null) { TriggerOnError(task, "Failed to locate " + _version.VersionId.ToString() + " in the " + "bulk document post results.", null); return; } // This is needed so that couchdb can apply the content to the correct revision. _version.UpdateRevision(entry.Rev); // If no content -> return if (_version.Content == null) { Resource = _resource; Version = _version; TriggerOnComplete(reply, new Tuple <Data.Resource, Data.Version>(_resource, _version)); return; } // Upload Data.Content from Data.Version RunTaskProcess(new Tasks.UploadContent(_db, _version, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadContent)) { Resource = _resource; Version = _version; TriggerOnComplete(reply, new Tuple <Data.Resource, Data.Version>(_resource, _version)); } else { TriggerOnError(sender, reply.ToString(), null); } }
public virtual void ModifyVersion(EngineRequest request, Data.Version version) { throw new NotImplementedException(); }
public override void TaskComplete(Tasks.Base sender, ICommandReply reply) { Type t = sender.GetType(); if (t == typeof(Tasks.DownloadGlobalPermissions)) { Tasks.DownloadGlobalPermissions task = (Tasks.DownloadGlobalPermissions)sender; _gur = task.GlobalUsageRights; RunTaskProcess(new Tasks.CheckGlobalPermissions(_db, _gur, _requestingPartyType, _session, Security.Authorization.GlobalPermissionType.CreateResource, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.CheckGlobalPermissions)) { Tasks.CheckGlobalPermissions task = (Tasks.CheckGlobalPermissions)sender; if (!task.IsAuthorized) { TriggerOnAuthorizationDenied(task); return; } RunTaskProcess(new Tasks.DownloadResourceUsageRightsTemplate(_db, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.DownloadResourceUsageRightsTemplate)) { string username = _session.User.Username; DateTime creation = DateTime.Now; List<Exception> errors; List<Model.Document> docs = new List<Model.Document>(); Tasks.DownloadResourceUsageRightsTemplate task = (Tasks.DownloadResourceUsageRightsTemplate)sender; // Create the Resource and Version objects List<Data.VersionId> versions = new List<Data.VersionId>(); Data.ResourceId resourceId = Data.ResourceId.Create(); _version = new Data.Version(new Data.VersionId(resourceId), _args.VersionArgs.Metadata, _args.VersionArgs.Content) { Md5 = _args.VersionArgs.Md5, Extension = _args.VersionArgs.Extension, Created = creation, Creator = username, Modified = creation, Modifier = username }; versions.Add(_version.VersionId); _resource = new Data.Resource(resourceId, null, versions, _version.VersionId, _args.Metadata, task.Value.UsageRights) { Tags = _args.Tags, Created = creation, Creator = username, Modified = creation, Modifier = username, CheckedOutAt = creation, CheckedOutTo = username, LastCommit = creation, LastCommitter = username, Title = _args.Title }; // Transition to json objects Transitions.Resource txResource = new Transitions.Resource(); docs.Add(txResource.Transition(_resource, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } Transitions.Version txVersion = new Transitions.Version(); docs.Add(txVersion.Transition(_version, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } RunTaskProcess(new Tasks.MakeBulkDocument(docs, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.MakeBulkDocument)) { Tasks.MakeBulkDocument task = (Tasks.MakeBulkDocument)sender; RunTaskProcess(new Tasks.UploadBulkDocuments(_db, task.BulkDocument, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadBulkDocuments)) { Tasks.UploadBulkDocuments task = (Tasks.UploadBulkDocuments)sender; Commands.PostBulkDocumentsReply.Entry entry = task.FindEntryById(_version.VersionId.ToString()); if (entry == null) { TriggerOnError(task, "Failed to locate " + _version.VersionId.ToString() + " in the " + "bulk document post results.", null); return; } // This is needed so that couchdb can apply the content to the correct revision. _version.UpdateRevision(entry.Rev); // Upload Data.Content from Data.Version RunTaskProcess(new Tasks.UploadContent(_db, _version, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadContent)) { TriggerOnComplete(reply, new Tuple<Data.Resource, Data.Version>(_resource, _version)); } else { TriggerOnError(sender, reply.ToString(), null); } }
public ImportResult ImportCsv(Stream stream) { var importResult = new ImportResult(); using (var streamReader = new System.IO.StreamReader(stream)) { var csvReader = new CsvReader(streamReader); csvReader.Configuration.HasHeaderRecord = true; //csvReader.Read() acts like a move next. Will return false when at the end of the file while (csvReader.Read()) { var importItemResult = new ImportItemResult(); try { Item item = null; ID itemId = null; if (csvReader.FieldHeaders.Contains(Constants.FIELD_ITEM_ID)) { itemId = ParseIdOrError(csvReader, Constants.FIELD_ITEM_ID); importItemResult.ItemId = itemId; } Language language = null; Data.Version version = null; if (csvReader.FieldHeaders.Contains(Constants.FIELD_LANGUAGE)) { language = ParseLanguageOrError(csvReader, Constants.FIELD_LANGUAGE); } if (csvReader.FieldHeaders.Contains(Constants.FIELD_VERSION)) { version = ParseVersionOrError(csvReader, Constants.FIELD_VERSION); } if (!ID.IsNullOrEmpty(itemId)) { item = GetItem(itemId, language, version); //The user might not be able to access this item. We need to make sure the item dosent exist yet if (item == null) { using (new SecurityDisabler()) { item = GetItem(itemId, language, version); Assert.IsNull(item, String.Format("User does not have access to the item with ID {0}", itemId)); } } Assert.IsNotNull(item, String.Format("Could not find item with ID {0}", itemId)); } importItemResult.IsCreation = item == null; if (importItemResult.IsCreation) { CreateItem(csvReader, language, importItemResult); } else { UpdateItem(csvReader, item, importItemResult); } } catch (Exception ex) { importItemResult.Success = false; importItemResult.ErrorMessage = ex.Message; Sitecore.Diagnostics.Log.Error("BulkManager import process failed for item", ex, this); } finally { importResult.ItemResults.Add(importItemResult); //Increment metrics if (importItemResult.Success && importItemResult.IsCreation) { importResult.ItemsCreated++; } else if (importItemResult.Success && !importItemResult.IsCreation) { importResult.ItemsUpdated++; } else if (!importItemResult.Success) { importResult.ItemsFailed++; } } } } return(importResult); }
public static bool HasVersionedRenderingsOnVersion(this Item item, Language language, Data.Version version) { var versionItem = item.Database.GetItem(item.ID, language, version); return(versionItem != null && versionItem.HasVersionedRenderings()); }
public static Uri Build(IDatabase db, Data.Version version) { return(Build(db, version.VersionId)); }
public int CompareTo(Data.Version other) { return(this.Equals(other) ? 0 : this._number.CompareTo(other.Number)); }
public Model.Document Transition(Data.Version version, out List <Exception> errors) { Model.Document document = new Model.Document(); Model.Attachment att = null; string prop; errors = null; try { document.Id = version.VersionId.ToString(); if (!string.IsNullOrEmpty(version.Revision)) { document.Rev = version.Revision; } document.Add("$type", "version"); document.Add("$md5", version.Md5); document.Add("$extension", version.Extension); document.Add("$created", version.Created); document.Add("$creator", version.Creator); document.Add("$modified", version.Modified); document.Add("$modifier", version.Modifier); if (version.Metadata != null) { if ((errors = AddMetadata(version, document)) != null) { return(null); } } if (version.Content != null) { att = new Model.Attachment(); att.ContentType = version.Content.ContentType.Name; att.AttachmentLength = version.Content.Length; if (string.IsNullOrEmpty(version.Content.LocalFilepath)) { document.AddAttachment("file", att); } else { document.AddAttachment(System.IO.Path.GetFileName(version.Content.LocalFilepath), att); } } if (!VerifyDocumentIntegrity(document, out prop)) { Logger.Storage.Error("The document is not properly formatted. It is missing the property '" + prop + "'."); throw new FormattingException("The argument document does not have the necessary property '" + prop + "'."); } } catch (Exception e) { Logger.Storage.Error("An exception occurred while attempting to parse the version object.", e); throw; } return(document); }
public override void TaskComplete(Tasks.Base sender, ICommandReply reply) { Type t = sender.GetType(); if (t == typeof(Tasks.DownloadResource)) { Tasks.DownloadResource task = (Tasks.DownloadResource)sender; _resource = task.Resource; _resourceRemainder = task.Remainder; RunTaskProcess(new Tasks.CheckResourcePermissions(_db, _resource, _requestingPartyType, _session, Security.Authorization.ResourcePermissionType.Modify, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.CheckResourcePermissions)) { Tasks.CheckResourcePermissions task = (Tasks.CheckResourcePermissions)sender; if (!task.IsAuthorized) { TriggerOnAuthorizationDenied(task); return; } RunTaskProcess(new Tasks.MarkResourceForCheckout(_resource, _session.User.Username, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.MarkResourceForCheckout)) { Tasks.MarkResourceForCheckout task = (Tasks.MarkResourceForCheckout)sender; _resource = task.Resource; List<Exception> errors; List<Model.Document> docs = new List<Model.Document>(); Transitions.Version txVersion = new Transitions.Version(); Transitions.Resource txResource = new Transitions.Resource(); docs.Add(txResource.Transition(_resource, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } docs[0].CombineWith(_resourceRemainder); docs.Add(txVersion.Transition(_version, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } RunTaskProcess(new Tasks.MakeBulkDocument(docs, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.MakeBulkDocument)) { Tasks.MakeBulkDocument task = (Tasks.MakeBulkDocument)sender; RunTaskProcess(new Tasks.UploadBulkDocuments(_db, task.BulkDocument, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadBulkDocuments)) { Tasks.UploadBulkDocuments task = (Tasks.UploadBulkDocuments)sender; Commands.PostBulkDocumentsReply.Entry entry = task.FindEntryById(_version.VersionId.ToString()); if (entry == null) { TriggerOnError(task, "Failed to locate " + _version.VersionId.ToString() + " in the " + "bulk document post results.", null); return; } // This is needed so that couchdb can apply the content to the correct revision. _version.UpdateRevision(entry.Rev); // If no content -> return if (_version.Content == null) { Resource = _resource; Version = _version; TriggerOnComplete(reply, new Tuple<Data.Resource, Data.Version>(_resource, _version)); return; } // Upload Data.Content from Data.Version RunTaskProcess(new Tasks.UploadContent(_db, _version, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadContent)) { Resource = _resource; Version = _version; TriggerOnComplete(reply, new Tuple<Data.Resource, Data.Version>(_resource, _version)); } else { TriggerOnError(sender, reply.ToString(), null); } }
public override void TaskComplete(Tasks.Base sender, ICommandReply reply) { Type t = sender.GetType(); if (t == typeof(Tasks.DownloadGlobalPermissions)) { Tasks.DownloadGlobalPermissions task = (Tasks.DownloadGlobalPermissions)sender; _gur = task.GlobalUsageRights; RunTaskProcess(new Tasks.CheckGlobalPermissions(_db, _gur, _requestingPartyType, _session, Security.Authorization.GlobalPermissionType.CreateResource, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.CheckGlobalPermissions)) { Tasks.CheckGlobalPermissions task = (Tasks.CheckGlobalPermissions)sender; if (!task.IsAuthorized) { TriggerOnAuthorizationDenied(task); return; } RunTaskProcess(new Tasks.DownloadResourceUsageRightsTemplate(_db, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.DownloadResourceUsageRightsTemplate)) { string username = _session.User.Username; DateTime creation = DateTime.Now; List <Exception> errors; List <Model.Document> docs = new List <Model.Document>(); Tasks.DownloadResourceUsageRightsTemplate task = (Tasks.DownloadResourceUsageRightsTemplate)sender; // Create the Resource and Version objects List <Data.VersionId> versions = new List <Data.VersionId>(); Data.ResourceId resourceId = Data.ResourceId.Create(); _version = new Data.Version(new Data.VersionId(resourceId), _args.VersionArgs.Metadata, _args.VersionArgs.Content) { Md5 = _args.VersionArgs.Md5, Extension = _args.VersionArgs.Extension, Created = creation, Creator = username, Modified = creation, Modifier = username }; versions.Add(_version.VersionId); _resource = new Data.Resource(resourceId, null, versions, _version.VersionId, _args.Metadata, task.Value.UsageRights) { Tags = _args.Tags, Created = creation, Creator = username, Modified = creation, Modifier = username, CheckedOutAt = creation, CheckedOutTo = username, LastCommit = creation, LastCommitter = username, Title = _args.Title }; // Transition to json objects Transitions.Resource txResource = new Transitions.Resource(); docs.Add(txResource.Transition(_resource, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } Transitions.Version txVersion = new Transitions.Version(); docs.Add(txVersion.Transition(_version, out errors)); if (errors != null) { TriggerOnError(null, errors[0].Message, errors[0]); return; } RunTaskProcess(new Tasks.MakeBulkDocument(docs, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.MakeBulkDocument)) { Tasks.MakeBulkDocument task = (Tasks.MakeBulkDocument)sender; RunTaskProcess(new Tasks.UploadBulkDocuments(_db, task.BulkDocument, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadBulkDocuments)) { Tasks.UploadBulkDocuments task = (Tasks.UploadBulkDocuments)sender; Commands.PostBulkDocumentsReply.Entry entry = task.FindEntryById(_version.VersionId.ToString()); if (entry == null) { TriggerOnError(task, "Failed to locate " + _version.VersionId.ToString() + " in the " + "bulk document post results.", null); return; } // This is needed so that couchdb can apply the content to the correct revision. _version.UpdateRevision(entry.Rev); // Upload Data.Content from Data.Version RunTaskProcess(new Tasks.UploadContent(_db, _version, _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize)); } else if (t == typeof(Tasks.UploadContent)) { TriggerOnComplete(reply, new Tuple <Data.Resource, Data.Version>(_resource, _version)); } else { TriggerOnError(sender, reply.ToString(), null); } }