Exemplo n.º 1
0
        private void AddAdvisorOnChainCreation(object advice, string name)
        {
            if (advice is IAdvisors)
            {
                if (logger.IsDebugEnabled)
                {
                    logger.Debug(string.Format("Adding advisor list '{0}'", name));
                }

                IAdvisors advisors = (IAdvisors)advice;
                foreach (object element in advisors.Advisors)
                {
                    if (logger.IsDebugEnabled)
                    {
                        logger.Debug(string.Format("Adding advisor '{0}' of type {1}", name, element.GetType().FullName));
                    }

                    IAdvisor advisor = NamedObjectToAdvisor(element);
                    AddAdvisor(advisor);
                }
            }
            else
            {
                if (logger.IsDebugEnabled)
                {
                    logger.Debug(string.Format("Adding advisor '{0}' of type {1}", name, advice.GetType().FullName));
                }

                IAdvisor advisor = NamedObjectToAdvisor(advice);
                AddAdvisor(advisor);
            }
        }
Exemplo n.º 2
0
        /// <summary> Add all global interceptors and pointcuts.</summary>
        private void AddGlobalAdvisor(IListableObjectFactory objectFactory, string prefix)
        {
            var globalAspectNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvisors));
            var globalAdvisorNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvisor));
            var globalInterceptorNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IInterceptor));

            List <object> objects             = new List <object>();
            Dictionary <object, string> names = new Dictionary <object, string>();

            for (int i = 0; i < globalAspectNames.Count; i++)
            {
                string name = globalAspectNames[i];
                if (name.StartsWith(prefix))
                {
                    IAdvisors advisors = (IAdvisors)objectFactory.GetObject(name);
                    foreach (object advisor in advisors.Advisors)
                    {
                        // exclude introduction advisors from interceptor list
                        if (!(advisor is IIntroductionAdvisor))
                        {
                            objects.Add(advisor);
                            names[advisor] = name;
                        }
                    }
                }
            }
            for (int i = 0; i < globalAdvisorNames.Count; i++)
            {
                string name = globalAdvisorNames[i];
                if (name.StartsWith(prefix))
                {
                    object obj = objectFactory.GetObject(name);
                    // exclude introduction advisors from interceptor list
                    if (!(obj is IIntroductionAdvisor))
                    {
                        objects.Add(obj);
                        names[obj] = name;
                    }
                }
            }
            for (int i = 0; i < globalInterceptorNames.Count; i++)
            {
                string name = globalInterceptorNames[i];
                if (name.StartsWith(prefix))
                {
                    object obj = objectFactory.GetObject(name);
                    objects.Add(obj);
                    names[obj] = name;
                }
            }
            objects.Sort(OrderComparator.Instance);
            foreach (object obj in objects)
            {
                string name = names[obj];
                AddAdvisorOnChainCreation(obj, name);
            }
        }
Exemplo n.º 3
0
        /// <summary> Add all global interceptors and pointcuts.</summary>
        private void AddGlobalAdvisor(IListableObjectFactory objectFactory, string prefix)
        {
            string[] globalAspectNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvisors));
            string[] globalAdvisorNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvisor));
            string[] globalInterceptorNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IInterceptor));
            ArrayList objects = new ArrayList();
            Hashtable names   = new Hashtable();

            for (int i = 0; i < globalAspectNames.Length; i++)
            {
                string name = globalAspectNames[i];
                if (name.StartsWith(prefix))
                {
                    IAdvisors advisors = (IAdvisors)objectFactory.GetObject(name);
                    foreach (object advisor in advisors.Advisors)
                    {
                        // exclude introduction advisors from interceptor list
                        if (!(advisor is IIntroductionAdvisor))
                        {
                            objects.Add(advisor);
                            names[advisor] = name;
                        }
                    }
                }
            }
            for (int i = 0; i < globalAdvisorNames.Length; i++)
            {
                string name = globalAdvisorNames[i];
                if (name.StartsWith(prefix))
                {
                    object obj = objectFactory.GetObject(name);
                    // exclude introduction advisors from interceptor list
                    if (!(obj is IIntroductionAdvisor))
                    {
                        objects.Add(obj);
                        names[obj] = name;
                    }
                }
            }
            for (int i = 0; i < globalInterceptorNames.Length; i++)
            {
                string name = globalInterceptorNames[i];
                if (name.StartsWith(prefix))
                {
                    object obj = objectFactory.GetObject(name);
                    objects.Add(obj);
                    names[obj] = name;
                }
            }
            ((ArrayList)objects).Sort(new OrderComparator());
            foreach (object obj in objects)
            {
                string name = (string)names[obj];
                AddAdvisorOnChainCreation(obj, name);
            }
        }
