示例#1
0
        internal void HookupHandler(IBuildProvider provider, ScriptScope moduleGlobals, object self, object target) {

            DynamicFunction scriptFunction = new DynamicFunction((object)moduleGlobals.GetVariable(_handlerName));

            Delegate handler = EventHandlerWrapper.GetWrapper(
                provider, self, scriptFunction, _scriptVirtualPath, typeof(EventHandler));
            _eventInfo.AddEventHandler(target, handler);
        }
示例#2
0
        public static Delegate GetWrapper(IBuildProvider provider, DynamicFunction f,
            string virtualPath, Type delegateType)
        {
            // Get the MethodInfo only once
            if (_handlerMethodInfo == null) {
                _handlerMethodInfo = typeof(EventHandlerWrapper).GetMethod("Handler");
            }

            EventHandlerWrapper wrapper = new EventHandlerWrapper(provider, f, virtualPath);

            // Create a delegate of the required type
            return Delegate.CreateDelegate(delegateType, wrapper, _handlerMethodInfo);
        }
示例#3
0
        public Downloader(MainViewModel mainViewModel,
                          IBuildProvider buildProvider, IMatchProvider matchProvider, ISoftwareProvider softwareProvider, IDownloadProvider downloadProvider,
                          IDownloadService downloadService, IExtractService extractService, IMetadataService metadataService, ILogger <Downloader> logger)
        {
            Logger = logger;

            MainViewModel = mainViewModel;

            BuildProvider    = buildProvider;
            MatchProvider    = matchProvider;
            SoftwareProvider = softwareProvider;
            DownloadProvider = downloadProvider;

            DownloadService = downloadService;
            ExtractService  = extractService;
            MetadataService = metadataService;
        }
        private async Task <IEnumerable <IBuild> > PollBuildsAsync(IBuildProvider provider, BuildMonitorSettings settings)
        {
            try
            {
                if (this.generalSettings?.ViewStyle == BuildViewStyle.GroupByPullRequest)
                {
                    var prBuilds = await provider.GetBuildsByPullRequestsAsync(settings).ConfigureAwait(false);

                    prBuilds.ThrowIfUnsuccessful();

                    var definitionsInUse  = prBuilds.Data.GroupBy(a => a.Definition, build => build, this.buildDefinitionEqualityComparer).Select(a => a.Key);
                    var unusedDefinitions = settings.SelectedBuildDefinitions.Except(definitionsInUse, this.buildDefinitionEqualityComparer).ToList();
                    if (unusedDefinitions.Any())
                    {
                        var defBuilds = await provider.GetBuildsAsync(settings.SelectedBuildDefinitions, settings).ConfigureAwait(false);

                        defBuilds.ThrowIfUnsuccessful();

                        return(prBuilds.Data.Concat(defBuilds.Data));
                    }

                    return(prBuilds.Data);
                }

                var builds = await provider.GetBuildsAsync(settings.SelectedBuildDefinitions, settings).ConfigureAwait(false);

                builds.ThrowIfUnsuccessful();

                return(builds.Data);
            }
            catch (DataResponseUnsuccessfulException ex)
            {
                this.logger.Warn($"Http status code {ex.StatusCode} returned while polling for builds!");
                this.notificationProvider?.ShowMessage("Failure on getting builds",
                                                       $"Please check the connection for project(s) '{String.Join(", ", settings.SelectedBuildDefinitions.Select(b => b.Project.Name).Distinct())}'. StatusCode was '{ex.StatusCode}'. See log for more details.");
            }
            catch (Exception exception)
            {
                this.logger.Warn("Failure on polling builds", exception);
                this.notificationProvider?.ShowMessage("Failure on getting builds",
                                                       $"Please check the connection for project(s) '{String.Join(", ", settings.SelectedBuildDefinitions.Select(b => b.Project.Name).Distinct())}'. See log for details.");
            }

            return(Enumerable.Empty <IBuild>());
        }
 public EventHandlerWrapper(IBuildProvider provider, DynamicFunction f, string virtualPath)
 {
     _f           = f;
     _virtualPath = virtualPath;
     _provider    = provider;
 }
 public EventHandlerWrapper(IBuildProvider provider)
 {
     _provider = provider;
 }
