[ http://issues.apache.org/jira/browse/LUCENE-689?page=comments#action_12443776 ] Michael Goddard commented on LUCENE-689: ----------------------------------------
Otis, you have an excellent point. At the time I encountered this error, I was in a hurry to get something shipped out. I will solve for why that happened, however perhaps coding this more defensively would be ok, too. So, if the patch suggested above isn't the proper way to deal with it, what about the suggestion that the "field" instance variable be required to be non-null when it is set, so the constructor throws a NullPointerException if it is null? That seems like the correct behavior to me. This patch could be used to provide that behavior: Index: src/java/org/apache/lucene/search/spans/SpanOrQuery.java =================================================================== --- src/java/org/apache/lucene/search/spans/SpanOrQuery.java (revision 466047) +++ src/java/org/apache/lucene/search/spans/SpanOrQuery.java (working copy) @@ -43,6 +43,9 @@ SpanQuery clause = clauses[i]; if (i == 0) { // check field field = clause.getField(); + if (field == null) { + throw new NullPointerException("Field name can not be null."); + } } else if (!clause.getField().equals(field)) { throw new IllegalArgumentException("Clauses must have same field."); } On the other hand, if the field name is in fact an interned string, then the portion of the equals method dealing with it could simply compare references, via "==". That sounds simpler all around. But ensuring the field is non-null may be a good idea, anyhow. > NullPointerException thrown by equals method in SpanOrQuery > ----------------------------------------------------------- > > Key: LUCENE-689 > URL: http://issues.apache.org/jira/browse/LUCENE-689 > Project: Lucene - Java > Issue Type: Bug > Components: Search > Affects Versions: 2.1 > Environment: Java 1.5.0_09, RHEL 3 Linux, Tomcat 5.0.28 > Reporter: Michael Goddard > > Part of our code utilizes the equals method in SpanOrQuery and, in certain > cases (details to follow, if necessary), a NullPointerException gets thrown > as a result of the String "field" being null. After applying the following > patch, the problem disappeared: > Index: src/java/org/apache/lucene/search/spans/SpanOrQuery.java > =================================================================== > --- src/java/org/apache/lucene/search/spans/SpanOrQuery.java (revision > 465065) > +++ src/java/org/apache/lucene/search/spans/SpanOrQuery.java (working copy) > @@ -121,7 +121,8 @@ > final SpanOrQuery that = (SpanOrQuery) o; > if (!clauses.equals(that.clauses)) return false; > - if (!field.equals(that.field)) return false; > + if (field != null && !field.equals(that.field)) return false; > + if (field == null && that.field != null) return false; > return getBoost() == that.getBoost(); > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]