On Sat, Oct 3, 2009 at 03:29, Uwe Schindler <u...@thetaphi.de> wrote:
>> It is also probably a good idea to move various settings methods from
>> IW to that builder and have IW immutable in regards to configuration.
>> I'm speaking of the likes of setWriteLockTimeout, setRAMBufferSizeMB,
>> setMergePolicy, setMergeScheduler, setSimilarity.
>>
>> IndexWriter.Builder iwb = IndexWriter.builder().
>>   writeLockTimeout(0).
>>   RAMBufferSize(config.indexationBufferMB).
>>   maxBufferedDocs(...).
>>   similarity(...).
>>   analyzer(...);
>>
>> ... = iwb.build(dir1);
>> ... = iwb.build(dir2);
>
> A happy user of google-collections API :-) These builders are really cool!

I feel myself caught in the act.

There is still a couple of things bothering me.
1. Introducing a builder, we'll have a whole heap of deprecated
constructors that will hang there for eternity. And then users will
scream in frustration - This class has 14(!) constructors and all of
them are deprecated! How on earth am I supposed to create this thing?
2. If someone creates IW with some reflectish javabeanish tools - he's
busted. Not that I'm feeling compassionate for such a person.

> I like Earwin's version more. A builder is very flexible, because you can
> concat all your properties (like StringBuilder works with its append method
> returning itself) and create the instance at the end.
Besides (arguably) cleaner syntax, the lack of which is (arguably) a
curse of many Java libraries,
it also allows us to return a different concrete implementation of IW
without breaking back-compat,
and also to choose this concrete implementation based on settings
provided. If we feel like doing it at some point.

-- 
Kirill Zakharenko/Кирилл Захаренко (ear...@gmail.com)
Home / Mobile: +7 (495) 683-567-4 / +7 (903) 5-888-423
ICQ: 104465785

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to