Beispiel #1
0
        public virtual void Visit(System.Type type, Net.Vpc.Upa.Impl.Config.Decorations.DecorationFilter decorationFilter)
        {
            Net.Vpc.Upa.FlagSet <Net.Vpc.Upa.Config.DecorationTarget> kind = decorationFilter.GetDecorationTargets();
            bool types   = kind.Contains(Net.Vpc.Upa.Config.DecorationTarget.TYPE);
            bool methods = kind.Contains(Net.Vpc.Upa.Config.DecorationTarget.METHOD);
            bool fields  = kind.Contains(Net.Vpc.Upa.Config.DecorationTarget.FIELD);

            //        boolean tree = (kind & DecorationFilter.HIERARCHICAL) != 0;
            //        boolean someType = false;
            if (types)
            {
                System.Attribute[] annotations = null;
                try {
                    annotations = type.GetAnnotations();
                } catch (System.Exception e) {
                    log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 60, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter("Ignored type {0} : {1}", null, new object[] { (type).FullName, e.ToString() }));
                }
                //ignore
                if (annotations != null)
                {
                    int pos = 0;
                    foreach (System.Attribute a in annotations)
                    {
                        if (decorationFilter.AcceptTypeDecoration((a.GetType()).FullName, (type).FullName, type))
                        {
                            decorationRepository.Visit(new Net.Vpc.Upa.Impl.Config.Decorations.AnnotationDecoration(a, Net.Vpc.Upa.Config.DecorationSourceType.TYPE, Net.Vpc.Upa.Config.DecorationTarget.TYPE, (type).FullName, null, pos));
                            newDecorationRepository.Visit(new Net.Vpc.Upa.Impl.Config.Decorations.AnnotationDecoration(a, Net.Vpc.Upa.Config.DecorationSourceType.TYPE, Net.Vpc.Upa.Config.DecorationTarget.TYPE, (type).FullName, null, pos));
                        }
                        //                    someType = true;
                        pos++;
                    }
                }
            }
            if (methods)
            {
                System.Reflection.MethodInfo[] declaredMethods = null;
                try {
                    declaredMethods = type.GetMethods(System.Reflection.BindingFlags.Default);
                } catch (System.Exception e) {
                    log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 60, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter("Ignored type {0} : {1}", null, new object[] { (type).FullName, e.ToString() }));
                }
                //ignore
                if (declaredMethods != null)
                {
                    foreach (System.Reflection.MethodInfo method in declaredMethods)
                    {
                        int pos = 0;
                        foreach (System.Attribute a in method.GetAnnotations())
                        {
                            string methodSig = Net.Vpc.Upa.Impl.Util.PlatformUtils.GetMethodSignature(method);
                            if (decorationFilter.AcceptMethodDecoration((a.GetType()).FullName, methodSig, (type).FullName, method))
                            {
                                decorationRepository.Visit(new Net.Vpc.Upa.Impl.Config.Decorations.AnnotationDecoration(a, Net.Vpc.Upa.Config.DecorationSourceType.TYPE, Net.Vpc.Upa.Config.DecorationTarget.METHOD, ((method).DeclaringType).FullName, methodSig, pos));
                                newDecorationRepository.Visit(new Net.Vpc.Upa.Impl.Config.Decorations.AnnotationDecoration(a, Net.Vpc.Upa.Config.DecorationSourceType.TYPE, Net.Vpc.Upa.Config.DecorationTarget.METHOD, ((method).DeclaringType).FullName, methodSig, pos));
                            }
                            pos++;
                        }
                    }
                }
            }
            if (fields)
            {
                System.Reflection.FieldInfo[] declaredFields = null;
                try {
                    declaredFields = type.GetFields(System.Reflection.BindingFlags.Default);
                } catch (System.Exception e) {
                    log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 60, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter("Ignored type {0} : {1}", null, new object[] { (type).FullName, e.ToString() }));
                }
                //ignore
                if (declaredFields != null)
                {
                    foreach (System.Reflection.FieldInfo field in declaredFields)
                    {
                        int pos = 0;
                        foreach (System.Attribute a in field.GetAnnotations())
                        {
                            if (decorationFilter.AcceptFieldDecoration((a.GetType()).FullName, (field).Name, (type).FullName, field))
                            {
                                decorationRepository.Visit(new Net.Vpc.Upa.Impl.Config.Decorations.AnnotationDecoration(a, Net.Vpc.Upa.Config.DecorationSourceType.TYPE, Net.Vpc.Upa.Config.DecorationTarget.FIELD, ((field).DeclaringType).FullName, (field).Name, pos));
                                newDecorationRepository.Visit(new Net.Vpc.Upa.Impl.Config.Decorations.AnnotationDecoration(a, Net.Vpc.Upa.Config.DecorationSourceType.TYPE, Net.Vpc.Upa.Config.DecorationTarget.FIELD, ((field).DeclaringType).FullName, (field).Name, pos));
                            }
                            pos++;
                        }
                    }
                }
            }
        }