protected override ModelBusAdapter DoCreateAdapter(ModelBusReference reference, IServiceProvider serviceProvider) { this.CheckCanCreateAdapter(reference); ModelingAdapter item = null; ModelingDocumentHandler documentHandler = null; ModelingAdapterReference adapterReference = reference.AdapterReference as ModelingAdapterReference; try { documentHandler = this.CreateDocumentHandler(adapterReference, base.ModelBus); if (documentHandler == null) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.UnknownErrorOccurred); } item = this.CreateModelingAdapterInstance(reference, documentHandler.Root); if (item == null) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.UnknownErrorOccurred); } if (!item.TrySetDocumentHandler(documentHandler)) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.UnknownErrorOccurred); } } catch (Exception) { if (documentHandler != null) { documentHandler.Dispose(); } throw; } disposeList.Add(item); return(item); }
protected virtual ModelingDocumentHandler CreateDocumentHandler(ModelingAdapterReference adapterReference, IServiceProvider serviceProvider) { string adapterReferenceStoreKey = this.GetAdapterReferenceStoreKey(adapterReference); Store sessionStore = SessionStoreCache.GetSessionStore(adapterReferenceStoreKey); ModelElement root = null; if (sessionStore != null) { root = this.FindStoreRoot(sessionStore, adapterReference, serviceProvider); } if (root == null) { root = this.CreateLoadStore(sessionStore, adapterReference, serviceProvider); if (root == null) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.GetErrorLoadFailed(adapterReference.AbsoluteTargetPath)); } SessionStoreCache.CacheSessionStore(adapterReferenceStoreKey, root.Store); } if (root != null) { return(new VsTextTemplatingModelingDocumentHandler(adapterReference.AbsoluteTargetPath, root)); } return(null); }
protected virtual ModelElement FindStoreRoot(Store store, ModelingAdapterReference adapterReference, IServiceProvider serviceProvider) { ModelElement element = null; Tuple <string, ModelElement> alternateId = store.DefaultPartition.AlternateId as Tuple <string, ModelElement>; if (alternateId != null) { element = alternateId.Item2; } return(element); }
protected virtual ModelElement CreateLoadStore(Store store, ModelingAdapterReference adapterReference, IServiceProvider serviceProvider) { ModelElement element = null; if (store == null) { store = new Store(serviceProvider, new Type[0]); } element = this.LoadPartition(store.DefaultPartition, adapterReference.AbsoluteTargetPath); if (element != null) { element.Partition.AlternateId = new Tuple <string, ModelElement>(adapterReference.AbsoluteTargetPath, element); } return(element); }
/// <summary> /// Attempts to create and return a model bus reference from the supplied data. /// </summary> public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { EnvDTE.ProjectItem item = GetProjectItem(modelLocatorInfo); if (item == null) { return(null); } ModelingAdapterReference mar = new ModelingAdapterReference(null, null, item.get_FileNames(1)); ModelBusReference mbr = new ModelBusReference( this.ModelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(item.Name), mar); return(mbr); }
/// <summary> /// Attempts to create and return a model bus reference from the supplied data. /// </summary> public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { EnvDTE.ProjectItem item = GetProjectItem(modelLocatorInfo); if (item == null) { return null; } ModelingAdapterReference mar = new ModelingAdapterReference(null, null, item.get_FileNames(1)); ModelBusReference mbr = new ModelBusReference( this.ModelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(item.Name), mar); return mbr; }
public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { string file = GetFileLocation(modelLocatorInfo); if (file != null) { // Create the part of the reference which depends on the Adapter ModelingAdapterReference mar = new ModelingAdapterReference(null, null, file); // And aggregate it with the adapter manager's part ModelBusReference mbr = new ModelBusReference( this.ModelBus, ServiceContractDslAdapter.AdapterId, Path.GetFileNameWithoutExtension(file), mar); return mbr; } return null; }
public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { string file = GetFileLocation(modelLocatorInfo); if (file != null) { // Create the part of the reference which depends on the Adapter ModelingAdapterReference mar = new ModelingAdapterReference(null, null, file); // And aggregate it with the adapter manager's part ModelBusReference mbr = new ModelBusReference( this.ModelBus, ServiceContractDslAdapter.AdapterId, Path.GetFileNameWithoutExtension(file), mar); return(mbr); } return(null); }
public void WhenCreatingReference_ThenUsesAdapter() { var stateFile = this.solution.Find <IItem>(item => item.Name.EndsWith(StoreConstants.RuntimeStoreExtension)).First(); var manager = this.modelBus.FindAdapterManagers(new object[] { stateFile.PhysicalPath }).FirstOrDefault(); Assert.NotNull(manager); Assert.True(manager.CanCreateReference(new object[] { stateFile.PhysicalPath })); var mar = new ModelingAdapterReference(null, null, stateFile.PhysicalPath); var mbr = new ModelBusReference(this.modelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(stateFile.Name), mar); using (var adapter = this.modelBus.CreateAdapter(mbr, VsIdeTestHostContext.ServiceProvider)) { var withRoot = adapter as IModelingAdapterWithRootedModel; var state = ((IProductState)withRoot.ModelRoot).Products.First(); var elementRef = adapter.GetElementReference(state); Assert.NotNull(elementRef); } }
public void WhenCreatingReference_ThenUsesAdapter() { var stateFile = this.solution.Find<IItem>(item => item.Name.EndsWith(StoreConstants.RuntimeStoreExtension)).First(); var manager = this.modelBus.FindAdapterManagers(new object[] { stateFile.PhysicalPath }).FirstOrDefault(); Assert.NotNull(manager); Assert.True(manager.CanCreateReference(new object[] { stateFile.PhysicalPath })); var mar = new ModelingAdapterReference(null, null, stateFile.PhysicalPath); var mbr = new ModelBusReference(this.modelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(stateFile.Name), mar); using (var adapter = this.modelBus.CreateAdapter(mbr, VsIdeTestHostContext.ServiceProvider)) { var withRoot = adapter as IModelingAdapterWithRootedModel; var state = ((IProductState)withRoot.ModelRoot).Products.First(); var elementRef = adapter.GetElementReference(state); Assert.NotNull(elementRef); } }
private static void AssertPartitionAdapterReferenceMatch(ModelingAdapterReference adapterReference, Partition partition) { object alternateId = partition.AlternateId; }
protected virtual string GetAdapterReferenceStoreKey(ModelingAdapterReference adapterReference) { return(adapterReference.AbsoluteTargetPath); }