User: cneuwirt
Date: 2009/12/30 08:21 AM

Removed:
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/
  IWcfLifestyle.cs

Modified:
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/
  WcfClientFixture.cs
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Components/
  IOperations.cs, Operations.cs
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/
  Castle.Facilities.WcfIntegration-vs2008.csproj
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/
  WcfRemotingAsyncInterceptor.cs
 
/Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/TypeSystem/
  AsyncMethod.cs
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/
  MethodCallMessage.cs
 /Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/
  PerChannelLifestyleExtension.cs, PerWcfSessionLifestyle.cs

Log:
 - Minor updates to work with WCF 4.0
 - Minor simplification of WCF lifestyle

File Changes:

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

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/MethodCallMessage.cs
 2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Proxy/MethodCallMessage.cs
 2009-12-30 15:21:31 UTC (rev 6546)
@@ -51,6 +51,11 @@
                        }
                }
 
+               public ParameterInfo[] Parameters
+               {
+                       get { return parameters; }
+               }
+
                public string GetArgName(int index)
                {
                        return parameters[index].Name;
@@ -131,11 +136,20 @@
                        get { return inArguments;}
                }
 
+               public object[] OutArgs
+               {
+                       get
+                       {
+                               return parameters.Where(p => p.IsOut || 
p.ParameterType.IsByRef)
+                                       .Select((p, i) => Args[i]).ToArray();
+                       }
+               }
+
                private static Func<LogicalCallContext> 
LogicalCallContextBuilder()
                {
                        var type = typeof(LogicalCallContext);
                        var ctor = type.GetConstructor(BindingFlags.NonPublic | 
BindingFlags.Instance, null, Type.EmptyTypes, null);
-                       var creator = new DynamicMethod("CreateLogicalContext", 
type, null, type);
+                       var creator = new DynamicMethod("CreateLogicalContext", 
type, null, type, true);
                        var generator = creator.GetILGenerator();
                        generator.Emit(OpCodes.Newobj, ctor);

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

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/TypeSystem/AsyncMethod.cs
    2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/TypeSystem/AsyncMethod.cs
    2009-12-30 15:21:31 UTC (rev 6546)
@@ -61,7 +61,7 @@
 
                public override Type ReflectedType
                {
-                       get { throw new NotImplementedException(); }
+                       get { return AsyncType; }
                }
 
                public override RuntimeMethodHandle MethodHandle
@@ -71,7 +71,7 @@
 
                public override MethodAttributes Attributes
                {
-                       get { throw new NotImplementedException(); }
+                       get { return SyncMethod.Attributes; }
                }
 
                public MethodInfo SyncMethod { get; private set; }
@@ -110,17 +110,17 @@
 
                public override object[] GetCustomAttributes(bool inherit)
                {
-                       throw new NotImplementedException();
+                       return SyncMethod.GetCustomAttributes(inherit);
                }
 
                public override bool IsDefined(Type attributeType, bool inherit)
                {
-                       throw new NotImplementedException();
+                       return SyncMethod.IsDefined(attributeType, inherit);
                }
 
                public override MethodImplAttributes 
GetMethodImplementationFlags()
                {
-                       throw new NotImplementedException();
+                       return SyncMethod.GetMethodImplementationFlags();
                }
 
                public override object Invoke(object obj, BindingFlags 
invokeAttr, Binder binder, object[] parameters,
@@ -131,7 +131,7 @@
 
                public override MethodInfo GetBaseDefinition()
                {
-                       throw new NotImplementedException();
+                       return this;
                }
        }
 }

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

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

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

File [modified]: IOperations.cs
Delta lines: +26 -5
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Components/Operations.cs
    2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Components/Operations.cs
    2009-12-30 15:21:31 UTC (rev 6546)
@@ -19,7 +19,7 @@
        using System.Collections.Generic;
        using Castle.Facilities.WcfIntegration.Tests.Behaviors;
 
-       public class Operations : IOperations, IOperationsEx
+       public class Operations : IOperationsEx
        {
                private readonly int number;
 
@@ -35,13 +35,20 @@
                        return number;
                }
 
