sorry I didn't understand what the purpose is, I just wanted to warn
that Search needs to read all keys, and doesn't know the exact names
beforehand.
Consolidating the constants in a single place looks like a good thing,
just wanted to check you aren't going to hide the other properties for
now. I missed the reason of why the discussion switched from
consolidating constants to changing the properties management.

cheers,
Sanne

2010/2/3 Steve Ebersole <st...@hibernate.org>:
> First, this is not the option I suggest for now.  It's pretty invasive
> change
>
> Well exposing the full set of properties sort of defeats the entire
> purpose no?
>
>
> On Wed, 2010-02-03 at 14:42 +0100, Sanne Grinovero wrote:
>> Hi Steve,
>> please expose in some way the fullPropertySet too, as Search needs to
>> be able to get a list of all defined keys, for example it reads
>> options like
>>
>> hibernate .search.Animals.batch.merge_factor = 20
>> or
>> hibernate .search.Animals.5.batch.merge_factor = 30
>>
>> Where Animals is the name of an index, and the 5 stands for an option
>> to override the fifth index shard.
>>
>> Also keep in mind I know of some users on the forum who added "own"
>> properties to configure their custom extensions, so it would be a good
>> idea to be able to read all kind of properties at runtime.
>> Additionally the Infinispan team is asking for "dynamic" configuration
>> capabilities in Search, so it's possible that some option will need to
>> be read lazily, i.e. not at framework startup but in a later
>> timeframe, for example when we first see an event about a new -
>> previously unmapped - entity.
>>
>> Did you consider "key scoping" of the Properties, something like
>> Search already does to parse the above structure as a tree?
>> In short it hides all properties not having a key which begins with a
>> specified prefix, it is recursive and extends Properties:
>> http://fisheye.jboss.org/browse/Hibernate/search/trunk/src/main/java/org/hibernate/search/backend/configuration/MaskedProperty.java?r=17630
>>
>> Sanne
>>
>>
>> 2010/2/3 Steve Ebersole <st...@hibernate.org>:
>> > Here is the basic idea: http://pastebin.com/m6add9d4b
>> >
>> > Rather than passing around Properties, we'd pass somethign like that
>> > around.  Then we'd use its "getConsumedProperties".
>> >
>> >
>> > On Wed, 2010-02-03 at 10:05 +0100, Emmanuel Bernard wrote:
>> >> That's the point Hardy, the list of consumed properties is not known in 
>> >> advance in Hibernate search. Or is the plan get core pass all the raw 
>> >> Properties and HSearch return the list of properties it really wants? In 
>> >> which case it will return all of them to implement our current approach.
>> >>
>> >> I guess the point is that I am lost and don't see how (my understanding 
>> >> of) the pull second option can work for Search.
>> >>
>> >> On 2 févr. 2010, at 15:12, Hardy Ferentschik wrote:
>> >>
>> >> > For the Hibernate Search case I could imagine to implement Steve's 
>> >> > second pull
>> >> > approach. Search already defines an interface SearchConfiguration which 
>> >> > delegates the
>> >> > access to the underlying Configuration properties. It should be easy to 
>> >> > implement some
>> >> > sort of journaling to keep track which properties Search consumes.
>> >> >
>> >> > If we can keep track of the consumes properties we should be able to 
>> >> > report this back
>> >> > into Core via the PropertyConsumer#collectConsumedProperties approach.
>> >> >
>> >> > WDYT?
>> >> >
>> >> > --Hardy
>> >> >
>> >> > On Tue, 02 Feb 2010 09:54:57 -0300, Steve Ebersole 
>> >> > <st...@hibernate.org> wrote:
>> >> >
>> >> >> The 'know in advance' approach is exactly what I was trying to avoid.  
>> >> >> I guess that is another option I forgot on that list
>> >> >>
>> >> >> It's not the I want to implement (way too tedious).
>> >> >>
>> >> >> -- Sent from my Palm Pre
>> >> >> st...@hibernate.org
>> >> >> http://hibernate.orgEmmanuel Bernard wrote:
>> >> >>
>> >> >> Yep.
>> >> >>
>> >> >> Provided HSearch does not know in advance what properties are required 
>> >> >> by its plugins, I was wondering how that would work. That's why I 
>> >> >> asked Hardy for an implementation example as he seemed to have 
>> >> >> understood.
>> >> >>
>> >> >>
>> >> >>
>> >> >> On 1 févr. 2010, at 20:52, Steve Ebersole wrote:
>> >> >>
>> >> >>
>> >> >>
>> >> >>> For Search afaict as you mentioned listeners will be the touchpoint
>> >> >>
>> >> >>> here.  So it depends on what is accessible to the listeners.
>> >> >>
>> >> >>>
>> >> >>
>> >> >>> At some point this just needs to be a best effort.
>> >> >>
>> >> >>>
>> >> >>
>> >> >>>
>> >> >>
>> >> >>> On Mon, 2010-02-01 at 18:42 +0100, Emmanuel Bernard wrote:
>> >> >>
>> >> >>>> Hardy,
>> >> >>
>> >> >>>> How would it work for say a DirectoryProvider in Hibernate search 
>> >> >>>> (which is a plugin of HSearch which itself is a plugin of Core in a 
>> >> >>>> way - listener).
>> >> >>
>> >> >>>>
>> >> >>
>> >> >>>> Remember we have the hibernate.search.default.[customproperty] 
>> >> >>>> category and the hibernate.search.[indexname].[customproperty] 
>> >> >>>> category. What would the the impl of 
>> >> >>>> PropertyConsumer#collectConsumedProperties like for Hibernate Search?
>> >> >>
>> >> >>>>
>> >> >>
>> >> >>>>
>> >> >>
>> >> >>>> On 1 févr. 2010, at 16:28, Hardy Ferentschik wrote:
>> >> >>
>> >> >>>>
>> >> >>
>> >> >>>>> The pull approach via an additional PropertyConsumer interface 
>> >> >>>>> works for me.
>> >> >>
>> >> >>>>> It seems to be a good trade-off. Least invasive while still getting 
>> >> >>>>> some order
>> >> >>
>> >> >>>>> into the properties.
>> >> >>
>> >> >>>>>
>> >> >>
>> >> >>>>> --Hardy
>> >> >>
>> >> >>>>>
>> >> >>
>> >> >>>>>
>> >> >>
>> >> >>>>> On Mon, 01 Feb 2010 12:14:02 -0300, Steve Ebersole 
>> >> >>>>> &lt;st...@hibernate.org> wrote:
>> >> >>
>> >> >>>>>
>> >> >>
>> >> >>>>>> On Mon, 2010-02-01 at 09:49 +0100, Emmanuel Bernard wrote:
>> >> >>
>> >> >>>>>>> Also "plugins" can make use of the general availability of 
>> >> >>>>>>> properties.
>> >> >>
>> >> >>>>>>> For example Hibernate Search reads everything under 
>> >> >>>>>>> hibernate.search (and it's not a limited set of property names). 
>> >> >>>>>>> Likewise, HSearch extensions can use whatever property name they 
>> >> >>>>>>> want to configure say the custom backend or the directory 
>> >> >>>>>>> providers (either custom or even one of the system properties).
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> The main use case I was keeping in mind along the way was caching. 
>> >> >>>>>>  I know in the JBC and Infinispan integrations they added the 
>> >> >>>>>> ability to read a lot of config information from our properties.
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> As long as it is something configured by the Configuration ->
>> >> >>
>> >> >>>>>> Settings/SessionFactory process or the something is known to
>> >> >>
>> >> >>>>>> SessionFactory at the end of its init it is workable.  For 
>> >> >>>>>> example, I
>> >> >>
>> >> >>>>>> imagine Validator would be easy to tie in here because of the 
>> >> >>>>>> listeners;
>> >> >>
>> >> >>>>>> they are known to the SessionFactory.  Not so sure about Search, it
>> >> >>
>> >> >>>>>> registers listeners too so maybe its ok.
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> The first question is whether we want a push or pull (from 
>> >> >>>>>> perspective
>> >> >>
>> >> >>>>>> of the things being configured) model here.  For example, would the
>> >> >>
>> >> >>>>>> ConnectionProvider tell SessionFactory about the properties it 
>> >> >>>>>> consumed
>> >> >>
>> >> >>>>>> (push)?  Or would the SessionFactory ask the ConnectionProvider 
>> >> >>>>>> for that
>> >> >>
>> >> >>>>>> info (pull)?
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> The pull approach has the advantage of being the least trade-off . 
>> >> >>>>>>  We
>> >> >>
>> >> >>>>>> could add an optional interface "PropertyConsumer" that things can
>> >> >>
>> >> >>>>>> choose to implement.  If they do, the method would be something 
>> >> >>>>>> like
>> >> >>
>> >> >>>>>> "collectConsumedProperties(Map copy)"; they would put all the 
>> >> >>>>>> property
>> >> >>
>> >> >>>>>> keys/values into the given map.
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> Another potential "pull" approach is to not pass around 
>> >> >>>>>> j.u.Properties
>> >> >>
>> >> >>>>>> into these things to configure themselves, but to instead wrap 
>> >> >>>>>> that in a
>> >> >>
>> >> >>>>>> class that journals the key/values as they are requested.  That is 
>> >> >>>>>> a bit
>> >> >>
>> >> >>>>>> more invasive though as it would mean changing quite a few 
>> >> >>>>>> contracts,
>> >> >>
>> >> >>>>>> some of which are implemented by classes outside our control.
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> In the "push" strategy, the things configuring themselves somehow 
>> >> >>>>>> push
>> >> >>
>> >> >>>>>> which properties (key/value) they are consuming.  Much like the 
>> >> >>>>>> second
>> >> >>
>> >> >>>>>> pull-approach, this is pretty invasive because we would need to 
>> >> >>>>>> pass in
>> >> >>
>> >> >>>>>> the mechanism for these "configurables" to report back which 
>> >> >>>>>> properties
>> >> >>
>> >> >>>>>> they are consuming.  Not to mention its tedious.
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> Long term I like the second pull approach.  However, I personally 
>> >> >>>>>> think
>> >> >>
>> >> >>>>>> it is too disruptive in the short term and that we should use the 
>> >> >>>>>> first
>> >> >>
>> >> >>>>>> pull approach for now.
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>> Thoughts?
>> >> >>
>> >> >>>>>>
>> >> >>
>> >> >>>>>
>> >> >>
>> >> >>>>
>> >> >>
>> >> >>> --
>> >> >>
>> >> >>> Steve Ebersole &lt;st...@hibernate.org>
>> >> >>
>> >> >>> Hibernate.org
>> >> >>
>> >> >>>
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >
>> >>
>> > --
>> > Steve Ebersole <st...@hibernate.org>
>> > Hibernate.org
>> >
>> > _______________________________________________
>> > hibernate-dev mailing list
>> > hibernate-dev@lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> --
> Steve Ebersole <st...@hibernate.org>
> Hibernate.org
>
>

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to