コード例 #1
0
        /// <summary>
        /// Does the validate.
        /// </summary>
        /// <param name="objectToValidate">The object to validate.</param>
        /// <param name="currentTarget">The current target.</param>
        /// <param name="key">The key.</param>
        /// <param name="validationResults">The validation results.</param>
        protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            this.MessageTemplate = currentMessageTemplate;

            base.DoValidate(objectToValidate, currentTarget, key, validationResults);

            if (!validationResults.IsValid)
            {
                return;
            }

            ServiceReference serviceReference = currentTarget as ServiceReference;

            if (serviceReference == null)
            {
                return;
            }

            using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
            {
                ModelElement referencedElement = resolver.Resolve(objectToValidate);
                if (referencedElement != null)
                {
                    ServiceContractModel dcm = referencedElement.Store.ElementDirectory.FindElements <ServiceContractModel>()[0];
                    if (dcm.ImplementationTechnology == null ||
                        String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) ||
                        !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase))
                    {
                        validationResults.AddResult(
                            new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.MessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this));
                    }
                }
            }
        }
		/// <summary>
		/// Does the validate.
		/// </summary>
		/// <param name="objectToValidate">The object to validate.</param>
		/// <param name="currentTarget">The current target.</param>
		/// <param name="key">The key.</param>
		/// <param name="validationResults">The validation results.</param>
		protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
		{
			// store default message (in case the error comes from a DC element) and set our new message
			dcModelMessageTemplate = this.MessageTemplate;
			this.MessageTemplate = currentMessageTemplate;			
			
			// Validate cross model references
            base.DoValidate(objectToValidate, currentTarget, key, validationResults);

			if (!validationResults.IsValid)
			{
				return;
			}

            using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
            {
                ModelElement referencedElement = resolver.Resolve(objectToValidate);

                if (referencedElement != null)
                {
                    DataContractModel dcm = referencedElement.Store.ElementDirectory.FindElements<DataContractModel>()[0];
                    if (dcm.ImplementationTechnology == null ||
                        String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) ||
                        !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget),StringComparison.OrdinalIgnoreCase))
                    {
                        validationResults.AddResult(
                            new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.dcModelMessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this));
                    }
                }
            }
		}
コード例 #3
0
        /// <summary>
        /// Does the validate.
        /// </summary>
        /// <param name="objectToValidate">The object to validate.</param>
        /// <param name="currentTarget">The current target.</param>
        /// <param name="key">The key.</param>
        /// <param name="validationResults">The validation results.</param>
        protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            // store default message (in case the error comes from a DC element) and set our new message
            dcModelMessageTemplate = this.MessageTemplate;
            this.MessageTemplate   = currentMessageTemplate;

            // Validate cross model references
            base.DoValidate(objectToValidate, currentTarget, key, validationResults);

            if (!validationResults.IsValid)
            {
                return;
            }

            using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
            {
                ModelElement referencedElement = resolver.Resolve(objectToValidate);

                if (referencedElement != null)
                {
                    DataContractModel dcm = referencedElement.Store.ElementDirectory.FindElements <DataContractModel>()[0];
                    if (dcm.ImplementationTechnology == null ||
                        String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) ||
                        !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase))
                    {
                        validationResults.AddResult(
                            new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.dcModelMessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this));
                    }
                }
            }
        }
        /// <summary>
        /// Does the validate.
        /// </summary>
        /// <param name="objectToValidate">The object to validate.</param>
        /// <param name="currentTarget">The current target.</param>
        /// <param name="key">The key.</param>
        /// <param name="validationResults">The validation results.</param>
        protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            this.MessageTemplate = currentMessageTemplate;

            base.DoValidate(objectToValidate, currentTarget, key, validationResults);

            if (!validationResults.IsValid)
            {
                return;
            }

            ServiceReference serviceReference = currentTarget as ServiceReference;

            if (serviceReference == null)
            {
                return;
            }

            using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
            {
                ModelElement referencedElement = resolver.Resolve(objectToValidate);
                if (referencedElement != null)
                {
                    ServiceContractModel dcm = referencedElement.Store.ElementDirectory.FindElements<ServiceContractModel>()[0];
                    if (dcm.ImplementationTechnology == null ||
                        String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) ||
                        !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase))
                    {
                        validationResults.AddResult(
                            new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.MessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this));
                    }
                }
            }
        }
コード例 #5
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);
        }
コード例 #6
0
 public static ModelElement ResolveAndDispose(ModelBusReference reference)
 {
     if(reference == null) return null;
     using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
     {
         return resolver.Resolve(reference);
     }
 }
コード例 #7
0
 public ModelElement Resolve(ModelBusReference reference)
 {
     if (reference != null)
     {
         this.modelAdapter = CreateModelBusAdapter(reference);
         return(modelAdapter.ResolveElementReference(reference) as ModelElement);
     }
     return(null);
 }
 private string GetDcImplementationTechnology(ModelBusReference reference)
 {
     using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
     {
         ModelElement      referencedElement = resolver.Resolve(reference);
         DataContractModel dcm = DomainModelHelper.GetElement <DataContractModel>(referencedElement.Store);
         return((dcm == null || dcm.ImplementationTechnology == null) ? string.Empty : dcm.ImplementationTechnology.Name);
     }
 }
