using System;
namespace UniJSON
{
public class JsonSchemaValidationContext
{
string[] m_stack = new string[64];
int m_pos;
public JsonSchemaValidationContext(object o)
{
Push(o.GetType().Name);
}
public ActionDisposer Push(object o)
{
m_stack[m_pos++] = o.ToString();
return new ActionDisposer(Pop);
}
public void Pop()
{
--m_pos;
}
public override string ToString()
{
return string.Join(".", m_stack, 0, m_pos);
}
}
public class JsonSchemaValidationException : Exception
{
public Exception Error
{
get; private set;
}
public JsonSchemaValidationException(JsonSchemaValidationContext context, string msg) : base(string.Format("[{0}] {1}", context, msg))
{
}
public JsonSchemaValidationException(JsonSchemaValidationContext context, Exception ex) : base(string.Format("[{0}] {1}", context, ex))
{
Error = ex;
}
}
public interface IJsonSchemaValidator
{
void Assign(IJsonSchemaValidator obj);
bool Parse(IFileSystemAccessor fs, string key, JsonNode value);
///
///
///
///
/// return null if validate value
JsonSchemaValidationException Validate(JsonSchemaValidationContext context, Object o);
void Serialize(JsonFormatter f, JsonSchemaValidationContext context, Object o);
void ToJson(JsonFormatter f);
}
}