User: xtoff
Date: 2009/12/29 09:45 AM

Modified:
 /DynamicProxy/trunk/src/Castle.DynamicProxy/
  DefaultProxyBuilder.cs
 /DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/
  BaseProxyGenerator.cs, ClassProxyGenerator.cs, 
InterfaceProxyWithTargetGenerator.cs, 
InterfaceProxyWithTargetInterfaceGenerator.cs, 
InterfaceProxyWithoutTargetGenerator.cs, InvocationTypeGenerator.cs, 
MethodFinder.cs, MethodGenerator.cs, MethodSignatureComparer.cs, 
MethodWithInvocationGenerator.cs

Log:
 - removed some ugly code.

File Changes:

Directory: /DynamicProxy/trunk/src/Castle.DynamicProxy/
=======================================================

File [modified]: DefaultProxyBuilder.cs
Delta lines: +2 -2
===================================================================

--- DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/BaseProxyGenerator.cs 
2009-12-29 15:30:10 UTC (rev 6539)
+++ DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/BaseProxyGenerator.cs 
2009-12-29 16:45:14 UTC (rev 6540)
@@ -303,7 +303,7 @@
 
                        if (!mapping.ContainsKey(@interface))
                        {
-                               SafeAddMapping(@interface, implementer, 
mapping);
+                               AddMappingNoCheck(@interface, implementer, 
mapping);
                        }
                }
 
@@ -313,7 +313,7 @@
                /// <param name="implementer"></param>
                /// <param name="interface"></param>
                /// <param name="mapping"></param>
-               protected virtual void SafeAddMapping(Type @interface, 
ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
+               protected void AddMappingNoCheck(Type @interface, 
ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
                {
                        mapping.Add(@interface, implementer);

Directory: /DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/
==================================================================

File [modified]: BaseProxyGenerator.cs
Delta lines: +4 -4
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/ClassProxyGenerator.cs    
    2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/ClassProxyGenerator.cs    
    2009-12-29 16:45:14 UTC (rev 6540)
@@ -178,7 +178,7 @@
                                                // OK, so the target implements 
this interface. We now do one of two things:
                                                if 
(additionalInterfaces.Contains(mixinInterface) && 
typeImplementerMapping.ContainsKey(mixinInterface) == false)
                                                {
-                                                       
SafeAddMapping(mixinInterface, proxyTarget, typeImplementerMapping);
+                                                       
AddMappingNoCheck(mixinInterface, proxyTarget, typeImplementerMapping);
                                                        
proxyTarget.AddInterfaceToProxy(mixinInterface);
                                                }
                                                // we do not intercept the 
interface
@@ -189,7 +189,7 @@
                                                if 
(!typeImplementerMapping.ContainsKey(mixinInterface))
                                                {
                                                        
mixins.AddInterfaceToProxy(mixinInterface);
-                                                       
SafeAddMapping(mixinInterface, mixins, typeImplementerMapping);
+                                                       
AddMappingNoCheck(mixinInterface, mixins, typeImplementerMapping);
                                                }
                                        }
                                }
@@ -205,7 +205,7 @@
                                        if 
(typeImplementerMapping.ContainsKey(@interface)) continue;
 
                                        // we intercept the interface, and 
forward calls to the target type
-                                       SafeAddMapping(@interface, proxyTarget, 
typeImplementerMapping);
+                                       AddMappingNoCheck(@interface, 
proxyTarget, typeImplementerMapping);
                                        
proxyTarget.AddInterfaceToProxy(@interface);
                                }
                                else if 
(ProxyGenerationOptions.MixinData.ContainsMixin(@interface) == false)
@@ -223,7 +223,7 @@
 #endif
                        try
                        {
-                               SafeAddMapping(typeof(IProxyTargetAccessor), 
proxyInstance, typeImplementerMapping);
+                               AddMappingNoCheck(typeof(IProxyTargetAccessor), 
proxyInstance, typeImplementerMapping);
                        }
                        catch (ArgumentException )

File [modified]: ClassProxyGenerator.cs
Delta lines: +14 -16
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetGenerator.cs
  2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetGenerator.cs
  2009-12-29 16:45:14 UTC (rev 6540)
@@ -17,6 +17,7 @@
        using System;
        using System.Collections.Generic;
 #if !SILVERLIGHT
+       using System.Diagnostics;
        using System.Reflection;
        using System.Xml.Serialization;
 #endif
@@ -269,7 +270,7 @@
                                