+               public int GetValueFromConstructorAsRef(ref int refValue)
+               {
+                       Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
+                       Thread.Sleep(2000);
+                       return (refValue = number);
+               }
+
                public int GetValueFromConstructorAsRefAndOut(ref int refValue, 
out int outValue)
                {
                        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                        Thread.Sleep(2000);
                        return (refValue = outValue = number);
                }
-        
+
                public bool UnitOfWorkIsInitialized()
                {
                        return UnitOfWork.initialized;
@@ -63,13 +70,15 @@
        }
 
        delegate int GetValueFromConstructor();
+       delegate int GetValueFromConstructorAsRef(ref int refValue);
        delegate int GetValueFromConstructorAsRefAndOut(ref int refValue, out 
int outValue);
        delegate bool UnitOfWorkIsInitialized();
- 
+
        public class AsyncOperations : IAsyncOperations
        {
                private readonly Operations operations;
                private GetValueFromConstructor getValueCtor;
+               private GetValueFromConstructorAsRef getValueCtorRef;
                private GetValueFromConstructorAsRefAndOut getValueCtorRefOut;
                private UnitOfWorkIsInitialized uow;
 
@@ -77,6 +86,7 @@
                {
                        operations = new Operations(number);
                        getValueCtor = operations.GetValueFromConstructor;
+                       getValueCtorRef = 
operations.GetValueFromConstructorAsRef;
                        getValueCtorRefOut = 
operations.GetValueFromConstructorAsRefAndOut;
                        uow = operations.UnitOfWorkIsInitialized;
                }
@@ -90,7 +100,18 @@
                {
                        return getValueCtor.EndInvoke(result);
                }
-        
+
+               public IAsyncResult BeginGetValueFromConstructorAsRef(
+                       ref int refValue, AsyncCallback callback, object 
asyncState)
+               {
+                       return getValueCtorRef.BeginInvoke(ref refValue, 
callback, asyncState);
+               }
+
+               public int EndGetValueFromConstructorAsRef(ref int refValue, 
IAsyncResult result)
+               {
+                       return getValueCtorRef.EndInvoke(ref refValue, result);
+               }
+
                public IAsyncResult BeginGetValueFromConstructorAsRefAndOut(
                        ref int refValue, AsyncCallback callback, object 
asyncState)
                {
@@ -105,7 +126,7 @@
 
                public IAsyncResult BeginUnitOfWorkIsInitialized(AsyncCallback 
callback, object asyncState)
                {
-                       return uow.BeginInvoke(callback, asyncState);           
        
+                       return uow.BeginInvoke(callback, asyncState);
                }
 

File [modified]: Operations.cs
Delta lines: +71 -46
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/WcfClientFixture.cs
 2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/WcfClientFixture.cs
 2009-12-30 15:21:31 UTC (rev 6546)
@@ -52,7 +52,7 @@
                                        new DefaultClientModel()
                                        {
                                                Endpoint = 
WcfEndpoint.ForContract<IOperations>()
-                                                       .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                       .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                        
.At("net.tcp://localhost/Operations")
                                        }),
                                        Component.For<IServiceBehavior>()
@@ -66,10 +66,10 @@
                                                .DependsOn(new { number = 42 })
                                                .ActAs(new 
DefaultServiceModel().AddEndpoints(
                                                        
WcfEndpoint.ForContract<IOperations>()
-                                                               .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                               .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                                
.At("net.tcp://localhost/Operations"),
                                                        
WcfEndpoint.ForContract<IOperationsEx>()
-                                                               .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                               .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                                
.At("net.tcp://localhost/Operations/Ex")
                                                                )
                                                ),
@@ -102,7 +102,7 @@
                                        .ActAs(new DefaultClientModel()
                                        {
                                                Endpoint = WcfEndpoint
-                                                       .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                       .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                        
.At("net.tcp://localhost/Operations")
                                        })
                                );
