Thanks Humberto! I will try to fix mine when i get back from my vacation :)
On Wed, Mar 17, 2010 at 3:51 PM, Humberto Franco <[email protected]>wrote: > You will have to modify the Rhino.Commons source code to share the > unitofwork.cerrentsession. I will try to post a documentation article on > ayendes site sometime in the future. In the mean time here is what I have > for my facility and resolver: > public class RhinoSecurityFacility : AbstractFacility > { > protected override void Init() > { > > Kernel.Register( > Component.For<IAuthorizationService>() > .ImplementedBy<AuthorizationService>() > .LifeStyle.Transient, > Component.For<IAuthorizationRepository>() > .ImplementedBy<AuthorizationRepository>() > .LifeStyle.Transient, > Component.For<IPermissionsBuilderService>() > .ImplementedBy<PermissionsBuilderService>() > .LifeStyle.Transient, > Component.For<IPermissionsService>() > .ImplementedBy<PermissionsService>() > .LifeStyle.Transient > ); > > Kernel.Resolver.AddSubResolver(new > ServiceIsessionResolver(Kernel)); > > ServiceLocator.SetLocatorProvider(() => new > WindsorServiceLocator(IoC.Container)); > } > } > > public class ServiceIsessionResolver : ISubDependencyResolver > { > private IKernel Kernel { get; set; } > > public ServiceIsessionResolver(IKernel kernel) > { > Kernel = kernel; > } > > public object Resolve(CreationContext context, > ISubDependencyResolver contextHandlerResolver, ComponentModel model, > DependencyModel dependency) > { > return Kernel.Resolve<IUnitOfWorkFactory>().CurrentSession; > } > > public bool CanResolve(CreationContext context, > ISubDependencyResolver contextHandlerResolver, ComponentModel model, > DependencyModel dependency) > { > return > typeof(ISession).IsAssignableFrom(dependency.TargetType); > } > } > > > On Wed, Mar 17, 2010 at 12:09 PM, patricia > <[email protected]>wrote: > >> Hey Beto, Everyone >> >> I've made a facility, and set everything up like the thread you posted >> said to. But i'm not sure where i need to put the [DoNotWire] >> attribute! I'm getting this error: >> {"A cycle was detected when trying to resolve a dependency. The >> dependency graph that resulted in a cycle is: - Service dependency >> 'session' type 'NHibernate.ISession' for >> Void .ctor(NHibernate.ISession) in type >> Rhino.Security.Services.AuthorizationRepository - Parameter >> dependency 'configurationFileName' type 'System.String' for >> Void .ctor(System.Reflection.Assembly[], System.String) in type >> Rhino.Commons.NHibernateUnitOfWorkFactory + Parameter dependency >> 'configurationFileName' type 'System.String' for >> Void .ctor(System.Reflection.Assembly[], System.String) in >> Rhino.Commons.NHibernateUnitOfWorkFactory "} >> >> >> this is my facility and sub resolver >> >> >> Public Class RhinoSecurityFacility >> Inherits AbstractFacility >> >> >> >> Protected Overloads Overrides Sub Init() >> Kernel.Resolver.AddSubResolver(New >> ServiceISessionResolver(Kernel)) >> >> Kernel.Register( _ >> Component.For(Of INHibernateInitializationAware)() _ >> .ImplementedBy(Of NHibernateDbSchemaGeneration)()) >> >> >> Kernel.Register( _ >> Component.For(Of IEntityInformationExtractor(Of Org))() _ >> .ImplementedBy(Of >> VBRhinoSample.OrgInformationExtractor)() _ >> ) >> Kernel.Register( _ >> Component.For(Of IEntityInformationExtractor(Of User))() _ >> .ImplementedBy(Of >> VBRhinoSample.UserInformationExtractor)() _ >> ) >> Kernel.Register( _ >> Component.For(Of IEntityInformationExtractor(Of >> CustomField))() _ >> .ImplementedBy(Of >> VBRhinoSample.CustomFieldInformationExtractor)() _ >> ) >> Kernel.Register( _ >> Component.For(Of IEntityInformationExtractor(Of >> Qualification))() _ >> .ImplementedBy(Of >> VBRhinoSample.QualificationFieldInformationExtractor)() _ >> ) >> >> >> Kernel.Register( _ >> Component.For(Of IPermissionsService) _ >> .ImplementedBy(Of >> >> Rhino.Security.Services.PermissionsService).LifeStyle.Is(Castle.Core.LifestyleType.Transient) >> _ >> ) >> Kernel.Register( _ >> Component.For(Of IPermissionsBuilderService) _ >> .ImplementedBy(Of >> >> Rhino.Security.Services.PermissionsBuilderService).LifeStyle.Is(Castle.Core.LifestyleType.Transient) >> _ >> ) >> >> Kernel.Register( _ >> Component.For(Of IAuthorizationRepository) _ >> .ImplementedBy(Of >> >> Rhino.Security.Services.AuthorizationRepository).LifeStyle.Is(Castle.Core.LifestyleType.Transient) >> _ >> ) >> Kernel.Register( _ >> Component.For(Of IAuthorizationService) _ >> .ImplementedBy(Of >> >> Rhino.Security.Services.AuthorizationService).LifeStyle.Is(Castle.Core.LifestyleType.Transient) >> _ >> ) >> >> Kernel.Resolver.AddSubResolver(New >> ServiceISessionResolver(Kernel)) >> >> >> >> End Sub >> End Class >> >> Public Class ServiceISessionResolver >> Implements Castle.MicroKernel.ISubDependencyResolver >> >> Dim m_kernel As Castle.MicroKernel.IKernel >> >> Public Sub New(ByVal kernel As Castle.MicroKernel.IKernel) >> m_kernel = kernel >> >> End Sub >> >> Public Function Resolve(ByVal context As CreationContext, ByVal >> contexthandlerResolver As ISubDependencyResolver, ByVal model As >> Castle.Core.ComponentModel, ByVal dependency As DependencyModel) As >> Object Implements Castle.MicroKernel.ISubDependencyResolver.Resolve >> Return m_kernel.Resolve(Of IUnitOfWorkFactory).CurrentSession >> >> End Function >> >> Public Function CanResolve(ByVal context As >> Castle.MicroKernel.CreationContext, ByVal contextHandlerResolver As >> Castle.MicroKernel.ISubDependencyResolver, ByVal model As >> Castle.Core.ComponentModel, ByVal dependency As >> Castle.Core.DependencyModel) As Boolean Implements >> Castle.MicroKernel.ISubDependencyResolver.CanResolve >> Return True >> >> End Function >> >> End Class >> >> >> I THINK I'm close to finally getting this working! >> >> i tried putting the DoNotWire on the currentsession property in the >> UnitOfWork.cs and on the CurrentSession property in the >> nhibernateUnitOfWorkFactory.cs >> >> >> Help Please! and thank you :) >> >> >> On 16 Mar, 15:17, Patricia Vandermeer <[email protected]> >> wrote: >> > Thanks Beto! >> > that explains a few things! >> > >> > On Tue, Mar 16, 2010 at 2:50 PM, Beto <[email protected]> wrote: >> > > Patricia, >> > >> > > You will need to create your own facility and resolver, look at this: >> > >> > >http://groups.google.co.uk/group/rhino-tools-dev/browse_thread/thread. >> .. >> > >> > > On 16 Mar, 09:41, Patricia Vandermeer <[email protected]> >> > > wrote: >> > > > I found this thread: >> > >http://groups.google.co.uk/group/rhino-tools-dev/browse_thread/thread. >> .. >> > >> > > > which explains where it went. But i'm having the same problem that >> Dan >> > > was >> > > > having! >> > >> > > > Can't create component >> 'Rhino.Security.Services.AuthorizationRepository' >> > > as >> > >> > > > > it has dependencies to be satisfied. >> > > > > Rhino.Security.Services.AuthorizationRepository is waiting for the >> > > > > following dependencies: >> > >> > > > > Services: >> > > > > - NHibernate.ISession which was not registered. >> > >> > > > Thanks again for the help! >> > >> > > > On Tue, Mar 16, 2010 at 12:11 PM, patricia < >> > > [email protected]>wrote: >> > >> > > > > Hello, Me again, >> > >> > > > > I'm trying to build my project with fresh versions of rhino >> commons >> > > > > and security and castle windsor. But i seem to have lost >> > > > > RhinoSecurityFacility ! >> > >> > > > > in the RhinoSecNhSetup.zip sample app it seems to be in >> > > > > rhino.security but it is no where to be found in the version i >> got >> > > > > from github! >> > >> > > > > here is what visual studio's comes up with when i do a "go to >> > > > > definition" on it in the sample project: >> > >> > > > > using Castle.MicroKernel.Facilities; >> > > > > using System; >> > >> > > > > namespace Rhino.Security >> > > > > { >> > > > > public class RhinoSecurityFacility : AbstractFacility >> > > > > { >> > > > > public RhinoSecurityFacility(Type userType); >> > > > > public RhinoSecurityFacility(SecurityTableStructure >> > > > > securityTableStructure, Type userType); >> > >> > > > > protected override void Init(); >> > > > > } >> > > > > } >> > >> > > > > I have a feeling this is me just looking in all the wrong places, >> but >> > > > > i've run out of places to look! >> > >> > > > > Thanks for the help! >> > >> > > > > -- >> > > > > You received this message because you are subscribed to the Google >> > > Groups >> > > > > "Rhino Tools Dev" group. >> > > > > To post to this group, send email to >> [email protected]. >> > > > > To unsubscribe from this group, send email to >> > > > > [email protected]<rhino-tools-dev%[email protected]> >> <rhino-tools-dev%[email protected]<rhino-tools-dev%[email protected]> >> > >> > > <rhino-tools-dev%2Bunsubscribe@ googlegroups.com> >> > > > > . >> > > > > For more options, visit this group at >> > > > >http://groups.google.com/group/rhino-tools-dev?hl=en. >> > >> > > -- >> > > You received this message because you are subscribed to the Google >> Groups >> > > "Rhino Tools Dev" group. >> > > To post to this group, send email to [email protected] >> . >> > > To unsubscribe from this group, send email to >> > > [email protected]<rhino-tools-dev%[email protected]> >> <rhino-tools-dev%[email protected]<rhino-tools-dev%[email protected]> >> > >> > > . >> > > For more options, visit this group at >> > >http://groups.google.com/group/rhino-tools-dev?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Rhino Tools Dev" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<rhino-tools-dev%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/rhino-tools-dev?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "Rhino Tools Dev" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<rhino-tools-dev%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/rhino-tools-dev?hl=en. > -- You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" 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/rhino-tools-dev?hl=en.