示例#7
0
            internal void HookupEvents(IBuildProvider provider, ScriptScope moduleGlobals, object o) {

                if (_eventHandlers == null)
                    return;

                foreach (EventHookupHelper helper in _eventHandlers) {
                    helper.HookupHandler(provider, moduleGlobals, o, o);
                }
            }
示例#8
0
 public EventHandlerWrapper(IBuildProvider provider, DynamicFunction f, string virtualPath)
 {
     _f = f;
     _virtualPath = virtualPath;
     _provider = provider;
 }
示例#9
0
 public EventHandlerWrapper(IBuildProvider provider)
 {
     _provider = provider;
 }
示例#10
0
 public Project(IBuildProvider buildProvider, IBranchProvider branchProvider, IProjectConfiguration config)
 {
     BuildProvider  = buildProvider;
     BranchProvider = branchProvider;
     Config         = config;
 }
示例#11
0
 public Project(IBuildProvider buildProvider, IBranchProvider branchProvider, IProjectConfiguration config)
     : this(buildProvider.Yield(), branchProvider.Yield(), config)
 {
 }
示例#12
0
 private IBuildProvider GetProvider()
 {
     return(_provider ?? (_provider = _buildProviderStrategy.Create(Settings)));
 }
示例#13
0
 public BuildsController(IMapper mapper, IBuildProvider buildProvider, ILogger <BuildsController> logger)
 {
     _mapper        = mapper ?? throw new ArgumentNullException(nameof(mapper));
     _buildProvider = buildProvider ?? throw new ArgumentNullException(nameof(buildProvider));
     _logger        = logger ?? throw new ArgumentNullException(nameof(logger));
 }
示例#14
0
 private IBuild Enrich(IBaseBuild build, IBuildProvider buildProvider) => new EnrichedBuild(build, Name, Guid, buildProvider);
示例#15
0
 public BuildCommandService(OmniSharpWorkspace workspace, IBuildProvider config)
 {
     _workspace = workspace;
     _config    = config.config;
 }
示例#16
0
        internal static BuildResult GetBuildResult(string virtualPath, IBuildProvider buildProvider)
        {
            // If any script files in App_Scripts changed, they need to be reloaded
            ReloadChangedScriptFiles();

            virtualPath = VirtualPathUtility.ToAbsolute(virtualPath);
            string cacheKey = virtualPath.ToLowerInvariant();

            // Look up the cache before and after taking the lock
            BuildResult result = (BuildResult)HttpRuntime.Cache[cacheKey];
            if (result != null)
                return result;

            ScriptEngine scriptEngine = buildProvider.GetScriptEngine();

            lock (typeof(EngineHelper)) {
                result = (BuildResult)HttpRuntime.Cache[cacheKey];
                if (result != null)
                    return result;

                DateTime utcStart = DateTime.UtcNow;

                CompiledCode compiledCode = null;
                string scriptCode = buildProvider.GetScriptCode();

                if (scriptCode != null) {
                    // We pass the physical path for debugging purpose
                    string physicalPath = HostingEnvironment.MapPath(virtualPath);
                    ScriptSource source = scriptEngine.CreateScriptSourceFromString(scriptCode, physicalPath, SourceCodeKind.File);

                    try {
                        compiledCode = source.Compile();
                    } catch (SyntaxErrorException e) {
                        EngineHelper.ThrowSyntaxErrorException(e);
                    }
                }

                // Note that we cache the result even if there is no script, to avoid having to check
                // again later.

                result = buildProvider.CreateBuildResult(compiledCode, virtualPath);

                CacheDependency cacheDependency = HostingEnvironment.VirtualPathProvider.GetCacheDependency(
                    virtualPath, new Util.SingleObjectCollection(virtualPath), utcStart);

                // Cache the result with a 5 minute sliding expiration
                HttpRuntime.Cache.Insert(cacheKey, result, cacheDependency,
                    Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5));
            }

            return result;
        }