public PutResultInstance Put(object key, object eTag, object document, object metadata) { if (key == null || key == Undefined.Value || key == Null.Value) { throw new JavaScriptException(this.Engine, "Error", "The first argument must contain a key."); } if (document == null || document == Undefined.Value || document == Null.Value) { throw new JavaScriptException(this.Engine, "Error", "The third argument must contain a document."); } var strKey = TypeConverter.ToString(key); var guidETag = GetETagValue(eTag); var roDocument = RavenDB.Json.Linq.RavenJObject.Parse(JSONObject.Stringify(this.Engine, document, null, null)); RavenDB.Json.Linq.RavenJObject roMetadata = null; if (metadata != null && metadata != Null.Value && metadata != Undefined.Value) { roMetadata = RavenDB.Json.Linq.RavenJObject.Parse(JSONObject.Stringify(this.Engine, metadata, null, null)); } var result = m_databaseCommands.Put(strKey, guidETag, roDocument, roMetadata); return(new PutResultInstance(this.Engine.Object.InstancePrototype, result)); }
public void EntityToDocument(string key, object entity, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata) { //ITrackChange e = entity as ITrackChange; //if (e != null) //{ // //e.ModifiedTime = metadata.Value<DateTime>("Last-Modified"); //} }
public override ReadVetoResult AllowRead(string key, Raven.Json.Linq.RavenJObject metadata, ReadOperation operation, Raven.Abstractions.Data.TransactionInformation transactionInformation) { if (operation == ReadOperation.Query) { return(ReadVetoResult.Ignore); } return(ReadVetoResult.Allowed); }
public override void AfterPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, Etag etag, Raven.Abstractions.Data.TransactionInformation transactionInformation) { if (key == "Raven/Authorization/WindowsSettings") { WindowsRequestAuthorizer.InvokeWindowsSettingsChanged(); } base.AfterPut(key, document, metadata, etag, transactionInformation); }
public override bool TryResolve(string id, Raven.Json.Linq.RavenJObject metadata, Raven.Json.Linq.RavenJObject document, Raven.Abstractions.Data.JsonDocument existingDoc, Func <string, Raven.Abstractions.Data.JsonDocument> getDocument) { if (Enabled) { metadata.Add("Raven-Remove-Document-Marker", true); } return(Enabled); }
public void DocumentToEntity(string key, object entity, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata) { ITrackChange e = entity as ITrackChange; if (e != null) { e.ModifiedTime = metadata.Value <DateTime>("Last-Modified"); } }
public override VetoResult AllowPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, TransactionInformation transactionInformation) { if (key == "Raven/Authorization/WindowsSettings" && Authentication.IsEnabled == false) { return(VetoResult.Deny("Cannot setup Windows Authentication without a valid commercial license.")); } return(VetoResult.Allowed); }
public override VetoResult AllowPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata) { if (key != null && key.StartsWith("Raven/ApiKeys/") && Authentication.IsEnabled == false) { return(VetoResult.Deny("Cannot setup OAuth Authentication without a valid commercial license.")); } return(VetoResult.Allowed); }
public bool BeforeStore(string key, object entityInstance, Raven.Json.Linq.RavenJObject metadata, Raven.Json.Linq.RavenJObject original) { if (!metadata.ContainsKey("Version")) { metadata["Version"] = 0; } metadata["Version"] = metadata["Version"].Value <Int32>() + 1; return(true); }
public override void AfterCommit(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, Guid etag) { if (key.StartsWith(RavenDatabasesPrefix, StringComparison.InvariantCultureIgnoreCase) == false) { return; } TenantDatabaseModified.Invoke(this, new TenantDatabaseModified.Event { Database = Database, Name = key.Substring(RavenDatabasesPrefix.Length) }); }
public override VetoResult AllowPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, Abstractions.Data.TransactionInformation transactionInformation) { if (key.Contains(@"\")) { return(VetoResult.Deny(@"Document name cannot contain '\' but attempted to save with: " + key)); } if (string.Equals(key, "Raven/Databases/System", StringComparison.OrdinalIgnoreCase)) { return (VetoResult.Deny( @"Cannot create a tenant database with the name 'System', that name is reserved for the actual system database")); } return(VetoResult.Allowed); }
public override void OnPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, Abstractions.Data.TransactionInformation transactionInformation) { using (Database.DisableAllTriggersForCurrentThread()) { Database.TransactionalStorage.Batch(accessor => { var tombstone = accessor.Lists.Read(Constants.RavenPeriodicExportsDocsTombstones, key); if (tombstone == null) { return; } accessor.Lists.Remove(Constants.RavenPeriodicExportsDocsTombstones, key); }); } }
public bool BeforeStore(string key, object entityInstance, Raven.Json.Linq.RavenJObject metadata, Raven.Json.Linq.RavenJObject original) { var validatorAttribute = entityInstance.GetType().CustomAttributes.SingleOrDefault(x => x.AttributeType.FullName == "FluentValidation.Attributes.ValidatorAttribute"); if (validatorAttribute == null) { return(true); } var factory = new ValidatorFactory(); var validator = factory.CreateInstance((Type)validatorAttribute.ConstructorArguments[0].Value); var validationResult = validator.Validate(entityInstance); if (!validationResult.IsValid) { throw new ValidationException(validationResult.Errors); } return(true); }
public void PutAttachment(object key, object eTag, object attachment, object metadata) { if (key == null || key == Undefined.Value || key == Null.Value) { throw new JavaScriptException(this.Engine, "Error", "The first argument must contain a key."); } if (attachment == null || attachment == Undefined.Value || attachment == Null.Value) { throw new JavaScriptException(this.Engine, "Error", "The third argument must contain an attachment."); } var strKey = TypeConverter.ToString(key); var guidETag = GetETagValue(eTag); byte[] attachmentData; if (attachment is Base64EncodedByteArrayInstance) { attachmentData = (attachment as Base64EncodedByteArrayInstance).Data; } else { attachmentData = Encoding.UTF8.GetBytes(TypeConverter.ToString(attachment)); } RavenDB.Json.Linq.RavenJObject roMetadata = null; if (metadata != null && metadata != Null.Value && metadata != Undefined.Value) { roMetadata = RavenDB.Json.Linq.RavenJObject.Parse(JSONObject.Stringify(this.Engine, metadata, null, null)); } using (var dataStream = new MemoryStream(attachmentData)) { m_databaseCommands.PutAttachment(strKey, guidETag, dataStream, roMetadata); } }
public void AfterStore(string key, object entityInstance, Raven.Json.Linq.RavenJObject metadata) { //do nothing }