using System.Web.Mvc;
using StructureMap;

namespace NewInMVC3.Infrastructure
{
    internal class StructureMapFilterAttributeFilterProvider : FilterAttributeFilterProvider
    {
        private readonly IContainer container;

        public StructureMapFilterAttributeFilterProvider(IContainer container)
        {
            this.container = container;
        }

        protected override System.Collections.Generic.IEnumerable<FilterAttribute> GetActionAttributes(
            ControllerContext controllerContext, ActionDescriptor actionDescriptor)
        {
            var attributes = base.GetActionAttributes(controllerContext, actionDescriptor);
            foreach (var filterAttribute in attributes){
                container.BuildUp(filterAttribute);
            }
            return attributes;
        }

        protected override System.Collections.Generic.IEnumerable<FilterAttribute> GetControllerAttributes(
            ControllerContext controllerContext, ActionDescriptor actionDescriptor)
        {
            var attributes = base.GetControllerAttributes(controllerContext, actionDescriptor);
            foreach (var filterAttribute in attributes){
                container.BuildUp(filterAttribute);
            }
            return attributes;
        }
    }
}