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