User: xtoff
Date: 2009/10/29 02:59 AM

Added:
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/
  AsyncChannelFactoryFixture.cs

Modified:
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Demo/
  Castle.Facilities.WcfIntegration.Demo-vs2008.csproj
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/
  Castle.Facilities.WcfIntegration.Tests-vs2008.csproj
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/
  Castle.Facilities.WcfIntegration-vs2008.csproj
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/
  AsyncChannelFactoryBuilder.cs
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/
  WcfInterceptorSelector.cs, WcfProxyFactory.cs, WcfProxyGenerationHook.cs

Log:
 - Applied patch by Simon Cropp fixing FACILITIES-ISSUE-130 - WCF Facility: 
proxies types not being cached.
 - Added test to verify the fixed behavior.
 - Fixed references in the project to point to locations in the new folder 
structure.

File Changes:

Directory: 
/Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/
===================================================================================

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/WcfInterceptorSelector.cs
    2009-10-29 09:09:51 UTC (rev 6285)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/WcfInterceptorSelector.cs
    2009-10-29 09:59:03 UTC (rev 6286)
@@ -34,6 +34,39 @@
                        this.userProvidedSelector = userProvidedSelector;
                }
 
+       
+
+               public override bool Equals(object obj)
+               {
+                       if (ReferenceEquals(this, obj))
+                       {
+                               return true;
+                       }
+
+                       var wcfInterceptorSelector = obj as 
WcfInterceptorSelector;
+                       if (ReferenceEquals(wcfInterceptorSelector, null))
+                       {
+                               return false;
+                       }
+
+                       if (!Equals(proxiedType, 
wcfInterceptorSelector.proxiedType))
+                       {
+                               return false;
+                       }
+                       if (!Equals(userProvidedSelector, 
wcfInterceptorSelector.userProvidedSelector))
+                       {
+                               return false;
+                       }
+                       return true;
+               }
+
+               public override int GetHashCode()
+               {
+                       var result = proxiedType != null ? 
proxiedType.GetHashCode() : 0;
+                       result = 29 * result + (userProvidedSelector != null ? 
userProvidedSelector.GetHashCode() : 0);
+                       return result;
+               }
+
                public IInterceptor[] SelectInterceptors(Type type, MethodInfo 
method, IInterceptor[] interceptors)
                {

Directory: /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/
======================================================================

File [modified]: Castle.Facilities.WcfIntegration-vs2008.csproj
Delta lines: +3 -1
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/AsyncChannelFactoryBuilder.cs
        2009-10-29 09:09:51 UTC (rev 6285)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/AsyncChannelFactoryBuilder.cs
        2009-10-29 09:59:03 UTC (rev 6286)
@@ -26,10 +26,12 @@
                where M : IWcfClientModel
        {
                private readonly ProxyGenerator _generator;
+               private readonly AsyncChannelFactoryProxyHook 
asyncChannelFactoryProxyHook;
 
                public AsynChannelFactoryBuilder()
                {
                        _generator = new ProxyGenerator();
+                       asyncChannelFactoryProxyHook = new 
AsyncChannelFactoryProxyHook();
                }
 
                public override ChannelFactory CreateChannelFactory(Type 
channelFactoryType, M clientModel, 
@@ -45,7 +47,7 @@
                        ReplaceServiceEndpointAsyncContracts(constructorArgs);
 
                        var interceptor = new CreateDescriptionInterceptor();
-                       var proxyOptions = new ProxyGenerationOptions(new 
AsyncChannelFactoryProxyHook());
+                       var proxyOptions = new 
ProxyGenerationOptions(asyncChannelFactoryProxyHook);
                        return (ChannelFactory)_generator.CreateClassProxy(
                                channelFactoryType, Type.EmptyTypes, 
proxyOptions, constructorArgs, interceptor);

Directory: /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Demo/
===========================================================================

File [modified]: Castle.Facilities.WcfIntegration.Demo-vs2008.csproj
Delta lines: +19 -0
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/AsyncChannelFactoryFixture.cs
                               (rev 0)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/AsyncChannelFactoryFixture.cs
       2009-10-29 09:59:03 UTC (rev 6286)
@@ -0,0 +1,19 @@
+namespace Castle.Facilities.WcfIntegration.Tests
+{
+       using System.ServiceModel;
+       using Castle.Facilities.WcfIntegration.Async;
+       using NUnit.Framework;
+
+       [TestFixture]
+       public class AsyncChannelFactoryFixture
+       {
+               [Test]
+               public void Should_cache_channelFactory_proxy_types()
+               {
+                       var builder = new 
AsynChannelFactoryBuilder<DefaultClientModel>();
+                       var factory1 = 
builder.CreateChannelFactory<ChannelFactory<IOperations>>(new 
DefaultClientModel());
+                       var factory2 = 
builder.CreateChannelFactory<ChannelFactory<IOperations>>(new 
DefaultClientModel());
+                       Assert.AreSame(factory1.GetType(), factory2.GetType());
+               }
+       }
+}

Directory: /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/
============================================================================

File [added]: AsyncChannelFactoryFixture.cs
Delta lines: +21 -16
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests-vs2008.csproj
        2009-10-29 09:09:51 UTC (rev 6285)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests-vs2008.csproj
        2009-10-29 09:59:03 UTC (rev 6286)
@@ -2,7 +2,7 @@
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
+    <ProductVersion>9.0.30729</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{A3CF9ED0-BE9A-4534-B756-3D680D607B0C}</ProjectGuid>
     <OutputType>Library</OutputType>
@@ -49,37 +49,41 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Castle.Core, Version=1.0.3.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.Core, Version=1.1.0.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\build\net-3.5\debug\Castle.Core.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.Core.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.DynamicProxy2, Version=2.0.3.0, 
Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.DynamicProxy2, Version=2.1.0.0, 
Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      
<HintPath>..\..\..\build\net-3.5\debug\Castle.DynamicProxy2.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.DynamicProxy2.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.Facilities.Logging, Version=1.0.3.0, 
Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.Facilities.Logging, Version=1.1.0.0, 
Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      
<HintPath>..\..\..\build\net-3.5\debug\Castle.Facilities.Logging.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.Facilities.Logging.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.MicroKernel, Version=1.0.3.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.MicroKernel, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\build\net-3.5\debug\Castle.MicroKernel.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.MicroKernel.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.Services.Logging.Log4netIntegration, 
Version=1.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, 
processorArchitecture=MSIL">
+    <Reference Include="Castle.Services.Logging.log4netIntegration, 
Version=1.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, 
processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      
<HintPath>..\..\..\build\net-3.5\debug\Castle.Services.Logging.Log4netIntegration.dll</HintPath>
+      
<HintPath>..\..\lib\net-3.5\Castle.Services.Logging.log4netIntegration.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.Windsor, Version=1.0.3.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.Services.Logging.NLogIntegration, 
Version=1.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, 
processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\build\net-3.5\debug\Castle.Windsor.dll</HintPath>
+      
<HintPath>..\..\lib\net-3.5\Castle.Services.Logging.NLogIntegration.dll</HintPath>
     </Reference>
+    <Reference Include="Castle.Windsor, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\lib\net-3.5\Castle.Windsor.dll</HintPath>
+    </Reference>
     <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, 
PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\SharedLibs\net\log4net.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\log4net.dll</HintPath>
     </Reference>
-    <Reference Include="nunit.framework, Version=2.2.8.0, Culture=neutral, 
PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+    <Reference Include="nunit.framework, Version=2.5.0.9122, Culture=neutral, 
PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\SharedLibs\net\2.0\nunit.framework.dll</HintPath>
+      <HintPath>..\..\lib\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -96,6 +100,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="AsyncChannelFactoryFixture.cs" />
     <Compile Include="Behaviors\CallCountServiceBehavior.cs">
       <SubType>Code</SubType>

File [modified]: Castle.Facilities.WcfIntegration.Tests-vs2008.csproj
Delta lines: +0 -0
===================================================================

Directory: 
/Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/
===================================================================================

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/WcfProxyFactory.cs
   2009-10-29 09:09:51 UTC (rev 6285)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/WcfProxyFactory.cs
   2009-10-29 09:59:03 UTC (rev 6286)
@@ -32,11 +32,13 @@
                private readonly ProxyGenerator generator;
                private readonly WcfClientExtension clients;
                private AsyncType asyncType;
+               WcfProxyGenerationHook wcfProxyGenerationHook;
 
                public WcfProxyFactory(ProxyGenerator generator, 
WcfClientExtension clients)
                {
                        this.generator = generator;
                        this.clients = clients;
+                       wcfProxyGenerationHook = new 
WcfProxyGenerationHook(null);
                }
 
                public override object Create(IKernel kernel, object instance, 
ComponentModel model, 
@@ -114,7 +116,7 @@
                                        "Support for mixins is not yet 
implemented. How about contributing a patch?");
                        }
 
-                       var proxyGenOptions = new ProxyGenerationOptions(new 
WcfProxyGenerationHook(null))
+                       var proxyGenOptions = new 
ProxyGenerationOptions(wcfProxyGenerationHook)
                        {
                                Selector = new WcfInterceptorSelector(service, 
proxyOptions.Selector)

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/WcfProxyGenerationHook.cs
    2009-10-29 09:09:51 UTC (rev 6285)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/WcfProxyGenerationHook.cs
    2009-10-29 09:59:03 UTC (rev 6286)
@@ -28,6 +28,8 @@
                        this.hook = hook;
                }
 
+
+
                public bool ShouldInterceptMethod(Type type, MethodInfo 
methodInfo)
                {

File [modified]: WcfProxyGenerationHook.cs
Delta lines: +10 -7
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Demo/Castle.Facilities.WcfIntegration.Demo-vs2008.csproj
  2009-10-29 09:09:51 UTC (rev 6285)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Demo/Castle.Facilities.WcfIntegration.Demo-vs2008.csproj
  2009-10-29 09:59:03 UTC (rev 6286)
@@ -2,7 +2,7 @@
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
+    <ProductVersion>9.0.30729</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{BCDBC6AC-C85A-4564-AB6E-354262BB1A87}</ProjectGuid>
     
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
@@ -35,17 +35,17 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Castle.Core, Version=1.0.3.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.Core, Version=1.1.0.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\build\net-3.5\debug\Castle.Core.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.Core.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.MicroKernel, Version=1.0.3.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.MicroKernel, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\build\net-3.5\debug\Castle.MicroKernel.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.MicroKernel.dll</HintPath>
     </Reference>
-    <Reference Include="Castle.Windsor, Version=1.0.3.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+    <Reference Include="Castle.Windsor, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\build\net-3.5\debug\Castle.Windsor.dll</HintPath>
+      <HintPath>..\..\lib\net-3.5\Castle.Windsor.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core, Version=3.5.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
@@ -134,6 +134,9 @@
           <DevelopmentServerVPath>/</DevelopmentServerVPath>
           
<IISUrl>http://localhost/Castle.Facilities.WcfIntegration.Demo</IISUrl>
           <NTLMAuthentication>False</NTLMAuthentication>
+          <UseCustomServer>False</UseCustomServer>
+          <CustomServerUrl>
+          </CustomServerUrl>
           <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
         </WebProjectProperties>


--~--~---------~--~----~------------~-------~--~----~
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