private void RegisterSubgroup(Action <IRegister> action, FilterInfo parentInfo)
        {
            var andInfo  = new FilterInfo(store.NextId, parentInfo.DiagInfo, parentInfo.FilterToken, parentInfo.Priority);
            var andGroup = new FilterRegistration(() => new AndGroup(null, andInfo));

            store.RegisterFilter(andGroup);
            action(RegistrationFactory.GetRegistration(store, andInfo.FilterToken, priority));
        }
Esempio n. 2
0
        public IFilterToken IsTrue(IDiagInfo diagInfo, Func <T1, bool> filterFunc)
        {
            var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority);
            var filterRegistration = new FilterRegistration(() => new Filter1 <T1>(dependency, filterFunc, info));

            store.RegisterFilter(filterRegistration);
            return(info.FilterToken);
        }
        public IFilterToken And(IDiagInfo diagInfo, Action <IRegister> action)
        {
            var info     = new FilterInfo(store.NextId, diagInfo, groupToken, priority);
            var andGroup = new FilterRegistration(() => new AndGroup(dependencies, info));

            store.RegisterFilter(andGroup);
            action(RegistrationFactory.GetRegistration(store, info.FilterToken, priority));
            return(info.FilterToken);
        }
        public IFilterToken Xor(IDiagInfo diagInfo, Action <IRegister> action, Action <IRegister> action2)
        {
            var info     = new FilterInfo(store.NextId, diagInfo, groupToken, priority);
            var xorGroup = new FilterRegistration(() => new XorGroup(dependencies, info));

            store.RegisterFilter(xorGroup);
            RegisterSubgroup(action, info);
            RegisterSubgroup(action2, info);
            return(info.FilterToken);
        }
Esempio n. 5
0
        public IHaveToken <T> Exists(IDiagInfo diagInfo)
        {
            var info       = new FilterInfo(store.NextId, diagInfo, groupToken, priority);
            var dependency = new CollectionDependency(token);
            var filterReg  = new FilterRegistration(() => new ExistsFilter(dependency, info));

            store.RegisterCvFilter(filterReg, info.FilterToken);
            store.RegisterProvider(provider, token);
            return(new HaveToken <T>(token));
        }
Esempio n. 6
0
        internal IHaveToken <T> CreateDefinition(Func <IEnumerable <IResolutionContext>, bool> filterFunc,
                                                 IDiagInfo diagInfo)
        {
            var dependency = new CollectionDependency(token);
            var info       = new FilterInfo(store.NextId, diagInfo, groupToken, priority);
            var filterReg  = new FilterRegistration(() => new Filter1 <IEnumerable <IResolutionContext> >(dependency, filterFunc, info));

            store.RegisterCvFilter(filterReg, info.FilterToken);
            provider.IsNegative = true;
            store.RegisterProvider(provider, token);
            return(new HaveToken <T>(token));
        }
        public IFilterToken Or(IDiagInfo diagInfo, Action <IRegister>[] actions)
        {
            var info    = new FilterInfo(store.NextId, diagInfo, groupToken, priority);
            var orGroup = new FilterRegistration(() => new OrGroup(dependencies, info));

            store.RegisterFilter(orGroup);
            foreach (var action in actions)
            {
                RegisterSubgroup(action, info);
            }

            return(info.FilterToken);
        }
Esempio n. 8
0
        private List <FilterRegistration <IServerFilter> >?CombineRegistrations(IList <object> metadata)
        {
            if (_registrations == null && metadata.Count == 0)
            {
                return(null);
            }

            List <FilterRegistration <IServerFilter> >?result = null;

            for (var i = 0; i < metadata.Count; i++)
            {
                FilterRegistration <IServerFilter>?registration = null;

                if (metadata[i] is ServerFilterAttribute filterAttribute)
                {
                    registration = new FilterRegistration <IServerFilter>(filterAttribute.Order, _ => filterAttribute);
                }
                else if (metadata[i] is ServerFilterRegistrationAttribute registrationAttribute)
                {
                    registration = new FilterRegistration <IServerFilter>(registrationAttribute.Order, registrationAttribute.CreateFilter);
                }

                if (registration != null)
                {
                    if (result == null)
                    {
                        result = new List <FilterRegistration <IServerFilter> >((_registrations?.Count ?? 0) + 4);
                        if (_registrations != null)
                        {
                            result.AddRange(_registrations);
                        }
                    }

                    result.Add(registration);
                }
            }

            return(result ?? _registrations);
        }
Esempio n. 9
0
 public static void RegisterCvFilter(this TokenStore store, FilterRegistration filter, IFilterToken token)
 {
     store.RegisterFilter(filter);
     store.CvFilters.Add(token);
 }
Esempio n. 10
0
 public static void RegisterFilter(this TokenStore store, FilterRegistration filter)
 {
     store.FilterRegistrations.Add(filter);
 }