@@ -147,7 +147,7 @@
                                )))
                        {
                                using (IWindsorContainer clientContainer = new 
WindsorContainer()
-                                       .AddFacility<WcfFacility>(f => 
f.DefaultBinding = 
+                                       .AddFacility<WcfFacility>(f => 
f.DefaultBinding =
                                                new NetTcpBinding { 
PortSharingEnabled = true }
                                        )
                                        .Register(Component.For<IOperations>()
@@ -187,17 +187,23 @@
                                        ))
                                {
                                        IOperations client1 = 
clientContainer.Resolve<IOperations>("operations",
-                                               new { Model = new 
DefaultClientModel
+                                               new
                                                {
-                                                       Endpoint = 
WcfEndpoint.BoundTo(new NetTcpBinding())
-                                                               
.At("net.tcp://localhost/Operations2")
-                                               }});
+                                                       Model = new 
DefaultClientModel
+                                                               {
+                                                                       
Endpoint = WcfEndpoint.BoundTo(new NetTcpBinding())
+                                                                               
.At("net.tcp://localhost/Operations2")
+                                                               }
+                                               });
                                        IOperations client2 = 
clientContainer.Resolve<IOperations>("operations",
-                                               new { Model = new 
DefaultClientModel() 
+                                               new
                                                {
-                                                       Endpoint = 
WcfEndpoint.BoundTo(new NetTcpBinding())
-                                                               
.At("net.tcp://localhost/Operations2")
-                                               }});
+                                                       Model = new 
DefaultClientModel()
+                                                               {
+                                                                       
Endpoint = WcfEndpoint.BoundTo(new NetTcpBinding())
+                                                                               
.At("net.tcp://localhost/Operations2")
+                                                               }
+                                               });
                                        Assert.AreEqual(28, 
client1.GetValueFromConstructor());
                                        Assert.AreEqual(28, 
client2.GetValueFromConstructor());
                                        clientContainer.Release(client1);
@@ -323,9 +329,9 @@
                                        .ActAs(new DefaultServiceModel()
                                                
.AddBaseAddresses("net.tcp://localhost/Operations")
                                                
.AddEndpoints(WcfEndpoint.ForContract<IOperations>()
-                                                       .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                       .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                        .At("Extended")
-                                                       )       
+                                                       )
                                )))
                        {
                                using (IWindsorContainer clientContainer = new 
WindsorContainer()
@@ -335,9 +341,9 @@
                                                .ActAs(new DefaultClientModel()
                                                {
                                                        Endpoint = WcfEndpoint
-                                                               .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                               .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                                
.At("net.tcp://localhost/Operations/Extended")
-                                               
+
                                                })
                                        ))
                                {
@@ -357,7 +363,7 @@
                                                .ImplementedBy<Operations>()
                                                .DependsOn(new { number = 22 })
                                                .ActAs(new 
DefaultServiceModel().AddEndpoints(
-                                                       WcfEndpoint.BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                       WcfEndpoint.BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                                
.At("urn:castle:operations")
                                                                
.Via("net.tcp://localhost/OperationsVia")
                                                                )
@@ -367,7 +373,7 @@
                                                .ActAs(new DefaultClientModel()
                                                {
                                                        Endpoint = WcfEndpoint
-                                                               .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                               .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                                
.At("urn:castle:operations")
                                                                
.Via("net.tcp://localhost/OperationsVia")
                                                })
@@ -387,7 +393,7 @@
                                        .ActAs(new DefaultClientModel()
                                        {
                                                Endpoint = WcfEndpoint
-                                                       .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                       .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                        
.At("net.tcp://localhost/Operations/Ex")
                                                        
.AddExtensions(typeof(NetDataContractFormatBehavior))
                                        })
@@ -409,12 +415,12 @@
                                Component.For<IOperationsEx>()
                                        .Named("operations")
                                        .ActAs(new DefaultClientModel()
-                                              {
-                                               Endpoint = WcfEndpoint
-                                                       .BoundTo(new 
NetTcpBinding {PortSharingEnabled = true})
-                                                       
.At("net.tcp://localhost/Operations/Ex")
-                                                       
.AddExtensions("specialBehavior")
-                                              })
+                                                  {
+                                                          Endpoint = 
WcfEndpoint
+                                                                  .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
+                                                                  
.At("net.tcp://localhost/Operations/Ex")
+                                                                  
.AddExtensions("specialBehavior")
+                                                  })
                                );
                        IOperationsEx client = 
