|
1 | 1 | using System; |
| 2 | +using System.Collections.Concurrent; |
2 | 3 | using System.Collections.Generic; |
3 | 4 | using System.Linq; |
4 | | -using JsonPathPredicate; |
5 | | -using JsonPathPredicate.Operators; |
| 5 | +using JSONPredicate; |
| 6 | +using JSONPredicate.Operators; |
6 | 7 |
|
7 | 8 | namespace JSONPredicate |
8 | 9 | { |
9 | 10 | public static class JSONPredicate |
10 | 11 | { |
11 | | - private static readonly Dictionary<string, Func<object, object, bool>> ComparisonOperators = new Dictionary<string, Func<object, object, bool>>() |
| 12 | + private static readonly ConcurrentDictionary<string, Func<object, object, bool>> ComparisonOperators; |
| 13 | + |
| 14 | + static JSONPredicate() |
12 | 15 | { |
13 | | - { Expression.Comparison.EqOperator, (left, right) => EqOperator.Evaluate(left, right)}, |
14 | | - { Expression.Comparison.InOperator, (left, right) => InOperator.Evaluate(left, right) }, |
15 | | - { Expression.Comparison.NotOperator, (left, right) => NotOperator.Evaluate(left, right) }, |
16 | | - { Expression.Comparison.GtOperator, (left, right) => GtOperator.Evaluate(left, right) }, |
17 | | - { Expression.Comparison.GteOperator, (left, right) => GteOperator.Evaluate(left, right) }, |
18 | | - { Expression.Comparison.LtOperator, (left, right) => LtOperator.Evaluate(left, right) }, |
19 | | - { Expression.Comparison.LteOperator, (left, right) => LteOperator.Evaluate(left, right)} |
20 | | - }; |
| 16 | + var operators = new Dictionary<string, Func<object, object, bool>>() |
| 17 | + { |
| 18 | + { Expression.Comparison.EqOperator, (left, right) => EqOperator.Evaluate(left, right)}, |
| 19 | + { Expression.Comparison.InOperator, (left, right) => InOperator.Evaluate(left, right) }, |
| 20 | + { Expression.Comparison.NotOperator, (left, right) => NotOperator.Evaluate(left, right) }, |
| 21 | + { Expression.Comparison.GtOperator, (left, right) => GtOperator.Evaluate(left, right) }, |
| 22 | + { Expression.Comparison.GteOperator, (left, right) => GteOperator.Evaluate(left, right) }, |
| 23 | + { Expression.Comparison.LtOperator, (left, right) => LtOperator.Evaluate(left, right) }, |
| 24 | + { Expression.Comparison.LteOperator, (left, right) => LteOperator.Evaluate(left, right)}, |
| 25 | + { Expression.Comparison.StartsWithOperator, (left, right) => StartsWithOperator.Evaluate(left, right)}, |
| 26 | + { Expression.Comparison.EndsWithOperator, (left, right) => EndsWithOperator.Evaluate(left, right)}, |
| 27 | + { Expression.Comparison.ContainsOperator, (left, right) => ContainsOperator.Evaluate(left, right)} |
| 28 | + }; |
| 29 | + |
| 30 | + ComparisonOperators = new ConcurrentDictionary<string, Func<object, object, bool>>(operators); |
| 31 | + } |
21 | 32 |
|
22 | 33 | public static bool Evaluate(string expression, object obj) |
23 | 34 | { |
|
0 commit comments