internal ExtensionState( IPatternInfo extendingProduct, IExtensionPointInfo extensionPoint, IBindingFactory bindingFactory) { this.ExtendingProduct = extendingProduct; this.ExtensionPoint = extensionPoint; this.bindingFactory = bindingFactory; this.BindingContext = bindingFactory.CreateContext(); this.BindingContext.AddExportsFromInterfaces(extendingProduct); this.BindingContext.AddExportsFromInterfaces(extensionPoint); }
private string GetPluralizedExtensionPath(IExtensionPointInfo element, int index) { if (element.Cardinality == Cardinality.ZeroToMany || element.Cardinality == Cardinality.OneToMany) { return(string.Format(CultureInfo.CurrentCulture, ElementInstanceAddressFormat, this.pluralization.Pluralize(element.CodeIdentifier), index.ToString(CultureInfo.CurrentCulture))); } else { return(element.CodeIdentifier); } }
public void InitializeContext() { var serviceProvider = Mocks.Of <IServiceProvider>().First(provider => provider.GetService(typeof(IPatternManager)) == Mocks.Of <IPatternManager>().First(manager => manager.InstalledToolkits == new IInstalledToolkitInfo[] { Mocks.Of <IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.PatternToolkit1Id && toolkitInfo.Schema.Pattern.Id == Ids.ExtensionToolkitPatternSchema1Id && toolkitInfo.Schema.Pattern.ExtensionId == Ids.PatternToolkit1Id && toolkitInfo.Schema.Pattern.ProvidedExtensionPoints == new[] { Mocks.Of <IProvidedExtensionPointInfo>().First(extensionPoint => extensionPoint.ExtensionPointId == Ids.ExtensionPointSchemaPath1), Mocks.Of <IProvidedExtensionPointInfo>().First(extensionPoint => extensionPoint.ExtensionPointId == Ids.ExtensionPointSchemaPath2) }), Mocks.Of <IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.PatternToolkit2Id && toolkitInfo.Schema.Pattern.Id == Ids.ExtensionToolkitPatternSchema2Id && toolkitInfo.Schema.Pattern.ExtensionId == Ids.PatternToolkit2Id && toolkitInfo.Schema.Pattern.ProvidedExtensionPoints == new[] { Mocks.Of <IProvidedExtensionPointInfo>().First(extensionPoint => extensionPoint.ExtensionPointId == Ids.ExtensionPointSchemaPath2) }), Mocks.Of <IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.SecondToolkitId && toolkitInfo.Schema.Pattern.Id == Ids.SecondPatternSchemaId && toolkitInfo.Schema.Pattern.Name == "SecondPatternSchema" && toolkitInfo.Schema.Pattern.ExtensionId == Ids.MainToolkitId), Mocks.Of <IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.MainToolkitId && toolkitInfo.Schema.Pattern.Id == Ids.MainPatternSchemaId && toolkitInfo.Schema.Pattern.Name == "MainPatternSchema" && toolkitInfo.Schema.Pattern.ExtensionId == Ids.MainToolkitId && toolkitInfo.Schema.Pattern.Views == new [] { // View // ExtensionPoint1 // ExtensionPoint2 Mocks.Of <IViewInfo>().First(view => view.Id == Ids.MainViewSchemaId && view.Name == "View" && view.ExtensionPoints == new IExtensionPointInfo[] { Mocks.Of <IExtensionPointInfo>().First(extensionPoint => extensionPoint.Id == Ids.ExtensionPointSchema1Id && extensionPoint.Name == "ExtensionPointSchema1" && extensionPoint.OrderGroup == 2 && extensionPoint.Cardinality == Cardinality.ZeroToMany && extensionPoint.RequiredExtensionPointId == Ids.ExtensionPointSchemaPath1 ), Mocks.Of <IExtensionPointInfo>().First(extensionPoint => extensionPoint.Id == Ids.ExtensionPointSchema2Id && extensionPoint.Name == "ExtensionPointSchema2" && extensionPoint.OrderGroup == 3 && extensionPoint.Cardinality == Cardinality.ZeroToOne && extensionPoint.RequiredExtensionPointId == Ids.ExtensionPointSchemaPath2 ), }), }), }) ); using (var store = new Microsoft.VisualStudio.Modeling.Store(serviceProvider, typeof(Microsoft.VisualStudio.Modeling.CoreDomainModel), typeof(ProductStateStoreDomainModel))) using (var tx = store.TransactionManager.BeginTransaction()) { var productStore = store.ElementFactory.CreateElement <ProductState>(); productStore .CreateProduct(p => { p.ExtensionId = Ids.SecondToolkitId; p.DefinitionId = Ids.SecondPatternSchemaId; }); productStore .CreateProduct(p => { p.ExtensionId = Ids.SecondToolkitId; p.DefinitionId = Ids.SecondPatternSchemaId; }); productStore .CreateProduct(p => { p.ExtensionId = Ids.MainToolkitId; p.DefinitionId = Ids.MainPatternSchemaId; }) .CreateView(v => v.DefinitionId = Ids.MainViewSchemaId); ProductStateStoreSerializationHelper.Instance.SaveModel(new Microsoft.VisualStudio.Modeling.SerializationResult(), productStore, this.storeFilePath); tx.Commit(); } this.store = new Microsoft.VisualStudio.Modeling.Store(serviceProvider, typeof(Microsoft.VisualStudio.Modeling.CoreDomainModel), typeof(ProductStateStoreDomainModel)); using (var tx = this.store.TransactionManager.BeginTransaction("Loading", true)) { ProductStateStoreSerializationHelper.Instance.LoadModel(this.store, this.storeFilePath, null, null, null); tx.Commit(); this.productStore = this.store.ElementDirectory.AllElements.OfType <ProductState>().First(); } this.rootProduct3 = this.store.ElementDirectory.FindElements <Product>(true).Where(p => p.DefinitionId == Ids.SecondPatternSchemaId).ToArray()[0]; this.rootProduct2 = this.store.ElementDirectory.FindElements <Product>(true).Where(p => p.DefinitionId == Ids.SecondPatternSchemaId).ToArray()[1]; this.rootProduct1 = this.store.ElementDirectory.FindElements <Product>(true).First(p => p.DefinitionId == Ids.MainPatternSchemaId); this.view = rootProduct1.Views.First(); this.extensionPointInfo2 = this.view.Info.ExtensionPoints.First(ep => ep.Id == Ids.ExtensionPointSchema2Id); this.extensionProduct1 = this.view.CreateExtension(prod => { prod.ProductState = this.productStore; prod.ExtensionId = Ids.PatternToolkit1Id; prod.DefinitionId = Ids.ExtensionToolkitPatternSchema1Id; }); this.extensionProduct2 = this.view.CreateExtension(prod => { prod.ProductState = this.productStore; prod.ExtensionId = Ids.PatternToolkit1Id; prod.DefinitionId = Ids.ExtensionToolkitPatternSchema1Id; }); this.extensionProduct4 = this.view.CreateExtension(prod => { prod.ProductState = this.productStore; prod.ExtensionId = Ids.PatternToolkit2Id; prod.DefinitionId = Ids.ExtensionToolkitPatternSchema2Id; }); }
public void InitializeContext() { var serviceProvider = Mocks.Of<IServiceProvider>().First(provider => provider.GetService(typeof(IPatternManager)) == Mocks.Of<IPatternManager>().First(manager => manager.InstalledToolkits == new IInstalledToolkitInfo[] { Mocks.Of<IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.PatternToolkit1Id && toolkitInfo.Schema.Pattern.Id == Ids.ExtensionToolkitPatternSchema1Id && toolkitInfo.Schema.Pattern.ExtensionId == Ids.PatternToolkit1Id && toolkitInfo.Schema.Pattern.ProvidedExtensionPoints == new[] { Mocks.Of<IProvidedExtensionPointInfo>().First(extensionPoint => extensionPoint.ExtensionPointId == Ids.ExtensionPointSchemaPath1), Mocks.Of<IProvidedExtensionPointInfo>().First(extensionPoint => extensionPoint.ExtensionPointId == Ids.ExtensionPointSchemaPath2) }), Mocks.Of<IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.PatternToolkit2Id && toolkitInfo.Schema.Pattern.Id == Ids.ExtensionToolkitPatternSchema2Id && toolkitInfo.Schema.Pattern.ExtensionId == Ids.PatternToolkit2Id && toolkitInfo.Schema.Pattern.ProvidedExtensionPoints == new[] { Mocks.Of<IProvidedExtensionPointInfo>().First(extensionPoint => extensionPoint.ExtensionPointId == Ids.ExtensionPointSchemaPath2) }), Mocks.Of<IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.SecondToolkitId && toolkitInfo.Schema.Pattern.Id == Ids.SecondPatternSchemaId && toolkitInfo.Schema.Pattern.Name == "SecondPatternSchema" && toolkitInfo.Schema.Pattern.ExtensionId == Ids.MainToolkitId), Mocks.Of<IInstalledToolkitInfo>().First(toolkitInfo => toolkitInfo.Id == Ids.MainToolkitId && toolkitInfo.Schema.Pattern.Id == Ids.MainPatternSchemaId && toolkitInfo.Schema.Pattern.Name == "MainPatternSchema" && toolkitInfo.Schema.Pattern.ExtensionId == Ids.MainToolkitId && toolkitInfo.Schema.Pattern.Views == new [] { // View // ExtensionPoint1 // ExtensionPoint2 Mocks.Of<IViewInfo>().First(view => view.Id == Ids.MainViewSchemaId && view.Name == "View" && view.ExtensionPoints == new IExtensionPointInfo[] { Mocks.Of<IExtensionPointInfo>().First(extensionPoint => extensionPoint.Id == Ids.ExtensionPointSchema1Id && extensionPoint.Name == "ExtensionPointSchema1" && extensionPoint.OrderGroup == 2 && extensionPoint.Cardinality == Cardinality.ZeroToMany && extensionPoint.RequiredExtensionPointId == Ids.ExtensionPointSchemaPath1 ), Mocks.Of<IExtensionPointInfo>().First(extensionPoint => extensionPoint.Id == Ids.ExtensionPointSchema2Id && extensionPoint.Name == "ExtensionPointSchema2" && extensionPoint.OrderGroup == 3 && extensionPoint.Cardinality == Cardinality.ZeroToOne && extensionPoint.RequiredExtensionPointId == Ids.ExtensionPointSchemaPath2 ), }), }), }) ); using (var store = new Microsoft.VisualStudio.Modeling.Store(serviceProvider, typeof(Microsoft.VisualStudio.Modeling.CoreDomainModel), typeof(ProductStateStoreDomainModel))) using (var tx = store.TransactionManager.BeginTransaction()) { var productStore = store.ElementFactory.CreateElement<ProductState>(); productStore .CreateProduct(p => { p.ExtensionId = Ids.SecondToolkitId; p.DefinitionId = Ids.SecondPatternSchemaId; }); productStore .CreateProduct(p => { p.ExtensionId = Ids.SecondToolkitId; p.DefinitionId = Ids.SecondPatternSchemaId; }); productStore .CreateProduct(p => { p.ExtensionId = Ids.MainToolkitId; p.DefinitionId = Ids.MainPatternSchemaId; }) .CreateView(v => v.DefinitionId = Ids.MainViewSchemaId); ProductStateStoreSerializationHelper.Instance.SaveModel(new Microsoft.VisualStudio.Modeling.SerializationResult(), productStore, this.storeFilePath); tx.Commit(); } this.store = new Microsoft.VisualStudio.Modeling.Store(serviceProvider, typeof(Microsoft.VisualStudio.Modeling.CoreDomainModel), typeof(ProductStateStoreDomainModel)); using (var tx = this.store.TransactionManager.BeginTransaction("Loading", true)) { ProductStateStoreSerializationHelper.Instance.LoadModel(this.store, this.storeFilePath, null, null, null); tx.Commit(); this.productStore = this.store.ElementDirectory.AllElements.OfType<ProductState>().First(); } this.rootProduct3 = this.store.ElementDirectory.FindElements<Product>(true).Where(p => p.DefinitionId == Ids.SecondPatternSchemaId).ToArray()[0]; this.rootProduct2 = this.store.ElementDirectory.FindElements<Product>(true).Where(p => p.DefinitionId == Ids.SecondPatternSchemaId).ToArray()[1]; this.rootProduct1 = this.store.ElementDirectory.FindElements<Product>(true).First(p => p.DefinitionId == Ids.MainPatternSchemaId); this.view = rootProduct1.Views.First(); this.extensionPointInfo2 = this.view.Info.ExtensionPoints.First(ep => ep.Id == Ids.ExtensionPointSchema2Id); this.extensionProduct1 = this.view.CreateExtension(prod => { prod.ProductState = this.productStore; prod.ExtensionId = Ids.PatternToolkit1Id; prod.DefinitionId = Ids.ExtensionToolkitPatternSchema1Id; }); this.extensionProduct2 = this.view.CreateExtension(prod => { prod.ProductState = this.productStore; prod.ExtensionId = Ids.PatternToolkit1Id; prod.DefinitionId = Ids.ExtensionToolkitPatternSchema1Id; }); this.extensionProduct4 = this.view.CreateExtension(prod => { prod.ProductState = this.productStore; prod.ExtensionId = Ids.PatternToolkit2Id; prod.DefinitionId = Ids.ExtensionToolkitPatternSchema2Id; }); }
private string GetPluralizedExtensionPath(IExtensionPointInfo element, int index) { if (element.Cardinality == Cardinality.ZeroToMany || element.Cardinality == Cardinality.OneToMany) { return string.Format(CultureInfo.CurrentCulture, ElementInstanceAddressFormat, this.pluralization.Pluralize(element.CodeIdentifier), index.ToString(CultureInfo.CurrentCulture)); } else { return element.CodeIdentifier; } }