windsorContainer.Resolve<IOperationsEx>("operations");
                        client.Backup(new Dictionary<string, object>());
@@ -511,9 +517,9 @@
                                        .ActAs(new DefaultClientModel()
                                        {
                                                Endpoint = WcfEndpoint
-                                                       .BoundTo(new 
NetTcpBinding{PortSharingEnabled = true })
+                                                       .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                        
.At("net.tcp://localhost/Operations/Ex")
-                                       
+
                                        })
                                );
 
@@ -558,7 +564,7 @@
                public void CanInhibitRecoveryFromAnUnhandledException()
                {
                        using (var localContainer = new WindsorContainer()
-                               .AddFacility<WcfFacility>(f => 
+                               .AddFacility<WcfFacility>(f =>
                                {
                                        f.CloseTimeout = TimeSpan.Zero;
                                        f.Clients.DefaultChannelPolicy = null;
@@ -623,10 +629,10 @@
                        IOperationsEx client = null;
 
                        using (createLocalContainer())
-            {
+                       {
                                client = 
windsorContainer.Resolve<IOperationsEx>("operations");
                                client.Backup(new Dictionary<string, object>());
-            }
+                       }
 
                        using (createLocalContainer())
                        {
@@ -772,11 +778,11 @@
 
                        IOperations client = 
windsorContainer.Resolve<IOperations>("operations");
                        using (new 
OperationContextScope(WcfContextChannel.For(client)))
-            {
+                       {
                                MessageHeader header = 
MessageHeader.CreateHeader("MyHeader", "", "MyValue", false);
                                
OperationContext.Current.OutgoingMessageHeaders.Add(header);
                                Assert.AreEqual(42, 
client.GetValueFromConstructor());
-            }
+                       }
                }
 
                [Test]
@@ -896,7 +902,7 @@
 
                        int i = 0;
                        foreach (LoggingEvent log in memoryAppender.GetEvents())
-                       {                               
+                       {
                                Assert.AreEqual(typeof(IOperations).FullName, 
log.LoggerName);
                                Assert.IsTrue(log.Properties.Contains("NDC"));
 
@@ -1067,7 +1073,7 @@
                                                        .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
                                                        
.At("net.tcp://localhost/Operations")
                                                        .AddExtensions(start, 
new ReplaceOperationsResult("100").ExecuteAt(1),
-                                                                               
   new ReplaceOperationsResult("200").ExecuteAt(2), 
+                                                                               
   new ReplaceOperationsResult("200").ExecuteAt(2),
                                                                                
   new AddOperationsHeader("MyHeader", "Hello"),
                                                                                
   end)
                                        })
@@ -1192,6 +1198,26 @@
                        Assert.AreEqual(42, client.EndWcfCall<int>(result));
                }
 
+               public void 
CanCallChannelOperationsWithRefArgumentsAsynchronously()
+               {
+                       windsorContainer.Register(
+                               Component.For<IOperations>()
+                                       .Named("operations")
+                                       .ActAs(new DefaultClientModel()
+                                       {
+                                               Endpoint = WcfEndpoint
+                                                       .BoundTo(new 
NetTcpBinding { PortSharingEnabled = true })
+                                                       
.At("net.tcp://localhost/Operations")
+                                       })
+                               );
+
+                       IOperations client = 
windsorContainer.Resolve<IOperations>("operations");
+                       int refValue = 0;
+                       var call = client.BeginWcfCall(p => 
p.GetValueFromConstructorAsRef(ref refValue));
+                       Assert.AreEqual(42, call.End(out refValue));
+                       Assert.AreEqual(42, refValue);
+               }
+
                [Test]
                public void 
CanCallChannelOperationsWithOutAndRefArgumentsAsynchronously()
                {
@@ -1214,7 +1240,6 @@
                        Assert.AreEqual(42, outValue);
                }
 
-
                [Test]
                public void 
CanCallChannelOperationsAsynchronouslyUsingServiceEndpoint()
                {
@@ -1226,7 +1251,7 @@
                                                Endpoint = WcfEndpoint
                                                        .FromEndpoint(new 
ServiceEndpoint(
                                                                
ContractDescription.GetContract(typeof(IOperations)),
-                                                               new 
NetTcpBinding { PortSharingEnabled = true }, 
+                                                               new 
NetTcpBinding { PortSharingEnabled = true },
                                                                new 
EndpointAddress("net.tcp://localhost/Operations")
                                                                ))
                                        })
@@ -1400,20 +1425,20 @@
                        }
                }
 
-        protected void RegisterLoggingFacility(IWindsorContainer container)
-        {
-            MutableConfiguration facNode = new MutableConfiguration("facility" 
);
-            facNode.Attributes["id"] = "logging";
-            facNode.Attributes["loggingApi"] = "ExtendedLog4net";
+               protected void RegisterLoggingFacility(IWindsorContainer 
container)
+               {
+                       MutableConfiguration facNode = new 
MutableConfiguration("facility");
+                       facNode.Attributes["id"] = "logging";
+                       facNode.Attributes["loggingApi"] = "ExtendedLog4net";
                        facNode.Attributes["configFile"] = "";
-            
container.Kernel.ConfigurationStore.AddFacilityConfiguration("logging", 
facNode);
-            container.AddFacility("logging", new LoggingFacility());
+                       
container.Kernel.ConfigurationStore.AddFacilityConfiguration("logging", 
facNode);
+                       container.AddFacility("logging", new LoggingFacility());
 
                        memoryAppender = new MemoryAppender();
                        BasicConfigurator.Configure(memoryAppender);
-        }
+               }
 
-        private static string xmlConfiguration = @"<?xml version='1.0' 
encoding='utf-8' ?>
+               private static string xmlConfiguration = @"<?xml version='1.0' 
encoding='utf-8' ?>
 <configuration>
        <facilities>

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

File [removed]: IWcfLifestyle.cs
Delta lines: +2 -15
===================================================================

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/PerChannelLifestyleExtension.cs
        2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/PerChannelLifestyleExtension.cs
        2009-12-30 15:21:31 UTC (rev 6546)
@@ -9,7 +9,7 @@
        public class PerChannelLifestyleExtension : IExtension<IContextChannel>
        {
                private IContextChannel channel;
-               private readonly IDictionary<IWcfLifestyle, object> components 
= new Dictionary<IWcfLifestyle, object>(new WCFLifestyleComparer());
+               private readonly IDictionary<PerWcfSessionLifestyle, object> 
components = new Dictionary<PerWcfSessionLifestyle, object>();
                private bool used;
 
                /// <inheritDoc />
@@ -57,7 +57,7 @@
                        channel = null;
                }
 
-               public object this[IWcfLifestyle manager]
+               public object this[PerWcfSessionLifestyle manager]
                {
                        get
                        {
@@ -70,18 +70,5 @@
                                components[manager] = value;
                        }
                }
-
-               private class WCFLifestyleComparer : 
IEqualityComparer<IWcfLifestyle>
-               {
-                       public bool Equals(IWcfLifestyle x, IWcfLifestyle y)
-                       {
-                               return x.ComponentId.Equals(y.ComponentId);
-                       }
-
-                       public int GetHashCode(IWcfLifestyle obj)
-                       {
-                               return obj.ComponentId.GetHashCode();
-                       }
-               }
        }
 }

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/PerWcfSessionLifestyle.cs
      2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/PerWcfSessionLifestyle.cs
      2009-12-30 15:21:31 UTC (rev 6546)