コード例 #9
0
 public ModelElement Resolve(ModelBusReference reference)
 {
     if (reference != null)
     {
         this.modelAdapter = CreateModelBusAdapter(reference);
         return modelAdapter.ResolveElementReference(reference) as ModelElement;
     }
     return null;
 }
コード例 #10
0
        public static ModelElement ResolveAndCache(ModelBusReference reference)
        {
            if (reference == null)
            {
                return(null);
            }
            ModelBusAdapter modelAdapter = GlobalCache.AddOrGetExisting <ModelBusAdapter>(reference.ModelDisplayName, c => CreateModelBusAdapter(reference));

            return(modelAdapter.ResolveElementReference(reference) as ModelElement);
        }
コード例 #11
0
 public static ModelElement ResolveAndDispose(ModelBusReference reference)
 {
     if (reference == null)
     {
         return(null);
     }
     using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
     {
         return(resolver.Resolve(reference));
     }
 }
コード例 #12
0
ファイル: FileHelper.cs プロジェクト: Exclr8/CloudCore
        public static ProcessOverviewDiagram GetProcessOverviewDiagram(ModelBusReference processReference)
        {
            ProcessOverviewDiagram diagram = null;

            using (var adapter = processReference.ModelBus.CreateAdapter(processReference))
            {
                ModelBusView view = adapter.GetDefaultView();

                diagram = ((StandardVsModelingDiagramView)view).Diagram as ProcessOverviewDiagram;
            }

            return diagram;
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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;
        }
コード例 #15
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;
        }
コード例 #16
0
ファイル: AdapterManager.cs プロジェクト: dbremner/nupattern
        /// <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);
        }
コード例 #17
0
ファイル: FileHelper.cs プロジェクト: Exclr8/CloudCore
        public static SubProcess CreateNewSubProcess(string subProcessName, ProjectItem subProcessItem, ModelBusReference processReference)
        {
            var store = new Store(typeof(CloudCoreArchitectSubProcessDomainModel));
            var partition = new Partition(store);
            var result = new SerializationResult();

            using (Transaction t = store.TransactionManager.BeginTransaction("create new model"))
            {
                try
                {
                    var subProcessDSLSerializationHelper = CloudCoreArchitectSubProcessSerializationHelper.Instance;
                    SubProcess subProcess = subProcessDSLSerializationHelper.CreateModelHelper(partition);

                    SetSubProcessSettings(subProcessName, subProcess, processReference);

                    CreateAndSaveSubProcessFile(partition, result, subProcessItem.FileNames[0], subProcessDSLSerializationHelper, subProcess);

                    ModelBusReference subProcessReference = GetSubProcessOverviewFileModelBusReference(subProcessItem.FileNames[0]);

                    ProcessOverview.ProcessOverviewDiagram diagram = ProcessOverview.CustomCode.Helpers.ProcessFileHelper.GetProcessOverviewDiagram(processReference);
                    ProcessOverview.Process process = diagram.ModelElement as ProcessOverview.Process;
                    Architect.ProcessOverview.SubProcessElement subProcessElement = null;

                    using (Transaction tB = diagram.Store.TransactionManager.BeginTransaction("create subprocess element"))
                    {
                        subProcessElement = ProcessOverview.CustomCode.Helpers.ProcessFileHelper.CreateSubProcessElement(subProcessName, process.Partition, process, subProcess, subProcessReference);
                        tB.Commit();
                    }

                    t.Commit();

                    ProcessOverview.CustomCode.Helpers.ProcessFileHelper.SetAddedSubProcessReference(subProcessReference, subProcessItem.Name, processReference, subProcessElement);

                    return subProcess;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                return null;
            }

        }
コード例 #18
0
        /// <summary>
        /// Serializes the model element reference to marshal across the T4 app domain.
        /// </summary>
        protected virtual string SerializeReference()
        {
            var modelBus = this.ServiceProvider.GetService <SModelBus, IModelBus>();

            if (modelBus == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        CultureInfo.CurrentCulture,
                                                        Resources.ServiceUnavailable,
                                                        typeof(IModelBus)));
            }

            var instanceType = this.ModelElement.GetType();
            var adapter      = (from manager in modelBus.FindAdapterManagers(new object[] { this.ModelFile })
                                from adapterId in manager.GetSupportedLogicalAdapterIds()
                                where manager.GetExposedElementTypes(adapterId).Any(type => type.Type.IsAssignableFrom(instanceType))
                                select new
            {
                Manager = manager,
                AdapterId = adapterId
            })
                               .FirstOrDefault();

            if (adapter == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        CultureInfo.CurrentCulture,
                                                        Resources.GenerateModelingCodeCommand_ModelBusAdapterRequired,
                                                        this.ModelFile,
                                                        instanceType));
            }

            var busReference = new ModelBusReference(
                modelBus,
                adapter.AdapterId,
                Path.GetFileNameWithoutExtension(this.ModelFile),
                instanceType.Name,
                new ModelingAdapterReference(this.ModelElement.Id.ToString(), null, this.ModelFile));

            return(modelBus.SerializeReference(busReference));
        }
        /// <summary>
        /// Does the validate.
        /// </summary>
        /// <param name="objectToValidate">The object to validate.</param>
        /// <param name="currentTarget">The current target.</param>
        /// <param name="key">The key.</param>
        /// <param name="validationResults">The validation results.</param>
        protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            base.DoValidate(objectToValidate, currentTarget, key, validationResults);

            if (!validationResults.IsValid)
            {
                return;
            }

            ServiceReference serviceReference = currentTarget as ServiceReference;

            if (serviceReference == null)
            {
                return;
            }

            using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
            {
                ModelElement referencedElement = resolver.Resolve(objectToValidate);
                if (referencedElement != null)
                {
                    ServiceContractModel scm = DomainModelHelper.GetElement <ServiceContractModel>(referencedElement.Store);
                    if (scm != null && scm.ImplementationTechnology != null)
                    {
                        if (serviceReference.HostApplication.ImplementationTechnology != null &&
                            !serviceReference.HostApplication.ImplementationTechnology.Name.Equals(
                                scm.ImplementationTechnology.Name))
                        {
                            this.LogValidationResult(
                                validationResults,
                                string.Format(CultureInfo.CurrentCulture, this.MessageTemplate, serviceReference.Name),
                                currentTarget,
                                key);
                        }
                    }
                }
            }
        }