if(ProxyGenerationOptions.MixinData.ContainsMixin(@interface)) continue;
 
                                
additionalInterfacesContributor.AddInterfaceToProxy(@interface);
-                               SafeAddMapping(@interface, 
additionalInterfacesContributor, typeImplementerMapping);
+                               AddMappingNoCheck(@interface, 
additionalInterfacesContributor, typeImplementerMapping);
                        }
 
                        // 4. plus special interfaces
@@ -277,7 +278,7 @@
                        AddMappingForISerializable(typeImplementerMapping, 
instance);
                        try
                        {
-                               SafeAddMapping(typeof(IProxyTargetAccessor), 
instance, typeImplementerMapping);
+                               AddMappingNoCheck(typeof(IProxyTargetAccessor), 
instance, typeImplementerMapping);
                        }
                        catch (ArgumentException)
                        {
@@ -296,19 +297,9 @@
 
                protected virtual InterfaceProxyWithoutTargetContributor 
GetContributorForAdditionalInterfaces(INamingScope namingScope)
                {
-                       return new 
InterfaceProxyWithoutTargetContributor(namingScope, (c, m) => 
NullExpression.Instance) { Logger = Logger }; ;
+                       return new 
InterfaceProxyWithoutTargetContributor(namingScope, (c, m) => 
NullExpression.Instance) { Logger = Logger };
                }
 
-               protected override void SafeAddMapping(Type @interface, 
ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
-               {
-                       base.SafeAddMapping(@interface, implementer, mapping);
-                       if(implementer is InterfaceProxyTargetContributor)
-                       {
-                               // TODO: REMOVE IT!
-                               (implementer as 
InterfaceProxyTargetContributor).AddInterfaceToProxy(@interface);
-                       }
-               }
-
                protected virtual ITypeContributor 
AddMappingForTargetType(IDictionary<Type, ITypeContributor> 
typeImplementerMapping, Type proxyTargetType, ICollection<Type> 
targetInterfaces, ICollection<Type> additionalInterfaces,INamingScope 
namingScope)
                {
                        var contributor = new 
InterfaceProxyTargetContributor(proxyTargetType, AllowChangeTarget, namingScope)
@@ -316,13 +307,20 @@
                        var proxiedInterfaces = 
TypeUtil.GetAllInterfaces(targetType);
                        foreach (var @interface in proxiedInterfaces)
                        {
-                               SafeAddMapping(@interface, contributor, 
typeImplementerMapping);
+                               contributor.AddInterfaceToProxy(@interface);
+                               AddMappingNoCheck(@interface, contributor, 
typeImplementerMapping);
                        }
 
                        foreach (var @interface in additionalInterfaces)
                        {
-                               if (!ImplementedByTarget(targetInterfaces, 
@interface)) continue;
-                               AddMapping(@interface, contributor, 
typeImplementerMapping);
+                               if (!ImplementedByTarget(targetInterfaces, 
@interface) || proxiedInterfaces.Contains(@interface))
+                               {
+                                       continue;
+                               }
+
+                               
Debug.Assert(!typeImplementerMapping.ContainsKey(@interface), 
"!typeImplementerMapping.ContainsKey(@interface)");
+                               contributor.AddInterfaceToProxy(@interface);
+                               AddMappingNoCheck(@interface, contributor, 
typeImplementerMapping);
                        }
                        return contributor;

File [modified]: InterfaceProxyWithTargetGenerator.cs
Delta lines: +18 -12
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetInterfaceGenerator.cs
 2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetInterfaceGenerator.cs
 2009-12-29 16:45:14 UTC (rev 6540)
@@ -16,23 +16,31 @@
 {
        using System;
        using System.Collections.Generic;
+       using System.Reflection;
 
+       using Castle.DynamicProxy.Contributors;
+       using Castle.DynamicProxy.Generators.Emitters;
        using Castle.DynamicProxy.Generators.Emitters.SimpleAST;
        using Castle.DynamicProxy.Serialization;
 
-       using Contributors;
-       using Emitters;
-
        public class InterfaceProxyWithTargetInterfaceGenerator : 
InterfaceProxyWithTargetGenerator
        {
+
+               public InterfaceProxyWithTargetInterfaceGenerator(ModuleScope 
scope, Type @interface)
+                       : base(scope, @interface)
+               {
+               }
+
                protected override ITypeContributor 
AddMappingForTargetType(IDictionary<Type, ITypeContributor> 
typeImplementerMapping, Type proxyTargetType, ICollection<Type> 
targetInterfaces, ICollection<Type> additionalInterfaces, INamingScope 
namingScope)
                {
-                       var contributor = new 
InterfaceProxyWithTargetInterfaceTargetContributor(proxyTargetType,
-                                                                               
                 AllowChangeTarget,
-                                                                               
                 namingScope) { Logger = Logger };
+                       var contributor = new 
InterfaceProxyWithTargetInterfaceTargetContributor(
+                               proxyTargetType,
+                               AllowChangeTarget,
+                               namingScope) { Logger = Logger };
                        foreach (var @interface in 
TypeUtil.GetAllInterfaces(targetType))
                        {
-                               SafeAddMapping(@interface, contributor, 
typeImplementerMapping);
+                               contributor.AddInterfaceToProxy(@interface);
+                               AddMappingNoCheck(@interface, contributor, 
typeImplementerMapping);
                        }
 
                        return contributor;
@@ -40,14 +48,12 @@
 
                protected override InterfaceProxyWithoutTargetContributor 
GetContributorForAdditionalInterfaces(INamingScope namingScope)
                {
-                       return new InterfaceProxyWithoutTargetContributor(
-                               namingScope,
-                               (@class, method) => new 
AsTypeReference(@class.GetField("__target"), 
method.DeclaringType).ToExpression())
-                       { Logger = Logger };
+                       return new 
InterfaceProxyWithoutTargetContributor(namingScope, GetTarget) { Logger = 
Logger };
                }
 
-               public InterfaceProxyWithTargetInterfaceGenerator(ModuleScope 
scope, Type theInterface) : base(scope, theInterface)
+               private Expression GetTarget(ClassEmitter @class, MethodInfo 
method)
                {
+                       return new AsTypeReference(@class.GetField("__target"), 
method.DeclaringType).ToExpression();
                }
 

File [modified]: InterfaceProxyWithTargetInterfaceGenerator.cs
Delta lines: +1 -1
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithoutTargetGenerator.cs
       2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithoutTargetGenerator.cs
       2009-12-29 16:45:14 UTC (rev 6540)
@@ -35,7 +35,7 @@
                        foreach (var @interface in 
TypeUtil.GetAllInterfaces(targetType))
                        {
                                contributor.AddInterfaceToProxy(@interface);
-                               SafeAddMapping(@interface, contributor, 
interfaceTypeImplementerMapping);
+                               AddMappingNoCheck(@interface, contributor, 
interfaceTypeImplementerMapping);
                        }
                        return contributor;

File [modified]: InterfaceProxyWithoutTargetGenerator.cs
Delta lines: +1 -1
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InvocationTypeGenerator.cs
    2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InvocationTypeGenerator.cs
    2009-12-29 16:45:14 UTC (rev 6540)
@@ -93,7 +93,7 @@
                                                                  MethodInfo 
methodInfo)
                {
                        var suggestedName = 
string.Format("Castle.Proxies.Invocations.{0}_{1}", 
methodInfo.DeclaringType.Name,
-                                                                               
          methodInfo.Name);
+                                                         methodInfo.Name);
                        var uniqueName = 
namingScope.ParentScope.GetUniqueName(suggestedName);
                        return new ClassEmitter(@class.ModuleScope, uniqueName, 
GetBaseType(), interfaces);

File [modified]: InvocationTypeGenerator.cs
Delta lines: +6 -6
===================================================================

--- DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodFinder.cs       
2009-12-29 15:30:10 UTC (rev 6539)
+++ DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodFinder.cs       
2009-12-29 16:45:14 UTC (rev 6540)
@@ -24,8 +24,8 @@
        /// </summary>
        public class MethodFinder
        {
-               private static Dictionary<Type, object> 
_cachedMethodInfosByType = new Dictionary<Type, object>();
-               private static object _lockObject = new object();
+               private static readonly Dictionary<Type, object> 
cachedMethodInfosByType = new Dictionary<Type, object>();
+               private static readonly object lockObject = new object();
 
                public static MethodInfo[] GetAllInstanceMethods(Type type, 
BindingFlags flags)
                {
@@ -34,18 +34,18 @@
 
                        MethodInfo[] methodsInCache;
 
-                       lock (_lockObject)
+                       lock (lockObject)
                        {
-                               if (!_cachedMethodInfosByType.ContainsKey(type))
+                               if (!cachedMethodInfosByType.ContainsKey(type))
                                {
                                        // We always load all instance methods 
into the cache, we will filter them later
-                                       _cachedMethodInfosByType.Add(
+                                       cachedMethodInfosByType.Add(
                                                type,
                                                
RemoveDuplicates(type.GetMethods(
                                                                                
        BindingFlags.Public | BindingFlags.NonPublic
                                                                                
        | BindingFlags.Instance)));
                                }
-                               methodsInCache = 
(MethodInfo[])_cachedMethodInfosByType[type];
+                               methodsInCache = 
(MethodInfo[])cachedMethodInfosByType[type];
                        }
                        return MakeFilteredCopy(methodsInCache, flags & 
(BindingFlags.Public | BindingFlags.NonPublic));

File [modified]: MethodFinder.cs
Delta lines: +1 -7
===================================================================

--- DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodGenerator.cs    
2009-12-29 15:30:10 UTC (rev 6539)
+++ DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodGenerator.cs    
2009-12-29 16:45:14 UTC (rev 6540)
@@ -17,9 +17,8 @@
        using System.Reflection;
 
        using Castle.DynamicProxy.Contributors;
+       using Castle.DynamicProxy.Generators.Emitters;
 
-       using Emitters;
-
        public abstract class MethodGenerator : IGenerator<MethodEmitter>
        {
                protected MethodInfo MethodToOverride
@@ -27,11 +26,6 @@
                        get { return method.Method; }
                }
 
-               protected MethodInfo MethodOnTarget
-               {
-                       get { return method.MethodOnTarget; }
-               }
-
                protected MethodGenerator(MethodToGenerate method, 
CreateMethodDelegate createMethod, GetMethodAttributesAndNameDelegate 
getAttributesAndName)
                {

File [modified]: MethodGenerator.cs
Delta lines: +7 -8
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodSignatureComparer.cs
    2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodSignatureComparer.cs
    2009-12-29 16:45:14 UTC (rev 6540)
@@ -28,17 +28,16 @@
                        {
                                return true;
                        }
-                       else if (x == null || y == null)
+
+                       if (x == null || y == null)
                        {
                                return false;
                        }
-                       else
-                       {
-                               return x.Name == y.Name &&
-                                      EqualGenericParameters(x, y) &&
-                                      EqualSignatureTypes(x.ReturnType, 
y.ReturnType) &&
-                                      EqualParameters(x, y);
-                       }
+
+                       return x.Name == y.Name &&
+                              EqualGenericParameters(x, y) &&
+                              EqualSignatureTypes(x.ReturnType, y.ReturnType) 
&&
+                              EqualParameters(x, y);
                }
 

File [modified]: MethodSignatureComparer.cs
Delta lines: +4 -5
===================================================================

--- 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodWithInvocationGenerator.cs
      2009-12-29 15:30:10 UTC (rev 6539)
+++ 
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodWithInvocationGenerator.cs
      2009-12-29 16:45:14 UTC (rev 6540)
@@ -129,7 +129,7 @@
                        };
                }
 
-               public FieldReference BuildMethodInterceptorsField(ClassEmitter 
@class, MethodInfo method, INamingScope namingScope)
+               protected FieldReference 
BuildMethodInterceptorsField(ClassEmitter @class, MethodInfo method, 
INamingScope namingScope)
                {
                        var methodInterceptors = @class.CreateField(
                                
namingScope.GetUniqueName(string.Format("interceptors_{0}", method.Name)),
@@ -141,12 +141,11 @@
                        return methodInterceptors;
                }
 
-               private void EmitLoadGenricMethodArguments(MethodEmitter 
methodEmitter, MethodInfo method,
-                                                          LocalReference 
invocationImplLocal)
+               private void EmitLoadGenricMethodArguments(MethodEmitter 
methodEmitter, MethodInfo method, Reference invocationLocal)
                {
 #if SILVERLIGHT
                        Type[] genericParameters =
-                               
Castle.Core.Extensions.SilverlightExtensions.FindAll(method.GetGenericArguments(),
 delegate(Type t) { return t.IsGenericParameter; });
+                               
Castle.Core.Extensions.SilverlightExtensions.FindAll(method.GetGenericArguments(),
 t => t.IsGenericParameter);
 #else
                        Type[] genericParameters = 
Array.FindAll(method.GetGenericArguments(), t => t.IsGenericParameter);
 #endif
@@ -160,7 +159,7 @@
                                        new 
AssignArrayStatement(genericParamsArrayLocal, i, new 
TypeTokenExpression(genericParameters[i])));
                        }
                        methodEmitter.CodeBuilder.AddStatement(new 
ExpressionStatement(
-                                                               new 
MethodInvocationExpression(invocationImplLocal,
+                                                               new 
MethodInvocationExpression(invocationLocal,
                                                                                
               InvocationMethods.SetGenericMethodArguments,
                                                                                
               new ReferenceExpression(

File [modified]: MethodWithInvocationGenerator.cs
Delta lines: +0 -0
===================================================================

--

You received this message because you are subscribed to the Google Groups 
"Castle Project Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-commits?hl=en.


Reply via email to