Esta hecho, ahi va mi granito de arena :
http://nhforge.org/wikis/howtonh/setup-nhv-fluently-with-your-ioc-container.aspx
(se aceptan criticas, me costo un poco el coloriado de código )
Fabio Maulo escribió:
> Que buenas ideas.
> Podría por favor escribir un wiki con todas tus observaciones ?
> Sería muy util a todos usuarios de NHV.
>
> El lugar para escribir un buen wiki de referencia, como te parezca mas
> claro, es:
> http://nhforge.org/wikis/validator/default.aspx
>
> Tabien está el How To:
> http://nhforge.org/wikis/howtonh/default.aspx
>
>
> El 24 de abril de 2009 23:53, "José F. Romaniello"
> <[email protected] <mailto:[email protected]>> escribió:
>
>
> Ok, ya sabía como resolver un servicio con el container :S ..
> Lo que me hacía falta era el otro lado de la igual (osea lo que
> concierne a NHV) es decir, pone el shared engine en:
> NHibernate.Validator.Cfg.Environment.SharedEngineProvider
> como dice en uno de tus post.
>
> Es probable que tenga algo mal pero esto es a lo que llegué:
>
> var ve = new ValidatorEngine();
>
> container.Register(Component.For<ValidatorEngine>()
> .Instance(ve)
> .LifeStyle.Singleton);
>
> container.Register(Component.For<ISharedEngineProvider>()
> .ImplementedBy<CastleSharedEngineProvider>());
>
> NHibernate.Validator.Cfg.Environment.SharedEngineProvider =
> container.Resolve<ISharedEngineProvider>();
>
>
> var configure = new FluentConfiguration();
>
> configure.Register(
> Assembly.Load("SGF.Dominio")
> .ValidationDefinitions()
> )
> .SetDefaultValidatorMode(ValidatorMode.UseAttribute)
>
>
> .IntegrateWithNHibernate.ApplyingDDLConstraints().And.RegisteringListeners();
>
> ve.Configure(configure);
>
> Algo que no podía darme cuenta, era como decirle a NHV que altere la
> configuración de NH para aplicar las constraints ddl y registrar los
> listeners..
> Explorando un poco el código de NHV llegue a esto
> ValidatorInitializer.Initialize(miConfigDeNH)
>
> IMO: Hice varias busquedas en google y creo que no esta muy
> "googleable"
> (salvo medio escondido un post de Marek Blotny). Creo que el post de
> referencia para nhibernate validator fluent es el de Fabio y no
> menciona
> nada sobre el ValidatorInitializar.Initialize.
> Si bien son dos cosas diferentes alguien podría tener la falsa
> impresión
> de que con esto:
>
> "IntegrateWithNHibernate.ApplyingDDLConstraints().And.RegisteringListeners()"
> ya esta.
> IMO2: Le falta un buen summary, como lo tienen la mayoría de las otras
> clases.
>
>
> Fabio Maulo escribió:
> > El 24 de abril de 2009 15:00, "José F. Romaniello"
> > <[email protected] <mailto:[email protected]>
> <mailto:[email protected] <mailto:[email protected]>>>
> escribió:
> >
> >
> > Barbaro, entiendo lo que decis y realmente me gusta mas. Si
> no fuera
> > molestia, podrías comentar un poco como se hace lo segundo
> (por ahora
> > sin ServiceLocator):
> > "En la configuración de NHV le pido a WindSor, o mejor al
> > ServiceLocator, la instancia de ISharedEngineProvider."
> >
> >
> > container.Resolve<ISharedEngineProvider>();
> >
> >
> > Por otro lado, existe alguna forma de hacer esto en
> app/web.config?
> >
> >
> > Ah bueno... desde allí no podes porque tiene que ser
> parameter-less ctor.
> > Pero si configuras NHV luego de configurar el container y lo primero
> > que haces es asignar el SharedEngineProvider todo te funciona.
> >
> >
> >
> >
> > Fabio Maulo escribió:
> > > Está bien aunque yo lo implementatría distinto.
> > > En el constructor de CastleSharedEngineProvider injectaría
> > > ValidatorEngine y en Castle registraría ISharedEngineProvider.
> > > En la configuración de NHV le pido a WindSor, o mejor al
> > > ServiceLocator, la instancia de ISharedEngineProvider.
> > >
> > > El 24 de abril de 2009 13:38, "José F. Romaniello"
> > > <[email protected] <mailto:[email protected]>
> <mailto:[email protected] <mailto:[email protected]>>
> > <mailto:[email protected]
> <mailto:[email protected]> <mailto:[email protected]
> <mailto:[email protected]>>>>
> > escribió:
> > >
> > >
> > > Y ya que estamos hablando de rudimentario, yo no me
> animaba a
> > > mostrar el
> > > mio por las duda les causara asco,
> > > tiene esta pinta esta "pasable" por lo menos?:
> > >
> > > public class CastleSharedEngineProvider :
> > ISharedEngineProvider
> > > {
> > > public ValidatorEngine GetEngine()
> > > {
> > > var containerAccessor =
> > > HttpContext.Current.ApplicationInstance as
> IContainerAccessor;
> > >
> > > if (containerAccessor == null)
> > > throw new Exception("No se encontro
> > > IContainerAccessor");
> > >
> > > var ve =
> > > containerAccessor.Container.Resolve<ValidatorEngine>();
> > >
> > > return ve;
> > > }
> > > }
> > >
> > > en el container lo meto asi :
> > >
> > > Component.For<ValidatorEngine>()
> > > .Instance(ve)
> > >
> .LifeStyle.Singleton
> > >
> > > (creo que el singleton no haría falta ya que le estoy
> > pasando una
> > > instancia concreta).
> > >
> > >
> > > Fabio Maulo escribió:
> > > > barbaro me preocupa solo lo de "rudimentario"...
> para eso
> > usá lo que
> > > > está en NHV que ya es static por si mismo.
> > > >
> > > > El 24 de abril de 2009 13:01, Juan
> <[email protected] <mailto:[email protected]>
> > <mailto:[email protected] <mailto:[email protected]>>
> > > <mailto:[email protected]
> <mailto:[email protected]> <mailto:[email protected]
> <mailto:[email protected]>>>
> > > > <mailto:[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected]
> <mailto:[email protected]>> <mailto:[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected]
> <mailto:[email protected]>>>>>
> > > escribió:
> > > >
> > > >
> > > > Por ahora tengo un ISharedEngineProvider
> rudimentario
> > que lo
> > > creo en
> > > > codigo y se lo pongo al
> > > > NHibernate.Validator.Enviroment.SharedEngineProvider
> > antes de
> > > > configurar el NHibernate para asegurarme que es
> la misma
> > > engine que
> > > > va a utilizar NH, en los pre update/delete
> listeners.
> > > >
> > > > Pero queria quitarme esa dudita, ya que con la
> App/Web
> > > config puedo
> > > > hacer lo mismo, aunque yo lo hago a mano por el
> hecho de
> > > tener la
> > > > config de nhv en una archivo aparte.
> > > >
> > > > Gracias
> > > >
> > > > On 23 abr, 11:58, Dario Quintana
> > > <[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected]
> <mailto:[email protected]>>
> > <mailto:[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected]
> <mailto:[email protected]>>>
> > > > <mailto:[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected]
> <mailto:[email protected]>>
> > > <mailto:[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected]
> <mailto:[email protected]>>>>>
> > > > wrote:
> > > > > Otra opción, que se podría usar para
> configurar con
> > > > nhvalidator.cfg.xml:
> > > > > ..
> > > > > var vtor = new ValidatorEngine();
> > > > > vtor.Configure(); //lee el nhvalidator.cfg.xml
> > > > > ..
> > > > >
> > > > > Cuando se lee de la configuración se instancia el
> > > SharedEngine,
> > > > pero la
> > > > > instancia 'vtor' se la podría:
> > > > > 1) "copiar" la instancia adentro del SharedEngine,
> > entonces se
> > > > usa la misma
> > > > > instancia.
> > > > > 2) descartarla, y que el SharedEngine cree otra
> > instancia.
> > > Pero
> > > > ahí queda
> > > > > feo porque, en cada aplicación se habrían
> creado por lo
> > > menos dos
> > > > > ValidatorEngine.
> > > > >
> > > > > 2009/4/23 Fabio Maulo <[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected] <mailto:[email protected]>>
> > > <mailto:[email protected]
> <mailto:[email protected]> <mailto:[email protected]
> <mailto:[email protected]>>>
> > > > <mailto:[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected] <mailto:[email protected]>>
> <mailto:[email protected] <mailto:[email protected]>
> > <mailto:[email protected] <mailto:[email protected]>>>>>
> > > > >
> > > > > > La razon es que es la unica forma de
> garantizar que el
> > > > ValidatorEngine sea
> > > > > > realmente shared.Pero podes asignar el
> > SharedEngine a mano.
> > > > >
> > > > > --
> > > > > Dario Quintanahttp://darioquintana.com.ar
> <http://darioquintana.com.ar>
> > <http://darioquintana.com.ar>
> > > <http://darioquintana.com.ar>
> > > > <http://darioquintana.com.ar>
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Fabio Maulo
> > > >
> > > > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Fabio Maulo
> > >
> > > >
> >
> >
> >
> >
> >
> >
> > --
> > Fabio Maulo
> >
> > >
>
>
>
>
>
>
> --
> Fabio Maulo
>
> >
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---