lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Goddard (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-689) NullPointerException thrown by equals method in SpanOrQuery
Date Fri, 20 Oct 2006 10:20:36 GMT
    [ 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: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message