@@ -10,10 +10,8 @@
        /// with this lifestyle is requested multiple times during WCF session, 
the same instance will be provided.
        /// If no WCF session is available falls back to the default behavior 
of transient.
        /// </summary>
-       public class PerWcfSessionLifestyle : AbstractLifestyleManager, 
IWcfLifestyle
+       public class PerWcfSessionLifestyle : AbstractLifestyleManager
        {
-               private readonly Guid id = Guid.NewGuid();
-
                private readonly IOperationContextProvider 
operationContextProvider;
 
                public PerWcfSessionLifestyle()
@@ -39,12 +37,11 @@
                public override object Resolve(CreationContext context)
                {
                        var operation = operationContextProvider.Current;
-                       if (operation == null)
+                       if (operation == null || 
string.IsNullOrEmpty(operation.SessionId))
+                       {
                                return base.Resolve(context);
+                       }
 
-                       if (string.IsNullOrEmpty(operation.SessionId))
-                               return base.Resolve(context);
-
                        var channel = operation.Channel;
 
                        // TODO: does this need locking?
@@ -65,10 +62,5 @@
 
                        return component;
                }
-
-               public Guid ComponentId
-               {
-                       get { return id; }
-               }
        }
 }

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Components/IOperations.cs
   2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration.Tests/Components/IOperations.cs
   2009-12-30 15:21:31 UTC (rev 6546)