コード例 #20
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);
            }
        }
コード例 #21
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);
            }
        }
コード例 #22
0
 private static ModelBusAdapter CreateModelBusAdapter(ModelBusReference reference)
 {
     IModelBus bus = reference.ModelBus ?? RuntimeHelper.ServiceProvider.GetService(typeof(IModelBus)) as IModelBus;
     return bus.CreateAdapter(reference);
 }
コード例 #23
0
ファイル: MockModelBus.cs プロジェクト: vijumn/open-wssf-2015
 public ModelBusAdapter CreateAdapter(ModelBusReference reference)
 {
     return(new MockModelBusAdapter());
 }
コード例 #24
0
 public abstract ModelElement ResolveModelReference(ModelBusReference mbReference);
コード例 #25
0
ファイル: MockModelBus.cs プロジェクト: vijumn/open-wssf-2015
 public ReferenceStatus ValidateReference(ModelBusReference reference, ValidateReferenceOption validationOption)
 {
     throw new System.NotImplementedException();
 }
コード例 #26
0
        public override object ResolveElementReference(ModelBusReference elementReference)
        {
            MockModelBusReference reference = elementReference as MockModelBusReference;

            return(reference.ReferencedElement);
        }
コード例 #27
0
 protected override ModelBusAdapter DoCreateAdapter(ModelBusReference reference, IServiceProvider serviceProvider)
 {
     throw new NotImplementedException();
 }
コード例 #28
0
        // 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);
        }
コード例 #29
0
 /// <summary>
 /// Throws <see cref="NotSupportedException"/> as the runtime state does not have views.
 /// </summary>
 public override ModelBusView GetView(ModelBusReference reference)
 {
     throw new NotSupportedException();
 }
コード例 #30
0
        /// <summary>
        /// Serializes the model element reference to marshal across the T4 app domain.
        /// </summary>
        protected virtual string SerializeReference()
        {
            var modelBus = this.ServiceProvider.GetService<SModelBus, IModelBus>();
            if (modelBus == null)
            {
                throw new InvalidOperationException(string.Format(
                    CultureInfo.CurrentCulture,
                    Resources.ServiceUnavailable,
                    typeof(IModelBus)));
            }

            var instanceType = this.ModelElement.GetType();
            var adapter = (from manager in modelBus.FindAdapterManagers(new object[] { this.ModelFile })
                           from adapterId in manager.GetSupportedLogicalAdapterIds()
                           where manager.GetExposedElementTypes(adapterId).Any(type => type.Type.IsAssignableFrom(instanceType))
                           select new
                           {
                               Manager = manager,
                               AdapterId = adapterId
                           })
                           .FirstOrDefault();

            if (adapter == null)
            {
                throw new InvalidOperationException(string.Format(
                    CultureInfo.CurrentCulture,
                    Resources.GenerateModelingCodeCommand_ModelBusAdapterRequired,
                    this.ModelFile,
                    instanceType));
            }

            var busReference = new ModelBusReference(
                modelBus,
                adapter.AdapterId,
                Path.GetFileNameWithoutExtension(this.ModelFile),
                instanceType.Name,
                new ModelingAdapterReference(this.ModelElement.Id.ToString(), null, this.ModelFile));

            return modelBus.SerializeReference(busReference);
        }
コード例 #31
0
ファイル: FileHelper.cs プロジェクト: Exclr8/CloudCore
        public static Process GetProcessOverviewModelByReference(ModelBusReference processReference)
        {
            Process process = null;

            using (var adapter = processReference.ModelBus.CreateAdapter(processReference))
            {
                process = adapter.ResolveElementReference(processReference) as Process;
            }

            return process;
        }
コード例 #32
0
 /// <summary>
 /// Resolves the model reference.
 /// </summary>
 /// <param name="mbReference">The ModelBusReference intance.</param>
 /// <returns></returns>
 // FXCOP: False positive
 public ModelElement ResolveModelReference(ModelBusReference mbRefenrece)
 {
     return(ModelBusReferenceResolver.ResolveAndDispose(mbRefenrece));
 }
