You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Rasik Pandey <ra...@ajlsm.com> on 2002/09/12 19:05:54 UTC

RE : Nullpointer in code

Otis,
Here a the test program that will generate the null pointer and the
requested diff. Hope they are helpful.

Thanks,
Rasik Pandey



-----Message d'origine-----
De : Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com] 
Envoyé : jeudi 12 septembre 2002 18:23
À : Lucene Developers List
Cc : rasik.pandey@ajlsm.com
Objet : Re: Nullpointer in code


Rasik,

Thanks for feedback, but that stuff is a bit hard to read.
The best way to help would be to write a class that demonstrates this,
then fix your code to work, then make a diff between your fixed code and
the code in the CVS, and finally, it would be great to have a unit test
for it, but I can write that later.

Thanks,
Otis


--- Rasik Pandey <ra...@ajlsm.com> wrote:
> Developers,
> I am encountering a null pointer exception when executing a wild card 
> query search on an empty index which doesn't contain any terms  and of
> course not the Term generated from the wild card query (ie the
> WildCardTermEnum has an empty "actualEnum"). Please see below for
> what i
> propose to be the fix (simple). I assume that this is sufficient or
> would a change in one of the SegmentReader or TermsInfosReader
> classes
> be more appropriate (not likely)?
> 
> I do not have access to commit this change, so if you deem that it is 
> necessary can you please make the modification.
> 
> Cheers,
> Rasik Pandey
> 
> Basically in the constructor of WildCardTermEnum the constructor 
> calls;
> 
>       setEnum(reader.terms(new Term(searchTerm.field(), pre)));
> 		----or
> 		super.setEnum(an empty termEnum); or
FilteredTermEnum.setEnum(an 
> empty termEnum);
> 
> 
> Then in FilteredTermnEnum:
> protected void setEnum(TermEnum actualEnum) throws IOException {
>         this.actualEnum = actualEnum;
>         // Find the first term that matches
>         
> 
> 	!!!!!!!!the result of actualEnum.term(); is null in my
case!!!!!!!!!
> 	Term term = actualEnum.term();
>  
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>   
> 
> 		!!!!!!!!!!!!the below line leads to the null
pointer!!!!!!!!!!
> 		if (termCompare(term)) 
> 		!!!!!!!!!!!!!!!!!!!!see
> below!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> 
>             currentTerm = term;
>         else next();
>     }
> 
> 
> Then back in WildCardTermEnum:
> 
> final protected boolean termCompare(Term term) {
>       !!!!!!!!!!!the below line should test to ensure that "term" is 
> not null!!!!!!
> 	if (field == term.field()) {
> 	!!!!!!!!!!!!!!!!see below line for the simple
> fix!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>       
> 	!!!!!!!!!!!!!!!!!below is the changed line for the simple 
> fix!!!!!!!!!!!!!!!!!!!!!!!!
> 	if (term != null && field == term.field()) {
> 	
>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> !!!!!!!!!!!!!
>           String searchText = term.text();
>           if (searchText.startsWith(pre)) {
>             return wildcardEquals(text, 0, searchText, preLen);
>           }
>       }
>       endEnum = true;
>       return false;
>   }
> 
> 
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
> 


__________________________________________________
Yahoo! - We Remember
9-11: A tribute to the more than 3,000 lives lost
http://dir.remember.yahoo.com/tribute

--
To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>

Re: RE : Nullpointer in code

Posted by Otis Gospodnetic <ot...@yahoo.com>.
Rasik,

The class you sent it the same as TestMultiSearcher, except for the
name.  The code is the same, no?  Maybe you attached the wrong class?

The diff looks rather large, too...

Otis

--- Rasik Pandey <ra...@ajlsm.com> wrote:
> Otis,
> Here a the test program that will generate the null pointer and the
> requested diff. Hope they are helpful.
> 
> Thanks,
> Rasik Pandey
> 
> 
> 
> -----Message d'origine-----
> De : Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com] 
> Envoy� : jeudi 12 septembre 2002 18:23
> � : Lucene Developers List
> Cc : rasik.pandey@ajlsm.com
> Objet : Re: Nullpointer in code
> 
> 
> Rasik,
> 
> Thanks for feedback, but that stuff is a bit hard to read.
> The best way to help would be to write a class that demonstrates
> this,
> then fix your code to work, then make a diff between your fixed code
> and
> the code in the CVS, and finally, it would be great to have a unit
> test
> for it, but I can write that later.
> 
> Thanks,
> Otis
> 
> 
> --- Rasik Pandey <ra...@ajlsm.com> wrote:
> > Developers,
> > I am encountering a null pointer exception when executing a wild
> card 
> > query search on an empty index which doesn't contain any terms  and
> of
> > course not the Term generated from the wild card query (ie the
> > WildCardTermEnum has an empty "actualEnum"). Please see below for
> > what i
> > propose to be the fix (simple). I assume that this is sufficient or
> > would a change in one of the SegmentReader or TermsInfosReader
> > classes
> > be more appropriate (not likely)?
> > 
> > I do not have access to commit this change, so if you deem that it
> is 
> > necessary can you please make the modification.
> > 
> > Cheers,
> > Rasik Pandey
> > 
> > Basically in the constructor of WildCardTermEnum the constructor 
> > calls;
> > 
> >       setEnum(reader.terms(new Term(searchTerm.field(), pre)));
> > 		----or
> > 		super.setEnum(an empty termEnum); or
> FilteredTermEnum.setEnum(an 
> > empty termEnum);
> > 
> > 
> > Then in FilteredTermnEnum:
> > protected void setEnum(TermEnum actualEnum) throws IOException {
> >         this.actualEnum = actualEnum;
> >         // Find the first term that matches
> >         
> > 
> > 	!!!!!!!!the result of actualEnum.term(); is null in my
> case!!!!!!!!!
> > 	Term term = actualEnum.term();
> >  
> >
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> >   
> > 
> > 		!!!!!!!!!!!!the below line leads to the null
> pointer!!!!!!!!!!
> > 		if (termCompare(term)) 
> > 		!!!!!!!!!!!!!!!!!!!!see
> > below!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> > 
> >             currentTerm = term;
> >         else next();
> >     }
> > 
> > 
> > Then back in WildCardTermEnum:
> > 
> > final protected boolean termCompare(Term term) {
> >       !!!!!!!!!!!the below line should test to ensure that "term"
> is 
> > not null!!!!!!
> > 	if (field == term.field()) {
> > 	!!!!!!!!!!!!!!!!see below line for the simple
> > fix!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> >       
> > 	!!!!!!!!!!!!!!!!!below is the changed line for the simple 
> > fix!!!!!!!!!!!!!!!!!!!!!!!!
> > 	if (term != null && field == term.field()) {
> > 	
> >
>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> > !!!!!!!!!!!!!
> >           String searchText = term.text();
> >           if (searchText.startsWith(pre)) {
> >             return wildcardEquals(text, 0, searchText, preLen);
> >           }
> >       }
> >       endEnum = true;
> >       return false;
> >   }
> > 
> > 
> > --
> > To unsubscribe, e-mail:
> > <ma...@jakarta.apache.org>
> > For additional commands, e-mail:
> > <ma...@jakarta.apache.org>
> > 
> 
> 
> __________________________________________________
> Yahoo! - We Remember
> 9-11: A tribute to the more than 3,000 lives lost
> http://dir.remember.yahoo.com/tribute
> 
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
> 

> ATTACHMENT part 2 application/octet-stream
name=TestWildcardTermEnum.java
> C:\Program Files\GNU\WinCvs 1.2\cvs.exe diff -r 1.1
> WildcardTermEnum.java
> Index: WildcardTermEnum.java
> ===================================================================
> RCS file:
>
/home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/search/WildcardTermEnum.java,v
> retrieving revision 1.1
> diff -r1.1 WildcardTermEnum.java
> 62,65c62,68
> < /** Subclass of FilteredTermEnum for enumerating all terms that
> match the specified wildcard filter term.
> < 
> <   <p>Term enumerations are always ordered by Term.compareTo(). 
> Each term in
> <   the enumeration is greater than all that precede it.  */
> ---
> > /**
> >  * Subclass of FilteredTermEnum for enumerating all terms that
> match the
> >  * specified wildcard filter term.
> >  * <p>
> >  * Term enumerations are always ordered by Term.compareTo().  Each
> term in
> >  * the enumeration is greater than all that precede it.
> >  */
> 74c77
> <   
> ---
> > 
> 93c96
> <   
> ---
> > 
> 95c98
> <       if (field == term.field()) {
> ---
> >       if (term != null && field == term.field()) {
> 104c107
> <   
> ---
> > 
> 108c111
> <   
> ---
> > 
> 112c115
> <   
> ---
> > 
> 116c119
> <   
> ---
> > 
> 119,139c122,219
> <   
> <   public static final boolean wildcardEquals(String pattern, int
> patternIdx, String string, int stringIdx) {
> <     for ( int p = patternIdx; ; ++p ) {
> <       for ( int s = stringIdx; ; ++p, ++s ) {
> <         boolean sEnd = (s >= string.length());
> <         boolean pEnd = (p >= pattern.length());
> <         
> <         if (sEnd && pEnd) return true;
> <         if (sEnd || pEnd) break;
> <         if (pattern.charAt(p) == WILDCARD_CHAR) continue;
> <         if (pattern.charAt(p) == WILDCARD_STRING) {
> <           int i;
> <           ++p;
> <           for (i = string.length(); i >= s; --i)
> <             if (wildcardEquals(pattern, p, string, i))
> <               return true;
> <           break;
> <         }
> <         if (pattern.charAt(p) != string.charAt(s)) break;
> <       }
> <       return false;
> ---
> > 
> >     /**
> >      * Determines if a word matches a wildcard pattern.
> >      * <small>Work released by Granta Design Ltd after originally
> being done on
> >      * company time.</small>
> >      */
> >     public static final boolean wildcardEquals(String pattern, int
> patternIdx,
> > 	String string, int stringIdx)
> >     {
> >         for (int p = patternIdx; ; ++p)
> >         {
> >             for (int s = stringIdx; ; ++p, ++s)
> >             {
> >                 // End of string yet?
> >                 boolean sEnd = (s >= string.length());
> >                 // End of pattern yet?
> >                 boolean pEnd = (p >= pattern.length());
> > 
> >                 // If we're looking at the end of the string...
> >                 if (sEnd)
> >                 {
> >                     // Assume the only thing left on the pattern
> is/are wildcards
> >                     boolean justWildcardsLeft = true;
> > 
> >                     // Current wildcard position
> >                     int wildcardSearchPos = p;
> >                     // While we haven't found the end of the
> pattern,
> > 		    // and haven't encountered any non-wildcard characters
> >                     while (wildcardSearchPos < pattern.length() &&
> justWildcardsLeft)
> >                     {
> >                         // Check the character at the current
> position
> >                         char wildchar =
> pattern.charAt(wildcardSearchPos);
> >                         // If it's not a wildcard character, then
> there is more
> > 			// pattern information after this/these wildcards.
> > 
> >                         if (wildchar != WILDCARD_CHAR &&
> > 			    wildchar != WILDCARD_STRING)
> >                         {
> >                             justWildcardsLeft = false;
> >                         }
> >                         else
> >                         {
> >                             // Look at the next character
> >                             wildcardSearchPos++;
> >                         }
> >                     }
> > 
> >                     // This was a prefix wildcard search, and we've
> matched, so
> > 		    // return true.
> >                     if (justWildcardsLeft)
> > 		    {
> >                         return true;
> > 		    }
> >                 }
> > 
> >                 // If we've gone past the end of the string, or the
> pattern,
> > 		// return false.
> >                 if (sEnd || pEnd)
> > 		{
> > 		    break;
> > 		}
> > 
> >                 // Match a single character, so continue.
> >                 if (pattern.charAt(p) == WILDCARD_CHAR)
> > 		{
> > 		    continue;
> > 		}
> > 
> >                 //
> >                 if (pattern.charAt(p) == WILDCARD_STRING)
> >                 {
> >                     // Look at the character beyond the '*'.
> >                     ++p;
> >                     // Examine the string, starting at the last
> character.
> >                     for (int i = string.length(); i >= s; --i)
> >                     {
> >                         if (wildcardEquals(pattern, p, string, i))
> > 			{
> >                             return true;
> > 			}
> >                     }
> >                     break;
> >                 }
> >                 if (pattern.charAt(p) != string.charAt(s))
> > 		{
> > 		    break;
> > 		}
> >             }
> >             return false;
> > 	}
> >     }
> > 
> >     public void close() throws IOException
> >     {
> > 	super.close();
> > 	searchTerm = null;
> > 	field = null;
> > 	text = null;
> 141,148d220
> <   }
> <   
> <   public void close() throws IOException {
> <       super.close();
> <       searchTerm = null;
> <       field = null;
> <       text = null;
> <   }
> 
> CVS command finished execution
> 
> > --
> To unsubscribe, e-mail:  
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>


__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE : RE : RE : Nullpointer in code

Posted by Rasik Pandey <ra...@ajlsm.com>.
Yes the change was finally in WildCardTermEnum. My apologies for the
less than concise original mail.......

-----Message d'origine-----
De : Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com] 
Envoyé : jeudi 19 septembre 2002 08:09
À : Lucene Developers List
Objet : Re: RE : RE : Nullpointer in code


Ah, that explains the large diff.
The diff is for WildCardTermEnum?

Maybe Doug can comment before we start with defensive programming...

Otis


--- Rasik Pandey <ra...@ajlsm.com> wrote:
> The only significant change in the diff which I sent was this:
> 
> 95c98
> <       if (field == term.field()) {
> ---
> >       if (term != null && field == term.field()) {
> 104c107
> 
> 
> The other changes were just from my IDE reformatting the code.
> 
> -----Message d'origine-----
> De : Rasik Pandey [mailto:rasik.pandey@ajlsm.com]
> Envoyé : jeudi 12 septembre 2002 19:06
> À : 'Lucene Developers List'
> Objet : RE : Nullpointer in code
> 
> 
> Otis,
> Here a the test program that will generate the null pointer and the 
> requested diff. Hope they are helpful.
> 
> Thanks,
> Rasik Pandey
> 
> 
> 
> -----Message d'origine-----
> De : Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com]
> Envoyé : jeudi 12 septembre 2002 18:23
> À : Lucene Developers List
> Cc : rasik.pandey@ajlsm.com
> Objet : Re: Nullpointer in code
> 
> 
> Rasik,
> 
> Thanks for feedback, but that stuff is a bit hard to read. The best 
> way to help would be to write a class that demonstrates this,
> then fix your code to work, then make a diff between your fixed code
> and
> the code in the CVS, and finally, it would be great to have a unit
> test
> for it, but I can write that later.
> 
> Thanks,
> Otis
> 
> 
> --- Rasik Pandey <ra...@ajlsm.com> wrote:
> > Developers,
> > I am encountering a null pointer exception when executing a wild
> card
> > query search on an empty index which doesn't contain any terms  and
> of
> > course not the Term generated from the wild card query (ie the 
> > WildCardTermEnum has an empty "actualEnum"). Please see below for 
> > what i propose to be the fix (simple). I assume that this is 
> > sufficient or would a change in one of the SegmentReader or 
> > TermsInfosReader classes
> > be more appropriate (not likely)?
> > 
> > I do not have access to commit this change, so if you deem that it
> is
> > necessary can you please make the modification.
> > 
> > Cheers,
> > Rasik Pandey
> > 
> > Basically in the constructor of WildCardTermEnum the constructor 
> > calls;
> > 
> >       setEnum(reader.terms(new Term(searchTerm.field(), pre)));
> > 		----or
> > 		super.setEnum(an empty termEnum); or
> FilteredTermEnum.setEnum(an
> > empty termEnum);
> > 
> > 
> > Then in FilteredTermnEnum:
> > protected void setEnum(TermEnum actualEnum) throws IOException {
> >         this.actualEnum = actualEnum;
> >         // Find the first term that matches
> >         
> > 
> > 	!!!!!!!!the result of actualEnum.term(); is null in my
> case!!!!!!!!!
> > 	Term term = actualEnum.term();
> >  
> >
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> >   
> > 
> > 		!!!!!!!!!!!!the below line leads to the null
> pointer!!!!!!!!!!
> > 		if (termCompare(term)) 
> > 		!!!!!!!!!!!!!!!!!!!!see
> below!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> > 
> >             currentTerm = term;
> >         else next();
> >     }
> > 
> > 
> > Then back in WildCardTermEnum:
> > 
> > final protected boolean termCompare(Term term) {
> >       !!!!!!!!!!!the below line should test to ensure that "term"
> is
> > not null!!!!!!
> > 	if (field == term.field()) {
> > 	!!!!!!!!!!!!!!!!see below line for the simple 
> > fix!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> >       
> > 	!!!!!!!!!!!!!!!!!below is the changed line for the simple 
> > fix!!!!!!!!!!!!!!!!!!!!!!!!
> > 	if (term != null && field == term.field()) {
> > 	
> >
>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> > !!!!!!!!!!!!!
> >           String searchText = term.text();
> >           if (searchText.startsWith(pre)) {
> >             return wildcardEquals(text, 0, searchText, preLen);
> >           }
> >       }
> >       endEnum = true;
> >       return false;
> >   }
> > 
> > 
> > --
> > To unsubscribe, e-mail:
> > <ma...@jakarta.apache.org>
> > For additional commands, e-mail: 
> > <ma...@jakarta.apache.org>
> > 
> 
> 
> __________________________________________________
> Yahoo! - We Remember
> 9-11: A tribute to the more than 3,000 lives lost 
> http://dir.remember.yahoo.com/tribute
> 
> --
> To unsubscribe, e-mail: 
> <ma...@jakarta.apache.org>
> For additional commands, e-mail: 
> <ma...@jakarta.apache.org>
> 
> 
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
> 


__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

--
To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: RE : RE : Nullpointer in code

Posted by Otis Gospodnetic <ot...@yahoo.com>.
Ah, that explains the large diff.
The diff is for WildCardTermEnum?

Maybe Doug can comment before we start with defensive programming...

Otis


--- Rasik Pandey <ra...@ajlsm.com> wrote:
> The only significant change in the diff which I sent was this:
> 
> 95c98
> <       if (field == term.field()) {
> ---
> >       if (term != null && field == term.field()) {
> 104c107
> 
> 
> The other changes were just from my IDE reformatting the code.
> 
> -----Message d'origine-----
> De : Rasik Pandey [mailto:rasik.pandey@ajlsm.com] 
> Envoy� : jeudi 12 septembre 2002 19:06
> � : 'Lucene Developers List'
> Objet : RE : Nullpointer in code
> 
> 
> Otis,
> Here a the test program that will generate the null pointer and the
> requested diff. Hope they are helpful.
> 
> Thanks,
> Rasik Pandey
> 
> 
> 
> -----Message d'origine-----
> De : Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com] 
> Envoy� : jeudi 12 septembre 2002 18:23
> � : Lucene Developers List
> Cc : rasik.pandey@ajlsm.com
> Objet : Re: Nullpointer in code
> 
> 
> Rasik,
> 
> Thanks for feedback, but that stuff is a bit hard to read.
> The best way to help would be to write a class that demonstrates
> this,
> then fix your code to work, then make a diff between your fixed code
> and
> the code in the CVS, and finally, it would be great to have a unit
> test
> for it, but I can write that later.
> 
> Thanks,
> Otis
> 
> 
> --- Rasik Pandey <ra...@ajlsm.com> wrote:
> > Developers,
> > I am encountering a null pointer exception when executing a wild
> card
> > query search on an empty index which doesn't contain any terms  and
> of
> > course not the Term generated from the wild card query (ie the
> > WildCardTermEnum has an empty "actualEnum"). Please see below for
> > what i
> > propose to be the fix (simple). I assume that this is sufficient or
> > would a change in one of the SegmentReader or TermsInfosReader
> > classes
> > be more appropriate (not likely)?
> > 
> > I do not have access to commit this change, so if you deem that it
> is
> > necessary can you please make the modification.
> > 
> > Cheers,
> > Rasik Pandey
> > 
> > Basically in the constructor of WildCardTermEnum the constructor
> > calls;
> > 
> >       setEnum(reader.terms(new Term(searchTerm.field(), pre)));
> > 		----or
> > 		super.setEnum(an empty termEnum); or
> FilteredTermEnum.setEnum(an 
> > empty termEnum);
> > 
> > 
> > Then in FilteredTermnEnum:
> > protected void setEnum(TermEnum actualEnum) throws IOException {
> >         this.actualEnum = actualEnum;
> >         // Find the first term that matches
> >         
> > 
> > 	!!!!!!!!the result of actualEnum.term(); is null in my
> case!!!!!!!!!
> > 	Term term = actualEnum.term();
> >  
> >
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> >   
> > 
> > 		!!!!!!!!!!!!the below line leads to the null
> pointer!!!!!!!!!!
> > 		if (termCompare(term)) 
> > 		!!!!!!!!!!!!!!!!!!!!see
> below!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> > 
> >             currentTerm = term;
> >         else next();
> >     }
> > 
> > 
> > Then back in WildCardTermEnum:
> > 
> > final protected boolean termCompare(Term term) {
> >       !!!!!!!!!!!the below line should test to ensure that "term"
> is
> > not null!!!!!!
> > 	if (field == term.field()) {
> > 	!!!!!!!!!!!!!!!!see below line for the simple
> > fix!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> >       
> > 	!!!!!!!!!!!!!!!!!below is the changed line for the simple
> > fix!!!!!!!!!!!!!!!!!!!!!!!!
> > 	if (term != null && field == term.field()) {
> > 	
> >
>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> > !!!!!!!!!!!!!
> >           String searchText = term.text();
> >           if (searchText.startsWith(pre)) {
> >             return wildcardEquals(text, 0, searchText, preLen);
> >           }
> >       }
> >       endEnum = true;
> >       return false;
> >   }
> > 
> > 
> > --
> > To unsubscribe, e-mail: 
> > <ma...@jakarta.apache.org>
> > For additional commands, e-mail: 
> > <ma...@jakarta.apache.org>
> > 
> 
> 
> __________________________________________________
> Yahoo! - We Remember
> 9-11: A tribute to the more than 3,000 lives lost
> http://dir.remember.yahoo.com/tribute
> 
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
> 
> 
> --
> To unsubscribe, e-mail:  
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
> 


__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE : RE : Nullpointer in code

Posted by Rasik Pandey <ra...@ajlsm.com>.
The only significant change in the diff which I sent was this:

95c98
<       if (field == term.field()) {
---
>       if (term != null && field == term.field()) {
104c107


The other changes were just from my IDE reformatting the code.

-----Message d'origine-----
De : Rasik Pandey [mailto:rasik.pandey@ajlsm.com] 
Envoyé : jeudi 12 septembre 2002 19:06
À : 'Lucene Developers List'
Objet : RE : Nullpointer in code


Otis,
Here a the test program that will generate the null pointer and the
requested diff. Hope they are helpful.

Thanks,
Rasik Pandey



-----Message d'origine-----
De : Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com] 
Envoyé : jeudi 12 septembre 2002 18:23
À : Lucene Developers List
Cc : rasik.pandey@ajlsm.com
Objet : Re: Nullpointer in code


Rasik,

Thanks for feedback, but that stuff is a bit hard to read.
The best way to help would be to write a class that demonstrates this,
then fix your code to work, then make a diff between your fixed code and
the code in the CVS, and finally, it would be great to have a unit test
for it, but I can write that later.

Thanks,
Otis


--- Rasik Pandey <ra...@ajlsm.com> wrote:
> Developers,
> I am encountering a null pointer exception when executing a wild card
> query search on an empty index which doesn't contain any terms  and of
> course not the Term generated from the wild card query (ie the
> WildCardTermEnum has an empty "actualEnum"). Please see below for
> what i
> propose to be the fix (simple). I assume that this is sufficient or
> would a change in one of the SegmentReader or TermsInfosReader
> classes
> be more appropriate (not likely)?
> 
> I do not have access to commit this change, so if you deem that it is
> necessary can you please make the modification.
> 
> Cheers,
> Rasik Pandey
> 
> Basically in the constructor of WildCardTermEnum the constructor
> calls;
> 
>       setEnum(reader.terms(new Term(searchTerm.field(), pre)));
> 		----or
> 		super.setEnum(an empty termEnum); or
FilteredTermEnum.setEnum(an 
> empty termEnum);
> 
> 
> Then in FilteredTermnEnum:
> protected void setEnum(TermEnum actualEnum) throws IOException {
>         this.actualEnum = actualEnum;
>         // Find the first term that matches
>         
> 
> 	!!!!!!!!the result of actualEnum.term(); is null in my
case!!!!!!!!!
> 	Term term = actualEnum.term();
>  
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>   
> 
> 		!!!!!!!!!!!!the below line leads to the null
pointer!!!!!!!!!!
> 		if (termCompare(term)) 
> 		!!!!!!!!!!!!!!!!!!!!see
below!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> 
>             currentTerm = term;
>         else next();
>     }
> 
> 
> Then back in WildCardTermEnum:
> 
> final protected boolean termCompare(Term term) {
>       !!!!!!!!!!!the below line should test to ensure that "term" is
> not null!!!!!!
> 	if (field == term.field()) {
> 	!!!!!!!!!!!!!!!!see below line for the simple
> fix!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>       
> 	!!!!!!!!!!!!!!!!!below is the changed line for the simple
> fix!!!!!!!!!!!!!!!!!!!!!!!!
> 	if (term != null && field == term.field()) {
> 	
>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> !!!!!!!!!!!!!
>           String searchText = term.text();
>           if (searchText.startsWith(pre)) {
>             return wildcardEquals(text, 0, searchText, preLen);
>           }
>       }
>       endEnum = true;
>       return false;
>   }
> 
> 
> --
> To unsubscribe, e-mail: 
> <ma...@jakarta.apache.org>
> For additional commands, e-mail: 
> <ma...@jakarta.apache.org>
> 


__________________________________________________
Yahoo! - We Remember
9-11: A tribute to the more than 3,000 lives lost
http://dir.remember.yahoo.com/tribute

--
To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>