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

Reply via email to