Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
        }
Example #9
0
        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);
            }
        }
Example #11
0
 private static void AssertPartitionAdapterReferenceMatch(ModelingAdapterReference adapterReference, Partition partition)
 {
     object alternateId = partition.AlternateId;
 }
Example #12
0
 protected virtual string GetAdapterReferenceStoreKey(ModelingAdapterReference adapterReference)
 {
     return(adapterReference.AbsoluteTargetPath);
 }