Exemplo n.º 4
0
 void IAdvised.AddAdvisors(IAdvisors advisors)
 {
     m_advised.AddAdvisors(advisors);
 }
Exemplo n.º 5
0
        /// <summary> Add all global introductions.</summary>
        private void AddGlobalIntroduction(IListableObjectFactory objectFactory, string prefix)
        {
            IList <string> globalAspectNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvisors));
            IList <string> globalAdvisorNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvisor));
            IList <string> globalIntroductionNames =
                ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(objectFactory, typeof(IAdvice));
            ArrayList objects = new ArrayList();
            Dictionary <object, string> names = new Dictionary <object, string>();

            for (int i = 0; i < globalAspectNames.Count; i++)
            {
                string name = globalAspectNames[i];
                if (name.StartsWith(prefix))
                {
                    IAdvisors advisors = (IAdvisors)objectFactory.GetObject(name);
                    foreach (object advisor in advisors.Advisors)
                    {
                        // only include introduction advisors
                        if (advisor is IIntroductionAdvisor)
                        {
                            objects.Add(advisor);
                            names[advisor] = name;
                        }
                    }
                }
            }
            for (int i = 0; i < globalAdvisorNames.Count; i++)
            {
                string name = globalAdvisorNames[i];
                if (name.StartsWith(prefix))
                {
                    object obj = objectFactory.GetObject(name);
                    // only include introduction advisors
                    if (obj is IIntroductionAdvisor)
                    {
                        objects.Add(obj);
                        names[obj] = name;
                    }
                }
            }
            for (int i = 0; i < globalIntroductionNames.Count; i++)
            {
                string name = globalIntroductionNames[i];
                if (name.StartsWith(prefix))
                {
                    object obj = objectFactory.GetObject(name);
                    // exclude other advice types
                    if (!(obj is IInterceptor || obj is IBeforeAdvice || obj is IAfterReturningAdvice))
                    {
                        objects.Add(obj);
                        names[obj] = name;
                    }
                }
            }
            objects.Sort(new OrderComparator());
            foreach (object obj in objects)
            {
                string name = names[obj];
                AddIntroductionOnChainCreation(obj, name);
            }
        }
 /// <summary>
 /// Adds the advisors from the supplied <paramref name="advisors"/> 
 /// to the list of <see cref="Spring.Aop.Framework.IAdvised.Advisors"/>.
 /// </summary>
 /// <param name="advisors">
 /// The <see cref="IAdvisors"/> to add advisors from.
 /// </param>
 /// <exception cref="AopConfigException">
 /// If this proxy configuration is frozen and the
 /// <paramref name="advisors"/> cannot be added.
 /// </exception>
 public void AddAdvisors(IAdvisors advisors)
 {
     foreach (IAdvisor advisor in advisors.Advisors)
     {
         if (advisor is IIntroductionAdvisor)
         {
             AddIntroduction((IIntroductionAdvisor)advisor);
         }
         else
         {
             AddAdvisor(advisor);
         }
     }
 }
 void IAdvised.AddAdvisors(IAdvisors advisors)
 {
     m_advised.AddAdvisors(advisors);
 }