Example #1
0
        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");
     //}
 }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
0
 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");
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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)
            });
        }
Example #11
0
        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);
        }
Example #12
0
 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);
        }
Example #14
0
        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
 }