private static void ConfigureAutofac(HttpConfiguration config, IIssueStore issueStore)
        {
            var builder = new ContainerBuilder();

            if (issueStore == null)
            {
                builder.RegisterType<InMemoryIssueStore>()
                    .As<IIssueStore>()
                    .InstancePerLifetimeScope();

            }
            else
            {
                builder.RegisterInstance(issueStore);
            }

            builder.RegisterType<IssueStateFactory>()
                .As<IStateFactory<Issue, IssueState>>()
                .InstancePerLifetimeScope();

            builder.RegisterType<IssueLinkFactory>()
                .InstancePerLifetimeScope();

            builder.RegisterHttpRequestMessage(config);
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            var container = builder.Build();

            var resolver =
                new AutofacWebApiDependencyResolver(container);

            config.DependencyResolver = resolver;
        }
 public static void Configure(HttpConfiguration config, IIssueStore issueStore = null)
 {
     config.Routes.MapHttpRoute("DefaultApi", "{controller}/{id}", new { id = RouteParameter.Optional });
     ConfigureFormatters(config);
     ConfigureAutofac(config, issueStore);
     EnableCors(config);
 }
 public IssueController(IIssueStore store, 
     IStateFactory<Issue, IssueState> stateFactory, 
     IssueLinkFactory linkFactory)
 {
     _store = store;
     _stateFactory = stateFactory;
     _linkFactory = linkFactory;
 }
 public static void Configure(HttpConfiguration config, 
     IIssueStore issueStore = null)
 {
     config.Routes.MapHttpRoute(
         "DefaultApi",
         "{controller}/{id}",
         new {id = RouteParameter.Optional});
     ConfigureFormatters(config);
     ConfigureAutofac(config, issueStore);
 }
示例#5
0
        /// <summary>
        /// Get the current IIssueStore for this session
        /// </summary>
        /// <returns>The current IIssueStore object</returns>
        public static IIssueStore GetInstance()
        {
            // Note: this would just be a Lazy, except for the future need to reset the contents if reading a saved baseline
            IIssueStore store;

            if ((store = Store) == null)
            {
                lock (LockObject)
                {
                    if ((store = Store) == null)
                    {
                        store = Store = new InMemoryIssueStore();
                    }
                }
            }

            return(store);
        }
示例#6
0
        /// <summary>
        /// Merge the contents of an enumerable IIssueStore into this IIssueStore
        /// </summary>
        /// <param name="sourceStore">The IssueStore that will provide the data</param>
        /// <returns>The number of issues merged/added</returns>
        /// <exception cref="InvalidOperationException">Thrown if the incompatible stores are chosen</exception>
        public static int MergeIssuesFromStore(this IIssueStore targetStore, IIssueStore sourceStore)
        {
            sourceStore.ArgumentIsNotNull(nameof(sourceStore));
            targetStore.ArgumentIsNotNull(nameof(targetStore));

            if (!sourceStore.IsEnumerable)
            {
                throw new InvalidOperationException("The Source store is not enumerable!");
            }

            if (!targetStore.IsUpdatable)
            {
                throw new InvalidOperationException("The Target store is not updatable!");
            }

            int issuesMergedOrAdded = 0;

            foreach (Issue sourceIssue in sourceStore.Issues)
            {
                bool updated = false;

                if (targetStore.TryFindIssue(sourceIssue.Fingerprint, out Issue existingIssue))
                {
                    foreach (ILocation newLocation in sourceIssue.Locations)
                    {
                        updated |= (existingIssue.AddLocation(newLocation) == AddResult.ExistingItemUpdated);
                    }
                }
                else
                {
                    updated |= (targetStore.AddIssue(sourceIssue) == AddResult.ItemAdded);
                }

                if (updated)
                {
                    issuesMergedOrAdded++;
                }
            }

            return(issuesMergedOrAdded);
        }
        public static void Configure(HttpConfiguration config, IIssueStore issueStore = null)
        {
            //api自描述接口路由
            config.Routes.MapHttpRoute("Root", "", new { controller = "Home" });

            //默认路由 uri中api对应RoutePrefix特性,{controller}对应Route特性
            config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });

            //支持基于属性的路由
            config.MapHttpAttributeRoutes();

            //开启自定义操作筛选器
            config.Filters.Add(new MyFilters.MyActionFilter());

            //开启自定义授权筛选器
            config.Filters.Add(new MyFilters.MyAuthorizationFilter());

            ConfigureFormatters(config);
            ConfigureAutofac(config, issueStore);
            EnableCors(config);
        }
        public static void ConfigureAutofac(HttpConfiguration config, IIssueStore issueStore)
        {
            var builder = new ContainerBuilder();

            builder.RegisterApiControllers(typeof(IssueController).Assembly);

            if (issueStore == null)
            {
                builder.RegisterType <InMemoryIssueStore>().As <IIssueStore>().SingleInstance();
            }
            else
            {
                builder.RegisterInstance(issueStore);
            }

            builder.RegisterType <IssueStateFactory>().As <IStateFactory <Issue, IssueState> >().InstancePerLifetimeScope();
            builder.RegisterType <IssueLinkFactory>().InstancePerLifetimeScope();
            builder.RegisterHttpRequestMessage(config);
            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
示例#9
0
 public IssueController(IIssueStore store, IStateFactory <Issue, IssueState> stateFactory, IssueLinkFactory linkFactory)
 {
     _store        = store;
     _stateFactory = stateFactory;
     _linkFactory  = linkFactory;
 }
示例#10
0
 public IssueProcessorController(IIssueStore issueStore)
 {
     _issueStore = issueStore;
 }
 public IssueProcessorController(IIssueStore issueStore)
 {
     _issueStore = issueStore;
 }
示例#12
0
 public JiraStateWriter(TeamMap teamMap, IIssueStore issueStore, IChangelogStore changelogStore)
 {
     _teamMap        = teamMap;
     _issueStore     = issueStore;
     _changelogStore = changelogStore;
 }
示例#13
0
 public JiraStateWriter(JiraConfig jiraConfig, TeamMap map)
 {
     _issueStore     = new IssueStore(jiraConfig);
     _changelogStore = new ChangelogStore(jiraConfig);
     _teamMap        = map;
 }