コード例 #33
0
 protected override ModelBusView GetView(ModelBusAdapter viewOwner, ModelBusReference viewReference)
 {
     throw new NotImplementedException();
 }
コード例 #34
0
 public override ModelBusView GetView(ModelBusReference reference)
 {
     throw new NotImplementedException();
 }
コード例 #35
0
ファイル: MockModelBus.cs プロジェクト: vijumn/open-wssf-2015
 public ModelBusAdapter CreateAdapter(ModelBusReference reference, System.IServiceProvider serviceProvider)
 {
     return(new MockModelBusAdapter());
 }
コード例 #36
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
        public static void AddReferencedSubProcesses(SubProcessBase element, ModelBusReference newValue)
        {
            string fileName = Utilities.GetFileNameForStore(element.Store);

            if (fileName == "")
                return;

            ProcessOverview.Process targetProc = null;
            ProcessOverview.SubProcessElement targetSubProc = null;
            ModelBusReference fromSubProcessActRef = null;
            SubProcess fromSubProcess = null;
            ModelBusReference mbr = null;

            IModelBus modelBus = element.Store.GetService(typeof(SModelBus)) as IModelBus;
            ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First();
            ModelBusReference reference = manager.CreateReference(fileName);

            List<Activity> subProcActs = new List<Activity>();

            //Get List of sub process activities in this diagram that reference another sub process
            subProcActs.AddRange(element.Activities.Where(a => a is ToProcessConnector || a is FromProcessConnector));

            foreach (var item in subProcActs)
            {
                if (item is ToProcessConnector)
                    mbr = ((ToProcessConnector)item).ToProcessConnectorRef;
                else
                    mbr = ((FromProcessConnector)item).FromProcessConnectorRef;

                using (ModelBusAdapter adapter = modelBus.CreateAdapter(mbr))
                {
                    ModelBusView view = adapter.GetDefaultView();
                    Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram;

                    fromSubProcess = (SubProcess)targetDiagram.ModelElement;
                    fromSubProcessActRef = adapter.GetElementReference(fromSubProcess);
                }

                using (Transaction tt = fromSubProcess.Store.TransactionManager.BeginTransaction("Update Linked Sub Process Reference"))
                {
                    string fileNameItem = Utilities.GetFileNameForStore(item.Store);
                    IModelBus modelBusItem = item.Store.GetService(typeof(SModelBus)) as IModelBus;
                    ModelBusAdapterManager managerItem = modelBusItem.FindAdapterManagers(fileNameItem).First();
                    ModelBusReference referenceItem = managerItem.CreateReference(fileNameItem);

                    using (ModelBusAdapter adapterItem = modelBus.CreateAdapter(referenceItem))
                    {
                        ModelBusReference oldProcRef = fromSubProcess.ProcessRef;

                        if (oldProcRef != null)
                        {
                            using (ModelBusAdapter oldItemAdapter = modelBus.CreateAdapter(oldProcRef))
                            {
                                ModelBusView oldView = oldItemAdapter.GetDefaultView();
                                Diagram oldDiagram = ((StandardVsModelingDiagramView)oldView).Diagram;

                                if (oldDiagram.ModelElement != null)
                                {
                                    using (Transaction ttt = oldDiagram.Store.TransactionManager.BeginTransaction("Delete Old Item"))
                                    {
                                        ProcessOverview.Process oldProc = (ProcessOverview.Process)oldDiagram.ModelElement;

                                        //Delete old items in old diagram
                                        IEnumerable<ProcessOverview.SubProcessElement> listOldSubProc = oldProc.BTSubProcess.Where(s => s.VisioId == fromSubProcess.VisioId || s.VisioId == item.VisioId);

                                        for (int x = 0; x < listOldSubProc.Count(); x++)
                                        {
                                            listOldSubProc.ElementAt(x).Delete();
                                        }

                                        ttt.Commit();
                                    }
                                }
                            }
                        }

                        fromSubProcess.ProcessOverviewSubProcessRef = adapterItem.GetElementReference(item.SubProcess);
                        fromSubProcess.ProcessRef = item.SubProcess.ProcessRef;
                    }

                    tt.Commit();
                }

                if (newValue != null)
                {
                    Diagram targetDiagram;

                    using (ModelBusAdapter targetAdapter = modelBus.CreateAdapter(newValue))
                    {
                        ModelBusView view = targetAdapter.GetDefaultView();
                        targetDiagram = ((StandardVsModelingDiagramView)view).Diagram;
                    }

                    targetProc = (ProcessOverview.Process)targetDiagram.ModelElement;

                    using (Transaction t = targetDiagram.Store.TransactionManager.BeginTransaction("Create New Item"))
                    {
                        using (ModelBusAdapter adapter2 = modelBus.CreateAdapter(reference))
                        {
                            //Delete old items in new diagram if exist
                            IEnumerable<ProcessOverview.SubProcessElement> listTargetSubProc = targetProc.BTSubProcess.Where(s => s.VisioId == fromSubProcess.VisioId);

                            for (int x = 0; x < listTargetSubProc.Count(); x++)
                            {
                                listTargetSubProc.ElementAt(x).Delete();
                            }

                            targetSubProc = new ProcessOverview.SubProcessElement(targetDiagram.Partition)
                            {
                                SubProcessRef = fromSubProcessActRef,
                                Name = fromSubProcess.SubProcessName,
                                VisioId = fromSubProcess.VisioId
                            };

                            if (targetProc.BTSubProcess.Where(s => s.VisioId == targetProc.VisioId).Count() == 0)
                            {
                                targetProc.BTSubProcess.Add(targetSubProc);

                                var shape = new ProcessOverview.SubProcessShape(targetDiagram.Partition);
                                shape.ModelElement = targetSubProc;

                                //Todo: Get location of linked activity and do placement
                                shape.AbsoluteBounds = new Microsoft.VisualStudio.Modeling.Diagrams.RectangleD(new PointD(2, 2), new SizeD(2, 0.75));
                                targetDiagram.NestedChildShapes.Add(shape);
                            }
                        }

                        t.Commit();
                    }
                }
            }
        }