@@ -25,6 +25,9 @@
                int GetValueFromConstructor();
 
                [OperationContract]
+               int GetValueFromConstructorAsRef(ref int refValue);
+
+               [OperationContract]
                int GetValueFromConstructorAsRefAndOut(ref int refValue, out 
int outValue);
 
                [OperationContract]
@@ -38,6 +41,10 @@
                IAsyncResult BeginGetValueFromConstructor(AsyncCallback 
callback, object asyncState);
                int EndGetValueFromConstructor(IAsyncResult result);
 
+        [OperationContract(AsyncPattern = true)]
+        IAsyncResult BeginGetValueFromConstructorAsRef(ref int refValue, 
AsyncCallback callback, object asyncState);
+        int EndGetValueFromConstructorAsRef(ref int refValue, IAsyncResult 
result);
+
                [OperationContract(AsyncPattern = true)]
                IAsyncResult BeginGetValueFromConstructorAsRefAndOut(ref int 
refValue, AsyncCallback callback, object asyncState);
                int EndGetValueFromConstructorAsRefAndOut(ref int refValue, out 
int outValue, IAsyncResult result);
@@ -64,6 +71,9 @@
                int GetValueFromConstructor();
 
                [OperationContract]
+               int GetValueFromConstructorAsRef(ref int refValue);
+
+               [OperationContract]
                int GetValueFromConstructorAsRefAndOut(ref int refValue, out 
int outValue);
 
                [OperationContract]
@@ -74,6 +84,10 @@
                int EndGetValueFromConstructor(IAsyncResult result);
 
                [OperationContract(AsyncPattern = true)]
+               IAsyncResult BeginGetValueFromConstructorAsRef(ref int 
refValue, AsyncCallback callback, object asyncState);
+               int EndGetValueFromConstructorAsRef(ref int refValue, 
IAsyncResult result);
+
+               [OperationContract(AsyncPattern = true)]
                IAsyncResult BeginGetValueFromConstructorAsRefAndOut(ref int 
refValue, AsyncCallback callback, object asyncState);
                int EndGetValueFromConstructorAsRefAndOut(ref int refValue, out 
int outValue, IAsyncResult result);

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

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/IWcfLifestyle.cs
       2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Lifestyles/IWcfLifestyle.cs
       2009-12-30 15:21:31 UTC (rev 6546)
@@ -1,19 +0,0 @@
-namespace Castle.Facilities.WcfIntegration.Lifestyles
-{
-       using System;
-
-       using Castle.MicroKernel;
-
-       /// <summary>
-       /// Contract for managing object lifestyles in the context of WCF 
runtime.
-       /// </summary>
-       public interface IWcfLifestyle:ILifestyleManager
-       {
-               /// <summary>
-               /// Id of the component associated with the lifestyle manager 
instance.
-               /// This Id does not have to have anything to do with the Id of 
the component assigned by the container.
-               /// It is used for internal tracking purposes os the facility.
-               /// </summary>
-               Guid ComponentId { get; }
-       }
-}

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

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

--- 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/WcfRemotingAsyncInterceptor.cs
       2009-12-30 10:16:29 UTC (rev 6545)
+++ 
Facilities/Wcf/trunk/src/Castle.Facilities.WcfIntegration/Client/Async/WcfRemotingAsyncInterceptor.cs
       2009-12-30 15:21:31 UTC (rev 6546)
@@ -100,7 +100,7 @@
                                throw returnMessage.Exception;
                        }
 
-                       outs = returnMessage.OutArgs;
+                       outs = message.OutArgs;
                        return returnMessage;
                }

--

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