コード例 #1
0
ファイル: NotSerializer.cs プロジェクト: kbolay/Bolay.Elastic
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            Dictionary<string, object> fieldDict = serializer.Deserialize<Dictionary<string, object>>(reader);
            if (fieldDict.ContainsKey(FilterTypeEnum.Not.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            NotFilter filter = null;
            if (fieldDict.ContainsKey(_FILTER))
            {
                filter = new NotFilter(JsonConvert.DeserializeObject<IFilter>(fieldDict.GetString(_FILTER)));
            }
            else
            {
                KeyValuePair<string, object> queryKvp = fieldDict.FirstOrDefault(x => !_KnownFields.Contains(x.Key));
                if (string.IsNullOrWhiteSpace(queryKvp.Key))
                    throw new RequiredPropertyMissingException("filter");

                QueryTypeEnum queryType = QueryTypeEnum.Term;
                queryType = QueryTypeEnum.Find(queryKvp.Key);
                if (queryType == null)
                    throw new Exception("Unable to find query type.");
                IQuery query = JsonConvert.DeserializeObject(fieldDict.First().Value.ToString(), queryType.ImplementationType) as IQuery;

                filter = new NotFilter(query);
            }

            FilterSerializer.DeserializeBaseValues(filter, _CACHE_DEFAULT, fieldDict);
            return filter;
        }
コード例 #2
0
 public void PASS_CreateFilter_Query()
 {
     NotFilter filter = new NotFilter(new TermQuery("field", "value"));
     Assert.IsNotNull(filter);
     Assert.AreEqual("field", (filter.Query as TermQuery).Field);
     Assert.AreEqual("value", (filter.Query as TermQuery).Value);   
 }
コード例 #3
0
 public void PASS_Serialize_Query()
 {
     NotFilter filter = new NotFilter(new TermQuery("field", "value"));
     string json = JsonConvert.SerializeObject(filter);
     Assert.IsNotNull(json);
     string expectedJson = "{\"not\":{\"term\":{\"field\":\"value\"}}}";
     Assert.AreEqual(expectedJson, json);
 }
コード例 #4
0
 public void FAIL_CreateFilter_Query()
 {
     try
     {
         NotFilter filter = new NotFilter((IQuery)null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("query", ex.ParamName);
     }
 }