public async Task<Version<T>[]> Load<T>(string id) where T : class, IAggregate { var snapshotType = _snapshotsConstructor.GetSnapshot(_aggregatesConstructor.BuildEmpty<T>()) .GetType(); var serializer = new DomainSerializer(); using (var snapshotItemsRepo = new RawSnapshotsRepository(option)) { return (await snapshotItemsRepo.Load(EntityActorName.New<T>(id). Name)).Select(s => { var memento = (IMemento) serializer.FromBinary(s.Snapshot, snapshotType); var aggregate = (T) _aggregatesConstructor.Build(typeof(T), id, memento); return new Version<T>(aggregate, s.Timestamp); }). ToArray(); } }
public void Test() { _aggregate = new Balloon(Guid.NewGuid().ToString(), "test"); _aggregate.WriteNewTitle(10); _aggregate.ClearUncommitedEvents(); var jsonSerializerSettings = DomainSerializer.GetDefaultSettings(); jsonSerializerSettings.TraceWriter = new XUnitTraceWriter(_testOutputHelper); var jsonString = JsonConvert.SerializeObject(_aggregate, jsonSerializerSettings); _restoredAggregate = JsonConvert.DeserializeObject <Balloon>(jsonString, jsonSerializerSettings); _restoredAggregate.ClearUncommitedEvents(); // Values_should_be_equal() Assert.Equal(_aggregate.Title, _restoredAggregate.Title); //Ids_should_be_equal() Assert.Equal(_aggregate.Id, _restoredAggregate.Id); }
public void Propert_is_upgraded() { var initialEvent = new Event() { Payload = new SubObject_V1() { Name = "10", Value = "123" } }; var settings = DomainSerializer.GetDefaultSettings(); settings.Converters.Add(new SubObjectConverter()); var serializedValue = JsonConvert.SerializeObject(initialEvent, settings); var restoredEvent = JsonConvert.DeserializeObject <Event>(serializedValue, settings); Assert.IsInstanceOf <SubObject_V2>(restoredEvent.Payload); }
public void All_old_objects_should_be_updated() { var initialEvent = new Event { Payload = new Payload { Property = new SubObject_V1 { Name = "10", Value = "123" } } }; var settings = DomainSerializer.GetDefaultSettings(); settings.Converters.Add(new SubObjectConverter()); var serializedValue = JsonConvert.SerializeObject(initialEvent, settings); var restoredEvent = JsonConvert.DeserializeObject <Event>(serializedValue, settings); Assert.IsAssignableFrom <SubObject_V2>(restoredEvent.Payload.Property); }
public ActionResult Index() { string domain = DbConvention.GetDomain(); var approved = new DomainSerializer("domains-approved.json"); var installed = new DomainSerializer("domains-installed.json"); if (!approved.Get().Contains(domain)) { return(this.HttpNotFound()); } if (installed.Get().Contains(domain)) { return(this.Redirect("/")); } InstallationFactory.Setup(domain); //Background job return(this.Content("Installing frapid, please visit the site after a few minutes.")); }
public void Property_upgraded_from_serialized_value() { var settings = DomainSerializer.GetDefaultSettings(); settings.Converters.Add(new SubObjectConverter()); var serializedValue = @"{ ""$id"": ""1"", ""Payload"": { ""$id"": ""2"", ""$type"": """ + typeof(SubObject_V1).AssemblyQualifiedName + @""", ""Name"": ""10"", ""Value"": ""123"" } }"; var restoredEvent = JsonConvert.DeserializeObject <Event>(serializedValue, settings); Assert.IsInstanceOf <SubObject_V2>(restoredEvent.Payload); }
public static string ToCanonicalUrl(string url = "") { if (string.IsNullOrWhiteSpace(url)) { url = HttpContext.Current.Request.Url.PathAndQuery; } string domain = DbConvention.GetDomain(); var approved = new DomainSerializer("DomainsApproved.json"); var tenant = approved.Get().FirstOrDefault(x => x.GetSubtenants().Contains(domain.ToLowerInvariant())); if (tenant != null) { string protocol = HttpContext.Current.Request.IsSecureConnection ? "https://" : "http://"; string domainName = protocol + tenant.DomainName; url = UrlHelper.CombineUrl(domainName, url); return(url); } return(string.Empty); }
public void DomainSerializerTest() { var serializer = new DomainSerializer(); var customerRepository = new CustomerRepository(); var customer = customerRepository.CreateNew(0, "No"); customer.MainAddress = new Address("1", "1", null, null, new Phone("!23", 1), null); customer.OtherAddresses.AddRange(new[] { new Address("2", "2", null, null, new Phone("9123", 1), null), new Address("3", "3", null, null, new Phone("123123", 1), null), }); var serializedCustomer = serializer.Serialize(customer); var customerCopy = serializer.Deserialize <Customer>(serializedCustomer); Assert.IsTrue(ObjectComparer.Default.DeepEquals(customer, customerCopy)); var invoiceRepository = new InvoiceRepository(); var invoice = invoiceRepository.Create(); var line = invoice.CreateNewLine(); line.Quantity = 0.5m; line.ProductId = 1; line.SetKey(1); line = invoice.CreateNewLine(); line.Quantity = 0.7m; line.ProductId = 2; line.SetKey(2); var serializedInvoice = serializer.Serialize(invoice); var invoiceCopy = serializer.Deserialize <Invoice>(serializedInvoice); Assert.IsTrue(ObjectComparer.Default.DeepEquals(invoice, invoiceCopy)); }
public ActionResult Index() { string domain = DbConvention.GetDomain(); var approved = new DomainSerializer("DomainsApproved.json"); var installed = new DomainSerializer("DomainsInstalled.json"); if (!approved.GetTenantMembers().Any(x => x.Equals(domain))) { return(this.HttpNotFound()); } if (installed.GetTenantMembers().Any(x => x.Equals(domain))) { return(this.Redirect("/")); } var setup = approved.Get().FirstOrDefault(x => x.GetSubtenants().Contains(domain.ToLowerInvariant())); InstallationFactory.Setup(setup); //Background job return(this.Content("Installing frapid, please visit the site after a few minutes.")); }
/// <summary> /// Gets the deserialized domain objects. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="name">The name.</param> /// <param name="func">The function.</param> /// <returns>List{``0}.</returns> public List <T> GetDeserializedDomainObjects <T>(XName name, Func <XElement, bool> func) where T : DomainObject <T> { Elements = GetXElements(name, func); return(Elements == null || Elements.Count() == 0 ? new List <T>() : DomainSerializer <List <T> > .Deserialize(Elements.FirstOrDefault())); }
private static T Deserialize <T>(byte[] source, DomainSerializer serializer = null) { return((T)(serializer ?? new DomainSerializer()).FromBinary(source, typeof(T))); }
private static byte[] Serialize(object source, DomainSerializer serializer = null) { return((serializer ?? new DomainSerializer()).ToBinary(source)); }
public void SaveBoutiqueOptions() { DomainSerializer <ObservableCollection <BoutiqueOption> > .Serialize(BoutiqueOptions, XmlConfigPath); }
public void LoadBoutiqueOptions() { BoutiqueOptions = DomainSerializer <ObservableCollection <BoutiqueOption> > .Deserialize(XmlConfigPath); }
public void Test() { _aggregate = new SampleAggregate(Guid.NewGuid(), "test"); _aggregate.ChangeState(10); _aggregate.ClearEvents(); var jsonString = JsonConvert.SerializeObject(_aggregate, DomainSerializer.GetDefaultSettings()); _restoredAggregate = JsonConvert.DeserializeObject <SampleAggregate>(jsonString, DomainSerializer.GetDefaultSettings()); }