/// <summary>
        /// The invokes the Component async.
        /// </summary>
        /// <param name="org"> The org. </param>
        /// <param name="service"> The service. </param>
        /// <param name="edition"> The edition. </param>
        /// <param name="serviceMetadata"> The service Metadata. </param>
        /// <param name="viewMetadatas">The view metadata list</param>
        /// <param name="codeCompilationResult"> The code Compilation Result. </param>
        /// <returns> The <see cref="Task"/>.  </returns>
        public async Task <IViewComponentResult> InvokeAsync(
            string org,
            string service,
            string edition,
            ServiceMetadata serviceMetadata             = null,
            IList <ViewMetadata> viewMetadata           = null,
            CodeCompilationResult codeCompilationResult = null)
        {
            ServiceEditionIdentifier serviceEdition = new ServiceEditionIdentifier {
                Org = org, Service = service, Edition = edition
            };
            CodeCompilationResult compilation = null;

            if (string.IsNullOrEmpty(_generalSettings.RuntimeMode) || !_generalSettings.RuntimeMode.Equals("ServiceContainer"))
            {
                compilation = codeCompilationResult ?? await Compile(serviceEdition);


                var metadata = serviceMetadata ?? await GetServiceMetadata(serviceEdition);

                EditionStatusViewModel model = CreateModel(serviceEdition, compilation, metadata);

                return(View(model));
            }

            return(View(new EditionStatusViewModel()));
        }
        private Task <ServiceMetadata> GetServiceMetadata(ServiceEditionIdentifier serviceEdition)
        {
            Func <ServiceMetadata> fetchServiceMetadata =
                () =>
                _repository.GetServiceMetaData(
                    serviceEdition.Org,
                    serviceEdition.Service,
                    serviceEdition.Edition);

            return(Task <ServiceMetadata> .Factory.StartNew(fetchServiceMetadata));
        }
        private Task <CodeCompilationResult> Compile(ServiceEditionIdentifier serviceEdition)
        {
            Func <CodeCompilationResult> compile =
                () =>
                _compilation.CreateServiceAssembly(
                    serviceEdition.Org,
                    serviceEdition.Service,
                    serviceEdition.Edition);

            return(Task <CodeCompilationResult> .Factory.StartNew(compile));
        }
예제 #4
0
        private Task <IList <ViewMetadata> > GetViewMetadata(ServiceEditionIdentifier serviceEdition)
        {
            Func <IList <ViewMetadata> > fetchViewMetadata =
                () =>
                _viewRepository.GetViews(
                    serviceEdition.Org,
                    serviceEdition.Service,
                    serviceEdition.Edition);

            return(Task <IList <ViewMetadata> > .Factory.StartNew(fetchViewMetadata));
        }
        private EditionStatusViewModel CreateModel(
            ServiceEditionIdentifier serviceEditionIdentifier,
            CodeCompilationResult compilationResult,
            ServiceMetadata serviceMetadata
            )
        {
            var userMessages =
                CompilationUserMessages(compilationResult)
                .Union(ServiceMetadataMessages(serviceMetadata))
                .ToList();

            userMessages.Sort();

            return(new EditionStatusViewModel
            {
                EditionIdentifier = serviceEditionIdentifier,
                CodeCompilationMessages = FilterCompilationInfos(compilationResult).ToList(),
                UserMessages = userMessages
            });
        }
예제 #6
0
        /// <summary>
        /// The invokes the Component async.
        /// </summary>
        /// <param name="org"> The org. </param>
        /// <param name="service"> The service. </param>
        /// <param name="edition"> The edition. </param>
        /// <param name="serviceMetadata"> The service Metadata. </param>
        /// <param name="viewMetadatas">The view metadata list</param>
        /// <param name="codeCompilationResult"> The code Compilation Result. </param>
        /// <returns> The <see cref="Task"/>.  </returns>
        public async Task <IViewComponentResult> InvokeAsync(
            string org,
            string service,
            string edition,
            ServiceMetadata serviceMetadata             = null,
            IList <ViewMetadata> viewMetadata           = null,
            CodeCompilationResult codeCompilationResult = null)
        {
            var serviceEdition = new ServiceEditionIdentifier {
                Org = org, Service = service, Edition = edition
            };
            var compilation = codeCompilationResult ?? await Compile(serviceEdition);

            var metadata = serviceMetadata ?? await GetServiceMetadata(serviceEdition);

            var views = viewMetadata ?? await GetViewMetadata(serviceEdition);

            var model = CreateModel(serviceEdition, compilation, metadata, views);

            return(View(model));
        }