コード例 #37
0
 public void TestDoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
 {
     this.DoValidate(objectToValidate, currentTarget, key, validationResults);
 }
コード例 #38
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
        public static void AddConnectors(SubProcessBase element, ModelBusReference newValue)
        {
            string fileName = Utilities.GetFileNameForStore(element.Store);

            if (fileName == "")
                return;

            if (newValue == null)
                return;

            ProcessOverview.Process targetProc = null;

            IModelBus modelBus = element.Store.GetService(typeof(SModelBus)) as IModelBus;
            ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First();
            ModelBusReference reference = manager.CreateReference(fileName);

            List<ProcessOverview.SubProcessElement> subProcList = new List<ProcessOverview.SubProcessElement>();

            Diagram targetDiagram;

            using (ModelBusAdapter targetAdapter = modelBus.CreateAdapter(newValue))
            {
                ModelBusView view = targetAdapter.GetDefaultView();
                targetDiagram = ((StandardVsModelingDiagramView)view).Diagram;
            }

            targetProc = (ProcessOverview.Process)targetDiagram.ModelElement;
            subProcList.AddRange(targetProc.BTSubProcess);

            foreach (var item in subProcList)
            {
                using (ModelBusAdapter adapter = modelBus.CreateAdapter(item.SubProcessRef))
                {
                    SubProcessBase subProcessBase = (SubProcessBase)adapter.ResolveElementReference(item.SubProcessRef);

                    List<Activity> toSubProcActs = new List<Activity>();

                    toSubProcActs.AddRange(subProcessBase.Activities.Where(a => a is ToProcessConnector));

                    foreach (var toProcAct in toSubProcActs)
                    {
                        try
                        {
                            using (Transaction t = item.Store.TransactionManager.BeginTransaction("Add Connector"))
                            {
                                List<ProcessOverview.SubProcessElement> toSub = new List<ProcessOverview.SubProcessElement>();

                                ModelBusReference mbr = ((ToProcessConnector)toProcAct).ExternalActivityRef;

                                if (mbr == null)
                                    continue;

                                using (ModelBusAdapter mba = modelBus.CreateAdapter(mbr))
                                {
                                    FromProcessConnector fpa = (FromProcessConnector)mba.ResolveElementReference(mbr);

                                    ModelBusReference subProcessRef = mba.GetElementReference(fpa.SubProcess);

                                    IEnumerable<ProcessOverview.SubProcessElement> toSubProcess = subProcList.Where(p => p.SubProcessRef == subProcessRef);

                                    foreach (var i in toSubProcess)
                                    {
                                        ProcessOverview.SubProcessElementReferencesTargets refTargets = new ProcessOverview.SubProcessElementReferencesTargets(item, i);
                                        ProcessOverview.SubProcessConnector connector = new ProcessOverview.SubProcessConnector(targetDiagram.Partition);

                                        connector.Associate(refTargets);

                                        if (targetDiagram.NestedChildShapes.Where(s => s == connector).Count() == 0)
                                            targetDiagram.NestedChildShapes.Add(connector);
                                    }
                                }

                                t.Commit();
                            }
                        }
                        catch (Exception)
                        {
                            return;
                        }
                    }
                }
            }
        }
コード例 #39
0
ファイル: FileHelper.cs プロジェクト: Exclr8/CloudCore
        public static SubProcessElement CreateSubProcessElement(string subProcessName, Partition partition, ProcessOverview.Process process, SubProcess subProcess, ModelBusReference subProcessReference)
        {
            var childReferenceProperty = new PropertyAssignment(SubProcessElement.SubProcessRefDomainPropertyId, null);
            var nameProperty = new PropertyAssignment(SubProcessElement.NameDomainPropertyId, subProcessName);
            var subProcessElement = new ProcessOverview.SubProcessElement(partition, nameProperty, childReferenceProperty);

            subProcessElement.VisioId = subProcess.VisioId.ToString().ToLower();
            subProcessElement.SubProcessRef = subProcessReference;
            process.BTSubProcess.Add(subProcessElement);

            return subProcessElement;
        }
コード例 #40
0
        private TReferencedMEL GetMelReference <TReferencedMEL>(ModelBusReference moniker) where TReferencedMEL : ModelElement
        {
            TReferencedMEL mel = (TReferencedMEL)ModelBusReferenceResolver.ResolveAndDispose(moniker);

            return(mel);
        }
