Skip to content

Commit

Permalink
Minor
Browse files Browse the repository at this point in the history
  • Loading branch information
ayende committed Oct 5, 2012
1 parent db25c1b commit 8c3a9ab
Showing 1 changed file with 36 additions and 1 deletion.
37 changes: 36 additions & 1 deletion Stockholm.Syndrom/Controllers/Param.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using Raven.Client.Listeners;
using Raven.Json.Linq;

namespace Stockholm.Syndrom.Controllers
{
Expand Down Expand Up @@ -42,4 +45,36 @@ public override IEnumerable<string> GetDynamicMemberNames()
return GetType().GetProperties().Select(x => x.Name).Concat(vals.Keys);
}
}
}

public class ValidationListener : IDocumentStoreListener
{
readonly Dictionary<Type, List<Action<object>>> validations = new Dictionary<Type, List<Action<object>>>();

public void Register<T>(Action<T> validate)
{
List<Action<object>> list;
if(validations.TryGetValue(typeof(T),out list) == false)
validations[typeof (T)] = list = new List<Action<object>>();

list.Add(o => validate((T) o));
}

public bool BeforeStore(string key, object entityInstance, RavenJObject metadata, RavenJObject original)
{
List<Action<object>> list;
if (validations.TryGetValue(entityInstance.GetType(), out list))
{
foreach (var validation in list)
{
validation(entityInstance);
}
}
return false;
}

public void AfterStore(string key, object entityInstance, RavenJObject metadata)
{
}
}
}

0 comments on commit 8c3a9ab

Please sign in to comment.