Thanks Craig! (still waiting to hear from GitHub) Best regards Adam Langley
Sent from my iPhone On 13/05/2011, at 12:34 AM, Craig Neuwirt <cneuw...@gmail.com> wrote: > Adam/Krzysztof, > > I added an ignore test to demonstrate the problem with open-generics. It is > just Adams example for the most part. > > On May 11, 2011, at 4:28 PM, Adam Langley wrote: > >> I have created a git account, but there was some kind of problem when I >> clicked "fork" on the Wcf page - it says I have a fork in my repository, but >> when I click it I just get "404, this is not the page you are looking for", >> indicating something has gotten corrupted - which is odd considering it only >> took me 3 or 4 clicks to do it! >> I have posted a question to the admins but turnaround seems to take several >> hours - has anyone else had a similar experience? >> >> Thanks >> >> Adam Langley >> >> Please consider the environment before printing this email! >> >> -----Original Message----- >> From: castle-project-users@googlegroups.com >> [mailto:castle-project-users@googlegroups.com] On Behalf Of Krzysztof Kozmic >> Sent: Wednesday, 11 May 2011 3:20 p.m. >> To: castle-project-users@googlegroups.com >> Subject: Re: Wcf Facility (server) can not correctly resolve open generic >> decorators >> >> No worries Adam, >> >> it's in the doco: >> http://docs.castleproject.org/How-to-submit-a-fix-to-any-Castle-Project.ashx >> >> Krzysztof >> >> On 11/05/2011 12:48 PM, Adam Langley wrote: >>> Hi Krzysztof >>> >>> Yes I will do that tonight - I will try to base it on the WcfFacility.Tests >>> code and will email it. >>> I have seen mention before of git push/pull something-or-other but I have >>> never done it before so I will stick to email unless someone can send me a >>> link on how to send my test code straight to git? >>> >>> Thank you >>> Adam Langley >>> >>> >>> Please consider the environment before printing this email! >>> >>> From: castle-project-users@googlegroups.com >>> [mailto:castle-project-users@googlegroups.com] On Behalf Of Krzysztof Kozmic >>> Sent: Wednesday, 11 May 2011 10:21 a.m. >>> To: castle-project-users@googlegroups.com >>> Cc: krzysz...@kozmic.pl >>> Subject: RE: Wcf Facility (server) can not correctly resolve open generic >>> decorators >>> >>> Can you provide a failing test with the reproduction >>> On 11/05/2011 8:17 AM, "Adam Langley"<alang...@winscribe.com> wrote: >>>> Hi Craig, >>>> >>>> Thanks for that - I will give it a try ASAP. >>>> I thought it might be something like this - I noticed that when I forced a >>>> local resolution to occur, then a final 'ComponentRegistered' event was >>>> fired, which reported a 'closed generic' component... specialized to the >>>> generic argument (so in this case, IDecorator<IServiceNoDependencies>) - >>>> but it was not added to the list of 'registered components'. >>>> I dont know enough about Castle to comprehend what kind of lifecycle is >>>> going on under the hood - it would be ideal if the WCF facility was able >>>> to open hosts for these components without 'eager' resolution. >>>> >>>> Thanks for the help Craig, >>>> >>>> Adam Langley >>>> >>>> >>>> Please consider the environment before printing this email! >>>> >>>> From: castle-project-users@googlegroups.com >>>> [mailto:castle-project-users@googlegroups.com] On Behalf Of Craig Neuwirt >>>> Sent: Wednesday, 11 May 2011 7:53 a.m. >>>> To: castle-project-users@googlegroups.com >>>> Cc: krzysz...@kozmic.pl >>>> Subject: Re: Wcf Facility (server) can not correctly resolve open generic >>>> decorators >>>> >>>> Adam, >>>> >>>> I believe the problem relates to the open-generic registration. The Wcf >>>> Facility waits for the service to be in the ready state before it opens >>>> the host. In this case, the container shows the ServiceGenericDependency >>>> component as waiting for the IDecorator dependency. It would be nice for >>>> the container to handle this properly. I have seen this before and added >>>> an option to open the service host eagerly. This will not wait for the >>>> component to be reported as valid before opening the host. In your >>>> example, it resolved the issue >>>> >>>> var wcfFacility=XXXX >>>> wcfFacility.Services.OpenServiceHostsEagerly = true; >>>> >>>> cheers, >>>> craig >>>> >>>> >>>> On May 7, 2011, at 1:24 AM, Adam Langley wrote: >>>> >>>> >>>> Dear Castle groups, >>>> >>>> I have a WCF service which has a single constructor dependency - this >>>> dependency is 'generically decorated'. >>>> >>>> i.e. its constructor looks like this: >>>> >>>> public ServiceGenericDependency(IDecorator<IServiceNoDependencies> arg2) >>>> { >>>> } >>>> >>>> My 'decorator' constructor looks like this: >>>> public Decorator(T arg) >>>> { >>>> } >>>> Castle has the typeof(IDecorator<>) registration, and the >>>> typeof(IServiceNoDependencies) registered. >>>> PROBLEM: The WCF Facility fails to create the server. >>>> IF I add a default constructor to my decorator class, then everything >>>> works. >>>> IF I resolve the WCF service on the server (as a local component, i.e. >>>> take WCFFacility out of the equation) then everything works. >>>> I have included a test program below - just reference WcfFacility + >>>> Castle. This is quite an urgent issue for me. >>>> Thank you! >>>> using Castle.Windsor; >>>> using Castle.MicroKernel.Registration; >>>> using Castle.Facilities.WcfIntegration; >>>> using System.ServiceModel; >>>> namespace DecoratorChains >>>> { >>>> class Program >>>> { >>>> static IWindsorContainer container; >>>> static void Main(string[] args) >>>> { >>>> container = new WindsorContainer() >>>> .AddFacility<WcfFacility>(); >>>> // this is my decorator, it is capable of decorating any service. >>>> container.Register(Component.For(typeof(IDecorator<>)).ImplementedBy(typeof(Decorator<>))); >>>> container.Register( >>>> Component.For<IServiceGenericDependency>().ImplementedBy<ServiceGenericDependency>().LifeStyle.Transient >>>> .AsWcfService(new DefaultServiceModel().AddEndpoints( >>>> WcfEndpoint.BoundTo(new NetTcpBinding()) >>>> .At("net.tcp://localhost/Operations") >>>> ) >>>> ) >>>> ); >>>> // this is my service that WILL BE decorated, then used as a constructor >>>> argument. >>>> container.Register(Component.For<IServiceNoDependencies>().UsingFactoryMethod(() >>>> => new ServiceNoDependencies())); >>>> >>>> var client = ChannelFactory<IServiceGenericDependency>.CreateChannel( >>>> new NetTcpBinding(), new >>>> EndpointAddress("net.tcp://localhost/Operations")); >>>> // this passes >>>> var cc = container.Resolve<IServiceGenericDependency>(); >>>> >>>> // this fails >>>> client.DoSomething(); >>>> } >>>> } >>>> interface IServiceNoDependencies >>>> { >>>> } >>>> class ServiceNoDependencies : IServiceNoDependencies >>>> { >>>> } >>>> interface IDecorator<T> >>>> where T : class >>>> { >>>> } >>>> class Decorator<T> : IDecorator<T> >>>> where T : class >>>> { >>>> ///<summary> >>>> /// Remove this constructor and all tests will pass >>>> ///</summary> >>>> ///<param name="arg"></param> >>>> public Decorator(T arg) >>>> { >>>> } >>>> } >>>> [ServiceContract] >>>> interface IServiceGenericDependency >>>> { >>>> [OperationContract] >>>> void DoSomething(); >>>> } >>>> class ServiceGenericDependency : IServiceGenericDependency >>>> { >>>> public ServiceGenericDependency(IDecorator<IServiceNoDependencies> arg2) >>>> { >>>> } >>>> public void DoSomething() >>>> { >>>> } >>>> } >>>> } >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Castle Project Users" group. >>>> To post to this group, send email to castle-project-users@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> castle-project-users+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/castle-project-users?hl=en. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Castle Project Users" group. >>>> To post to this group, send email to castle-project-users@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> castle-project-users+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/castle-project-users?hl=en. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Castle Project Users" group. >>>> To post to this group, send email to castle-project-users@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> castle-project-users+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/castle-project-users?hl=en. >>>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Castle Project Users" group. >> To post to this group, send email to castle-project-users@googlegroups.com. >> To unsubscribe from this group, send email to >> castle-project-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/castle-project-users?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Castle Project Users" group. >> To post to this group, send email to castle-project-users@googlegroups.com. >> To unsubscribe from this group, send email to >> castle-project-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/castle-project-users?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Users" group. > To post to this group, send email to castle-project-users@googlegroups.com. > To unsubscribe from this group, send email to > castle-project-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/castle-project-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to castle-project-users@googlegroups.com. To unsubscribe from this group, send email to castle-project-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.