private IConfigurationEntry RebuildConfigurationEntry(MongoDbConfigurationDocument doc) { var entry = new ConfigurationEntry { Component = doc.Component, Path = doc.Path, Label = doc.Label ?? doc.Path, ValueMeaning = Enum.TryParse(doc.Meaning, out ConfigurationValueMeaning meaning) ? meaning : ConfigurationValueMeaning.String, ValueType = Enum.TryParse(doc.ValueType, out ConfigurationValueType type) ? type : ConfigurationValueType.String, VisibleToPages = doc.VisibleToPages }; switch (entry.ValueType) { case ConfigurationValueType.Boolean: entry.Value = doc.BooleanValue; break; case ConfigurationValueType.DateTime: entry.Value = new DateTime(doc.LongValue.Value, DateTimeKind.Utc); break; case ConfigurationValueType.Null: entry.Value = ConfigurationValue.NullValue; break; case ConfigurationValueType.String: entry.Value = doc.StringValue; break; case ConfigurationValueType.Integer: entry.Value = doc.LongValue.GetValueOrDefault(); break; case ConfigurationValueType.Double: entry.Value = doc.DoubleValue.GetValueOrDefault(); break; case ConfigurationValueType.TimeSpan: entry.Value = TimeSpan.FromTicks(doc.LongValue.Value); break; case ConfigurationValueType.Bytes: entry.Value = doc.BytesValue; break; case ConfigurationValueType.Json: entry.Value = ConfigurationValue.FromJSON(doc.StringValue); break; case ConfigurationValueType.Object: throw new NotSupportedException("Raw objects loading does not supported in current version"); default: throw new NotImplementedException("Decoding from Mongo configuration document to Configuration value for arbitary types is not supported"); } return(entry); }
public void TestValuesFromDynamic() { var dynamicEntry = ConfigurationValue.FromJSON(@"{ ""value1"": true, ""value2"": 1, ""value3"": ""Some text"" }"); Assert.AreEqual(1, dynamicEntry.DynamicValue.value2); Assert.AreEqual("Some text", dynamicEntry.DynamicValue.value3); Assert.IsTrue(dynamicEntry.DynamicValue.value1); }
public ConfigurationValue ParseLodedConfigurationValue(Value confValue) { var parsedValue = ConfigurationValue.NullValue; switch (confValue.ValueTypeCase) { case Value.ValueTypeOneofCase.IntegerValue: parsedValue = confValue.IntegerValue; break; case Value.ValueTypeOneofCase.BooleanValue: parsedValue = confValue.BooleanValue; break; case Value.ValueTypeOneofCase.DoubleValue: parsedValue = confValue.DoubleValue; break; case Value.ValueTypeOneofCase.NullValue: parsedValue = null; break; case Value.ValueTypeOneofCase.StringValue: parsedValue = confValue.StringValue; break; case Value.ValueTypeOneofCase.TimestampValue: parsedValue = confValue.TimestampValue.ToDateTime(); break; case Value.ValueTypeOneofCase.BlobValue: parsedValue = confValue.BlobValue.ToByteArray(); break; case Value.ValueTypeOneofCase.GeoPointValue: parsedValue = ConfigurationValue.FromObject(new { SchemaType = "GeoPoint", Latitude = confValue.GeoPointValue.Latitude, Longtitude = confValue.GeoPointValue.Longitude }); break; case Value.ValueTypeOneofCase.ArrayValue: parsedValue = ConfigurationValue.FromJSON(GenerateJSONFromValue(confValue)); break; } return(parsedValue); }