public void Initialize() { this.solution = VsIdeTestHostContext.ServiceProvider.GetService<ISolution>(); this.modelBus = VsIdeTestHostContext.ServiceProvider.GetService<SModelBus, IModelBus>(); var solution = Path.Combine(this.TestContext.DeploymentDirectory, "Runtime.IntegrationTests.Content\\StoreAdapterSpec\\Sample.sln"); VsIdeTestHostContext.Dte.Solution.Open(solution); }
/// <summary> /// Initialize the serialization context on load / save /// </summary> /// <remarks>We need to supply a model bus for ModelBusReference deserialization to work</remarks> protected override void InitializeSerializationContext(Partition partition, SerializationContext serializationContext, bool isLoading) { Debug.Assert(partition != null, "partition should not be null"); Debug.Assert(serializationContext != null, "serializationContext should not be null"); IModelBus modelbus = partition.Store.GetService(typeof(SModelBus)) as IModelBus; serializationContext[Microsoft.VisualStudio.Modeling.Integration.ModelBusReferencePropertySerializer.ModelBusLoadContextKey] = modelbus; }
public void Initialize() { this.solution = VsIdeTestHostContext.ServiceProvider.GetService <ISolution>(); this.modelBus = VsIdeTestHostContext.ServiceProvider.GetService <SModelBus, IModelBus>(); var solution = Path.Combine(this.TestContext.DeploymentDirectory, "Runtime.IntegrationTests.Content\\StoreAdapterSpec\\Sample.sln"); VsIdeTestHostContext.Dte.Solution.Open(solution); }
/// <summary> /// Initializes a new instance of the <see cref="TextTemplateUriProvider"/> class. /// </summary> public TextTemplateUriProvider(ITextTemplating templating, IModelBus modelBus, Lazy <IUriReferenceService> uriService) { Guard.NotNull(() => templating, templating); Guard.NotNull(() => modelBus, modelBus); Guard.NotNull(() => uriService, uriService); this.templating = templating; this.modelBus = modelBus; this.uriService = uriService; }
/// <summary> /// Initializes a new instance of the <see cref="TextTemplate"/> class. /// </summary> public TextTemplate(ITextTemplating templating, IModelBus modelBus, string templateFile) { Guard.NotNull(() => templating, templating); Guard.NotNull(() => modelBus, modelBus); Guard.NotNullOrEmpty(() => templateFile, templateFile); if (!File.Exists(templateFile)) { throw new FileNotFoundException(Resources.TextTemplate_FileNotFound, templateFile); } this.templating = templating; this.modelBus = modelBus; this.templateFile = templateFile; this.templateContent = ReplaceTemplatePathVariable(File.ReadAllText(templateFile)); }
public void Initialize() { this.templating = VsIdeTestHostContext.ServiceProvider.GetService <STextTemplating, ITextTemplating>(); this.modelBus = VsIdeTestHostContext.ServiceProvider.GetService <SModelBus, IModelBus>(); this.solution = VsIdeTestHostContext.ServiceProvider.GetService <ISolution>(); }
public static void AddSubProcessConnector(IModelBus modelBus, ModelBusReference processOverview) { ModelBusAdapter adapter = modelBus.CreateAdapter(processOverview); if (adapter != null) { ModelBusView view = adapter.GetDefaultView(); Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; var process = (ProcessOverview.Process)targetDiagram.ModelElement; foreach (var item in process.BTSubProcess) { ModelBusReference fromSubProcRef = adapter.GetElementReference(item); ModelBusAdapter toSubProcAdapter = modelBus.CreateAdapter(item.SubProcessRef); var toSubProc = (SubProcess)toSubProcAdapter.ResolveElementReference(item.SubProcessRef); List<Activity> subProcActs = new List<Activity>(); subProcActs.AddRange(toSubProc.Activities.Where(a => a is ToProcessConnector)); foreach (var act in subProcActs) { string fileName = Utilities.GetFileNameForStore(act.Store); if (fileName == "") return; ModelBusReference mbr = ((ToProcessConnector)act).ToProcessConnectorRef; IModelBus modelBusAct = act.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusAct.FindAdapterManagers(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath).First(); ModelBusReference reference = manager.CreateReference(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath); ModelBusAdapter adapterAct = modelBus.CreateAdapter(reference); var subProcAct = (Activity)adapterAct.ResolveElementReference(mbr); ModelBusReference toSubProcRef = subProcAct.SubProcess.ProcessOverviewSubProcessRef; //AddConnector(processOverview, fromSubProcRef, toSubProcRef); } subProcActs = new List<Activity>(); subProcActs.AddRange(toSubProc.Activities.Where(a => a is FromProcessConnector)); foreach (var act in subProcActs) { string fileName = Utilities.GetFileNameForStore(act.Store); if (fileName == "") return; ModelBusReference mbr = ((FromProcessConnector)act).FromProcessConnectorRef; IModelBus modelBusAct = act.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusAct.FindAdapterManagers(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath).First(); ModelBusReference reference = manager.CreateReference(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath); ModelBusAdapter adapterAct = modelBus.CreateAdapter(reference); var subProcAct = (Activity)adapterAct.ResolveElementReference(mbr); ModelBusReference toSubProcRef = subProcAct.SubProcess.ProcessOverviewSubProcessRef; //AddConnector(processOverview, toSubProcRef, fromSubProcRef); } } } }
public static ModelBusReference DeleteRefSubProcess(SubProcessBase element, IModelBus modelBus) { ModelBusReference fromProcessActivitRef = null; //Get current element reference string fileName = Utilities.GetFileNameForStore(element.Store); if (fileName == "") return null; ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); using (ModelBusAdapter adapter = modelBus.CreateAdapter(reference)) { fromProcessActivitRef = adapter.GetElementReference(element); } if (element.ProcessOverviewSubProcessRef != null) { using (ModelBusAdapter adapterExternalRef = modelBus.CreateAdapter(element.ProcessOverviewSubProcessRef)) { if (adapterExternalRef != null) { ModelBusView view = adapterExternalRef.GetDefaultView(); view.SetSelection(element.ProcessOverviewSubProcessRef); Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; using (Transaction t = targetDiagram.Store.TransactionManager.BeginTransaction("Delete Old Item")) { //Delete old ExternalModelbusActivity var targetAct = (ProcessOverview.SubProcessElement)adapterExternalRef.ResolveElementReference(element.ProcessOverviewSubProcessRef); if (targetAct != null) { if (targetDiagram.FindShape(targetAct) != null) { ((ProcessOverview.SubProcessShape)targetDiagram.FindShape(targetAct)).Delete(); } } t.Commit(); } } } } return fromProcessActivitRef; }
public static void AddLinkedSubProcess(IModelBus modelBus, SubProcessBase subProcess, ModelBusReference toReference) { List<Activity> subProcessActList = new List<Activity>(); subProcessActList.AddRange(subProcess.Activities.Where(a => a is ToProcessConnector)); subProcessActList.AddRange(subProcess.Activities.Where(a => a is FromProcessConnector)); foreach (var item in subProcessActList) { ModelBusAdapter adapter; if (item is ToProcessConnector) { adapter = modelBus.CreateAdapter(((ToProcessConnector)item).ToProcessConnectorRef); var toSubProcessActivity = (FromProcessConnector)adapter.ResolveElementReference(((ToProcessConnector)item).ExternalActivityRef); ModelBusReference toSubProcessRef = adapter.GetElementReference(toSubProcessActivity.SubProcess); if (toSubProcessActivity.SubProcess.ProcessRef != null) DeleteRefSubProcess(toSubProcessActivity.SubProcess, modelBus); string fileName = Utilities.GetFileNameForStore(item.Store); if (fileName == "") return; IModelBus modelBusSubProcess = item.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusSubProcess.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); ModelBusAdapter adapterSubProcess = modelBus.CreateAdapter(reference); //AddRefSubProcess(modelBus, toReference, adapter.GetElementReference(toSubProcessActivity.SubProcess), toSubProcessActivity.SubProcess); AddLinkedSubProcess(modelBus, toSubProcessActivity.SubProcess, toReference); } else { adapter = modelBus.CreateAdapter(((FromProcessConnector)item).FromProcessConnectorRef); var fromSubProcessActivity = (ToProcessConnector)adapter.ResolveElementReference(((FromProcessConnector)item).FromProcessConnectorRef); ModelBusReference fromSubProcessRef = adapter.GetElementReference(fromSubProcessActivity.SubProcess); if (fromSubProcessActivity.SubProcess.ProcessRef != null) DeleteRefSubProcess(fromSubProcessActivity.SubProcess, modelBus); string fileName = Utilities.GetFileNameForStore(item.Store); if (fileName == "") return; IModelBus modelBusSubProcess = item.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusSubProcess.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); ModelBusAdapter adapterSubProcess = modelBus.CreateAdapter(reference); //AddRefSubProcess(modelBus, toReference, adapter.GetElementReference(fromSubProcessActivity.SubProcess), fromSubProcessActivity.SubProcess); AddLinkedSubProcess(modelBus, fromSubProcessActivity.SubProcess, toReference); } } }
public ModelBusUriReferenceProvider(IModelBus modelBus) { Guard.NotNull(() => modelBus, modelBus); this.modelBus = modelBus; }
private static ModelBusAdapter CreateModelBusAdapter(ModelBusReference reference) { IModelBus bus = reference.ModelBus ?? RuntimeHelper.ServiceProvider.GetService(typeof(IModelBus)) as IModelBus; return(bus.CreateAdapter(reference)); }
// MBR format: // modelbus://logicalAdapterId/model display name/element display name/adapter reference data. // V3 format: // mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT]@[PROJECT]\[MODELFILE] private object ConvertToModelBusReference <T>(SerializationContext serializationContext, string input) { if (serializationContext == null) { throw new ArgumentNullException("serializationContext"); } if (string.IsNullOrWhiteSpace(input) || !typeof(ModelBusReference).IsAssignableFrom(typeof(T))) { return(default(T)); } // filter out the schema part input = input.Replace(MelSchema, string.Empty); string[] data = input.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries); if (data.Length != 2) { serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.InvalidMoniker, input)); return(default(T)); } string[] modelData = data[0].Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); if (modelData.Length != 3) { serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.InvalidMoniker, input)); return(default(T)); } string[] locationData = data[1].Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); if (locationData.Length != 2) { serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.InvalidMoniker, input)); return(default(T)); } // set full path to model file if (!Path.IsPathRooted(locationData[1])) { locationData[1] = Path.Combine(Path.GetDirectoryName(serializationContext.Location), locationData[1]); } ModelBusReference result = null; IModelBus bus = serializationContext[ModelBusReferencePropertySerializer.ModelBusLoadContextKey] as IModelBus; if (bus != null) { using (ModelBusAdapterManager manager = bus.GetAdapterManager(LogicalAdapterId)) { ModelBusReference reference = null; if (manager.TryCreateReference(out reference, Path.ChangeExtension(locationData[1], FileExtension))) { using (ModelBusAdapter adapter = manager.CreateAdapter(reference)) { IModelingAdapterWithStore storeAdapter = adapter as IModelingAdapterWithStore; if (storeAdapter.Store != null) { foreach (ModelElement mel in FilterElementsByType(storeAdapter.Store, modelData[1])) { if (ValidatorUtility.GetTargetName(mel).Equals(modelData[2], StringComparison.OrdinalIgnoreCase)) { return(adapter.GetElementReference(mel)); } } // If we are still here, we could not find any match so try will all mels foreach (ModelElement mel in FilterElementsByType(storeAdapter.Store, string.Empty)) { if (ValidatorUtility.GetTargetName(mel).Equals(modelData[2], StringComparison.OrdinalIgnoreCase)) { return(adapter.GetElementReference(mel)); } } } } } } } serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.ReferenceElementNotFound, input)); return(result); }
public void Initialize() { this.templating = VsIdeTestHostContext.ServiceProvider.GetService<STextTemplating, ITextTemplating>(); this.modelBus = VsIdeTestHostContext.ServiceProvider.GetService<SModelBus, IModelBus>(); this.solution = VsIdeTestHostContext.ServiceProvider.GetService<ISolution>(); }