From 9cf30e5ed204be43a936a9494d7178d7c8f989ba Mon Sep 17 00:00:00 2001 From: David Wayne Smiley Date: Wed, 11 Mar 2015 17:46:59 +0000 Subject: [PATCH] LUCENE-4942: Fix BytesRefIteratorTokenStream's attribute clone method. git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1665949 13f79535-47bb-0310-9956-ffa450edef68 --- .../spatial/prefix/BytesRefIteratorTokenStream.java | 4 +++- .../solr/handler/FieldAnalysisRequestHandlerTest.java | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/BytesRefIteratorTokenStream.java b/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/BytesRefIteratorTokenStream.java index a8857d2971c..8ca8e1e7f6a 100644 --- a/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/BytesRefIteratorTokenStream.java +++ b/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/BytesRefIteratorTokenStream.java @@ -87,7 +87,9 @@ class BytesRefIteratorTokenStream extends TokenStream { @Override public BRTermToBytesRefAttributeImpl clone() { - final BRTermToBytesRefAttributeImpl clone = (BRTermToBytesRefAttributeImpl) super.clone(); + // super.clone won't work since we need a new BytesRef reference and it's nice to have it final. The superclass + // has no state to copy anyway. + final BRTermToBytesRefAttributeImpl clone = new BRTermToBytesRefAttributeImpl(); clone.setBytesRef(BytesRef.deepCopyOf(bytes)); return clone; } diff --git a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java index aecf22338ec..e8c8140eea1 100644 --- a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java @@ -31,6 +31,8 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -423,6 +425,12 @@ public class FieldAnalysisRequestHandlerTest extends AnalysisRequestHandlerTestB ((NamedList)result.get("field_types").get("location_rpt")).get("index"); List tokenList = tokens.get("org.apache.lucene.spatial.prefix.BytesRefIteratorTokenStream"); - assertTrue( tokenList.get(0).get("text").toString().startsWith("s") ); + + List vals = new ArrayList<>(tokenList.size()); + for(NamedList v : tokenList) { + vals.add( (String)v.get("text") ); + } + Collections.sort(vals); + assertEquals( "[s, s7, s7w, s7w1+, s9, s9v, s9v2+, sp, spp, spp5+, sv, svk, svk6+]", vals.toString() ); } }