Itamar,

I propose to just redeclare 6 IndexWriter methods from private to protected 
(not public). Then I can create IndexWriter4Test subclass,
which declares same methods public and just calls protected methods from 
IndexWriter.

For me this seems better than keeping them private, copying their body, 
redeclare members used in them from private
to protected and make SegmentInfo class exported.

Is this acceptable?

Borek

> -----Original Message-----
> From: Itamar Syn-Hershko [mailto:ita...@code972.com]
> Sent: Sunday, August 22, 2010 1:16 PM
> To: clucene-developers@lists.sourceforge.net
> Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> 
> Well, how many functions and variables that are marked private those
> functions try to access?
> 
> We can either have the ~8 or so functions public, or upgrade the other
> functions from private to protected - which actually makes quite a lot
> of sense.
> 
> Itamar.
> 
> On 21/8/2010 10:43 PM, Kostka Bořivoj wrote:
> > Itamar,
> >
> > I tried to solve this by subclassing, but it is probably impossible. Eg. 
> > method
> getNumBufferedDocuments() uses
> > docWriter, which is declared private in IndexWriter, so I cannot access it.
> > I can't see any solution except declaring testing methods public (or at 
> > least
> protected) in original IndexWriter
> >
> > Borek
> >
> >
> >> -----Original Message-----
> >> From: Kostka Bořivoj [mailto:kos...@tovek.cz]
> >> Sent: Tuesday, August 17, 2010 3:39 PM
> >> To: clucene-developers@lists.sourceforge.net
> >> Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> >>
> >> OK, I understand your idea now. The problem is only segmentsInfos, so I 
> >> will
> change it
> >> to exported (it can be changed in the future, if we decide so).
> >>
> >> If we hit more/many exporting issues we could consider special DLL build 
> >> with
> more
> >> exports for testing purposes rather than link statically.
> >> Anyway, tt will be best, if we have both static libs and dll build for 
> >> cl_test.
> >>
> >> Borek
> >>
> >>
> >>> -----Original Message-----
> >>> From: Itamar Syn-Hershko [mailto:ita...@code972.com]
> >>> Sent: Tuesday, August 17, 2010 1:34 PM
> >>> To: clucene-developers@lists.sourceforge.net
> >>> Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> >>>
> >>> We definitely need to port all tests.
> >>>
> >>> What I meant with subclassing is to remove the functions that aren't
> >>> used currently, and have a IndexWriterForTests class in cl_test which
> >>> will implement those functions instead. From what I recall none of these
> >>> functions are used anywhere, so removing them from the core isn't an
> >>> issue. If any of them is indeed used, well, since it is used for things
> >>> other than testing we do need it there (and as such it should be made
> >>> protected / public, based on where it is being called from in tests).
> >>>
> >>> If you'll hit many exporting issues with cl_test you can make cl_test
> >>> link statically to cl_core (and also cl_shared). That is better than
> >>> exporting new stuff that is better left internal.
> >>>
> >>> Itamar.
> >>>
> >>> On 17/8/2010 11:35 AM, Kostka Bořivoj wrote:
> >>>
> >>>> Itamar,
> >>>>
> >>>> Perhaps I'm wrong, but I think subclassing isn't (easy) solution:
> >>>>
> >>>> Related IndexWriter's methods are private, not protected, so I cannot 
> >>>> call them
> >>>>
> >> even
> >>
> >>> from subclass.
> >>>
> >>>> I also cannot copy the code, as segmentsInfos methods are used inside, 
> >>>> and
> >>>>
> >>> segmentInfos class is not exported so I'm not able to link.
> >>>
> >>>> Maybe protected will be good trade-off(?)
> >>>>
> >>>> If methods remain private, I have to remove a lot of checks from tests. 
> >>>> I can do
> that,
> >>>>
> >>> of course, but I'm not sure if such test are still usefull.
> >>>
> >>>> And the last point - if methods remain private, we should simply remove 
> >>>> them as
> a
> >>>>
> >>> whole, because it is just a chunk of dead code.
> >>>
> >>>> Borek
> >>>>
> >>>>
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: Itamar Syn-Hershko [mailto:ita...@code972.com]
> >>>>> Sent: Monday, August 16, 2010 10:47 PM
> >>>>> To: clucene-developers@lists.sourceforge.net
> >>>>> Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> >>>>>
> >>>>> Borek,
> >>>>>
> >>>>> I had answered this in Jun 24th [1][2]. We pretty much agreed
> >>>>> "friend"ing won't do much good.
> >>>>>
> >>>>> I'd still prefer exposing this code only in the test suite and not in
> >>>>> core, since it is only being used there - this can be achieved easily by
> >>>>> subclassing. No reason to have them in core if all they are used for is
> >>>>> tests, and I wouldn't want to add more compile switches...
> >>>>>
> >>>>> Itamar.
> >>>>>
> >>>>> [1] 
> >>>>> http://permalink.gmane.org/gmane.comp.jakarta.lucene.clucene.devel/3484
> >>>>> [2] The whole discussion:
> >>>>> http://comments.gmane.org/gmane.comp.jakarta.lucene.clucene.devel/3472
> >>>>>
> >>>>> On 16/8/2010 4:00 PM, Kostka Bořivoj wrote:
> >>>>>
> >>>>>
> >>>>>> In tests I'm porting following set of methods from IndexWriter is used:
> >>>>>>
> >>>>>>      //for test purposes
> >>>>>>      int32_t getDocCount(int32_t i);
> >>>>>>      int32_t getNumBufferedDocuments();
> >>>>>>      int32_t getSegmentCount();
> >>>>>>      int32_t getBufferedDeleteTermsSize();
> >>>>>>      int32_t getNumBufferedDeleteTerms();
> >>>>>>      SegmentInfo* newestSegment();
> >>>>>>
> >>>>>> The problem is all methods are marked private. In JLucene methods are
> without
> >>>>>>
> >>>>>>
> >>>>> public/private definition,
> >>>>>
> >>>>>
> >>>>>> so they are accessible from classes in same package (and test are in 
> >>>>>> same
> >>>>>>
> >>>>>>
> >>>>> package).
> >>>>>
> >>>>>
> >>>>>> Such thing is not possible in C++, so I think methods should be 
> >>>>>> changed to
> >>>>>>
> >> public.
> >>
> >>>>>>
> >>>>> Otherwise tests cannot
> >>>>>
> >>>>>
> >>>>>> be ported.
> >>>>>>
> >>>>>> Any other opinion?
> >>>>>>
> >>>>>> Borek
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> ------------------------------------------------------------------------------
> >>>>>> This SF.net email is sponsored by
> >>>>>>
> >>>>>> Make an app they can't live without
> >>>>>> Enter the BlackBerry Developer Challenge
> >>>>>> http://p.sf.net/sfu/RIM-dev2dev
> >>>>>> _______________________________________________
> >>>>>> CLucene-developers mailing list
> >>>>>> CLucene-developers@lists.sourceforge.net
> >>>>>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>> ------------------------------------------------------------------------------
> >>>>> This SF.net email is sponsored by
> >>>>>
> >>>>> Make an app they can't live without
> >>>>> Enter the BlackBerry Developer Challenge
> >>>>> http://p.sf.net/sfu/RIM-dev2dev
> >>>>> _______________________________________________
> >>>>> CLucene-developers mailing list
> >>>>> CLucene-developers@lists.sourceforge.net
> >>>>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> >>>>>
> >>>>>
> >>>> ------------------------------------------------------------------------------
> >>>> This SF.net email is sponsored by
> >>>>
> >>>> Make an app they can't live without
> >>>> Enter the BlackBerry Developer Challenge
> >>>> http://p.sf.net/sfu/RIM-dev2dev
> >>>> _______________________________________________
> >>>> CLucene-developers mailing list
> >>>> CLucene-developers@lists.sourceforge.net
> >>>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> >>>>
> >>>>
> >>> ------------------------------------------------------------------------------
> >>> This SF.net email is sponsored by
> >>>
> >>> Make an app they can't live without
> >>> Enter the BlackBerry Developer Challenge
> >>> http://p.sf.net/sfu/RIM-dev2dev
> >>> _______________________________________________
> >>> CLucene-developers mailing list
> >>> CLucene-developers@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> >>>
> >> ------------------------------------------------------------------------------
> >> This SF.net email is sponsored by
> >>
> >> Make an app they can't live without
> >> Enter the BlackBerry Developer Challenge
> >> http://p.sf.net/sfu/RIM-dev2dev
> >> _______________________________________________
> >> CLucene-developers mailing list
> >> CLucene-developers@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> >>
> > ------------------------------------------------------------------------------
> > This SF.net email is sponsored by
> >
> > Make an app they can't live without
> > Enter the BlackBerry Developer Challenge
> > http://p.sf.net/sfu/RIM-dev2dev
> > _______________________________________________
> > CLucene-developers mailing list
> > CLucene-developers@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/clucene-developers
> >
> 
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
> 
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> CLucene-developers mailing list
> CLucene-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/clucene-developers
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
CLucene-developers mailing list
CLucene-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/clucene-developers

Reply via email to