From fc6f3a45f8bdd1518ed49b68fbdc62988b34644b Mon Sep 17 00:00:00 2001 From: Mike McCandless Date: Fri, 19 Jan 2018 08:53:30 -0500 Subject: [PATCH] LUCENE-8130: fix NPE from TermStates.toString --- lucene/CHANGES.txt | 2 ++ .../org/apache/lucene/index/TermStates.java | 2 +- .../apache/lucene/index/TestTermStates.java | 36 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 lucene/core/src/test/org/apache/lucene/index/TestTermStates.java diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 038285ed5ca..6b90215e935 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -144,6 +144,8 @@ Bug Fixes * LUCENE-8120: Fix LatLonBoundingBox's toString() method (Martijn van Groningen, Adrien Grand) +* LUCENE-8130: Fix NullPointerException from TermStates.toString() (Mike McCandless) + Other * LUCENE-8111: IndexOrDocValuesQuery Javadoc references outdated method name. diff --git a/lucene/core/src/java/org/apache/lucene/index/TermStates.java b/lucene/core/src/java/org/apache/lucene/index/TermStates.java index 3282ac84971..4bb83fe4e8f 100644 --- a/lucene/core/src/java/org/apache/lucene/index/TermStates.java +++ b/lucene/core/src/java/org/apache/lucene/index/TermStates.java @@ -224,7 +224,7 @@ public final class TermStates { sb.append("TermStates\n"); for(TermState termState : states) { sb.append(" state="); - sb.append(termState.toString()); + sb.append(termState); sb.append('\n'); } diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTermStates.java b/lucene/core/src/test/org/apache/lucene/index/TestTermStates.java new file mode 100644 index 00000000000..a89fe7bb04a --- /dev/null +++ b/lucene/core/src/test/org/apache/lucene/index/TestTermStates.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.lucene.index; + +import org.apache.lucene.document.Document; +import org.apache.lucene.store.Directory; +import org.apache.lucene.util.IOUtils; +import org.apache.lucene.util.LuceneTestCase; + +public class TestTermStates extends LuceneTestCase { + + public void testToStringOnNullTermState() throws Exception { + Directory dir = newDirectory(); + RandomIndexWriter w = new RandomIndexWriter(random(), dir); + w.addDocument(new Document()); + IndexReader r = w.getReader(); + TermStates states = TermStates.build(r.getContext(), new Term("foo", "bar"), random().nextBoolean()); + assertEquals("TermStates\n state=null\n", states.toString()); + IOUtils.close(r, w, dir); + } +}