atom feed20 messages in com.googlegroups.nhibernate-hispano[NHibernate-Hispano] Re: Pregunta sob...
FromSent OnAttachments
JuanApr 23, 2009 5:41 am 
Dario QuintanaApr 23, 2009 5:48 am 
"José F. Romaniello"Apr 23, 2009 5:51 am 
Dario QuintanaApr 23, 2009 8:58 am 
JuanApr 24, 2009 9:01 am 
Fabio MauloApr 24, 2009 9:15 am 
"José F. Romaniello"Apr 24, 2009 9:38 am 
Dario QuintanaApr 24, 2009 9:39 am 
"José F. Romaniello"Apr 24, 2009 9:46 am 
Fabio MauloApr 24, 2009 10:13 am 
Dario QuintanaApr 24, 2009 10:16 am 
Fabio MauloApr 24, 2009 10:17 am 
"José F. Romaniello"Apr 24, 2009 11:00 am 
Fabio MauloApr 24, 2009 11:30 am 
"José F. Romaniello"Apr 24, 2009 7:53 pm 
Fabio MauloApr 24, 2009 8:17 pm 
"José F. Romaniello"Apr 25, 2009 1:19 pm 
"José F. Romaniello"Apr 25, 2009 3:49 pm 
Fabio MauloApr 25, 2009 5:04 pm 
"José F. Romaniello"Apr 27, 2009 8:13 am 
Subject:[NHibernate-Hispano] Re: Pregunta sobre ISharedEngineProvider en NHibernate.Validator
From:"José F. Romaniello" (jfro@gmail.com)
Date:Apr 24, 2009 7:53:42 pm
List:com.googlegroups.nhibernate-hispano

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" <jfro@gmail.com <mailto:jfro@gmail.com>> 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" > <jfro@gmail.com <mailto:jfro@gmail.com> <mailto:jfro@gmail.com <mailto:jfro@gmail.com>>> 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 <juan@gmail.com <mailto:juan@gmail.com> > <mailto:juan@gmail.com <mailto:juan@gmail.com>> > > <mailto:juan@gmail.com <mailto:juan@gmail.com> <mailto:juan@gmail.com <mailto:juan@gmail.com>>>> > 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 > <cont@darioquintana.com.ar <mailto:cont@darioquintana.com.ar> <mailto:cont@darioquintana.com.ar <mailto:cont@darioquintana.com.ar>> > > <mailto:cont@darioquintana.com.ar <mailto:cont@darioquintana.com.ar> > <mailto:cont@darioquintana.com.ar <mailto:cont@darioquintana.com.ar>>>> > > 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 <fabi@gmail.com <mailto:fabi@gmail.com> > <mailto:fabi@gmail.com <mailto:fabi@gmail.com>> > > <mailto:fabi@gmail.com <mailto:fabi@gmail.com> <mailto:fabi@gmail.com <mailto:fabi@gmail.com>>>> > > > > > > > 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> > > > > > > > > > > -- > > Fabio Maulo > > > > > > > > > > > > -- > Fabio Maulo > > >

--~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección:
NHib@googlegroups.com Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---