Yes, that sounds fine.

Henning, we voted against friend for a number of reasons, I think the 
most important one is referencing to testing code in the core.

On 23/8/2010 3:26 PM, Kostka Bořivoj wrote:
> 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
>    

------------------------------------------------------------------------------
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