コード例 #41
0
ファイル: FileHelper.cs プロジェクト: Exclr8/CloudCore
 private static void SetSubProcessSettings(string subProcessName, SubProcess subProcess, ModelBusReference processReference)
 {
     subProcess.ProcessRef = processReference;
     subProcess.SubProcessName = subProcessName;
     subProcess.VisioId = subProcess.Id.ToString().ToLower();
 }
コード例 #42
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
        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);
                }
            }
        }
        /// <summary>
        /// Does the validate.
        /// </summary>
        /// <param name="objectToValidate">The object to validate.</param>
        /// <param name="currentTarget">The current target.</param>
        /// <param name="key">The key.</param>
        /// <param name="validationResults">The validation results.</param>
        protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            this.MessageTemplate = currentMessageTemplate;

            base.DoValidate(objectToValidate, currentTarget, key, validationResults);

            if (!validationResults.IsValid)
            {
                return;
            }

            DataContractMessagePart part = currentTarget as DataContractMessagePart;

            if (part == null ||
                part.Message.ServiceContractModel.ImplementationTechnology == null)
            {
                return;
            }

            string dcImplementationTechnology = GetDcImplementationTechnology(objectToValidate);

            if (IsASMX(part.Message.ServiceContractModel.ImplementationTechnology.Name))
            {
                if (part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.XmlSerializer))
                {
                    if (IsWCF(dcImplementationTechnology))
                    {
                        this.LogValidationResult(
                            validationResults,
                            string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name),
                            currentTarget,
                            key);
                    }
                }
            }
            else if (IsWCF(part.Message.ServiceContractModel.ImplementationTechnology.Name))
            {
                if (part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.DataContractSerializer))
                {
                    if (IsASMX(dcImplementationTechnology))
                    {
                        this.LogValidationResult(
                            validationResults,
                            string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name),
                            currentTarget,
                            key);
                    }
                }
                else
                {
                    if (IsWCF(dcImplementationTechnology))
                    {
                        this.LogValidationResult(
                            validationResults,
                            Resources.InvalidExtensionAndSerializerCrossModelMessage,
                            currentTarget,
                            key);
                    }
                }
            }
        }
コード例 #44
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
        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);
                    }
                }
            }
        }
コード例 #45
0
ファイル: MockModelBus.cs プロジェクト: vijumn/open-wssf-2015
 public string SerializeReference(ModelBusReference reference)
 {
     throw new System.NotImplementedException();
 }
コード例 #46
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
        private static void AddConnector(ModelBusReference processOverview, ProcessOverview.SubProcessElement fromSubProcess, ProcessOverview.SubProcessElement toSubProcess)
        {
            IModelBus modelbus = processOverview.ModelBus;
            ModelBusAdapter adapter = modelbus.CreateAdapter(processOverview);
            Diagram diagram = ((StandardVsModelingDiagramView)adapter.GetDefaultView()).Diagram;

            using (Transaction t = fromSubProcess.Store.TransactionManager.BeginTransaction("Add Connector"))
            {
                //Connector must be added when BTSubProcessActivity is added
                ProcessOverview.SubProcessElementReferencesTargets refTargets = new ProcessOverview.SubProcessElementReferencesTargets(fromSubProcess, toSubProcess);
                ProcessOverview.SubProcessConnector connector = new ProcessOverview.SubProcessConnector(diagram.Partition);

                connector.Associate(refTargets);
                diagram.NestedChildShapes.Add(connector);

                t.Commit();
            }
        }
コード例 #47
0
 public static ModelElement ResolveAndCache(ModelBusReference reference)
 {
     if (reference == null) return null;
     ModelBusAdapter modelAdapter = GlobalCache.AddOrGetExisting<ModelBusAdapter>(reference.ModelDisplayName, c => CreateModelBusAdapter(reference));
     return modelAdapter.ResolveElementReference(reference) as ModelElement;
 }
コード例 #48
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
            protected override void OnValueChanging(SubProcessBase element, ModelBusReference oldValue, ModelBusReference newValue)
            {
                base.OnValueChanging(element, oldValue, newValue);

                if (element.Store.InSerializationTransaction)
                    return;

                if (element.Store.TransactionManager.CurrentTransaction.Name == "create new model")
                    return;

                if (element.Store.TransactionManager.CurrentTransaction.Name == "Update Sub Process Reference")
                    return;

                if (element.Store.TransactionManager.CurrentTransaction.Name == "Change SubProcessRef")
                    return;

                if (element.Store.TransactionManager.CurrentTransaction.Name == "Init Items")
                    return;

                AddSubProcessToOverView(element, oldValue, newValue);
                AddReferencedSubProcesses(element, newValue);

                if (element.Store.TransactionManager.CurrentTransaction.Name == "Update Linked Sub Process Reference")
                    return;

                AddConnectors(element, newValue);
            }
コード例 #49
0
 protected override ModelBusAdapter DoCreateAdapter(ModelBusReference reference, IServiceProvider serviceProvider)
 {
     throw new NotImplementedException();
 }
コード例 #50
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Adapter"/> class.
 /// </summary>
 public Adapter(ModelBusReference reference, VsModelingAdapterManager adapterManager, ModelElement rootModelElement)
     : base(reference, adapterManager, rootModelElement)
 {
 }
コード例 #51
0
 /// <summary>
 /// Creates an instance of the <see cref="Adapter"/> class.
 /// </summary>
 protected override ModelingAdapter CreateModelingAdapterInstance(ModelBusReference reference, ModelElement rootModelElement)
 {
     return new Adapter(reference, this, rootModelElement);
 }
		private string GetDcImplementationTechnology(ModelBusReference reference)
		{
            using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver())
            {
                ModelElement referencedElement = resolver.Resolve(reference);
                DataContractModel dcm = DomainModelHelper.GetElement<DataContractModel>(referencedElement.Store);
                return (dcm == null || dcm.ImplementationTechnology == null) ? string.Empty : dcm.ImplementationTechnology.Name;
            }
		}
 public void TestDoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
 {
     this.DoValidate(objectToValidate, currentTarget, key, validationResults);
 }
		/// <summary>
		/// Does the validate.
		/// </summary>
		/// <param name="objectToValidate">The object to validate.</param>
		/// <param name="currentTarget">The current target.</param>
		/// <param name="key">The key.</param>
		/// <param name="validationResults">The validation results.</param>
		protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults)
		{
			this.MessageTemplate = currentMessageTemplate;	

			base.DoValidate(objectToValidate, currentTarget, key, validationResults);

			if(!validationResults.IsValid)
			{
				return;
			}

			DataContractMessagePart part = currentTarget as DataContractMessagePart;

			if(part == null ||
                part.Message.ServiceContractModel.ImplementationTechnology == null)
			{
				return;
			}

			string dcImplementationTechnology = GetDcImplementationTechnology(objectToValidate);

			if(IsASMX(part.Message.ServiceContractModel.ImplementationTechnology.Name))
			{
				if(part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.XmlSerializer))
				{
					if(IsWCF(dcImplementationTechnology))
					{
						this.LogValidationResult(
							validationResults,
							string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name),
							currentTarget,
							key);
					}
				}
			}
			else if(IsWCF(part.Message.ServiceContractModel.ImplementationTechnology.Name))
			{
                if (part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.DataContractSerializer))
                {
                    if (IsASMX(dcImplementationTechnology))
                    {
                        this.LogValidationResult(
                            validationResults,
                            string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name),
                            currentTarget,
                            key);
                    }
                }
                else
                {
                    if (IsWCF(dcImplementationTechnology))
                    {
                        this.LogValidationResult(
                            validationResults,
                            Resources.InvalidExtensionAndSerializerCrossModelMessage,
                            currentTarget,
                            key);
                    }
                }
			}
		}
コード例 #55
0
 protected override ModelBusView GetView(ModelBusAdapter viewOwner, ModelBusReference viewReference)
 {
     throw new NotImplementedException();
 }
コード例 #56
0
ファイル: Adapter.cs プロジェクト: StevenVanDijk/NuPattern
 /// <summary>
 /// Initializes a new instance of the <see cref="Adapter"/> class.
 /// </summary>
 public Adapter(ModelBusReference reference, VsModelingAdapterManager adapterManager, ModelElement rootModelElement)
     : base(reference, adapterManager, rootModelElement)
 {
 }
コード例 #57
0
ファイル: AdapterManager.cs プロジェクト: dbremner/nupattern
 /// <summary>
 /// Creates an instance of the <see cref="Adapter"/> class.
 /// </summary>
 protected override ModelingAdapter CreateModelingAdapterInstance(ModelBusReference reference, ModelElement rootModelElement)
 {
     return(new Adapter(reference, this, rootModelElement));
 }
コード例 #58
0
ファイル: Adapter.cs プロジェクト: StevenVanDijk/NuPattern
 /// <summary>
 /// Throws <see cref="NotSupportedException"/> as the runtime state does not have views.
 /// </summary>
 public override ModelBusView GetView(ModelBusReference reference)
 {
     throw new NotSupportedException();
 }
コード例 #59
0
ファイル: SubProcessBase.cs プロジェクト: Exclr8/CloudCore
        public static void AddSubProcessToOverView(SubProcessBase element, ModelBusReference oldValue, ModelBusReference newValue)
        {
            string fileName = Utilities.GetFileNameForStore(element.Store);

            if (fileName == "")
                return;

            //get modelbus, adapters and create reference based on from activity in sub-process diagram
            IModelBus modelBus = element.Store.GetService(typeof(SModelBus)) as IModelBus;
            ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First();

            //reference to Sub-Process Diagram
            ModelBusReference referenceToSubProcessDiagram = manager.CreateReference(fileName);

            //reference to Activity initiating the
            ModelBusReference fromSubProcessActivityRef;

            using (ModelBusAdapter adapter = modelBus.CreateAdapter(referenceToSubProcessDiagram))
                fromSubProcessActivityRef = adapter.GetElementReference(element);

            ProcessOverview.Process targetOverviewProc = null;
            ProcessOverview.SubProcessElement targetOverviewSubProc = null;
            ProcessOverview.Process oldOverviewProc = null;
            //ProcessOverview.SubProcess oldSubProc = null;

            if (oldValue != null)
            {
                using (ModelBusAdapter adapterRef = modelBus.CreateAdapter(oldValue))
                {
                    if (adapterRef != null)
                    {
                        ModelBusView viewOld = adapterRef.GetDefaultView();
                        Diagram targetOldDiagram = ((StandardVsModelingDiagramView)viewOld).Diagram;

                        //Delete old Subprocess Shape & element
                        if (targetOldDiagram.ModelElement != null)
                        {
                            oldOverviewProc = (ProcessOverview.Process)targetOldDiagram.ModelElement;

                            if (element.ProcessOverviewSubProcessRef != null)
                            {
                                //oldSubProc = (ProcessOverview.SubProcess)adapterRef.ResolveElementReference(element.SubProcessRef);

                                using (Transaction t = targetOldDiagram.Store.TransactionManager.BeginTransaction("Delete Old Item"))
                                {
                                    //if (oldSubProc != null)
                                    //{
                                    IEnumerable<ProcessOverview.SubProcessShape> subProcShapes = targetOldDiagram.NestedChildShapes.Where(s => s is ProcessOverview.SubProcessShape
                                                                                    && ((ProcessOverview.SubProcessElement)s.ModelElement).VisioId == element.VisioId).Cast<ProcessOverview.SubProcessShape>();

                                    for (int x = 0; x < subProcShapes.Count(); x++)
                                    {
                                        if (newValue == null || newValue != oldValue)
                                        {
                                            subProcShapes.ElementAt(x).Delete();
                                        }
                                        else
                                        {
                                            //targetSubProc = oldSubProc;
                                            targetOverviewProc = oldOverviewProc;
                                        }
                                    }

                                    t.Commit();
                                    //}
                                }

                                using (Transaction t = element.Store.TransactionManager.BeginTransaction("Init Items"))
                                {
                                    element.ProcessOverviewSubProcessRef = null;
                                    element.ProcessRef = null;

                                    t.Commit();
                                }
                            }
                        }
                    }
                }
            }

            if (newValue != null)
            {
                using (ModelBusAdapter adapterExternalRef = modelBus.CreateAdapter(newValue))
                {
                    if (adapterExternalRef != null)
                    {
                        ModelBusView view = adapterExternalRef.GetDefaultView();
                        Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram;

                        //Get Process overview diagram based on target diagram
                        targetOverviewProc = (ProcessOverview.Process)targetDiagram.ModelElement;

                        using (Transaction t = targetDiagram.Store.TransactionManager.BeginTransaction("Create New Item"))
                        {
                            if (newValue != null && newValue != oldValue)
                            {
                                //Instantiate Process Overview Sub-Process Model based on sub-process diagram file details
                                targetOverviewSubProc = new ProcessOverview.SubProcessElement(targetDiagram.Partition)
                                {
                                    SubProcessRef = fromSubProcessActivityRef,
                                    Name = element.SubProcessName,
                                    VisioId = string.IsNullOrEmpty(element.VisioId) ? element.Id.ToString() : element.VisioId
                                };

                                //set the visioid of the targetOverviewSubProc to it's id
                                //targetOverviewSubProc.VisioId = targetOverviewSubProc.Id.ToString();

                                ModelBusAdapter adapterForSubProcessDiagram = modelBus.CreateAdapter(referenceToSubProcessDiagram);

                                //TODO: check this
                                //checking whether the  sub-process activity already exists in the process overview
                                //if (targetOverviewProc.BTSubProcess.Where(p => p.SubProcessRef == adapterForSubProcessDiagram.GetElementReference(element)).Count() > 0)
                                //need to figure out what must happen
                                //right now assuming that if a shape and model exists, do nothing

                                if (targetOverviewProc.BTSubProcess.Where(p => p.SubProcessRef == adapterForSubProcessDiagram.GetElementReference(element)).Count() == 0)
                                {
                                    //add sub process instantiation to sub process collection in process overview
                                    targetOverviewProc.BTSubProcess.Add(targetOverviewSubProc);

                                    //create shape to add to process overview diagram
                                    var shape = new ProcessOverview.SubProcessShape(targetDiagram.Partition);
                                    //link sub-process model instantiation to the shape
                                    shape.ModelElement = targetOverviewSubProc;

                                    //Todo: Get location of linked activity and do placement
                                    shape.AbsoluteBounds = new Microsoft.VisualStudio.Modeling.Diagrams.RectangleD(new PointD(2, 2), new SizeD(2, 0.75));

                                    //Add shape to the process overview diagram
                                    if (targetDiagram.NestedChildShapes.Where(s => s == shape).Count() == 0)
                                        targetDiagram.NestedChildShapes.Add(shape);
                                }
                            }
                            else
                            {
                                targetOverviewSubProc.Name = element.SubProcessName;
                                targetOverviewSubProc.VisioId = string.IsNullOrEmpty(element.VisioId) ? element.Id.ToString() : element.VisioId;
                            }

                            t.Commit();
                        }

                        using (Transaction t = element.Store.TransactionManager.BeginTransaction("Update Sub Process Reference"))
                        {
                            element.ProcessOverviewSubProcessRef = adapterExternalRef.GetElementReference(targetOverviewSubProc);
                            element.ProcessRef = newValue;

                            t.Commit();
                        }
                    }
                }
            }
        }
コード例 #60
0
        private static ModelBusAdapter CreateModelBusAdapter(ModelBusReference reference)
        {
            IModelBus bus = reference.ModelBus ?? RuntimeHelper.ServiceProvider.GetService(typeof(IModelBus)) as IModelBus;

            return(bus.CreateAdapter(reference));
        }