You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/06/16 12:08:31 UTC

[01/50] [abbrv] lucene-solr:apiv2: LUCENE-7323: compound file writing now verifies checksum and segment ID for the incoming sub-files, to catch hardware issues or filesystem bugs earlier

Repository: lucene-solr
Updated Branches:
  refs/heads/apiv2 f72c6914a -> b333e6bd0


LUCENE-7323: compound file writing now verifies checksum and segment ID for the incoming sub-files, to catch hardware issues or filesystem bugs earlier


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/067fb25e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/067fb25e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/067fb25e

Branch: refs/heads/apiv2
Commit: 067fb25e4359ed8d5673e385976da7debc0e5b77
Parents: 7e86ba8
Author: Mike McCandless <mi...@apache.org>
Authored: Thu Jun 9 14:48:58 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Thu Jun 9 14:48:58 2016 -0400

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |   6 +
 .../simpletext/SimpleTextDocValuesFormat.java   |   2 +-
 .../simpletext/SimpleTextPostingsFormat.java    |   2 +-
 .../org.apache.lucene.codecs.DocValuesFormat    |   1 -
 .../org.apache.lucene.codecs.PostingsFormat     |   1 -
 .../TestSimpleTextCompoundFormat.java           |  10 +
 .../org/apache/lucene/codecs/CodecUtil.java     |  55 +++-
 .../apache/lucene/codecs/CompoundFormat.java    |   4 +-
 .../codecs/lucene50/Lucene50CompoundFormat.java |  26 +-
 .../codecs/lucene50/Lucene50CompoundReader.java |   5 +-
 .../org/apache/lucene/codecs/TestCodecUtil.java | 306 +++++++++++++++++++
 .../perfield/TestPerFieldDocValuesFormat.java   |   2 +-
 .../perfield/TestPerFieldPostingsFormat2.java   |  12 +-
 .../org/apache/lucene/index/TestAddIndexes.java |   4 +-
 .../org/apache/lucene/index/TestCodecUtil.java  | 305 ------------------
 .../mockrandom/MockRandomPostingsFormat.java    |  13 +-
 .../index/BaseCompoundFormatTestCase.java       | 161 ++++++----
 .../org/apache/lucene/index/RandomCodec.java    |  15 +-
 .../solr/collection1/conf/schema_codec.xml      |   3 -
 .../org/apache/solr/core/TestCodecSupport.java  |   5 -
 20 files changed, 534 insertions(+), 404 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index af74c26..20df7b2 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -12,6 +12,12 @@ Bug Fixes
 
 * LUCENE-6662: Fixed potential resource leaks. (Rishabh Patel via Adrien Grand)
 
+Improvements
+
+* LUCENE-7323: Compound file writing now verifies the incoming
+  sub-files' checkums and segment IDs, to catch hardware issues or
+  filesytem bugs earlier (Robert Muir, Mike McCandless)
+
 Other
 
 * LUCENE-4787: Fixed some highlighting javadocs. (Michael Dodsworth via Adrien

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesFormat.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesFormat.java
index 46ac983..a846dc9 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesFormat.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesFormat.java
@@ -122,7 +122,7 @@ import org.apache.lucene.index.SegmentWriteState;
  *  and saving the offset/etc for each field. 
  *  @lucene.experimental
  */
-public class SimpleTextDocValuesFormat extends DocValuesFormat {
+class SimpleTextDocValuesFormat extends DocValuesFormat {
   
   public SimpleTextDocValuesFormat() {
     super("SimpleText");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPostingsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPostingsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPostingsFormat.java
index a770505..4437120 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPostingsFormat.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPostingsFormat.java
@@ -34,7 +34,7 @@ import org.apache.lucene.index.SegmentWriteState;
  *  any text editor, and even edit it to alter your index.
  *
  *  @lucene.experimental */
-public final class SimpleTextPostingsFormat extends PostingsFormat {
+final class SimpleTextPostingsFormat extends PostingsFormat {
   
   public SimpleTextPostingsFormat() {
     super("SimpleText");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat b/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
index 3e7164d..daef7c5 100644
--- a/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
+++ b/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
@@ -15,4 +15,3 @@
 
 org.apache.lucene.codecs.memory.MemoryDocValuesFormat
 org.apache.lucene.codecs.memory.DirectDocValuesFormat
-org.apache.lucene.codecs.simpletext.SimpleTextDocValuesFormat

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat b/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat
index b82f156..753b6d7 100644
--- a/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat
+++ b/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat
@@ -19,5 +19,4 @@ org.apache.lucene.codecs.memory.DirectPostingsFormat
 org.apache.lucene.codecs.memory.FSTOrdPostingsFormat
 org.apache.lucene.codecs.memory.FSTPostingsFormat
 org.apache.lucene.codecs.memory.MemoryPostingsFormat
-org.apache.lucene.codecs.simpletext.SimpleTextPostingsFormat
 org.apache.lucene.codecs.autoprefix.AutoPrefixPostingsFormat

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextCompoundFormat.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextCompoundFormat.java b/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextCompoundFormat.java
index ea38832..2f54e2c 100644
--- a/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextCompoundFormat.java
+++ b/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextCompoundFormat.java
@@ -27,4 +27,14 @@ public class TestSimpleTextCompoundFormat extends BaseCompoundFormatTestCase {
   protected Codec getCodec() {
     return codec;
   }
+
+  @Override
+  public void testCorruptFilesAreCaught() {
+    // SimpleText does not catch broken sub-files in CFS!
+  }
+
+  @Override
+  public void testMissingCodecHeadersAreCaught() {
+    // SimpleText does not catch broken sub-files in CFS!
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java b/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java
index 62bf2d5..da487d0 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java
@@ -258,6 +258,57 @@ public final class CodecUtil {
     return version;
   }
 
+  /**
+   * Expert: verifies the incoming {@link IndexInput} has an index header
+   * and that its segment ID matches the expected one, and then copies
+   * that index header into the provided {@link DataOutput}.  This is
+   * useful when building compound files.
+   *
+   * @param in Input stream, positioned at the point where the
+   *        index header was previously written. Typically this is located
+   *        at the beginning of the file.
+   * @param out Output stream, where the header will be copied to.
+   * @param expectedID Expected segment ID
+   * @throws CorruptIndexException If the first four bytes are not
+   *         {@link #CODEC_MAGIC}, or if the <code>expectedID</code>
+   *         does not match.
+   * @throws IOException If there is an I/O error reading from the underlying medium.
+   *
+   * @lucene.internal 
+   */
+  public static void verifyAndCopyIndexHeader(IndexInput in, DataOutput out, byte[] expectedID) throws IOException {
+    // make sure it's large enough to have a header and footer
+    if (in.length() < footerLength() + headerLength("")) {
+      throw new CorruptIndexException("compound sub-files must have a valid codec header and footer: file is too small (" + in.length() + " bytes)", in);
+    }
+
+    int actualHeader = in.readInt();
+    if (actualHeader != CODEC_MAGIC) {
+      throw new CorruptIndexException("compound sub-files must have a valid codec header and footer: codec header mismatch: actual header=" + actualHeader + " vs expected header=" + CodecUtil.CODEC_MAGIC, in);
+    }
+
+    // we can't verify these, so we pass-through:
+    String codec = in.readString();
+    int version = in.readInt();
+
+    // verify id:
+    checkIndexHeaderID(in, expectedID);
+
+    // we can't verify extension either, so we pass-through:
+    int suffixLength = in.readByte() & 0xFF;
+    byte[] suffixBytes = new byte[suffixLength];
+    in.readBytes(suffixBytes, 0, suffixLength);
+
+    // now write the header we just verified
+    out.writeInt(CodecUtil.CODEC_MAGIC);
+    out.writeString(codec);
+    out.writeInt(version);
+    out.writeBytes(expectedID, 0, expectedID.length);
+    out.writeByte((byte) suffixLength);
+    out.writeBytes(suffixBytes, 0, suffixLength);
+  }
+
+
   /** Retrieves the full index header from the provided {@link IndexInput}.
    *  This throws {@link CorruptIndexException} if this file does
    * not appear to be an index file. */
@@ -474,7 +525,7 @@ public final class CodecUtil {
    * @throws CorruptIndexException if CRC is formatted incorrectly (wrong bits set)
    * @throws IOException if an i/o error occurs
    */
-  public static long readCRC(IndexInput input) throws IOException {
+  static long readCRC(IndexInput input) throws IOException {
     long value = input.readLong();
     if ((value & 0xFFFFFFFF00000000L) != 0) {
       throw new CorruptIndexException("Illegal CRC-32 checksum: " + value, input);
@@ -487,7 +538,7 @@ public final class CodecUtil {
    * @throws IllegalStateException if CRC is formatted incorrectly (wrong bits set)
    * @throws IOException if an i/o error occurs
    */
-  public static void writeCRC(IndexOutput output) throws IOException {
+  static void writeCRC(IndexOutput output) throws IOException {
     long value = output.getChecksum();
     if ((value & 0xFFFFFFFF00000000L) != 0) {
       throw new IllegalStateException("Illegal CRC-32 checksum: " + value + " (resource=" + output + ")");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/java/org/apache/lucene/codecs/CompoundFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/CompoundFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/CompoundFormat.java
index 954a78e..af1cc2a 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/CompoundFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/CompoundFormat.java
@@ -43,7 +43,9 @@ public abstract class CompoundFormat {
   public abstract Directory getCompoundReader(Directory dir, SegmentInfo si, IOContext context) throws IOException;
   
   /**
-   * Packs the provided segment's files into a compound format.
+   * Packs the provided segment's files into a compound format.  All files referenced
+   * by the provided {@link SegmentInfo} must have {@link CodecUtil#writeIndexHeader}
+   * and {@link CodecUtil#writeFooter}.
    */
   public abstract void write(Directory dir, SegmentInfo si, IOContext context) throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundFormat.java
index 2a40bde..da2b93f 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundFormat.java
@@ -18,17 +18,17 @@ package org.apache.lucene.codecs.lucene50;
 
 
 import java.io.IOException;
-import java.util.Collection;
 
 import org.apache.lucene.codecs.CodecUtil;
 import org.apache.lucene.codecs.CompoundFormat;
 import org.apache.lucene.index.IndexFileNames;
 import org.apache.lucene.index.SegmentInfo;
+import org.apache.lucene.store.ChecksumIndexInput;
 import org.apache.lucene.store.DataOutput;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
-import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.util.StringHelper;
 
 /**
  * Lucene 5.0 compound file format
@@ -76,6 +76,9 @@ public final class Lucene50CompoundFormat extends CompoundFormat {
     String dataFile = IndexFileNames.segmentFileName(si.name, "", DATA_EXTENSION);
     String entriesFile = IndexFileNames.segmentFileName(si.name, "", ENTRIES_EXTENSION);
     
+    byte[] expectedID = si.getId();
+    byte[] id = new byte[StringHelper.ID_LENGTH];
+
     try (IndexOutput data =    dir.createOutput(dataFile, context);
          IndexOutput entries = dir.createOutput(entriesFile, context)) {
       CodecUtil.writeIndexHeader(data,    DATA_CODEC, VERSION_CURRENT, si.getId(), "");
@@ -87,8 +90,23 @@ public final class Lucene50CompoundFormat extends CompoundFormat {
         
         // write bytes for file
         long startOffset = data.getFilePointer();
-        try (IndexInput in = dir.openInput(file, IOContext.READONCE)) {
-          data.copyBytes(in, in.length());
+        try (ChecksumIndexInput in = dir.openChecksumInput(file, IOContext.READONCE)) {
+
+          // just copies the index header, verifying that its id matches what we expect
+          CodecUtil.verifyAndCopyIndexHeader(in, data, si.getId());
+          
+          // copy all bytes except the footer
+          long numBytesToCopy = in.length() - CodecUtil.footerLength() - in.getFilePointer();
+          data.copyBytes(in, numBytesToCopy);
+
+          // verify footer (checksum) matches for the incoming file we are copying
+          long checksum = CodecUtil.checkFooter(in);
+
+          // this is poached from CodecUtil.writeFooter, but we need to use our own checksum, not data.getChecksum(), but I think
+          // adding a public method to CodecUtil to do that is somewhat dangerous:
+          data.writeInt(CodecUtil.FOOTER_MAGIC);
+          data.writeInt(0);
+          data.writeLong(checksum);
         }
         long endOffset = data.getFilePointer();
         

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundReader.java
index a448782..f7de169 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50CompoundReader.java
@@ -100,7 +100,7 @@ final class Lucene50CompoundReader extends Directory {
   }
 
   /** Helper method that reads CFS entries from an input stream */
-  private final Map<String, FileEntry> readEntries(byte[] segmentID, Directory dir, String entriesFileName) throws IOException {
+  private Map<String, FileEntry> readEntries(byte[] segmentID, Directory dir, String entriesFileName) throws IOException {
     Map<String,FileEntry> mapping = null;
     try (ChecksumIndexInput entriesStream = dir.openChecksumInput(entriesFileName, IOContext.READONCE)) {
       Throwable priorE = null;
@@ -140,7 +140,8 @@ final class Lucene50CompoundReader extends Directory {
     final String id = IndexFileNames.stripSegmentName(name);
     final FileEntry entry = entries.get(id);
     if (entry == null) {
-      throw new FileNotFoundException("No sub-file with id " + id + " found (fileName=" + name + " files: " + entries.keySet() + ")");
+      String datFileName = IndexFileNames.segmentFileName(segmentName, "", Lucene50CompoundFormat.DATA_EXTENSION);
+      throw new FileNotFoundException("No sub-file with id " + id + " found in compound file \"" + datFileName + "\" (fileName=" + name + " files: " + entries.keySet() + ")");
     }
     return handle.slice(name, entry.offset, entry.length);
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/test/org/apache/lucene/codecs/TestCodecUtil.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/codecs/TestCodecUtil.java b/lucene/core/src/test/org/apache/lucene/codecs/TestCodecUtil.java
new file mode 100644
index 0000000..d403f81
--- /dev/null
+++ b/lucene/core/src/test/org/apache/lucene/codecs/TestCodecUtil.java
@@ -0,0 +1,306 @@
+/*
+ * 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.codecs;
+
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.lucene.codecs.CodecUtil;
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.store.BufferedChecksumIndexInput;
+import org.apache.lucene.store.ChecksumIndexInput;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.store.RAMFile;
+import org.apache.lucene.store.RAMInputStream;
+import org.apache.lucene.store.RAMOutputStream;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.StringHelper;
+
+/** tests for codecutil methods */
+public class TestCodecUtil extends LuceneTestCase {
+  
+  public void testHeaderLength() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeHeader(output, "FooBar", 5);
+    output.writeString("this is the data");
+    output.close();
+    
+    IndexInput input = new RAMInputStream("file", file);
+    input.seek(CodecUtil.headerLength("FooBar"));
+    assertEquals("this is the data", input.readString());
+    input.close();
+  }
+  
+  public void testWriteTooLongHeader() throws Exception {
+    StringBuilder tooLong = new StringBuilder();
+    for (int i = 0; i < 128; i++) {
+      tooLong.append('a');
+    }
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    expectThrows(IllegalArgumentException.class, () -> {
+      CodecUtil.writeHeader(output, tooLong.toString(), 5);
+    });
+  }
+  
+  public void testWriteNonAsciiHeader() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    expectThrows(IllegalArgumentException.class, () -> {
+      CodecUtil.writeHeader(output, "\u1234", 5);
+    });
+  }
+  
+  public void testReadHeaderWrongMagic() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    output.writeInt(1234);
+    output.close();
+    
+    IndexInput input = new RAMInputStream("file", file);
+    expectThrows(CorruptIndexException.class, () -> {
+      CodecUtil.checkHeader(input, "bogus", 1, 1);
+    });
+  }
+  
+  public void testChecksumEntireFile() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeHeader(output, "FooBar", 5);
+    output.writeString("this is the data");
+    CodecUtil.writeFooter(output);
+    output.close();
+    
+    IndexInput input = new RAMInputStream("file", file);
+    CodecUtil.checksumEntireFile(input);
+    input.close();
+  }
+  
+  public void testCheckFooterValid() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeHeader(output, "FooBar", 5);
+    output.writeString("this is the data");
+    CodecUtil.writeFooter(output);
+    output.close();
+    
+    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
+    Exception mine = new RuntimeException("fake exception");
+    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
+      CodecUtil.checkFooter(input, mine);
+    });
+    assertEquals("fake exception", expected.getMessage());
+    Throwable suppressed[] = expected.getSuppressed();
+    assertEquals(1, suppressed.length);
+    assertTrue(suppressed[0].getMessage().contains("checksum passed"));
+    input.close();
+  }
+  
+  public void testCheckFooterValidAtFooter() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeHeader(output, "FooBar", 5);
+    output.writeString("this is the data");
+    CodecUtil.writeFooter(output);
+    output.close();
+    
+    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
+    CodecUtil.checkHeader(input, "FooBar", 5, 5);
+    assertEquals("this is the data", input.readString());
+    Exception mine = new RuntimeException("fake exception");
+    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
+      CodecUtil.checkFooter(input, mine);
+    });
+    assertEquals("fake exception", expected.getMessage());
+    Throwable suppressed[] = expected.getSuppressed();
+    assertEquals(1, suppressed.length);
+    assertTrue(suppressed[0].getMessage().contains("checksum passed"));
+    input.close();
+  }
+  
+  public void testCheckFooterValidPastFooter() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeHeader(output, "FooBar", 5);
+    output.writeString("this is the data");
+    CodecUtil.writeFooter(output);
+    output.close();
+    
+    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
+    CodecUtil.checkHeader(input, "FooBar", 5, 5);
+    assertEquals("this is the data", input.readString());
+    // bogusly read a byte too far (can happen)
+    input.readByte();
+    Exception mine = new RuntimeException("fake exception");
+    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
+      CodecUtil.checkFooter(input, mine);
+    });
+    assertEquals("fake exception", expected.getMessage());
+    Throwable suppressed[] = expected.getSuppressed();
+    assertEquals(1, suppressed.length);
+    assertTrue(suppressed[0].getMessage().contains("checksum status indeterminate"));
+    input.close();
+  }
+  
+  public void testCheckFooterInvalid() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeHeader(output, "FooBar", 5);
+    output.writeString("this is the data");
+    output.writeInt(CodecUtil.FOOTER_MAGIC);
+    output.writeInt(0);
+    output.writeLong(1234567); // write a bogus checksum
+    output.close();
+    
+    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
+    CodecUtil.checkHeader(input, "FooBar", 5, 5);
+    assertEquals("this is the data", input.readString());
+    Exception mine = new RuntimeException("fake exception");
+    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
+      CodecUtil.checkFooter(input, mine);
+    });
+    assertEquals("fake exception", expected.getMessage());
+    Throwable suppressed[] = expected.getSuppressed();
+    assertEquals(1, suppressed.length);
+    assertTrue(suppressed[0].getMessage().contains("checksum failed"));
+    input.close();
+  }
+  
+  public void testSegmentHeaderLength() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    CodecUtil.writeIndexHeader(output, "FooBar", 5, StringHelper.randomId(), "xyz");
+    output.writeString("this is the data");
+    output.close();
+    
+    IndexInput input = new RAMInputStream("file", file);
+    input.seek(CodecUtil.indexHeaderLength("FooBar", "xyz"));
+    assertEquals("this is the data", input.readString());
+    input.close();
+  }
+  
+  public void testWriteTooLongSuffix() throws Exception {
+    StringBuilder tooLong = new StringBuilder();
+    for (int i = 0; i < 256; i++) {
+      tooLong.append('a');
+    }
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    expectThrows(IllegalArgumentException.class, () -> {
+      CodecUtil.writeIndexHeader(output, "foobar", 5, StringHelper.randomId(), tooLong.toString());
+    });
+  }
+  
+  public void testWriteVeryLongSuffix() throws Exception {
+    StringBuilder justLongEnough = new StringBuilder();
+    for (int i = 0; i < 255; i++) {
+      justLongEnough.append('a');
+    }
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    byte[] id = StringHelper.randomId();
+    CodecUtil.writeIndexHeader(output, "foobar", 5, id, justLongEnough.toString());
+    output.close();
+    
+    IndexInput input = new RAMInputStream("file", file);
+    CodecUtil.checkIndexHeader(input, "foobar", 5, 5, id, justLongEnough.toString());
+    assertEquals(input.getFilePointer(), input.length());
+    assertEquals(input.getFilePointer(), CodecUtil.indexHeaderLength("foobar", justLongEnough.toString()));
+    input.close();
+  }
+  
+  public void testWriteNonAsciiSuffix() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, true);
+    expectThrows(IllegalArgumentException.class, () -> {
+      CodecUtil.writeIndexHeader(output, "foobar", 5, StringHelper.randomId(), "\u1234");
+    });
+  }
+  
+  public void testReadBogusCRC() throws Exception {
+    RAMFile file = new RAMFile();
+    IndexOutput output = new RAMOutputStream(file, false);
+    output.writeLong(-1L); // bad
+    output.writeLong(1L << 32); // bad
+    output.writeLong(-(1L << 32)); // bad
+    output.writeLong((1L << 32) - 1); // ok
+    output.close();
+    IndexInput input = new RAMInputStream("file", file);
+    // read 3 bogus values
+    for (int i = 0; i < 3; i++) {
+      expectThrows(CorruptIndexException.class, () -> {
+        CodecUtil.readCRC(input);
+      });
+    }
+    // good value
+    CodecUtil.readCRC(input);
+  }
+  
+  public void testWriteBogusCRC() throws Exception {
+    RAMFile file = new RAMFile();
+    final IndexOutput output = new RAMOutputStream(file, false);
+    AtomicLong fakeChecksum = new AtomicLong();
+    // wrap the index input where we control the checksum for mocking
+    IndexOutput fakeOutput = new IndexOutput("fake", "fake") {
+      @Override
+      public void close() throws IOException {
+        output.close();
+      }
+
+      @Override
+      public long getFilePointer() {
+        return output.getFilePointer();
+      }
+
+      @Override
+      public long getChecksum() throws IOException {
+        return fakeChecksum.get();
+      }
+
+      @Override
+      public void writeByte(byte b) throws IOException {
+        output.writeByte(b);
+      }
+
+      @Override
+      public void writeBytes(byte[] b, int offset, int length) throws IOException {
+        output.writeBytes(b, offset, length);
+      }
+    };
+    
+    fakeChecksum.set(-1L); // bad
+    expectThrows(IllegalStateException.class, () -> {
+      CodecUtil.writeCRC(fakeOutput);
+    });
+    
+    fakeChecksum.set(1L << 32); // bad
+    expectThrows(IllegalStateException.class, () -> {
+      CodecUtil.writeCRC(fakeOutput);
+    });
+    
+    fakeChecksum.set(-(1L << 32)); // bad
+    expectThrows(IllegalStateException.class, () -> {
+      CodecUtil.writeCRC(fakeOutput);
+    });
+    
+    fakeChecksum.set((1L << 32) - 1); // ok
+    CodecUtil.writeCRC(fakeOutput);
+  }
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldDocValuesFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldDocValuesFormat.java b/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldDocValuesFormat.java
index 2eb0d1a..1ebfb69 100644
--- a/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldDocValuesFormat.java
+++ b/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldDocValuesFormat.java
@@ -79,7 +79,7 @@ public class TestPerFieldDocValuesFormat extends BaseDocValuesFormatTestCase {
     // we don't use RandomIndexWriter because it might add more docvalues than we expect !!!!1
     IndexWriterConfig iwc = newIndexWriterConfig(analyzer);
     final DocValuesFormat fast = TestUtil.getDefaultDocValuesFormat();
-    final DocValuesFormat slow = DocValuesFormat.forName("SimpleText");
+    final DocValuesFormat slow = DocValuesFormat.forName("Memory");
     iwc.setCodec(new AssertingCodec() {
       @Override
       public DocValuesFormat getDocValuesFormatForField(String field) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat2.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat2.java b/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat2.java
index 67d61df..58c37fc 100644
--- a/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat2.java
+++ b/lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat2.java
@@ -24,8 +24,8 @@ import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.PostingsFormat;
 import org.apache.lucene.codecs.asserting.AssertingCodec;
 import org.apache.lucene.codecs.blockterms.LuceneVarGapFixedInterval;
+import org.apache.lucene.codecs.memory.DirectPostingsFormat;
 import org.apache.lucene.codecs.memory.MemoryPostingsFormat;
-import org.apache.lucene.codecs.simpletext.SimpleTextPostingsFormat;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
@@ -33,8 +33,8 @@ import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.LogDocMergePolicy;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
@@ -202,13 +202,13 @@ public class TestPerFieldPostingsFormat2 extends LuceneTestCase {
 
   public static class MockCodec extends AssertingCodec {
     final PostingsFormat luceneDefault = TestUtil.getDefaultPostingsFormat();
-    final PostingsFormat simpleText = new SimpleTextPostingsFormat();
+    final PostingsFormat direct = new DirectPostingsFormat();
     final PostingsFormat memory = new MemoryPostingsFormat();
     
     @Override
     public PostingsFormat getPostingsFormatForField(String field) {
       if (field.equals("id")) {
-        return simpleText;
+        return direct;
       } else if (field.equals("content")) {
         return memory;
       } else {
@@ -219,12 +219,12 @@ public class TestPerFieldPostingsFormat2 extends LuceneTestCase {
 
   public static class MockCodec2 extends AssertingCodec {
     final PostingsFormat luceneDefault = TestUtil.getDefaultPostingsFormat();
-    final PostingsFormat simpleText = new SimpleTextPostingsFormat();
+    final PostingsFormat direct = new DirectPostingsFormat();
     
     @Override
     public PostingsFormat getPostingsFormatForField(String field) {
       if (field.equals("id")) {
-        return simpleText;
+        return direct;
       } else {
         return luceneDefault;
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java b/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
index 9d00c3f..876328a 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
@@ -1086,14 +1086,14 @@ public class TestAddIndexes extends LuceneTestCase {
   }
 
   private static final class CustomPerFieldCodec extends AssertingCodec {
-    private final PostingsFormat simpleTextFormat = PostingsFormat.forName("SimpleText");
+    private final PostingsFormat directFormat = PostingsFormat.forName("Direct");
     private final PostingsFormat defaultFormat = TestUtil.getDefaultPostingsFormat();
     private final PostingsFormat memoryFormat = PostingsFormat.forName("Memory");
 
     @Override
     public PostingsFormat getPostingsFormatForField(String field) {
       if (field.equals("id")) {
-        return simpleTextFormat;
+        return directFormat;
       } else if (field.equals("content")) {
         return memoryFormat;
       } else {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/core/src/test/org/apache/lucene/index/TestCodecUtil.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestCodecUtil.java b/lucene/core/src/test/org/apache/lucene/index/TestCodecUtil.java
deleted file mode 100644
index 9752ce3..0000000
--- a/lucene/core/src/test/org/apache/lucene/index/TestCodecUtil.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * 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 java.io.IOException;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.store.BufferedChecksumIndexInput;
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.RAMFile;
-import org.apache.lucene.store.RAMInputStream;
-import org.apache.lucene.store.RAMOutputStream;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.StringHelper;
-
-/** tests for codecutil methods */
-public class TestCodecUtil extends LuceneTestCase {
-  
-  public void testHeaderLength() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeHeader(output, "FooBar", 5);
-    output.writeString("this is the data");
-    output.close();
-    
-    IndexInput input = new RAMInputStream("file", file);
-    input.seek(CodecUtil.headerLength("FooBar"));
-    assertEquals("this is the data", input.readString());
-    input.close();
-  }
-  
-  public void testWriteTooLongHeader() throws Exception {
-    StringBuilder tooLong = new StringBuilder();
-    for (int i = 0; i < 128; i++) {
-      tooLong.append('a');
-    }
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    expectThrows(IllegalArgumentException.class, () -> {
-      CodecUtil.writeHeader(output, tooLong.toString(), 5);
-    });
-  }
-  
-  public void testWriteNonAsciiHeader() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    expectThrows(IllegalArgumentException.class, () -> {
-      CodecUtil.writeHeader(output, "\u1234", 5);
-    });
-  }
-  
-  public void testReadHeaderWrongMagic() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    output.writeInt(1234);
-    output.close();
-    
-    IndexInput input = new RAMInputStream("file", file);
-    expectThrows(CorruptIndexException.class, () -> {
-      CodecUtil.checkHeader(input, "bogus", 1, 1);
-    });
-  }
-  
-  public void testChecksumEntireFile() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeHeader(output, "FooBar", 5);
-    output.writeString("this is the data");
-    CodecUtil.writeFooter(output);
-    output.close();
-    
-    IndexInput input = new RAMInputStream("file", file);
-    CodecUtil.checksumEntireFile(input);
-    input.close();
-  }
-  
-  public void testCheckFooterValid() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeHeader(output, "FooBar", 5);
-    output.writeString("this is the data");
-    CodecUtil.writeFooter(output);
-    output.close();
-    
-    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
-    Exception mine = new RuntimeException("fake exception");
-    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
-      CodecUtil.checkFooter(input, mine);
-    });
-    assertEquals("fake exception", expected.getMessage());
-    Throwable suppressed[] = expected.getSuppressed();
-    assertEquals(1, suppressed.length);
-    assertTrue(suppressed[0].getMessage().contains("checksum passed"));
-    input.close();
-  }
-  
-  public void testCheckFooterValidAtFooter() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeHeader(output, "FooBar", 5);
-    output.writeString("this is the data");
-    CodecUtil.writeFooter(output);
-    output.close();
-    
-    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
-    CodecUtil.checkHeader(input, "FooBar", 5, 5);
-    assertEquals("this is the data", input.readString());
-    Exception mine = new RuntimeException("fake exception");
-    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
-      CodecUtil.checkFooter(input, mine);
-    });
-    assertEquals("fake exception", expected.getMessage());
-    Throwable suppressed[] = expected.getSuppressed();
-    assertEquals(1, suppressed.length);
-    assertTrue(suppressed[0].getMessage().contains("checksum passed"));
-    input.close();
-  }
-  
-  public void testCheckFooterValidPastFooter() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeHeader(output, "FooBar", 5);
-    output.writeString("this is the data");
-    CodecUtil.writeFooter(output);
-    output.close();
-    
-    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
-    CodecUtil.checkHeader(input, "FooBar", 5, 5);
-    assertEquals("this is the data", input.readString());
-    // bogusly read a byte too far (can happen)
-    input.readByte();
-    Exception mine = new RuntimeException("fake exception");
-    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
-      CodecUtil.checkFooter(input, mine);
-    });
-    assertEquals("fake exception", expected.getMessage());
-    Throwable suppressed[] = expected.getSuppressed();
-    assertEquals(1, suppressed.length);
-    assertTrue(suppressed[0].getMessage().contains("checksum status indeterminate"));
-    input.close();
-  }
-  
-  public void testCheckFooterInvalid() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeHeader(output, "FooBar", 5);
-    output.writeString("this is the data");
-    output.writeInt(CodecUtil.FOOTER_MAGIC);
-    output.writeInt(0);
-    output.writeLong(1234567); // write a bogus checksum
-    output.close();
-    
-    ChecksumIndexInput input = new BufferedChecksumIndexInput(new RAMInputStream("file", file));
-    CodecUtil.checkHeader(input, "FooBar", 5, 5);
-    assertEquals("this is the data", input.readString());
-    Exception mine = new RuntimeException("fake exception");
-    RuntimeException expected = expectThrows(RuntimeException.class, () -> {
-      CodecUtil.checkFooter(input, mine);
-    });
-    assertEquals("fake exception", expected.getMessage());
-    Throwable suppressed[] = expected.getSuppressed();
-    assertEquals(1, suppressed.length);
-    assertTrue(suppressed[0].getMessage().contains("checksum failed"));
-    input.close();
-  }
-  
-  public void testSegmentHeaderLength() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    CodecUtil.writeIndexHeader(output, "FooBar", 5, StringHelper.randomId(), "xyz");
-    output.writeString("this is the data");
-    output.close();
-    
-    IndexInput input = new RAMInputStream("file", file);
-    input.seek(CodecUtil.indexHeaderLength("FooBar", "xyz"));
-    assertEquals("this is the data", input.readString());
-    input.close();
-  }
-  
-  public void testWriteTooLongSuffix() throws Exception {
-    StringBuilder tooLong = new StringBuilder();
-    for (int i = 0; i < 256; i++) {
-      tooLong.append('a');
-    }
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    expectThrows(IllegalArgumentException.class, () -> {
-      CodecUtil.writeIndexHeader(output, "foobar", 5, StringHelper.randomId(), tooLong.toString());
-    });
-  }
-  
-  public void testWriteVeryLongSuffix() throws Exception {
-    StringBuilder justLongEnough = new StringBuilder();
-    for (int i = 0; i < 255; i++) {
-      justLongEnough.append('a');
-    }
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    byte[] id = StringHelper.randomId();
-    CodecUtil.writeIndexHeader(output, "foobar", 5, id, justLongEnough.toString());
-    output.close();
-    
-    IndexInput input = new RAMInputStream("file", file);
-    CodecUtil.checkIndexHeader(input, "foobar", 5, 5, id, justLongEnough.toString());
-    assertEquals(input.getFilePointer(), input.length());
-    assertEquals(input.getFilePointer(), CodecUtil.indexHeaderLength("foobar", justLongEnough.toString()));
-    input.close();
-  }
-  
-  public void testWriteNonAsciiSuffix() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, true);
-    expectThrows(IllegalArgumentException.class, () -> {
-      CodecUtil.writeIndexHeader(output, "foobar", 5, StringHelper.randomId(), "\u1234");
-    });
-  }
-  
-  public void testReadBogusCRC() throws Exception {
-    RAMFile file = new RAMFile();
-    IndexOutput output = new RAMOutputStream(file, false);
-    output.writeLong(-1L); // bad
-    output.writeLong(1L << 32); // bad
-    output.writeLong(-(1L << 32)); // bad
-    output.writeLong((1L << 32) - 1); // ok
-    output.close();
-    IndexInput input = new RAMInputStream("file", file);
-    // read 3 bogus values
-    for (int i = 0; i < 3; i++) {
-      expectThrows(CorruptIndexException.class, () -> {
-        CodecUtil.readCRC(input);
-      });
-    }
-    // good value
-    CodecUtil.readCRC(input);
-  }
-  
-  public void testWriteBogusCRC() throws Exception {
-    RAMFile file = new RAMFile();
-    final IndexOutput output = new RAMOutputStream(file, false);
-    AtomicLong fakeChecksum = new AtomicLong();
-    // wrap the index input where we control the checksum for mocking
-    IndexOutput fakeOutput = new IndexOutput("fake", "fake") {
-      @Override
-      public void close() throws IOException {
-        output.close();
-      }
-
-      @Override
-      public long getFilePointer() {
-        return output.getFilePointer();
-      }
-
-      @Override
-      public long getChecksum() throws IOException {
-        return fakeChecksum.get();
-      }
-
-      @Override
-      public void writeByte(byte b) throws IOException {
-        output.writeByte(b);
-      }
-
-      @Override
-      public void writeBytes(byte[] b, int offset, int length) throws IOException {
-        output.writeBytes(b, offset, length);
-      }
-    };
-    
-    fakeChecksum.set(-1L); // bad
-    expectThrows(IllegalStateException.class, () -> {
-      CodecUtil.writeCRC(fakeOutput);
-    });
-    
-    fakeChecksum.set(1L << 32); // bad
-    expectThrows(IllegalStateException.class, () -> {
-      CodecUtil.writeCRC(fakeOutput);
-    });
-    
-    fakeChecksum.set(-(1L << 32)); // bad
-    expectThrows(IllegalStateException.class, () -> {
-      CodecUtil.writeCRC(fakeOutput);
-    });
-    
-    fakeChecksum.set((1L << 32) - 1); // ok
-    CodecUtil.writeCRC(fakeOutput);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
index 4d943e6..6b87939 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
@@ -19,6 +19,7 @@ package org.apache.lucene.codecs.mockrandom;
 import java.io.IOException;
 import java.util.Random;
 
+import org.apache.lucene.codecs.CodecUtil;
 import org.apache.lucene.codecs.FieldsConsumer;
 import org.apache.lucene.codecs.FieldsProducer;
 import org.apache.lucene.codecs.PostingsFormat;
@@ -47,6 +48,7 @@ import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.IndexFileNames;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.index.SegmentWriteState;
+import org.apache.lucene.store.ChecksumIndexInput;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.util.BytesRef;
@@ -107,11 +109,10 @@ public final class MockRandomPostingsFormat extends PostingsFormat {
     }
 
     final String seedFileName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, SEED_EXT);
-    final IndexOutput out = state.directory.createOutput(seedFileName, state.context);
-    try {
+    try(IndexOutput out = state.directory.createOutput(seedFileName, state.context)) {
+      CodecUtil.writeIndexHeader(out, "MockRandomSeed", 0, state.segmentInfo.getId(), state.segmentSuffix);
       out.writeLong(seed);
-    } finally {
-      out.close();
+      CodecUtil.writeFooter(out);
     }
 
     final Random random = new Random(seed);
@@ -267,8 +268,10 @@ public final class MockRandomPostingsFormat extends PostingsFormat {
   public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException {
 
     final String seedFileName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, SEED_EXT);
-    final IndexInput in = state.directory.openInput(seedFileName, state.context);
+    final ChecksumIndexInput in = state.directory.openChecksumInput(seedFileName, state.context);
+    CodecUtil.checkIndexHeader(in, "MockRandomSeed", 0, 0, state.segmentInfo.getId(), state.segmentSuffix);
     final long seed = in.readLong();
+    CodecUtil.checkFooter(in);
     if (LuceneTestCase.VERBOSE) {
       System.out.println("MockRandomCodec: reading from seg=" + state.segmentInfo.name + " formatID=" + state.segmentSuffix + " seed=" + seed);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/test-framework/src/java/org/apache/lucene/index/BaseCompoundFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseCompoundFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseCompoundFormatTestCase.java
index 7c19596..256b24e 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseCompoundFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseCompoundFormatTestCase.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Random;
 
 import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.codecs.CodecUtil;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.StoredField;
@@ -72,9 +73,9 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
     for (int i=0; i<data.length; i++) {
       String testfile = "_" + i + ".test";
       Directory dir = newDirectory();
-      createSequenceFile(dir, testfile, (byte) 0, data[i]);
-      
       SegmentInfo si = newSegmentInfo(dir, "_" + i);
+      createSequenceFile(dir, testfile, (byte) 0, data[i], si.getId(), "suffix");
+      
       si.setFiles(Collections.singleton(testfile));
       si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
       Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -96,10 +97,10 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
   public void testTwoFiles() throws IOException {
     String files[] = { "_123.d1", "_123.d2" };
     Directory dir = newDirectory();
-    createSequenceFile(dir, files[0], (byte) 0, 15);
-    createSequenceFile(dir, files[1], (byte) 0, 114);
-    
     SegmentInfo si = newSegmentInfo(dir, "_123");
+    createSequenceFile(dir, files[0], (byte) 0, 15, si.getId(), "suffix");
+    createSequenceFile(dir, files[1], (byte) 0, 114, si.getId(), "suffix");
+    
     si.setFiles(Arrays.asList(files));
     si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
     Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -122,11 +123,13 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
     final String testfile = "_123.test";
 
     Directory dir = newDirectory();
-    IndexOutput out = dir.createOutput(testfile, IOContext.DEFAULT);
-    out.writeInt(3);
-    out.close();
-    
     SegmentInfo si = newSegmentInfo(dir, "_123");
+    try (IndexOutput out = dir.createOutput(testfile, IOContext.DEFAULT)) {
+      CodecUtil.writeIndexHeader(out, "Foo", 0, si.getId(), "suffix");
+      out.writeInt(3);
+      CodecUtil.writeFooter(out);
+    }
+    
     si.setFiles(Collections.singleton(testfile));
     si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
     Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -148,11 +151,13 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
         return super.createOutput(name, context);
       }
     };
-    IndexOutput out = dir.createOutput(testfile, myContext);
-    out.writeInt(3);
-    out.close();
-    
     SegmentInfo si = newSegmentInfo(dir, "_123");
+    try (IndexOutput out = dir.createOutput(testfile, myContext)) {
+      CodecUtil.writeIndexHeader(out, "Foo", 0, si.getId(), "suffix");
+      out.writeInt(3);
+      CodecUtil.writeFooter(out);
+    }
+    
     si.setFiles(Collections.singleton(testfile));
     si.getCodec().compoundFormat().write(dir, si, myContext);
     dir.close();
@@ -165,14 +170,16 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
 
     Directory dir = new NRTCachingDirectory(newFSDirectory(createTempDir()), 2.0, 25.0);
 
-    IndexOutput out = dir.createOutput(testfile, context);
-    byte[] bytes = new byte[512];
-    for(int i=0;i<1024*1024;i++) {
-      out.writeBytes(bytes, 0, bytes.length);
+    SegmentInfo si = newSegmentInfo(dir, "_123");
+    try (IndexOutput out = dir.createOutput(testfile, context)) {
+      CodecUtil.writeIndexHeader(out, "Foo", 0, si.getId(), "suffix");
+      byte[] bytes = new byte[512];
+      for(int i=0;i<1024*1024;i++) {
+        out.writeBytes(bytes, 0, bytes.length);
+      }
+      CodecUtil.writeFooter(out);
     }
-    out.close();
     
-    SegmentInfo si = newSegmentInfo(dir, "_123");
     si.setFiles(Collections.singleton(testfile));
     si.getCodec().compoundFormat().write(dir, si, context);
 
@@ -326,17 +333,19 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
     // Setup the test segment
     String segment = "_123";
     int chunk = 1024; // internal buffer size used by the stream
-    createRandomFile(dir, segment + ".zero", 0);
-    createRandomFile(dir, segment + ".one", 1);
-    createRandomFile(dir, segment + ".ten", 10);
-    createRandomFile(dir, segment + ".hundred", 100);
-    createRandomFile(dir, segment + ".big1", chunk);
-    createRandomFile(dir, segment + ".big2", chunk - 1);
-    createRandomFile(dir, segment + ".big3", chunk + 1);
-    createRandomFile(dir, segment + ".big4", 3 * chunk);
-    createRandomFile(dir, segment + ".big5", 3 * chunk - 1);
-    createRandomFile(dir, segment + ".big6", 3 * chunk + 1);
-    createRandomFile(dir, segment + ".big7", 1000 * chunk);
+    SegmentInfo si = newSegmentInfo(dir, "_123");
+    byte[] segId = si.getId();
+    createRandomFile(dir, segment + ".zero", 0, segId);
+    createRandomFile(dir, segment + ".one", 1, segId);
+    createRandomFile(dir, segment + ".ten", 10, segId);
+    createRandomFile(dir, segment + ".hundred", 100, segId);
+    createRandomFile(dir, segment + ".big1", chunk, segId);
+    createRandomFile(dir, segment + ".big2", chunk - 1, segId);
+    createRandomFile(dir, segment + ".big3", chunk + 1, segId);
+    createRandomFile(dir, segment + ".big4", 3 * chunk, segId);
+    createRandomFile(dir, segment + ".big5", 3 * chunk - 1, segId);
+    createRandomFile(dir, segment + ".big6", 3 * chunk + 1, segId);
+    createRandomFile(dir, segment + ".big7", 1000 * chunk, segId);
     
     List<String> files = new ArrayList<>();
     for (String file : dir.listAll()) {
@@ -345,7 +354,6 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
       }
     }
     
-    SegmentInfo si = newSegmentInfo(dir, "_123");
     si.setFiles(files);
     si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
     Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -370,17 +378,19 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
     final int FILE_COUNT = atLeast(500);
     
     List<String> files = new ArrayList<>();
+    SegmentInfo si = newSegmentInfo(dir, "_123");
     for (int fileIdx = 0; fileIdx < FILE_COUNT; fileIdx++) {
       String file = "_123." + fileIdx;
       files.add(file);
-      IndexOutput out = dir.createOutput(file, newIOContext(random()));
-      out.writeByte((byte) fileIdx);
-      out.close();
+      try (IndexOutput out = dir.createOutput(file, newIOContext(random()))) {
+        CodecUtil.writeIndexHeader(out, "Foo", 0, si.getId(), "suffix");
+        out.writeByte((byte) fileIdx);
+        CodecUtil.writeFooter(out);
+      }
     }
     
     assertEquals(0, dir.getFileHandleCount());
     
-    SegmentInfo si = newSegmentInfo(dir, "_123");
     si.setFiles(files);
     si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
     Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -388,6 +398,7 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
     final IndexInput[] ins = new IndexInput[FILE_COUNT];
     for (int fileIdx = 0; fileIdx < FILE_COUNT; fileIdx++) {
       ins[fileIdx] = cfs.openInput("_123." + fileIdx, newIOContext(random()));
+      CodecUtil.checkIndexHeader(ins[fileIdx], "Foo", 0, 0, si.getId(), "suffix");
     }
     
     assertEquals(1, dir.getFileHandleCount());
@@ -631,27 +642,31 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
   }
   
   /** Creates a file of the specified size with random data. */
-  protected static void createRandomFile(Directory dir, String name, int size) throws IOException {
-    IndexOutput os = dir.createOutput(name, newIOContext(random()));
+  protected static void createRandomFile(Directory dir, String name, int size, byte[] segId) throws IOException {
     Random rnd = random();
-    for (int i=0; i<size; i++) {
-      byte b = (byte) rnd.nextInt(256);
-      os.writeByte(b);
+    try (IndexOutput os = dir.createOutput(name, newIOContext(random()))) {
+      CodecUtil.writeIndexHeader(os, "Foo", 0, segId, "suffix");
+      for (int i=0; i<size; i++) {
+        byte b = (byte) rnd.nextInt(256);
+        os.writeByte(b);
+      }
+      CodecUtil.writeFooter(os);
     }
-    os.close();
   }
   
   /** Creates a file of the specified size with sequential data. The first
    *  byte is written as the start byte provided. All subsequent bytes are
    *  computed as start + offset where offset is the number of the byte.
    */
-  protected static void createSequenceFile(Directory dir, String name, byte start, int size) throws IOException {
-    IndexOutput os = dir.createOutput(name, newIOContext(random()));
-    for (int i=0; i < size; i++) {
-      os.writeByte(start);
-      start ++;
+  protected static void createSequenceFile(Directory dir, String name, byte start, int size, byte[] segID, String segSuffix) throws IOException {
+    try (IndexOutput os = dir.createOutput(name, newIOContext(random()))) {
+      CodecUtil.writeIndexHeader(os, "Foo", 0, segID, segSuffix);
+      for (int i=0; i < size; i++) {
+        os.writeByte(start);
+        start ++;
+      }
+      CodecUtil.writeFooter(os);
     }
-    os.close();
   }
   
   protected static void assertSameStreams(String msg, IndexInput expected, IndexInput test) throws IOException {
@@ -724,12 +739,12 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
    */
   protected static Directory createLargeCFS(Directory dir) throws IOException {
     List<String> files = new ArrayList<>();
+    SegmentInfo si = newSegmentInfo(dir, "_123");
     for (int i = 0; i < 20; i++) {
-      createSequenceFile(dir, "_123.f" + i, (byte) 0, 2000);
+      createSequenceFile(dir, "_123.f" + i, (byte) 0, 2000, si.getId(), "suffix");
       files.add("_123.f" + i);
     }
     
-    SegmentInfo si = newSegmentInfo(dir, "_123");
     si.setFiles(files);
     si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
     Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -750,9 +765,9 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
   public void testResourceNameInsideCompoundFile() throws Exception {
     Directory dir = newDirectory();
     String subFile = "_123.xyz";
-    createSequenceFile(dir, subFile, (byte) 0, 10);
-    
     SegmentInfo si = newSegmentInfo(dir, "_123");
+    createSequenceFile(dir, subFile, (byte) 0, 10, si.getId(), "suffix");
+    
     si.setFiles(Collections.singletonList(subFile));
     si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT);
     Directory cfs = si.getCodec().compoundFormat().getCompoundReader(dir, si, IOContext.DEFAULT);
@@ -762,4 +777,48 @@ public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTest
     cfs.close();
     dir.close();
   }
+
+  public void testMissingCodecHeadersAreCaught() throws Exception {
+    Directory dir = newDirectory();
+    String subFile = "_123.xyz";
+
+    // missing codec header
+    try (IndexOutput os = dir.createOutput(subFile, newIOContext(random()))) {
+      for (int i=0; i < 1024; i++) {
+        os.writeByte((byte) i);
+      }
+    }
+
+    SegmentInfo si = newSegmentInfo(dir, "_123");
+    si.setFiles(Collections.singletonList(subFile));
+    Exception e = expectThrows(CorruptIndexException.class, () -> si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT));
+    assertTrue(e.getMessage().contains("codec header mismatch"));
+    dir.close();
+  }
+
+  public void testCorruptFilesAreCaught() throws Exception {
+    Directory dir = newDirectory();
+    String subFile = "_123.xyz";
+
+    // wrong checksum
+    SegmentInfo si = newSegmentInfo(dir, "_123");
+    try (IndexOutput os = dir.createOutput(subFile, newIOContext(random()))) {
+      CodecUtil.writeIndexHeader(os, "Foo", 0, si.getId(), "suffix");
+      for (int i=0; i < 1024; i++) {
+        os.writeByte((byte) i);
+      }
+
+      // write footer w/ wrong checksum
+      os.writeInt(CodecUtil.FOOTER_MAGIC);
+      os.writeInt(0);
+
+      long checksum = os.getChecksum();
+      os.writeLong(checksum+1);
+    }
+
+    si.setFiles(Collections.singletonList(subFile));
+    Exception e = expectThrows(CorruptIndexException.class, () -> si.getCodec().compoundFormat().write(dir, si, IOContext.DEFAULT));
+    assertTrue(e.getMessage().contains("checksum failed (hardware problem?)"));
+    dir.close();
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java b/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java
index c1c33f8..127549f 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;
@@ -50,8 +49,6 @@ import org.apache.lucene.codecs.memory.FSTPostingsFormat;
 import org.apache.lucene.codecs.memory.MemoryDocValuesFormat;
 import org.apache.lucene.codecs.memory.MemoryPostingsFormat;
 import org.apache.lucene.codecs.mockrandom.MockRandomPostingsFormat;
-import org.apache.lucene.codecs.simpletext.SimpleTextDocValuesFormat;
-import org.apache.lucene.codecs.simpletext.SimpleTextPostingsFormat;
 import org.apache.lucene.index.PointValues.IntersectVisitor;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
@@ -159,10 +156,6 @@ public class RandomCodec extends AssertingCodec {
     PostingsFormat codec = previousMappings.get(name);
     if (codec == null) {
       codec = formats.get(Math.abs(perFieldSeed ^ name.hashCode()) % formats.size());
-      if (codec instanceof SimpleTextPostingsFormat && perFieldSeed % 5 != 0) {
-        // make simpletext rarer, choose again
-        codec = formats.get(Math.abs(perFieldSeed ^ name.toUpperCase(Locale.ROOT).hashCode()) % formats.size());
-      }
       previousMappings.put(name, codec);
       // Safety:
       assert previousMappings.size() < 10000: "test went insane";
@@ -175,10 +168,6 @@ public class RandomCodec extends AssertingCodec {
     DocValuesFormat codec = previousDVMappings.get(name);
     if (codec == null) {
       codec = dvFormats.get(Math.abs(perFieldSeed ^ name.hashCode()) % dvFormats.size());
-      if (codec instanceof SimpleTextDocValuesFormat && perFieldSeed % 5 != 0) {
-        // make simpletext rarer, choose again
-        codec = dvFormats.get(Math.abs(perFieldSeed ^ name.toUpperCase(Locale.ROOT).hashCode()) % dvFormats.size());
-      }
       previousDVMappings.put(name, codec);
       // Safety:
       assert previousDVMappings.size() < 10000: "test went insane";
@@ -214,7 +203,7 @@ public class RandomCodec extends AssertingCodec {
         new LuceneFixedGap(TestUtil.nextInt(random, 1, 1000)),
         new LuceneVarGapFixedInterval(TestUtil.nextInt(random, 1, 1000)),
         new LuceneVarGapDocFreqInterval(TestUtil.nextInt(random, 1, 100), TestUtil.nextInt(random, 1, 1000)),
-        random.nextInt(10) == 0 ? new SimpleTextPostingsFormat() : TestUtil.getDefaultPostingsFormat(),
+        TestUtil.getDefaultPostingsFormat(),
         new AssertingPostingsFormat(),
         new MemoryPostingsFormat(true, random.nextFloat()),
         new MemoryPostingsFormat(false, random.nextFloat()));
@@ -223,7 +212,7 @@ public class RandomCodec extends AssertingCodec {
         TestUtil.getDefaultDocValuesFormat(),
         new DirectDocValuesFormat(), // maybe not a great idea...
         new MemoryDocValuesFormat(),
-        random.nextInt(10) == 0 ? new SimpleTextDocValuesFormat() : TestUtil.getDefaultDocValuesFormat(),
+        TestUtil.getDefaultDocValuesFormat(),
         new AssertingDocValuesFormat());
 
     Collections.shuffle(formats, random);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml b/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
index 629396a..8cd0729 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
@@ -17,7 +17,6 @@
 -->
 <schema name="codec" version="1.2">
   <fieldType name="string_direct" class="solr.StrField" postingsFormat="Direct"/>
-  <fieldType name="string_simpletext" class="solr.StrField" postingsFormat="SimpleText"/>
   <fieldType name="string_standard" class="solr.StrField" postingsFormat="Lucene50"/>
 
   <fieldType name="string_disk" class="solr.StrField" docValuesFormat="Lucene54"/>
@@ -37,7 +36,6 @@
   </fieldType>
 
   <field name="string_direct_f" type="string_direct" indexed="true" stored="true"/>
-  <field name="string_simpletext_f" type="string_simpletext" indexed="true" stored="true"/>
   <field name="string_standard_f" type="string_standard" indexed="true" stored="true"/>
 
   <field name="string_disk_f" type="string_disk" indexed="false" stored="false" docValues="true" default=""/>
@@ -46,7 +44,6 @@
   <field name="string_f" type="string" indexed="true" stored="true" docValues="true" required="true"/>
   <field name="text" type="text_general" indexed="true" stored="true"/>
 
-  <dynamicField name="*_simple" type="string_simpletext" indexed="true" stored="true"/>
   <dynamicField name="*_direct" type="string_direct" indexed="true" stored="true"/>
   <dynamicField name="*_standard" type="string_standard" indexed="true" stored="true"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/067fb25e/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
index a1718e6..0fe6a02 100644
--- a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
+++ b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
@@ -51,9 +51,6 @@ public class TestCodecSupport extends SolrTestCaseJ4 {
     SchemaField schemaField = fields.get("string_direct_f");
     PerFieldPostingsFormat format = (PerFieldPostingsFormat) codec.postingsFormat();
     assertEquals("Direct", format.getPostingsFormatForField(schemaField.getName()).getName());
-    schemaField = fields.get("string_simpletext_f");
-    assertEquals("SimpleText",
-        format.getPostingsFormatForField(schemaField.getName()).getName());
     schemaField = fields.get("string_standard_f");
     assertEquals(TestUtil.getDefaultPostingsFormat().getName(), format.getPostingsFormatForField(schemaField.getName()).getName());
     schemaField = fields.get("string_f");
@@ -78,8 +75,6 @@ public class TestCodecSupport extends SolrTestCaseJ4 {
     Codec codec = h.getCore().getCodec();
     PerFieldPostingsFormat format = (PerFieldPostingsFormat) codec.postingsFormat();
 
-    assertEquals("SimpleText", format.getPostingsFormatForField("foo_simple").getName());
-    assertEquals("SimpleText", format.getPostingsFormatForField("bar_simple").getName());
     assertEquals("Direct", format.getPostingsFormatForField("foo_direct").getName());
     assertEquals("Direct", format.getPostingsFormatForField("bar_direct").getName());
     assertEquals(TestUtil.getDefaultPostingsFormat().getName(), format.getPostingsFormatForField("foo_standard").getName());


[20/50] [abbrv] lucene-solr:apiv2: LUCENE-5931: detect when segments were (illegally) replaced when re-opening an IndexReader

Posted by no...@apache.org.
LUCENE-5931: detect when segments were (illegally) replaced when re-opening an IndexReader


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/664e3929
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/664e3929
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/664e3929

Branch: refs/heads/apiv2
Commit: 664e39292bd0a90ed6f20debc872ab74a1d7294f
Parents: 02c6554
Author: Mike McCandless <mi...@apache.org>
Authored: Sun Jun 12 16:56:54 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sun Jun 12 16:56:54 2016 -0400

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |   4 +
 .../org/apache/lucene/index/SegmentReader.java  |  19 +-
 .../lucene/index/StandardDirectoryReader.java   |  54 ++---
 .../lucene/index/TestDirectoryReaderReopen.java | 228 +++++++++++++++++++
 4 files changed, 276 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/664e3929/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 64be39a..5a83c31 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -36,6 +36,10 @@ Improvements
   IndexWriter.setIndexSort, and now works with dimensional points.
   (Adrien Grand, Mike McCandless)
 
+* LUCENE-5931: Detect when an application tries to reopen an
+  IndexReader after (illegally) removing the old index and
+  reindexing (Vitaly Funstein, Robert Muir, Mike McCandless)
+
 Other
 
 * LUCENE-4787: Fixed some highlighting javadocs. (Michael Dodsworth via Adrien

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/664e3929/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java b/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
index e68f818..ed0a06e 100644
--- a/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
+++ b/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
@@ -52,6 +52,9 @@ public final class SegmentReader extends CodecReader {
 
   final SegmentCoreReaders core;
   final SegmentDocValues segDocValues;
+
+  /** True if we are holding RAM only liveDocs or DV updates, i.e. the SegmentCommitInfo delGen doesn't match our liveDocs. */
+  final boolean isNRT;
   
   final DocValuesProducer docValuesProducer;
   final FieldInfos fieldInfos;
@@ -64,6 +67,10 @@ public final class SegmentReader extends CodecReader {
   // TODO: why is this public?
   public SegmentReader(SegmentCommitInfo si, IOContext context) throws IOException {
     this.si = si;
+
+    // We pull liveDocs/DV updates from disk:
+    this.isNRT = false;
+    
     core = new SegmentCoreReaders(si.info.dir, si, context);
     segDocValues = new SegmentDocValues();
     
@@ -100,8 +107,8 @@ public final class SegmentReader extends CodecReader {
    *  deletes file.  Used by openIfChanged. */
   SegmentReader(SegmentCommitInfo si, SegmentReader sr) throws IOException {
     this(si, sr,
-         si.info.getCodec().liveDocsFormat().readLiveDocs(si.info.dir, si, IOContext.READONCE),
-         si.info.maxDoc() - si.getDelCount());
+         si.hasDeletions() ? si.info.getCodec().liveDocsFormat().readLiveDocs(si.info.dir, si, IOContext.READONCE) : null,
+         si.info.maxDoc() - si.getDelCount(), false);
   }
 
   /** Create new SegmentReader sharing core from a previous
@@ -109,6 +116,13 @@ public final class SegmentReader extends CodecReader {
    *  liveDocs.  Used by IndexWriter to provide a new NRT
    *  reader */
   SegmentReader(SegmentCommitInfo si, SegmentReader sr, Bits liveDocs, int numDocs) throws IOException {
+    this(si, sr, liveDocs, numDocs, true);
+  }
+    
+  /** Create new SegmentReader sharing core from a previous
+   *  SegmentReader and using the provided liveDocs, and recording
+   *  whether those liveDocs were carried in ram (isNRT=true). */
+  SegmentReader(SegmentCommitInfo si, SegmentReader sr, Bits liveDocs, int numDocs, boolean isNRT) throws IOException {
     if (numDocs > si.info.maxDoc()) {
       throw new IllegalArgumentException("numDocs=" + numDocs + " but maxDoc=" + si.info.maxDoc());
     }
@@ -117,6 +131,7 @@ public final class SegmentReader extends CodecReader {
     }
     this.si = si;
     this.liveDocs = liveDocs;
+    this.isNRT = isNRT;
     this.numDocs = numDocs;
     this.core = sr.core;
     core.incRef();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/664e3929/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java b/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
index e2f81da..7ac059e 100644
--- a/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
+++ b/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
@@ -19,6 +19,7 @@ package org.apache.lucene.index;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -152,7 +153,6 @@ public final class StandardDirectoryReader extends DirectoryReader {
     }
     
     SegmentReader[] newReaders = new SegmentReader[infos.size()];
-    
     for (int i = infos.size() - 1; i>=0; i--) {
       SegmentCommitInfo commitInfo = infos.info(i);
 
@@ -167,6 +167,12 @@ public final class StandardDirectoryReader extends DirectoryReader {
         oldReader = (SegmentReader) oldReaders.get(oldReaderIndex.intValue());
       }
 
+      // Make a best effort to detect when the app illegally "rm -rf" their
+      // index while a reader was open, and then called openIfChanged:
+      if (oldReader != null && Arrays.equals(commitInfo.info.getId(), oldReader.getSegmentInfo().info.getId()) == false) {
+        throw new IllegalStateException("same segment " + commitInfo.info.name + " has invalid doc count change; likely you are re-opening a reader after illegally removing index files yourself and building a new index in their place.  Use IndexWriter.deleteAll or open a new IndexWriter using OpenMode.CREATE instead");
+      }
+
       boolean success = false;
       try {
         SegmentReader newReader;
@@ -176,35 +182,29 @@ public final class StandardDirectoryReader extends DirectoryReader {
           newReader = new SegmentReader(commitInfo, IOContext.READ);
           newReaders[i] = newReader;
         } else {
-          if (oldReader.getSegmentInfo().getDelGen() == commitInfo.getDelGen()
-              && oldReader.getSegmentInfo().getFieldInfosGen() == commitInfo.getFieldInfosGen()) {
-            // No change; this reader will be shared between
-            // the old and the new one, so we must incRef
-            // it:
-            oldReader.incRef();
-            newReaders[i] = oldReader;
+          if (oldReader.isNRT) {
+            // We must load liveDocs/DV updates from disk:
+            newReaders[i] = new SegmentReader(commitInfo, oldReader);
           } else {
-            // Steal the ref returned by SegmentReader ctor:
-            assert commitInfo.info.dir == oldReader.getSegmentInfo().info.dir;
-
-            // Make a best effort to detect when the app illegally "rm -rf" their
-            // index while a reader was open, and then called openIfChanged:
-            boolean illegalDocCountChange = commitInfo.info.maxDoc() != oldReader.getSegmentInfo().info.maxDoc();
             
-            boolean hasNeitherDeletionsNorUpdates = commitInfo.hasDeletions()== false && commitInfo.hasFieldUpdates() == false;
-
-            boolean deletesWereLost = commitInfo.getDelGen() == -1 && oldReader.getSegmentInfo().getDelGen() != -1;
-
-            if (illegalDocCountChange || hasNeitherDeletionsNorUpdates || deletesWereLost) {
-              throw new IllegalStateException("same segment " + commitInfo.info.name + " has invalid changes; likely you are re-opening a reader after illegally removing index files yourself and building a new index in their place.  Use IndexWriter.deleteAll or OpenMode.CREATE instead");
-            }
-
-            if (oldReader.getSegmentInfo().getDelGen() == commitInfo.getDelGen()) {
-              // only DV updates
-              newReaders[i] = new SegmentReader(commitInfo, oldReader, oldReader.getLiveDocs(), oldReader.numDocs());
+            if (oldReader.getSegmentInfo().getDelGen() == commitInfo.getDelGen()
+                && oldReader.getSegmentInfo().getFieldInfosGen() == commitInfo.getFieldInfosGen()) {
+              // No change; this reader will be shared between
+              // the old and the new one, so we must incRef
+              // it:
+              oldReader.incRef();
+              newReaders[i] = oldReader;
             } else {
-              // both DV and liveDocs have changed
-              newReaders[i] = new SegmentReader(commitInfo, oldReader);
+              // Steal the ref returned by SegmentReader ctor:
+              assert commitInfo.info.dir == oldReader.getSegmentInfo().info.dir;
+
+              if (oldReader.getSegmentInfo().getDelGen() == commitInfo.getDelGen()) {
+                // only DV updates
+                newReaders[i] = new SegmentReader(commitInfo, oldReader, oldReader.getLiveDocs(), oldReader.numDocs());
+              } else {
+                // both DV and liveDocs have changed
+                newReaders[i] = new SegmentReader(commitInfo, oldReader);
+              }
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/664e3929/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
index 6afa091..e2102cb 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
@@ -33,6 +33,7 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.NumericDocValuesField;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.search.IndexSearcher;
@@ -772,4 +773,231 @@ public class TestDirectoryReaderReopen extends LuceneTestCase {
     r.close();
     dir.close();
   }
+
+  /** test reopening backwards from a non-NRT reader (with document deletes) */
+  public void testNRTMdeletes() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+    SnapshotDeletionPolicy snapshotter = new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy());
+    iwc.setIndexDeletionPolicy(snapshotter);
+    IndexWriter writer = new IndexWriter(dir, iwc);
+    writer.commit(); // make sure all index metadata is written out
+  
+    Document doc = new Document();
+    doc.add(new StringField("key", "value1", Field.Store.YES));
+    writer.addDocument(doc);
+ 
+    doc = new Document();
+    doc.add(new StringField("key", "value2", Field.Store.YES));
+    writer.addDocument(doc);
+    
+    writer.commit();
+    
+    IndexCommit ic1 = snapshotter.snapshot();
+    
+    doc = new Document();
+    doc.add(new StringField("key", "value3", Field.Store.YES));
+    writer.updateDocument(new Term("key", "value1"), doc);
+    
+    writer.commit();
+    
+    IndexCommit ic2 = snapshotter.snapshot();
+    DirectoryReader latest = DirectoryReader.open(ic2);
+    assertEquals(2, latest.leaves().size());
+    
+    // This reader will be used for searching against commit point 1
+    DirectoryReader oldest = DirectoryReader.openIfChanged(latest, ic1);
+    assertEquals(1, oldest.leaves().size());
+    
+    // sharing same core
+    assertSame(latest.leaves().get(0).reader().getCoreCacheKey(), oldest.leaves().get(0).reader().getCoreCacheKey());
+    
+    latest.close();
+    oldest.close();
+    
+    snapshotter.release(ic1);
+    snapshotter.release(ic2);
+    writer.close();
+    dir.close();
+  }
+  
+  /** test reopening backwards from an NRT reader (with document deletes) */
+  public void testNRTMdeletes2() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+    SnapshotDeletionPolicy snapshotter = new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy());
+    iwc.setIndexDeletionPolicy(snapshotter);
+    IndexWriter writer = new IndexWriter(dir, iwc);
+    writer.commit(); // make sure all index metadata is written out
+  
+    Document doc = new Document();
+    doc.add(new StringField("key", "value1", Field.Store.YES));
+    writer.addDocument(doc);
+ 
+    doc = new Document();
+    doc.add(new StringField("key", "value2", Field.Store.YES));
+    writer.addDocument(doc);
+    
+    writer.commit();
+    
+    IndexCommit ic1 = snapshotter.snapshot();
+    
+    doc = new Document();
+    doc.add(new StringField("key", "value3", Field.Store.YES));
+    writer.updateDocument(new Term("key", "value1"), doc);
+    
+    DirectoryReader latest = DirectoryReader.open(writer);
+    assertEquals(2, latest.leaves().size());
+    
+    // This reader will be used for searching against commit point 1
+    DirectoryReader oldest = DirectoryReader.openIfChanged(latest, ic1);
+    
+    // This reader should not see the deletion:
+    assertEquals(2, oldest.numDocs());
+    assertFalse(oldest.hasDeletions());
+ 
+    snapshotter.release(ic1);
+    assertEquals(1, oldest.leaves().size());
+    
+    // sharing same core
+    assertSame(latest.leaves().get(0).reader().getCoreCacheKey(), oldest.leaves().get(0).reader().getCoreCacheKey());
+    
+    latest.close();
+    oldest.close();
+    
+    writer.close();
+    dir.close();
+  }
+ 
+  /** test reopening backwards from a non-NRT reader with DV updates */
+  public void testNRTMupdates() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+    SnapshotDeletionPolicy snapshotter = new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy());
+    iwc.setIndexDeletionPolicy(snapshotter);
+    IndexWriter writer = new IndexWriter(dir, iwc);
+    writer.commit(); // make sure all index metadata is written out
+  
+    Document doc = new Document();
+    doc.add(new StringField("key", "value1", Field.Store.YES));
+    doc.add(new NumericDocValuesField("dv", 1));
+    writer.addDocument(doc);
+    
+    writer.commit();
+    
+    IndexCommit ic1 = snapshotter.snapshot();
+    
+    writer.updateNumericDocValue(new Term("key", "value1"), "dv", 2);
+    
+    writer.commit();
+    
+    IndexCommit ic2 = snapshotter.snapshot();
+    DirectoryReader latest = DirectoryReader.open(ic2);
+    assertEquals(1, latest.leaves().size());
+    
+    // This reader will be used for searching against commit point 1
+    DirectoryReader oldest = DirectoryReader.openIfChanged(latest, ic1);
+    assertEquals(1, oldest.leaves().size());
+    
+    // sharing same core
+    assertSame(latest.leaves().get(0).reader().getCoreCacheKey(), oldest.leaves().get(0).reader().getCoreCacheKey());
+    
+    assertEquals(1, getOnlyLeafReader(oldest).getNumericDocValues("dv").get(0));
+    assertEquals(2, getOnlyLeafReader(latest).getNumericDocValues("dv").get(0));
+    
+    latest.close();
+    oldest.close();
+    
+    snapshotter.release(ic1);
+    snapshotter.release(ic2);
+    writer.close();
+    dir.close();
+  }
+ 
+  /** test reopening backwards from an NRT reader with DV updates */
+  public void testNRTMupdates2() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+    SnapshotDeletionPolicy snapshotter = new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy());
+    iwc.setIndexDeletionPolicy(snapshotter);
+    IndexWriter writer = new IndexWriter(dir, iwc);
+    writer.commit(); // make sure all index metadata is written out
+  
+    Document doc = new Document();
+    doc.add(new StringField("key", "value1", Field.Store.YES));
+    doc.add(new NumericDocValuesField("dv", 1));
+    writer.addDocument(doc);
+    
+    writer.commit();
+    
+    IndexCommit ic1 = snapshotter.snapshot();
+    
+    writer.updateNumericDocValue(new Term("key", "value1"), "dv", 2);
+    
+    DirectoryReader latest = DirectoryReader.open(writer);
+    assertEquals(1, latest.leaves().size());
+    
+    // This reader will be used for searching against commit point 1
+    DirectoryReader oldest = DirectoryReader.openIfChanged(latest, ic1);
+    assertEquals(1, oldest.leaves().size());
+    
+    // sharing same core
+    assertSame(latest.leaves().get(0).reader().getCoreCacheKey(), oldest.leaves().get(0).reader().getCoreCacheKey());
+    
+    assertEquals(1, getOnlyLeafReader(oldest).getNumericDocValues("dv").get(0));
+    assertEquals(2, getOnlyLeafReader(latest).getNumericDocValues("dv").get(0));
+    
+    latest.close();
+    oldest.close();
+    
+    snapshotter.release(ic1);
+    writer.close();
+    dir.close();
+  }
+  
+  // LUCENE-5931: we make a "best effort" to catch this abuse and throw a clear(er)
+  // exception than what would otherwise look like hard to explain index corruption during searching
+  public void testDeleteIndexFilesWhileReaderStillOpen() throws Exception {
+    RAMDirectory dir = new RAMDirectory();
+    IndexWriter w = new IndexWriter(dir,
+                                    new IndexWriterConfig(new MockAnalyzer(random())));
+    Document doc = new Document();
+    doc.add(newStringField("field", "value", Field.Store.NO));
+    w.addDocument(doc);
+    // Creates single segment index:
+    w.close();
+ 
+    DirectoryReader r = DirectoryReader.open(dir);
+ 
+    // Abuse: remove all files while reader is open; one is supposed to use IW.deleteAll, or open a new IW with OpenMode.CREATE instead:
+    for(String file : dir.listAll()) {
+      dir.deleteFile(file);
+    }
+ 
+    w = new IndexWriter(dir,
+                        new IndexWriterConfig(new MockAnalyzer(random())));
+    doc = new Document();
+    doc.add(newStringField("field", "value", Field.Store.NO));
+    w.addDocument(doc);
+
+    doc = new Document();
+    doc.add(newStringField("field", "value2", Field.Store.NO));
+    w.addDocument(doc);
+
+    // Writes same segment, this time with two documents:
+    w.commit();
+
+    w.deleteDocuments(new Term("field", "value2"));
+
+    w.addDocument(doc);
+
+    // Writes another segments file, so openIfChanged sees that the index has in fact changed:
+    w.close();
+ 
+    expectThrows(IllegalStateException.class, () -> {
+      DirectoryReader.openIfChanged(r);
+    });
+  }
 }
+
+


[49/50] [abbrv] lucene-solr:apiv2: Merge branch 'master' into apiv2

Posted by no...@apache.org.
Merge branch 'master' into apiv2

Conflicts:
	solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
	solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
	solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
	solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
	solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
	solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b48f4d69
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b48f4d69
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b48f4d69

Branch: refs/heads/apiv2
Commit: b48f4d696261fcb0bd06943c1f8ff16cbe6caa22
Parents: f72c691 5eabffc
Author: Noble Paul <no...@apache.org>
Authored: Thu Jun 16 15:47:46 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Thu Jun 16 15:47:46 2016 +0530

----------------------------------------------------------------------
 .gitignore                                      |    2 +
 dev-tools/idea/.idea/libraries/Ant.xml          |    9 -
 dev-tools/idea/.idea/libraries/JUnit.xml        |    4 +-
 dev-tools/idea/.idea/modules.xml                |    1 +
 dev-tools/idea/.idea/workspace.xml              |   13 +-
 .../lucene/classification/classification.iml    |    2 +
 dev-tools/idea/lucene/tools/tools.iml           |    1 -
 .../idea/solr/contrib/analytics/analytics.iml   |    1 -
 dev-tools/idea/solr/server/server.iml           |   19 +
 .../solr/test-framework/solr-test-framework.iml |    1 +
 dev-tools/maven/lucene/pom.xml.template         |    6 +-
 dev-tools/maven/lucene/sandbox/pom.xml.template |    7 -
 dev-tools/maven/pom.xml.template                |   10 +-
 dev-tools/maven/solr/pom.xml.template           |   14 +-
 dev-tools/scripts/addVersion.py                 |   80 +-
 dev-tools/scripts/buildAndPushRelease.py        |   89 +-
 dev-tools/scripts/checkJavaDocs.py              |   74 +-
 dev-tools/scripts/scriptutil.py                 |   18 +-
 dev-tools/scripts/smokeTestRelease.py           |   25 +-
 lucene/CHANGES.txt                              |  208 +-
 lucene/MIGRATE.txt                              |    5 +
 .../lucene/analysis/ar/ArabicAnalyzer.java      |    1 -
 .../charfilter/HTMLStripCharFilter.java         |    1 -
 .../analysis/charfilter/NormalizeCharMap.java   |    2 -
 .../lucene/analysis/ckb/SoraniAnalyzer.java     |    1 -
 .../HyphenationCompoundWordTokenFilter.java     |    1 -
 ...phenationCompoundWordTokenFilterFactory.java |    1 -
 .../lucene/analysis/core/LowerCaseFilter.java   |    3 +-
 .../lucene/analysis/core/StopAnalyzer.java      |    1 -
 .../lucene/analysis/core/UpperCaseFilter.java   |    3 +-
 .../analysis/el/GreekLowerCaseFilter.java       |    4 +-
 .../lucene/analysis/en/PorterStemmer.java       |    4 -
 .../lucene/analysis/fa/PersianAnalyzer.java     |    1 -
 .../lucene/analysis/hi/HindiAnalyzer.java       |    1 -
 .../lucene/analysis/minhash/MinHashFilter.java  |  504 +++++
 .../analysis/minhash/MinHashFilterFactory.java  |   57 +
 .../lucene/analysis/minhash/package-info.java   |   21 +
 .../WordDelimiterFilterFactory.java             |    2 -
 .../analysis/ngram/EdgeNGramTokenFilter.java    |    7 +-
 .../analysis/ngram/EdgeNGramTokenizer.java      |    1 -
 .../lucene/analysis/ngram/NGramTokenFilter.java |   13 +-
 .../lucene/analysis/ngram/NGramTokenizer.java   |    8 +-
 .../lucene/analysis/nl/DutchAnalyzer.java       |    1 -
 .../pattern/PatternCaptureGroupTokenFilter.java |    1 -
 .../query/QueryAutoStopWordAnalyzer.java        |    1 -
 .../analysis/standard/ClassicTokenizerImpl.java |    1 -
 .../standard/UAX29URLEmailTokenizerFactory.java |    1 -
 .../analysis/synonym/SynonymFilterFactory.java  |    2 -
 .../lucene/analysis/synonym/SynonymMap.java     |    2 -
 .../apache/lucene/analysis/th/ThaiAnalyzer.java |    1 -
 .../lucene/analysis/tr/TurkishAnalyzer.java     |    1 -
 .../lucene/analysis/util/CharArrayMap.java      |   17 +-
 .../lucene/analysis/util/CharTokenizer.java     |    5 +-
 .../lucene/analysis/util/CharacterUtils.java    |  229 +--
 .../analysis/wikipedia/WikipediaTokenizer.java  |    1 -
 .../lucene/collation/CollationKeyAnalyzer.java  |    2 -
 ...ache.lucene.analysis.util.TokenFilterFactory |    1 +
 .../lucene/analysis/ar/TestArabicAnalyzer.java  |    1 -
 .../ar/TestArabicNormalizationFilter.java       |    1 -
 .../bg/TestBulgarianStemFilterFactory.java      |    1 -
 .../analysis/br/TestBrazilianAnalyzer.java      |    1 -
 .../TestHTMLStripCharFilterFactory.java         |    1 -
 .../analysis/cjk/TestCJKWidthFilterFactory.java |    1 -
 .../lucene/analysis/ckb/TestSoraniAnalyzer.java |    1 -
 .../TestSoraniNormalizationFilterFactory.java   |    1 -
 .../commongrams/CommonGramsFilterTest.java      |    1 -
 .../TestCommonGramsQueryFilterFactory.java      |    3 -
 .../analysis/core/TestKeywordAnalyzer.java      |    1 -
 .../lucene/analysis/core/TestRandomChains.java  |    1 -
 .../de/TestGermanLightStemFilterFactory.java    |    1 -
 .../analysis/de/TestGermanStemFilter.java       |    1 -
 .../el/TestGreekLowerCaseFilterFactory.java     |    1 -
 .../analysis/el/TestGreekStemFilterFactory.java |    1 -
 .../en/TestEnglishMinimalStemFilterFactory.java |    1 -
 .../analysis/en/TestKStemFilterFactory.java     |    1 -
 .../en/TestPorterStemFilterFactory.java         |    1 -
 .../lucene/analysis/fa/TestPersianAnalyzer.java |    1 -
 .../TestPersianNormalizationFilterFactory.java  |    1 -
 .../fr/TestFrenchLightStemFilterFactory.java    |    1 -
 .../fr/TestFrenchMinimalStemFilterFactory.java  |    1 -
 .../ga/TestIrishLowerCaseFilterFactory.java     |    1 -
 .../TestGalicianMinimalStemFilterFactory.java   |    1 -
 .../gl/TestGalicianStemFilterFactory.java       |    1 -
 .../lucene/analysis/hi/TestHindiAnalyzer.java   |    1 -
 .../lucene/analysis/hi/TestHindiFilters.java    |    2 -
 .../lucene/analysis/hi/TestHindiNormalizer.java |    4 -
 .../hu/TestHungarianLightStemFilterFactory.java |    1 -
 .../analysis/hunspell/Test64kAffixes.java       |    2 -
 .../analysis/hunspell/TestAllDictionaries.java  |    1 -
 .../analysis/hunspell/TestAllDictionaries2.java |    1 -
 .../analysis/hunspell/TestDictionary.java       |    1 -
 .../hunspell/TestHunspellStemFilter.java        |    1 -
 .../it/TestItalianLightStemFilterFactory.java   |    1 -
 .../analysis/minhash/MinHashFilterTest.java     |  330 ++++
 .../miscellaneous/TestKeywordMarkerFilter.java  |    2 -
 .../TestStemmerOverrideFilter.java              |    4 +-
 .../miscellaneous/TestTrimFilterFactory.java    |    1 -
 .../no/TestNorwegianLightStemFilterFactory.java |    1 -
 .../TestPatternReplaceCharFilterFactory.java    |    1 -
 .../TestPatternReplaceFilterFactory.java        |    1 -
 .../DelimitedPayloadTokenFilterTest.java        |    4 -
 .../pt/TestPortugueseStemFilterFactory.java     |    1 -
 .../reverse/TestReverseStringFilterFactory.java |    1 -
 .../ru/TestRussianLightStemFilterFactory.java   |    1 -
 .../analysis/shingle/ShingleFilterTest.java     |    1 -
 .../shingle/TestShingleFilterFactory.java       |    1 -
 .../standard/TestStandardFactories.java         |    1 -
 .../lucene/analysis/th/TestThaiAnalyzer.java    |    1 -
 .../analysis/util/TestCharacterUtils.java       |  155 +-
 .../collation/ICUCollationKeyAnalyzer.java      |    3 -
 .../icu/TestICUFoldingFilterFactory.java        |    1 -
 .../icu/TestICUNormalizer2FilterFactory.java    |    1 -
 .../icu/TestICUTransformFilterFactory.java      |    1 -
 .../segmentation/TestICUTokenizerFactory.java   |    1 -
 .../lucene/analysis/ja/JapaneseTokenizer.java   |   11 +-
 .../analysis/ja/dict/ConnectionCosts.java       |    1 -
 .../lucene/analysis/ja/dict/UserDictionary.java |    1 -
 .../analysis/ja/TestJapaneseTokenizer.java      |    9 +
 .../analysis/morfologik/MorfologikFilter.java   |    4 +-
 .../TestDoubleMetaphoneFilterFactory.java       |    3 -
 .../analysis/cn/smart/hhmm/WordDictionary.java  |   18 +-
 .../src/java/org/egothor/stemmer/Compile.java   |   43 +-
 .../src/java/org/egothor/stemmer/DiffIt.java    |   28 +-
 .../TestStempelPolishStemFilterFactory.java     |    1 -
 .../uima/UIMAAnnotationsTokenizerFactory.java   |    1 -
 .../lucene/analysis/uima/UIMABaseAnalyzer.java  |    1 -
 ...IMATypeAwareAnnotationsTokenizerFactory.java |    1 -
 .../uima/UIMATypeAwareAnalyzerTest.java         |    1 -
 .../org/apache/lucene/codecs/Placeholder.java   |    1 -
 .../lucene/codecs/lucene50/Lucene50Codec.java   |    2 +-
 .../lucene50/Lucene50SegmentInfoFormat.java     |  101 +
 .../lucene/codecs/lucene54/Lucene54Codec.java   |    2 +
 .../lucene/codecs/lucene60/Lucene60Codec.java   |  177 ++
 .../apache/lucene/codecs/lucene60/package.html  |   25 +
 .../services/org.apache.lucene.codecs.Codec     |    1 +
 .../lucene/codecs/lucene50/Lucene50RWCodec.java |    7 +
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |  136 ++
 .../index/TestBackwardsCompatibility.java       |    9 +-
 .../org/apache/lucene/index/index.6.0.0-cfs.zip |  Bin 0 -> 13744 bytes
 .../apache/lucene/index/index.6.0.0-nocfs.zip   |  Bin 0 -> 13749 bytes
 .../org/apache/lucene/index/index.6.0.1-cfs.zip |  Bin 0 -> 13734 bytes
 .../apache/lucene/index/index.6.0.1-nocfs.zip   |  Bin 0 -> 13735 bytes
 .../lucene/index/unsupported.5.5.1-cfs.zip      |  Bin 0 -> 15553 bytes
 .../lucene/index/unsupported.5.5.1-nocfs.zip    |  Bin 0 -> 13729 bytes
 .../benchmark/byTask/tasks/AddIndexesTask.java  |    3 -
 .../byTask/tasks/CloseTaxonomyReaderTask.java   |   10 +-
 .../benchmark/byTask/tasks/CreateIndexTask.java |    4 +-
 .../byTask/tasks/NearRealtimeReaderTask.java    |    1 -
 .../benchmark/byTask/tasks/OpenReaderTask.java  |    1 -
 .../lucene/benchmark/byTask/tasks/ReadTask.java |    1 -
 .../byTask/tasks/ReopenReaderTask.java          |    1 -
 .../byTask/tasks/RollbackIndexTask.java         |    2 -
 .../byTask/tasks/WriteEnwikiLineDocTask.java    |    1 -
 .../benchmark/quality/utils/SimpleQQParser.java |    1 -
 .../tasks/WriteEnwikiLineDocTaskTest.java       |    4 -
 lucene/build.xml                                |    2 +-
 lucene/classification/build.xml                 |    6 +-
 .../lucene/classification/Classifier.java       |    4 -
 .../SimpleNaiveBayesClassifier.java             |   28 +-
 .../SimpleNaiveBayesDocumentClassifier.java     |   24 -
 .../utils/ConfusionMatrixGenerator.java         |   84 +-
 .../classification/utils/DatasetSplitter.java   |  116 +-
 .../BooleanPerceptronClassifierTest.java        |    2 +-
 .../CachingNaiveBayesClassifierTest.java        |    2 +-
 .../KNearestNeighborClassifierTest.java         |    2 +-
 .../SimpleNaiveBayesClassifierTest.java         |    3 +-
 .../utils/ConfusionMatrixGeneratorTest.java     |   30 +-
 .../classification/utils/DataSplitterTest.java  |   37 +-
 .../utils/DocToDoubleVectorUtilsTest.java       |    2 -
 .../codecs/blockterms/BlockTermsReader.java     |    1 -
 .../blocktreeords/OrdsIntersectTermsEnum.java   |    2 -
 .../blocktreeords/OrdsSegmentTermsEnum.java     |    2 -
 .../lucene/codecs/memory/FSTOrdTermsReader.java |    1 -
 .../codecs/simpletext/SimpleTextBKDReader.java  |    2 +
 .../simpletext/SimpleTextDocValuesFormat.java   |    2 +-
 .../simpletext/SimpleTextFieldsReader.java      |    1 -
 .../simpletext/SimpleTextFieldsWriter.java      |    2 +
 .../simpletext/SimpleTextLiveDocsFormat.java    |    2 -
 .../simpletext/SimpleTextPostingsFormat.java    |    2 +-
 .../simpletext/SimpleTextSegmentInfoFormat.java |  174 +-
 .../SimpleTextStoredFieldsWriter.java           |    1 -
 .../simpletext/SimpleTextTermVectorsReader.java |    1 -
 .../org.apache.lucene.codecs.DocValuesFormat    |    1 -
 .../org.apache.lucene.codecs.PostingsFormat     |    1 -
 .../TestSimpleTextCompoundFormat.java           |   10 +
 lucene/common-build.xml                         |   90 +-
 .../java/org/apache/lucene/analysis/Token.java  |    1 -
 .../java/org/apache/lucene/codecs/Codec.java    |    2 +-
 .../org/apache/lucene/codecs/CodecUtil.java     |   55 +-
 .../apache/lucene/codecs/CompoundFormat.java    |    4 +-
 .../apache/lucene/codecs/DocValuesConsumer.java |  514 ++---
 .../org/apache/lucene/codecs/NormsConsumer.java |   73 +-
 .../org/apache/lucene/codecs/PointsWriter.java  |    3 +-
 .../lucene/codecs/StoredFieldsWriter.java       |   61 +-
 .../apache/lucene/codecs/TermVectorsWriter.java |   78 +-
 .../CompressingStoredFieldsWriter.java          |    6 +
 .../CompressingTermVectorsWriter.java           |    5 +
 .../codecs/lucene50/Lucene50CompoundFormat.java |   26 +-
 .../codecs/lucene50/Lucene50CompoundReader.java |    5 +-
 .../codecs/lucene50/Lucene50PostingsFormat.java |    1 -
 .../lucene50/Lucene50SegmentInfoFormat.java     |  166 --
 .../lucene/codecs/lucene54/package-info.java    |    4 +-
 .../lucene/codecs/lucene60/Lucene60Codec.java   |  176 --
 .../codecs/lucene60/Lucene60PointsReader.java   |    5 +-
 .../codecs/lucene60/Lucene60PointsWriter.java   |   11 +-
 .../lucene/codecs/lucene60/package-info.java    |  397 +---
 .../lucene/codecs/lucene62/Lucene62Codec.java   |  176 ++
 .../lucene62/Lucene62SegmentInfoFormat.java     |  318 +++
 .../lucene/codecs/lucene62/package-info.java    |   24 +
 .../org/apache/lucene/document/BinaryPoint.java |    3 +-
 .../org/apache/lucene/document/DoublePoint.java |    3 +-
 .../org/apache/lucene/document/FloatPoint.java  |    3 +-
 .../org/apache/lucene/document/IntPoint.java    |    3 +-
 .../org/apache/lucene/document/LongPoint.java   |    3 +-
 .../org/apache/lucene/document/StringField.java |    4 +-
 .../org/apache/lucene/geo/GeoEncodingUtils.java |  147 ++
 .../src/java/org/apache/lucene/geo/Polygon.java |  196 --
 .../java/org/apache/lucene/geo/Polygon2D.java   |  477 +++++
 .../java/org/apache/lucene/geo/Rectangle.java   |    2 +-
 .../apache/lucene/index/BufferedUpdates.java    |    7 +-
 .../lucene/index/BufferedUpdatesStream.java     |   30 +-
 .../org/apache/lucene/index/CheckIndex.java     |   99 +
 .../apache/lucene/index/CoalescedUpdates.java   |   14 +-
 .../org/apache/lucene/index/DocIDMerger.java    |  179 ++
 .../java/org/apache/lucene/index/DocValues.java |    2 +-
 .../apache/lucene/index/DocValuesUpdate.java    |    2 +-
 .../apache/lucene/index/DocumentsWriter.java    |   97 +-
 .../index/DocumentsWriterDeleteQueue.java       |  126 +-
 .../index/DocumentsWriterFlushControl.java      |   24 +-
 .../lucene/index/DocumentsWriterPerThread.java  |   46 +-
 .../index/DocumentsWriterPerThreadPool.java     |   21 +-
 .../apache/lucene/index/FilterCodecReader.java  |    6 +
 .../apache/lucene/index/FilterLeafReader.java   |    7 +
 .../org/apache/lucene/index/IndexWriter.java    |  376 +++-
 .../apache/lucene/index/IndexWriterConfig.java  |   26 +-
 .../org/apache/lucene/index/LeafReader.java     |    4 +
 .../lucene/index/LiveIndexWriterConfig.java     |   13 +
 .../lucene/index/MappingMultiPostingsEnum.java  |  124 +-
 .../org/apache/lucene/index/MergePolicy.java    |   63 +-
 .../apache/lucene/index/MergeReaderWrapper.java |  266 +++
 .../org/apache/lucene/index/MergeState.java     |  234 ++-
 .../org/apache/lucene/index/MultiDocValues.java |    2 +-
 .../apache/lucene/index/MultiPostingsEnum.java  |    8 +-
 .../org/apache/lucene/index/MultiSorter.java    |  353 ++++
 .../apache/lucene/index/ParallelLeafReader.java |   19 +
 .../org/apache/lucene/index/PointValues.java    |   38 +-
 .../org/apache/lucene/index/SegmentInfo.java    |   21 +-
 .../org/apache/lucene/index/SegmentMerger.java  |    5 +
 .../org/apache/lucene/index/SegmentReader.java  |   25 +-
 .../lucene/index/SlowCodecReaderWrapper.java    |   11 +
 .../java/org/apache/lucene/index/Sorter.java    |  288 +++
 .../apache/lucene/index/SortingLeafReader.java  |  914 +++++++++
 .../lucene/index/StandardDirectoryReader.java   |   56 +-
 .../index/TermVectorsConsumerPerField.java      |    1 -
 .../apache/lucene/index/TermsHashPerField.java  |    1 -
 .../lucene/index/TrackingIndexWriter.java       |  168 --
 .../org/apache/lucene/index/TwoPhaseCommit.java |    5 +-
 .../apache/lucene/search/BlendedTermQuery.java  |   22 +-
 .../org/apache/lucene/search/BooleanQuery.java  |   19 +-
 .../org/apache/lucene/search/BooleanScorer.java |    6 +-
 .../org/apache/lucene/search/BoostQuery.java    |   17 +-
 .../apache/lucene/search/ConjunctionDISI.java   |  188 +-
 .../apache/lucene/search/ConjunctionScorer.java |    4 +-
 .../lucene/search/ConstantScoreQuery.java       |   15 +-
 .../search/ControlledRealTimeReopenThread.java  |   17 +-
 .../lucene/search/DisjunctionMaxQuery.java      |   18 +-
 .../apache/lucene/search/DocValuesDocIdSet.java |  157 --
 .../lucene/search/DocValuesRewriteMethod.java   |   24 +-
 .../EarlyTerminatingSortingCollector.java       |  129 ++
 .../apache/lucene/search/ExactPhraseScorer.java |    3 +-
 .../apache/lucene/search/FieldValueQuery.java   |   11 +-
 .../lucene/search/FilterLeafCollector.java      |    7 +-
 .../apache/lucene/search/FuzzyTermsEnum.java    |    1 -
 .../org/apache/lucene/search/IndexSearcher.java |    1 +
 .../org/apache/lucene/search/LRUQueryCache.java |  303 ++-
 .../apache/lucene/search/MatchAllDocsQuery.java |   10 +
 .../apache/lucene/search/MatchNoDocsQuery.java  |   29 +-
 .../apache/lucene/search/MultiPhraseQuery.java  |   20 +-
 .../apache/lucene/search/MultiTermQuery.java    |   27 +-
 .../MultiTermQueryConstantScoreWrapper.java     |   13 +-
 .../java/org/apache/lucene/search/Multiset.java |    2 -
 .../apache/lucene/search/NGramPhraseQuery.java  |   16 +-
 .../org/apache/lucene/search/PhraseQuery.java   |   19 +-
 .../apache/lucene/search/PointInSetQuery.java   |   91 +-
 .../apache/lucene/search/PointRangeQuery.java   |   68 +-
 .../java/org/apache/lucene/search/Query.java    |   49 +-
 .../lucene/search/QueryCachingPolicy.java       |   69 +-
 .../org/apache/lucene/search/RegexpQuery.java   |    1 -
 .../lucene/search/SloppyPhraseScorer.java       |    3 +-
 .../src/java/org/apache/lucene/search/Sort.java |    3 +
 .../org/apache/lucene/search/SortField.java     |    3 -
 .../org/apache/lucene/search/SynonymQuery.java  |   15 +-
 .../org/apache/lucene/search/TermQuery.java     |    9 +-
 .../apache/lucene/search/TwoPhaseIterator.java  |   79 +-
 .../search/UsageTrackingQueryCachingPolicy.java |   29 +-
 .../search/spans/FieldMaskingSpanQuery.java     |   24 +-
 .../lucene/search/spans/SpanBoostQuery.java     |   18 +-
 .../lucene/search/spans/SpanContainQuery.java   |   16 +-
 .../search/spans/SpanMultiTermQueryWrapper.java |   14 +-
 .../lucene/search/spans/SpanNearQuery.java      |   42 +-
 .../lucene/search/spans/SpanNotQuery.java       |   21 +-
 .../apache/lucene/search/spans/SpanOrQuery.java |   13 +-
 .../search/spans/SpanPositionCheckQuery.java    |   13 +-
 .../lucene/search/spans/SpanTermQuery.java      |   14 +-
 .../lucene/store/ByteArrayIndexInput.java       |    2 -
 .../org/apache/lucene/store/IndexInput.java     |    5 +
 .../org/apache/lucene/store/NIOFSDirectory.java |    2 +-
 .../lucene/store/NRTCachingDirectory.java       |    5 +-
 .../lucene/store/NativeFSLockFactory.java       |    4 +-
 .../apache/lucene/store/SimpleFSDirectory.java  |    2 +-
 .../lucene/store/SimpleFSLockFactory.java       |    4 +-
 .../java/org/apache/lucene/util/ArrayUtil.java  |  339 +---
 .../org/apache/lucene/util/BitDocIdSet.java     |    3 +
 .../org/apache/lucene/util/BitSetIterator.java  |    3 +
 .../java/org/apache/lucene/util/BitUtil.java    |    4 +-
 .../apache/lucene/util/BytesRefComparator.java  |   55 +
 .../org/apache/lucene/util/BytesRefHash.java    |   37 +-
 .../org/apache/lucene/util/CharsRefBuilder.java |    1 -
 .../org/apache/lucene/util/DocIdSetBuilder.java |  327 +++-
 .../lucene/util/FixedLengthBytesRefArray.java   |   29 +
 .../apache/lucene/util/InPlaceMergeSorter.java  |    2 +-
 .../org/apache/lucene/util/IntroSorter.java     |    2 +-
 .../org/apache/lucene/util/LSBRadixSorter.java  |   36 +-
 .../org/apache/lucene/util/MSBRadixSorter.java  |  219 +++
 .../java/org/apache/lucene/util/SloppyMath.java |    8 +-
 .../src/java/org/apache/lucene/util/Sorter.java |    2 +-
 .../lucene/util/StringMSBRadixSorter.java       |   76 +
 .../java/org/apache/lucene/util/Version.java    |   20 +-
 .../automaton/DaciukMihovAutomatonBuilder.java  |    1 -
 .../org/apache/lucene/util/bkd/BKDReader.java   |   47 +-
 .../org/apache/lucene/util/bkd/BKDWriter.java   |  129 +-
 .../apache/lucene/util/bkd/HeapPointWriter.java |   21 +-
 .../org/apache/lucene/util/fst/Builder.java     |    9 +-
 .../lucene/util/mutable/MutableValueStr.java    |    1 -
 .../util/packed/MonotonicBlockPackedWriter.java |    1 -
 .../lucene/util/packed/MonotonicLongValues.java |    1 -
 .../services/org.apache.lucene.codecs.Codec     |    2 +-
 .../org/apache/lucene/codecs/TestCodecUtil.java |  306 +++
 .../lucene50/TestLucene50SegmentInfoFormat.java |   39 -
 ...cene50StoredFieldsFormatHighCompression.java |    8 +-
 .../lucene53/TestLucene53NormsFormat.java       |    4 +-
 .../lucene54/TestLucene54DocValuesFormat.java   |    2 -
 .../lucene62/TestLucene62SegmentInfoFormat.java |   39 +
 .../perfield/TestPerFieldDocValuesFormat.java   |    2 +-
 .../perfield/TestPerFieldPostingsFormat2.java   |   12 +-
 .../apache/lucene/document/TestFieldType.java   |    2 -
 .../apache/lucene/geo/TestGeoEncodingUtils.java |  151 ++
 .../org/apache/lucene/geo/TestGeoUtils.java     |   83 +-
 .../test/org/apache/lucene/geo/TestPolygon.java |  186 --
 .../org/apache/lucene/geo/TestPolygon2D.java    |  289 +++
 .../org/apache/lucene/index/Test2BPoints.java   |   10 +-
 .../org/apache/lucene/index/Test2BTerms.java    |    2 +-
 .../lucene/index/Test4GBStoredFields.java       |   24 +-
 .../org/apache/lucene/index/TestAddIndexes.java |   55 +-
 .../index/TestBinaryDocValuesUpdates.java       |    2 -
 .../org/apache/lucene/index/TestCodecUtil.java  |  305 ---
 .../org/apache/lucene/index/TestCodecs.java     |    9 +-
 .../index/TestDemoParallelLeafReader.java       |   38 +-
 .../lucene/index/TestDirectoryReader.java       |    1 -
 .../lucene/index/TestDirectoryReaderReopen.java |  228 +++
 .../test/org/apache/lucene/index/TestDoc.java   |    2 +-
 .../apache/lucene/index/TestDocIDMerger.java    |  203 ++
 .../lucene/index/TestDocsAndPositions.java      |    1 -
 .../index/TestDocumentsWriterDeleteQueue.java   |    6 +-
 .../apache/lucene/index/TestFieldsReader.java   |    1 -
 .../lucene/index/TestIndexFileDeleter.java      |    4 -
 .../org/apache/lucene/index/TestIndexInput.java |    4 -
 .../apache/lucene/index/TestIndexSorting.java   | 1370 +++++++++++++
 .../apache/lucene/index/TestIndexWriter.java    |    2 +-
 .../lucene/index/TestIndexWriterCommit.java     |    1 -
 .../lucene/index/TestIndexWriterConfig.java     |    2 -
 .../lucene/index/TestIndexWriterDelete.java     |    4 +-
 .../lucene/index/TestIndexWriterForceMerge.java |    4 -
 .../lucene/index/TestIndexWriterFromReader.java |    1 -
 .../index/TestIndexWriterLockRelease.java       |    2 -
 .../lucene/index/TestIndexWriterOnDiskFull.java |    2 -
 .../index/TestIndexingSequenceNumbers.java      |  638 ++++++
 .../lucene/index/TestMergeRateLimiter.java      |    2 -
 .../lucene/index/TestMixedDocValuesUpdates.java |    1 -
 .../apache/lucene/index/TestMultiTermsEnum.java |    1 -
 .../apache/lucene/index/TestNeverDelete.java    |    2 -
 .../apache/lucene/index/TestNoMergePolicy.java  |    1 -
 .../index/TestNumericDocValuesUpdates.java      |  114 +-
 .../apache/lucene/index/TestOmitPositions.java  |    1 -
 .../org/apache/lucene/index/TestOmitTf.java     |    2 -
 .../index/TestParallelCompositeReader.java      |    2 -
 .../lucene/index/TestParallelLeafReader.java    |   59 +-
 .../lucene/index/TestParallelTermEnum.java      |    1 -
 .../org/apache/lucene/index/TestPayloads.java   |    1 -
 .../lucene/index/TestPerSegmentDeletes.java     |   11 +-
 .../TestPersistentSnapshotDeletionPolicy.java   |    1 -
 .../apache/lucene/index/TestPointValues.java    |   58 +-
 .../apache/lucene/index/TestReaderClosed.java   |    1 -
 .../apache/lucene/index/TestRollingUpdates.java |    2 +-
 .../apache/lucene/index/TestSegmentInfos.java   |    7 +-
 .../apache/lucene/index/TestSegmentMerger.java  |   24 +-
 .../index/TestSnapshotDeletionPolicy.java       |    2 -
 .../org/apache/lucene/index/TestTryDelete.java  |   17 +-
 .../lucene/index/TestTwoPhaseCommitTool.java    |   14 +-
 .../apache/lucene/search/JustCompileSearch.java |   33 +-
 .../org/apache/lucene/search/TestBoolean2.java  |  130 +-
 .../apache/lucene/search/TestBooleanScorer.java |   12 +-
 .../lucene/search/TestConjunctionDISI.java      |   12 +-
 .../lucene/search/TestConstantScoreQuery.java   |   11 +-
 .../TestControlledRealTimeReopenThread.java     |   45 +-
 .../TestEarlyTerminatingSortingCollector.java   |  254 +++
 .../apache/lucene/search/TestIndexSearcher.java |    3 +-
 .../apache/lucene/search/TestLRUQueryCache.java |   94 +-
 .../lucene/search/TestMatchNoDocsQuery.java     |    1 -
 .../apache/lucene/search/TestNeedsScores.java   |   25 +-
 .../apache/lucene/search/TestPhraseQuery.java   |    1 -
 .../apache/lucene/search/TestPointQueries.java  |   27 +-
 .../lucene/search/TestQueryCachingPolicy.java   |   56 -
 .../apache/lucene/search/TestQueryRescorer.java |   31 +-
 .../apache/lucene/search/TestRegexpRandom2.java |    1 -
 .../lucene/search/TestReqExclBulkScorer.java    |    6 +-
 .../apache/lucene/search/TestScorerPerf.java    |   12 +-
 .../lucene/search/TestSimilarityProvider.java   |    1 -
 .../lucene/search/TestSimpleExplanations.java   |   27 +-
 .../TestSimpleExplanationsWithFillerDocs.java   |  126 ++
 .../apache/lucene/search/TestSortRandom.java    |   16 +-
 .../TestUsageTrackingFilterCachingPolicy.java   |   17 +-
 .../search/spans/JustCompileSearchSpans.java    |   14 +-
 .../search/spans/TestNearSpansOrdered.java      |   24 +-
 .../lucene/search/spans/TestSpanCollection.java |   11 +-
 .../lucene/store/TestBufferedIndexInput.java    |    1 -
 .../org/apache/lucene/store/TestDirectory.java  |    1 -
 .../lucene/store/TestFileSwitchDirectory.java   |    1 -
 .../apache/lucene/store/TestRateLimiter.java    |    3 +-
 .../lucene/store/TestSimpleFSLockFactory.java   |    1 -
 .../apache/lucene/util/Test2BPagedBytes.java    |    1 -
 .../org/apache/lucene/util/TestArrayUtil.java   |   64 +-
 .../apache/lucene/util/TestDocIdSetBuilder.java |  198 +-
 .../org/apache/lucene/util/TestIOUtils.java     |    1 -
 .../apache/lucene/util/TestLSBRadixSorter.java  |   29 +-
 .../apache/lucene/util/TestMSBRadixSorter.java  |  117 ++
 .../util/TestRecyclingByteBlockAllocator.java   |    1 -
 .../util/TestRecyclingIntBlockAllocator.java    |    1 -
 .../org/apache/lucene/util/TestSloppyMath.java  |   66 +-
 .../lucene/util/TestStringMSBRadixSorter.java   |   97 +
 .../automaton/FiniteStringsIteratorTest.java    |    1 -
 .../LimitedFiniteStringsIteratorTest.java       |    1 -
 .../org/apache/lucene/util/bkd/TestBKD.java     |   23 +-
 lucene/default-nested-ivy-settings.xml          |   60 +
 lucene/demo/src/java/overview.html              |    2 +-
 .../test/org/apache/lucene/demo/TestDemo.java   |    2 -
 .../TestExpressionAggregationFacetsExample.java |    3 -
 .../demo/facet/TestRangeFacetsExample.java      |    2 -
 .../facet/TestSimpleSortedSetFacetsExample.java |    1 -
 .../lucene/expressions/js/JavascriptLexer.java  |    3 -
 .../lucene/expressions/js/JavascriptParser.java |    3 -
 .../org/apache/lucene/facet/DrillDownQuery.java |   21 +-
 .../apache/lucene/facet/DrillSidewaysQuery.java |   31 +-
 .../apache/lucene/facet/range/DoubleRange.java  |   19 +-
 .../apache/lucene/facet/range/LongRange.java    |   19 +-
 .../DefaultSortedSetDocValuesReaderState.java   |    1 -
 .../directory/DirectoryTaxonomyWriter.java      |   30 +-
 .../apache/lucene/facet/TestDrillSideways.java  |   25 +-
 .../facet/range/TestRangeFacetCounts.java       |   24 +-
 .../lucene/facet/taxonomy/TestFacetLabel.java   |    2 -
 .../taxonomy/directory/TestAddTaxonomy.java     |   14 -
 .../grouping/AbstractGroupFacetCollector.java   |    1 -
 .../search/highlight/GradientFormatter.java     |    2 +-
 .../search/highlight/TermVectorLeafReader.java  |    7 +-
 .../highlight/WeightedSpanTermExtractor.java    |   50 +-
 .../lucene/search/highlight/package-info.java   |    4 +-
 .../search/highlight/HighlighterTest.java       |   64 +-
 .../highlight/OffsetLimitTokenFilterTest.java   |    1 -
 .../custom/HighlightCustomQueryTest.java        |   25 +-
 .../search/vectorhighlight/FieldQueryTest.java  |  102 +-
 .../vectorhighlight/IndexTimeSynonymTest.java   |    4 -
 lucene/ivy-settings.xml                         |   63 -
 lucene/ivy-versions.properties                  |    6 +-
 .../lucene/search/join/GlobalOrdinalsQuery.java |   23 +-
 .../join/GlobalOrdinalsWithScoreQuery.java      |   29 +-
 .../join/PointInSetIncludingScoreQuery.java     |   23 +-
 .../search/join/TermsIncludingScoreQuery.java   |   27 +-
 .../search/join/ToChildBlockJoinQuery.java      |   23 +-
 .../search/join/ToParentBlockJoinCollector.java |    4 +-
 .../search/join/ToParentBlockJoinQuery.java     |   51 +-
 .../lucene/search/join/TestBlockJoin.java       |  163 +-
 .../apache/lucene/search/join/TestJoinUtil.java |   31 +-
 lucene/licenses/asm-5.0.4.jar.sha1              |    1 -
 lucene/licenses/asm-5.1.jar.sha1                |    1 +
 lucene/licenses/asm-commons-5.0.4.jar.sha1      |    1 -
 lucene/licenses/asm-commons-5.1.jar.sha1        |    1 +
 .../apache/lucene/index/memory/MemoryIndex.java |    8 +-
 .../lucene/index/memory/TestMemoryIndex.java    |    6 -
 .../memory/TestMemoryIndexAgainstRAMDir.java    |    1 -
 .../org/apache/lucene/index/IndexSplitter.java  |    2 +-
 .../apache/lucene/index/MergeReaderWrapper.java |  259 ---
 .../lucene/index/MultiPassIndexSplitter.java    |    1 -
 .../index/SlowCompositeReaderWrapper.java       |  275 ---
 .../java/org/apache/lucene/index/Sorter.java    |  287 ---
 .../apache/lucene/index/SortingLeafReader.java  |  940 ---------
 .../apache/lucene/index/SortingMergePolicy.java |  264 ---
 .../java/org/apache/lucene/index/package.html   |   18 -
 .../org/apache/lucene/misc/IndexMergeTool.java  |    4 +-
 .../search/BlockJoinComparatorSource.java       |  224 ---
 .../EarlyTerminatingSortingCollector.java       |  146 --
 .../store/HardlinkCopyDirectoryWrapper.java     |   95 +
 .../apache/lucene/uninverting/DocTermOrds.java  |  886 ---------
 .../apache/lucene/uninverting/FieldCache.java   |  466 -----
 .../lucene/uninverting/FieldCacheImpl.java      | 1085 -----------
 .../uninverting/FieldCacheSanityChecker.java    |  425 ----
 .../lucene/uninverting/UninvertingReader.java   |  391 ----
 .../apache/lucene/uninverting/package-info.java |   21 -
 .../apache/lucene/index/IndexSortingTest.java   |   89 -
 .../org/apache/lucene/index/SorterTestBase.java |  405 ----
 .../lucene/index/SortingLeafReaderTest.java     |   73 -
 .../lucene/index/TestBlockJoinSorter.java       |  128 --
 .../index/TestMultiPassIndexSplitter.java       |    1 -
 .../index/TestSlowCompositeReaderWrapper.java   |   91 -
 .../lucene/index/TestSortingMergePolicy.java    |  201 --
 .../search/TestDiversifiedTopDocsCollector.java |    6 +-
 .../TestEarlyTerminatingSortingCollector.java   |  305 ---
 .../store/TestHardLinkCopyDirectoryWrapper.java |   89 +
 .../lucene/uninverting/TestDocTermOrds.java     |  681 -------
 .../lucene/uninverting/TestFieldCache.java      |  731 -------
 .../uninverting/TestFieldCacheReopen.java       |   70 -
 .../TestFieldCacheSanityChecker.java            |  164 --
 .../lucene/uninverting/TestFieldCacheSort.java  | 1814 ------------------
 .../uninverting/TestFieldCacheSortRandom.java   |  315 ---
 .../uninverting/TestFieldCacheVsDocValues.java  |  592 ------
 .../uninverting/TestFieldCacheWithThreads.java  |  227 ---
 .../uninverting/TestLegacyFieldCache.java       |  498 -----
 .../lucene/uninverting/TestNumericTerms32.java  |  156 --
 .../lucene/uninverting/TestNumericTerms64.java  |  166 --
 .../uninverting/TestUninvertingReader.java      |  395 ----
 .../apache/lucene/util/fst/TestFSTsMisc.java    |    1 -
 .../apache/lucene/queries/BoostingQuery.java    |   27 +-
 .../apache/lucene/queries/CommonTermsQuery.java |   48 +-
 .../apache/lucene/queries/CustomScoreQuery.java |   28 +-
 .../org/apache/lucene/queries/TermsQuery.java   |   36 +-
 .../lucene/queries/function/BoostedQuery.java   |   16 +-
 .../lucene/queries/function/FunctionQuery.java  |   29 +-
 .../queries/function/FunctionRangeQuery.java    |   23 +-
 .../function/valuesource/DoubleFieldSource.java |    1 -
 .../SumTotalTermFreqValueSource.java            |    1 -
 .../lucene/queries/mlt/MoreLikeThisQuery.java   |   55 +-
 .../queries/payloads/PayloadScoreQuery.java     |   29 +-
 .../queries/payloads/SpanPayloadCheckQuery.java |   13 +-
 .../apache/lucene/queries/TermsQueryTest.java   |   18 +-
 .../queries/TestCustomScoreExplanations.java    |   45 +
 .../lucene/queries/mlt/TestMoreLikeThis.java    |    5 +-
 lucene/queryparser/build.xml                    |    2 +-
 .../lucene/queryparser/classic/QueryParser.java |    3 +-
 .../lucene/queryparser/classic/QueryParser.jj   |    2 +-
 .../classic/QueryParserTokenManager.java        |   10 -
 .../complexPhrase/ComplexPhraseQueryParser.java |   50 +-
 .../queryparser/ext/ExtendableQueryParser.java  |    1 -
 .../flexible/core/nodes/QueryNodeImpl.java      |    2 +-
 .../flexible/standard/StandardQueryParser.java  |    2 +-
 .../builders/DummyQueryNodeBuilder.java         |    1 -
 .../StandardSyntaxParserTokenManager.java       |   22 -
 .../MultiFieldQueryNodeProcessor.java           |    1 -
 .../StandardQueryNodeProcessorPipeline.java     |    3 -
 .../surround/parser/QueryParser.java            |    2 -
 .../parser/QueryParserTokenManager.java         |   13 -
 .../surround/query/RewriteQuery.java            |   33 +-
 .../lucene/queryparser/xml/CoreParser.java      |   33 +-
 .../xml/builders/BooleanQueryBuilder.java       |    3 +-
 .../builders/DisjunctionMaxQueryBuilder.java    |    3 +-
 .../xml/builders/FuzzyLikeThisQueryBuilder.java |    3 +-
 .../LegacyNumericRangeQueryBuilder.java         |   36 +-
 .../xml/builders/PointRangeQueryBuilder.java    |   28 +-
 .../queryparser/classic/TestMultiAnalyzer.java  |   51 +-
 .../classic/TestMultiPhraseQueryParsing.java    |    1 -
 .../precedence/TestPrecedenceQueryParser.java   |    1 -
 .../standard/TestMultiAnalyzerQPHelper.java     |    3 -
 .../flexible/standard/TestStandardQP.java       |    2 -
 .../simple/TestSimpleQueryParser.java           |    1 -
 .../xml/CoreParserTestIndexData.java            |   74 +
 .../LegacyNumericRangeQueryWithoutLowerTerm.xml |   31 +
 .../xml/LegacyNumericRangeQueryWithoutRange.xml |   31 +
 .../LegacyNumericRangeQueryWithoutUpperTerm.xml |   31 +
 .../xml/PointRangeQueryWithoutLowerTerm.xml     |   31 +
 .../xml/PointRangeQueryWithoutRange.xml         |   31 +
 .../xml/PointRangeQueryWithoutUpperTerm.xml     |   31 +
 .../lucene/queryparser/xml/TermQueryEmpty.xml   |   18 +
 .../lucene/queryparser/xml/TestCoreParser.java  |  159 +-
 .../xml/TestCorePlusExtensionsParser.java       |   18 +-
 .../xml/TestCorePlusQueriesParser.java          |   18 +-
 .../xml/TestQueryTemplateManager.java           |    1 -
 .../replicator/http/ReplicationService.java     |    3 +-
 .../lucene/replicator/nrt/CopyOneFile.java      |    2 -
 .../apache/lucene/replicator/nrt/CopyState.java |    1 -
 .../org/apache/lucene/replicator/nrt/Node.java  |   10 -
 .../replicator/nrt/ReplicaFileDeleter.java      |    2 -
 .../nrt/SegmentInfosSearcherManager.java        |    1 -
 .../IndexAndTaxonomyRevisionTest.java           |    1 -
 .../lucene/replicator/IndexRevisionTest.java    |    1 -
 .../lucene/replicator/LocalReplicatorTest.java  |    1 -
 .../lucene/replicator/ReplicatorTestCase.java   |    2 -
 .../lucene/replicator/nrt/Connection.java       |    2 -
 .../org/apache/lucene/replicator/nrt/Jobs.java  |    2 -
 .../lucene/replicator/nrt/SimpleCopyJob.java    |   35 -
 .../lucene/replicator/nrt/SimpleTransLog.java   |    3 -
 .../replicator/nrt/TestNRTReplication.java      |    1 -
 .../nrt/TestStressNRTReplication.java           |    1 -
 lucene/sandbox/build.xml                        |   35 -
 .../idversion/IDVersionPostingsReader.java      |    1 -
 .../idversion/IDVersionSegmentTermsEnum.java    |    1 -
 .../apache/lucene/document/HalfFloatPoint.java  |  425 ++++
 .../lucene/document/InetAddressPoint.java       |   59 +-
 .../lucene/document/LatLonDocValuesField.java   |  135 ++
 .../org/apache/lucene/document/LatLonGrid.java  |  155 --
 .../org/apache/lucene/document/LatLonPoint.java |  267 ++-
 .../document/LatLonPointDistanceComparator.java |   27 +-
 .../document/LatLonPointDistanceQuery.java      |  196 +-
 .../document/LatLonPointInPolygonQuery.java     |  135 +-
 .../apache/lucene/document/NearestNeighbor.java |  308 +++
 .../sandbox/queries/FuzzyLikeThisQuery.java     |   45 +-
 .../sandbox/queries/SlowFuzzyTermsEnum.java     |    1 -
 .../lucene/search/DocValuesNumbersQuery.java    |   20 +-
 .../lucene/search/DocValuesRangeQuery.java      |   24 +-
 .../lucene/search/DocValuesTermsQuery.java      |   19 +-
 .../lucene/search/TermAutomatonQuery.java       |   40 +-
 .../search/TokenStreamToTermAutomatonQuery.java |    2 -
 .../lucene/document/TestHalfFloatPoint.java     |  243 +++
 .../lucene/document/TestInetAddressPoint.java   |   54 +
 .../document/TestLatLonDocValuesField.java      |   30 +
 .../apache/lucene/document/TestLatLonGrid.java  |   50 -
 .../apache/lucene/document/TestLatLonPoint.java |  184 +-
 .../document/TestLatLonPointDistanceSort.java   |   33 +-
 .../org/apache/lucene/document/TestNearest.java |  253 +++
 .../lucene/search/TestLatLonPointQueries.java   |    7 +-
 .../lucene/search/TestTermAutomatonQuery.java   |   18 +-
 lucene/site/changes/changes2html.pl             |    4 +-
 lucene/site/xsl/index.xsl                       |   14 +-
 .../spatial/composite/CompositeVerifyQuery.java |   21 +-
 .../composite/IntersectsRPTVerifyQuery.java     |   28 +-
 .../spatial/prefix/AbstractPrefixTreeQuery.java |   30 +-
 .../spatial/prefix/HeatmapFacetCounter.java     |   34 +-
 .../prefix/IntersectsPrefixTreeQuery.java       |   15 +-
 .../prefix/tree/DateRangePrefixTree.java        |  229 ++-
 .../serialized/SerializedDVStrategy.java        |   14 +-
 .../spatial/prefix/DateNRStrategyTest.java      |    4 +-
 .../spatial/prefix/HeatmapFacetCounterTest.java |   27 +-
 .../prefix/tree/DateRangePrefixTreeTest.java    |   48 +-
 .../lucene/spatial/spatial4j/Geo3dRptTest.java  |   10 +-
 .../Geo3dShapeRectRelationTestCase.java         |    6 +-
 .../Geo3dShapeSphereModelRectRelationTest.java  |    6 +-
 .../geopoint/document/GeoPointField.java        |  224 ++-
 .../geopoint/document/GeoPointTokenStream.java  |   21 +-
 .../geopoint/search/GeoPointDistanceQuery.java  |   27 +-
 .../search/GeoPointDistanceQueryImpl.java       |    5 +-
 .../geopoint/search/GeoPointInBBoxQuery.java    |   54 +-
 .../search/GeoPointInBBoxQueryImpl.java         |    5 +-
 .../geopoint/search/GeoPointInPolygonQuery.java |   42 +-
 .../search/GeoPointInPolygonQueryImpl.java      |   21 +-
 .../geopoint/search/GeoPointMultiTermQuery.java |    7 +-
 .../search/GeoPointNumericTermsEnum.java        |  161 --
 .../search/GeoPointPrefixTermsEnum.java         |  239 ---
 .../GeoPointTermQueryConstantScoreWrapper.java  |   28 +-
 .../geopoint/search/GeoPointTermsEnum.java      |  227 ++-
 .../lucene/spatial/util/GeoEncodingUtils.java   |  152 --
 .../lucene/spatial/util/MortonEncoder.java      |  103 +
 .../geopoint/search/TestGeoPointQuery.java      |   39 +-
 .../search/TestLegacyGeoPointQuery.java         |   81 -
 .../spatial/util/BaseGeoPointTestCase.java      | 1512 ---------------
 .../spatial/util/TestGeoEncodingUtils.java      |  101 -
 .../lucene/spatial/util/TestGeoPointField.java  |   51 +
 .../lucene/spatial/util/TestMortonEncoder.java  |  108 ++
 .../lucene/spatial3d/Geo3DDocValuesField.java   |  426 ++++
 .../org/apache/lucene/spatial3d/Geo3DPoint.java |  121 +-
 .../spatial3d/Geo3DPointDistanceComparator.java |  166 ++
 .../Geo3DPointOutsideDistanceComparator.java    |  137 ++
 .../spatial3d/Geo3DPointOutsideSortField.java   |   96 +
 .../lucene/spatial3d/Geo3DPointSortField.java   |   96 +
 .../org/apache/lucene/spatial3d/Geo3DUtil.java  |  278 ++-
 .../spatial3d/PointInGeo3DShapeQuery.java       |  101 +-
 .../spatial3d/PointInShapeIntersectVisitor.java |  118 ++
 .../lucene/spatial3d/geom/ArcDistance.java      |   15 +
 .../apache/lucene/spatial3d/geom/Bounds.java    |   11 +
 .../lucene/spatial3d/geom/DistanceStyle.java    |   28 +
 .../lucene/spatial3d/geom/GeoBBoxFactory.java   |    3 +-
 .../spatial3d/geom/GeoBaseDistanceShape.java    |   14 +-
 .../spatial3d/geom/GeoComplexPolygon.java       | 1234 ++++++++++++
 .../geom/GeoCompositeMembershipShape.java       |    2 +-
 .../spatial3d/geom/GeoConcavePolygon.java       |  218 ++-
 .../lucene/spatial3d/geom/GeoConvexPolygon.java |  194 +-
 .../spatial3d/geom/GeoDegeneratePoint.java      |    8 +-
 .../lucene/spatial3d/geom/GeoDistance.java      |    7 +-
 .../lucene/spatial3d/geom/GeoDistanceShape.java |   12 +
 .../spatial3d/geom/GeoLongitudeSlice.java       |    1 +
 .../spatial3d/geom/GeoNorthRectangle.java       |    1 +
 .../apache/lucene/spatial3d/geom/GeoPoint.java  |    4 +-
 .../spatial3d/geom/GeoPolygonFactory.java       |  977 ++++++++--
 .../lucene/spatial3d/geom/GeoRectangle.java     |    1 +
 .../spatial3d/geom/GeoSouthRectangle.java       |    1 +
 .../spatial3d/geom/GeoStandardCircle.java       |    6 +
 .../lucene/spatial3d/geom/GeoStandardPath.java  |   22 +-
 .../spatial3d/geom/GeoWideLongitudeSlice.java   |    1 +
 .../spatial3d/geom/GeoWideNorthRectangle.java   |    1 +
 .../lucene/spatial3d/geom/GeoWideRectangle.java |    1 +
 .../spatial3d/geom/GeoWideSouthRectangle.java   |    1 +
 .../lucene/spatial3d/geom/LatLonBounds.java     |   24 +-
 .../lucene/spatial3d/geom/LinearDistance.java   |   15 +
 .../spatial3d/geom/LinearSquaredDistance.java   |   15 +
 .../lucene/spatial3d/geom/NormalDistance.java   |   15 +
 .../spatial3d/geom/NormalSquaredDistance.java   |   15 +
 .../org/apache/lucene/spatial3d/geom/Plane.java |  889 ++++++++-
 .../lucene/spatial3d/geom/PlanetModel.java      |   27 +-
 .../lucene/spatial3d/geom/SidedPlane.java       |   34 +
 .../lucene/spatial3d/geom/StandardXYZSolid.java |   55 +-
 .../apache/lucene/spatial3d/geom/Vector.java    |   64 +-
 .../apache/lucene/spatial3d/geom/XYZBounds.java |   59 +-
 .../lucene/spatial3d/TestGeo3DDocValues.java    |   53 +
 .../apache/lucene/spatial3d/TestGeo3DPoint.java | 1114 ++++++++---
 .../lucene/spatial3d/geom/GeoBBoxTest.java      |   19 +-
 .../lucene/spatial3d/geom/GeoCircleTest.java    |   27 +-
 .../lucene/spatial3d/geom/GeoPathTest.java      |    8 +-
 .../lucene/spatial3d/geom/GeoPolygonTest.java   |  611 +++++-
 .../apache/lucene/spatial3d/geom/PlaneTest.java |   20 +
 .../lucene/search/spell/DirectSpellChecker.java |    2 -
 .../lucene/search/spell/LuceneDictionary.java   |    1 -
 .../search/spell/WordBreakSpellChecker.java     |    1 -
 .../analyzing/AnalyzingInfixSuggester.java      |    9 +-
 .../search/suggest/analyzing/FSTUtil.java       |    1 -
 .../suggest/analyzing/SuggestStopFilter.java    |    1 -
 .../search/suggest/document/ContextQuery.java   |   13 +-
 .../suggest/document/PrefixCompletionQuery.java |   10 +
 .../suggest/document/RegexCompletionQuery.java  |    9 +
 .../suggest/fst/FSTCompletionBuilder.java       |    1 -
 .../search/suggest/jaspell/JaspellLookup.java   |    1 -
 .../jaspell/JaspellTernarySearchTrie.java       |   83 +-
 .../search/suggest/FileDictionaryTest.java      |    1 -
 .../lucene/search/suggest/PersistenceTest.java  |    1 -
 .../analyzing/AnalyzingInfixSuggesterTest.java  |    4 +-
 .../analyzing/AnalyzingSuggesterTest.java       |    1 -
 .../suggest/analyzing/FuzzySuggesterTest.java   |    1 -
 .../suggest/document/TestSuggestField.java      |    4 +-
 .../search/suggest/fst/FSTCompletionTest.java   |    1 -
 .../search/suggest/fst/WFSTCompletionTest.java  |    1 -
 .../lucene/analysis/CollationTestBase.java      |    1 -
 .../apache/lucene/analysis/MockAnalyzer.java    |    1 -
 .../apache/lucene/analysis/MockCharFilter.java  |    1 -
 .../lucene/analysis/MockPayloadAnalyzer.java    |    1 -
 .../codecs/asserting/AssertingPointsFormat.java |    6 +-
 .../codecs/compressing/CompressingCodec.java    |   13 +
 .../codecs/cranky/CrankyPointsFormat.java       |    3 -
 .../mockrandom/MockRandomPostingsFormat.java    |   14 +-
 .../apache/lucene/geo/BaseGeoPointTestCase.java | 1489 ++++++++++++++
 .../org/apache/lucene/geo/EarthDebugger.java    |  293 +++
 .../java/org/apache/lucene/geo/GeoTestUtil.java |  801 +++++---
 .../index/BaseCompoundFormatTestCase.java       |  163 +-
 .../index/BaseFieldInfoFormatTestCase.java      |    2 +-
 .../index/BaseIndexFileFormatTestCase.java      |    2 +-
 .../index/BasePostingsFormatTestCase.java       |  283 ++-
 .../index/BaseSegmentInfoFormatTestCase.java    |   77 +-
 .../index/BaseTermVectorsFormatTestCase.java    |    2 -
 .../java/org/apache/lucene/index/DocHelper.java |    1 -
 .../apache/lucene/index/ForceMergePolicy.java   |    3 -
 .../lucene/index/MockRandomMergePolicy.java     |   50 +-
 .../apache/lucene/index/PointsStackTracker.java |   79 +
 .../org/apache/lucene/index/RandomCodec.java    |   17 +-
 .../apache/lucene/index/RandomIndexWriter.java  |   64 +-
 .../lucene/index/RandomPostingsTester.java      |    2 +-
 .../ThreadedIndexingAndSearchingTestCase.java   |    1 -
 .../lucene/mockfile/MockFileSystemTestCase.java |    1 -
 .../org/apache/lucene/mockfile/WindowsFS.java   |    4 -
 .../apache/lucene/search/AssertingQuery.java    |    9 +-
 .../lucene/search/BaseExplanationTestCase.java  |   43 +-
 .../org/apache/lucene/search/CheckHits.java     |    5 +-
 .../org/apache/lucene/search/QueryUtils.java    |   58 +-
 .../lucene/search/RandomApproximationQuery.java |   14 +-
 .../lucene/search/spans/AssertingSpanQuery.java |   24 +-
 .../lucene/store/BaseDirectoryTestCase.java     |    7 +-
 .../lucene/store/BaseLockFactoryTestCase.java   |    1 -
 .../apache/lucene/util/CloseableDirectory.java  |    1 -
 .../org/apache/lucene/util/LineFileDocs.java    |    1 -
 .../org/apache/lucene/util/LuceneTestCase.java  |   10 +-
 .../util/TestRuleSetupAndRestoreClassEnv.java   |    6 +-
 .../java/org/apache/lucene/util/TestUtil.java   |    4 +-
 .../util/automaton/AutomatonTestUtil.java       |   10 +-
 .../analysis/TestLookaheadTokenFilter.java      |    1 -
 .../TestCompressingStoredFieldsFormat.java      |    4 -
 .../TestCompressingTermVectorsFormat.java       |    1 -
 .../lucene/index/TestAssertingLeafReader.java   |    8 -
 .../lucene/mockfile/TestHandleTrackingFS.java   |    4 -
 .../apache/lucene/mockfile/TestWindowsFS.java   |    2 -
 .../search/TestBaseExplanationTestCase.java     |  120 ++
 .../lucene/store/TestMockDirectoryWrapper.java  |    4 -
 lucene/tools/custom-tasks.xml                   |    4 +-
 lucene/tools/forbiddenApis/base.txt             |    4 -
 lucene/tools/javadoc/ecj.javadocs.prefs         |    2 +-
 lucene/tools/junit4/solr-tests.policy           |    1 +
 lucene/tools/junit4/tests.policy                |    4 +-
 .../lucene/validation/LibVersionsCheckTask.java |   15 +-
 lucene/top-level-ivy-settings.xml               |   24 +
 solr/CHANGES.txt                                |  339 +++-
 solr/bin/post                                   |    9 +-
 solr/bin/solr                                   |    2 +-
 solr/bin/solr.cmd                               |  121 +-
 solr/bin/solr.in.cmd                            |   15 +-
 solr/bin/solr.in.sh                             |    7 +
 solr/common-build.xml                           |   20 +-
 .../apache/solr/schema/ICUCollationField.java   |    4 +-
 .../collection1/conf/schema-folding-extra.xml   |   64 +-
 .../collection1/conf/schema-icucollate-dv.xml   |   53 +-
 .../solr/collection1/conf/schema-icucollate.xml |   53 +-
 .../conf/schema-icucollateoptions.xml           |   70 +-
 .../solr/schema/TestICUCollationField.java      |    2 -
 .../solr/collection1/conf/schema-analytics.xml  |  119 +-
 .../analytics/facet/FieldFacetExtrasTest.java   |    1 -
 .../solr/analytics/facet/FieldFacetTest.java    |    1 -
 .../clustering/solr/collection1/conf/schema.xml |  553 +++---
 .../clustering/src/test-files/log4j.properties  |    2 +-
 .../conf/dataimport-schema-no-unique-key.xml    |  336 ++--
 .../handler/dataimport/DIHCacheSupport.java     |    3 -
 .../handler/dataimport/DataImportHandler.java   |    6 -
 .../dataimport/DataImportHandlerException.java  |    4 +-
 .../handler/dataimport/DateFormatEvaluator.java |   45 +-
 .../solr/handler/dataimport/DebugInfo.java      |    1 -
 .../solr/handler/dataimport/Evaluator.java      |    5 -
 .../dataimport/FileListEntityProcessor.java     |   18 +-
 .../solr/handler/dataimport/JdbcDataSource.java |  150 +-
 .../handler/dataimport/SolrEntityProcessor.java |   10 +-
 .../solr/handler/dataimport/UrlEvaluator.java   |    1 -
 .../dataimport/XPathEntityProcessor.java        |    1 -
 .../apache/solr/handler/dataimport/Zipper.java  |    1 -
 .../dataimport/config/ConfigParseUtil.java      |    6 -
 .../solr/collection1/conf/dataimport-schema.xml |  112 +-
 .../conf/dataimport-solr_id-schema.xml          |  512 +++--
 .../src/test-files/log4j.properties             |    2 +-
 .../dataimport/TestContentStreamDataSource.java |    4 +-
 .../solr/handler/dataimport/TestDataConfig.java |    1 -
 .../solr/handler/dataimport/TestDocBuilder.java |    1 -
 .../handler/dataimport/TestDocBuilder2.java     |    2 +-
 .../handler/dataimport/TestEphemeralCache.java  |    1 -
 .../dataimport/TestFileListEntityProcessor.java |   22 +-
 .../TestFileListWithLineEntityProcessor.java    |    1 -
 .../dataimport/TestHierarchicalDocBuilder.java  |    1 -
 .../handler/dataimport/TestJdbcDataSource.java  |  306 ++-
 .../dataimport/TestNonWritablePersistFile.java  |    1 -
 .../TestPlainTextEntityProcessor.java           |    1 -
 .../dataimport/TestScriptTransformer.java       |    2 -
 .../dataimport/TestSimplePropertiesWriter.java  |    2 -
 .../TestSolrEntityProcessorEndToEnd.java        |    2 +-
 .../dataimport/TestSqlEntityProcessorDelta.java |    1 -
 .../dataimport/TestVariableResolver.java        |   21 +-
 .../extraction/solr/collection1/conf/schema.xml |  825 ++++----
 ...anguageIdentifierUpdateProcessorFactory.java |    1 -
 .../LanguageIdentifierUpdateProcessor.java      |    1 -
 .../langid/solr/collection1/conf/schema.xml     |   91 +-
 .../src/java/org/apache/solr/hadoop/GoLive.java |    6 +-
 .../solr/hadoop/MapReduceIndexerTool.java       |    3 -
 .../apache/solr/hadoop/SolrOutputFormat.java    |    1 -
 .../solr/hadoop/MorphlineGoLiveMiniMRTest.java  |    4 +-
 .../apache/solr/hadoop/MorphlineMapperTest.java |    1 -
 .../solr/SafeConcurrentUpdateSolrClient.java    |    2 +-
 .../solr/morphlines/solr/SolrLocator.java       |    5 +-
 .../test-files/solr/collection1/conf/schema.xml | 1649 ++++++++--------
 .../src/test-files/solr/minimr/conf/schema.xml  | 1675 ++++++++--------
 .../src/test-files/solr/mrunit/conf/schema.xml  | 1674 ++++++++--------
 .../solrcelltest/collection1/conf/schema.xml    | 1576 +++++++--------
 .../solr/AbstractSolrMorphlineTestBase.java     |    2 +-
 .../solr/AbstractSolrMorphlineZkTestBase.java   |  114 +-
 .../solr/SolrMorphlineZkAliasTest.java          |   51 +-
 .../solr/SolrMorphlineZkAvroTest.java           |   48 +-
 .../morphlines/solr/SolrMorphlineZkTest.java    |   17 +-
 .../uima/solr/collection1/conf/schema.xml       |    6 +-
 .../test-files/uima/uima-tokenizers-schema.xml  | 1098 ++++++-----
 .../velocity/solr/collection1/conf/schema.xml   |   17 +-
 solr/core/build.xml                             |    2 +-
 solr/core/ivy.xml                               |    1 +
 .../solrj/embedded/EmbeddedSolrServer.java      |    6 +-
 .../solr/client/solrj/embedded/SSLConfig.java   |   81 +-
 .../src/java/org/apache/solr/cloud/Assign.java  |   18 +-
 .../org/apache/solr/cloud/DistributedMap.java   |    1 -
 .../org/apache/solr/cloud/DistributedQueue.java |   95 +-
 .../cloud/LeaderInitiatedRecoveryThread.java    |    2 +-
 .../java/org/apache/solr/cloud/LockTree.java    |  182 ++
 .../java/org/apache/solr/cloud/Overseer.java    |    8 +-
 .../OverseerAutoReplicaFailoverThread.java      |   86 +-
 .../OverseerCollectionConfigSetProcessor.java   |   17 +-
 .../cloud/OverseerCollectionMessageHandler.java |  399 +++-
 .../cloud/OverseerConfigSetMessageHandler.java  |   42 +-
 .../solr/cloud/OverseerMessageHandler.java      |   33 +-
 .../solr/cloud/OverseerTaskProcessor.java       |  156 +-
 .../apache/solr/cloud/OverseerTaskQueue.java    |   73 +-
 .../org/apache/solr/cloud/RecoveryStrategy.java |   11 +-
 .../solr/cloud/SizeLimitedDistributedMap.java   |    2 -
 .../org/apache/solr/cloud/SyncStrategy.java     |    2 +-
 .../src/java/org/apache/solr/cloud/ZkCLI.java   |   63 +-
 .../org/apache/solr/cloud/ZkController.java     |  136 +-
 .../apache/solr/cloud/ZkSolrResourceLoader.java |   41 +-
 .../cloud/overseer/ClusterStateMutator.java     |   62 +-
 .../solr/cloud/overseer/CollectionMutator.java  |    6 +-
 .../apache/solr/cloud/overseer/NodeMutator.java |   17 +-
 .../solr/cloud/overseer/OverseerAction.java     |    2 -
 .../solr/cloud/overseer/ReplicaMutator.java     |   38 +-
 .../solr/cloud/overseer/SliceMutator.java       |   41 +-
 .../solr/cloud/overseer/ZkStateWriter.java      |   14 +-
 .../apache/solr/cloud/rule/RemoteCallback.java  |    2 +-
 .../apache/solr/cloud/rule/ReplicaAssigner.java |    6 +-
 .../apache/solr/cloud/rule/SnitchContext.java   |    3 +-
 .../org/apache/solr/core/BlobRepository.java    |  220 ++-
 .../solr/core/CachingDirectoryFactory.java      |    6 +-
 .../src/java/org/apache/solr/core/Config.java   |    2 +-
 .../org/apache/solr/core/ConfigOverlay.java     |    4 -
 .../org/apache/solr/core/ConfigSetService.java  |    1 -
 .../org/apache/solr/core/CoreContainer.java     |    6 +-
 .../org/apache/solr/core/DirectoryFactory.java  |   25 +
 .../apache/solr/core/HdfsDirectoryFactory.java  |   33 +-
 .../java/org/apache/solr/core/InitParams.java   |    4 +-
 .../org/apache/solr/core/JmxMonitoredMap.java   |   23 +-
 .../java/org/apache/solr/core/PluginBag.java    |   35 +-
 .../java/org/apache/solr/core/PluginInfo.java   |   16 +-
 .../apache/solr/core/SchemaCodecFactory.java    |    6 +-
 .../solr/core/SimpleFSDirectoryFactory.java     |    1 -
 .../java/org/apache/solr/core/SolrConfig.java   |    6 +-
 .../src/java/org/apache/solr/core/SolrCore.java |   90 +-
 .../java/org/apache/solr/core/SolrCores.java    |   13 -
 .../apache/solr/core/SolrDeletionPolicy.java    |    3 +-
 .../apache/solr/core/SolrInfoMBeanWrapper.java  |   62 +
 .../java/org/apache/solr/core/package-info.java |    2 +-
 .../handler/AnalysisRequestHandlerBase.java     |    4 +-
 .../solr/handler/CdcrReplicatorManager.java     |   18 +-
 .../apache/solr/handler/CdcrRequestHandler.java |    2 +-
 .../solr/handler/CdcrUpdateLogSynchronizer.java |    6 +-
 .../solr/handler/ContentStreamHandlerBase.java  |    1 -
 .../org/apache/solr/handler/GraphHandler.java   |  281 +++
 .../org/apache/solr/handler/IndexFetcher.java   |   52 +-
 .../solr/handler/MoreLikeThisHandler.java       |    2 -
 .../solr/handler/NestedRequestHandler.java      |    4 +-
 .../apache/solr/handler/ReplicationHandler.java |   14 +-
 .../apache/solr/handler/RequestHandlerBase.java |   35 +-
 .../org/apache/solr/handler/RestoreCore.java    |    6 +-
 .../org/apache/solr/handler/SQLHandler.java     |  133 +-
 .../org/apache/solr/handler/SchemaHandler.java  |   40 +-
 .../org/apache/solr/handler/SnapShooter.java    |   92 +-
 .../apache/solr/handler/SolrConfigHandler.java  |    2 +-
 .../solr/handler/StandardRequestHandler.java    |    2 +-
 .../org/apache/solr/handler/StreamHandler.java  |   80 +-
 .../solr/handler/admin/ClusterStatus.java       |   14 +-
 .../solr/handler/admin/CollectionsHandler.java  |  104 +-
 .../solr/handler/admin/CoreAdminHandler.java    |   21 +-
 .../solr/handler/admin/CoreAdminOperation.java  |  111 +-
 .../handler/admin/ShowFileRequestHandler.java   |    2 -
 .../handler/admin/SolrInfoMBeanHandler.java     |    1 -
 .../solr/handler/component/DebugComponent.java  |    5 +
 .../solr/handler/component/ExpandComponent.java |   24 +-
 .../solr/handler/component/FacetComponent.java  |   57 +-
 .../handler/component/HighlightComponent.java   |    1 -
 .../handler/component/HttpShardHandler.java     |    5 +-
 .../component/HttpShardHandlerFactory.java      |    5 +-
 .../component/IterativeMergeStrategy.java       |    7 +-
 .../component/MoreLikeThisComponent.java        |   19 +-
 .../solr/handler/component/QueryComponent.java  |   13 +-
 .../handler/component/RealTimeGetComponent.java |    3 +-
 .../handler/component/ShardHandlerFactory.java  |    2 +-
 .../handler/component/SpellCheckComponent.java  |    2 -
 .../handler/component/SpellCheckMergeData.java  |    1 -
 .../solr/handler/component/StatsField.java      |    2 +-
 .../handler/component/StatsValuesFactory.java   |    7 +-
 .../solr/handler/component/TermsComponent.java  |    1 -
 .../apache/solr/handler/loader/JsonLoader.java  |   40 +-
 .../solr/highlight/DefaultSolrHighlighter.java  |  103 +-
 .../solr/highlight/PostingsSolrHighlighter.java |    1 -
 .../apache/solr/highlight/SolrHighlighter.java  |    2 +-
 .../org/apache/solr/highlight/package-info.java |    2 +-
 .../solr/index/SlowCompositeReaderWrapper.java  |  300 +++
 .../apache/solr/index/SortingMergePolicy.java   |   44 +
 .../solr/index/SortingMergePolicyFactory.java   |    1 -
 .../org/apache/solr/internal/csv/CSVParser.java |    4 +-
 .../apache/solr/internal/csv/CSVPrinter.java    |    2 -
 .../internal/csv/ExtendedBufferedReader.java    |    2 +-
 .../org/apache/solr/logging/LoggerInfo.java     |    2 +-
 .../org/apache/solr/parser/QueryParser.java     |    6 -
 .../solr/parser/QueryParserTokenManager.java    |   13 -
 .../apache/solr/parser/SolrQueryParserBase.java |    1 -
 .../org/apache/solr/query/SolrRangeQuery.java   |    2 +-
 .../apache/solr/request/DocValuesFacets.java    |   12 +-
 .../org/apache/solr/request/SimpleFacets.java   |  175 +-
 .../apache/solr/request/SolrRequestInfo.java    |    1 -
 .../org/apache/solr/request/json/JSONUtil.java  |    6 -
 .../apache/solr/request/json/ObjectUtil.java    |    3 -
 .../response/BinaryQueryResponseWriter.java     |    2 +-
 .../solr/response/BinaryResponseWriter.java     |    6 +-
 .../solr/response/GeoJSONResponseWriter.java    |    1 -
 .../solr/response/GraphMLResponseWriter.java    |  167 ++
 .../solr/response/JSONResponseWriter.java       |    5 -
 .../response/PHPSerializedResponseWriter.java   |    1 -
 .../solr/response/QueryResponseWriter.java      |    2 +-
 .../solr/response/QueryResponseWriterUtil.java  |    2 +-
 .../org/apache/solr/response/ResultContext.java |    3 +-
 .../apache/solr/response/SchemaXmlWriter.java   |   27 +-
 .../solr/response/SortingResponseWriter.java    |  126 +-
 .../solr/response/TextResponseWriter.java       |    7 +
 .../org/apache/solr/response/package-info.java  |    2 +-
 .../transform/ExcludedMarkerFactory.java        |    2 -
 .../transform/SubQueryAugmenterFactory.java     |  360 ++++
 .../response/transform/TransformerFactory.java  |    1 +
 .../java/org/apache/solr/rest/RestManager.java  |    8 +-
 .../org/apache/solr/rest/SolrSchemaRestApi.java |    2 -
 .../schema/analysis/ManagedWordSetResource.java |    1 -
 .../solr/schema/AbstractSpatialFieldType.java   |   79 +-
 .../org/apache/solr/schema/BinaryField.java     |    2 +-
 .../java/org/apache/solr/schema/BoolField.java  |   49 +-
 .../org/apache/solr/schema/CollationField.java  |    4 +-
 .../org/apache/solr/schema/CurrencyField.java   |    4 +-
 .../org/apache/solr/schema/DateRangeField.java  |   40 +-
 .../java/org/apache/solr/schema/EnumField.java  |   14 +-
 .../solr/schema/ExchangeRateProvider.java       |    2 +-
 .../apache/solr/schema/ExternalFileField.java   |    8 +-
 .../java/org/apache/solr/schema/FieldType.java  |    2 +-
 .../org/apache/solr/schema/GeoHashField.java    |   10 +-
 .../org/apache/solr/schema/IndexSchema.java     |  211 +-
 .../solr/schema/JsonPreAnalyzedParser.java      |    1 -
 .../java/org/apache/solr/schema/LatLonType.java |   14 +-
 .../apache/solr/schema/ManagedIndexSchema.java  |    2 +-
 .../solr/schema/ManagedIndexSchemaFactory.java  |    2 +-
 .../java/org/apache/solr/schema/PointType.java  |    4 +-
 .../apache/solr/schema/PreAnalyzedField.java    |    4 +-
 .../org/apache/solr/schema/RandomSortField.java |    4 +-
 .../schema/RptWithGeometrySpatialField.java     |   11 +-
 .../org/apache/solr/schema/SchemaManager.java   |   99 +-
 .../java/org/apache/solr/schema/StrField.java   |    2 +-
 .../java/org/apache/solr/schema/TextField.java  |   14 +-
 .../org/apache/solr/schema/TrieDoubleField.java |    2 +-
 .../java/org/apache/solr/schema/TrieField.java  |    6 +-
 .../org/apache/solr/schema/TrieFloatField.java  |    2 +-
 .../org/apache/solr/schema/TrieIntField.java    |    2 +-
 .../org/apache/solr/schema/TrieLongField.java   |    2 +-
 .../java/org/apache/solr/schema/UUIDField.java  |    2 +-
 .../apache/solr/schema/ZkIndexSchemaReader.java |   56 +-
 .../java/org/apache/solr/search/BitDocSet.java  |   16 +-
 .../solr/search/CollapsingQParserPlugin.java    |   48 +-
 .../java/org/apache/solr/search/CursorMark.java |    2 +-
 .../apache/solr/search/DisMaxQParserPlugin.java |    1 -
 .../src/java/org/apache/solr/search/DocSet.java |    2 +-
 .../java/org/apache/solr/search/DocSetBase.java |   19 +-
 .../org/apache/solr/search/DocSetBuilder.java   |    5 +-
 .../org/apache/solr/search/DocSetCollector.java |   84 +-
 .../java/org/apache/solr/search/DocSlice.java   |    1 -
 .../apache/solr/search/ExportQParserPlugin.java |   25 +-
 .../solr/search/ExtendedDismaxQParser.java      |   37 +-
 .../search/ExtendedDismaxQParserPlugin.java     |    1 -
 .../apache/solr/search/ExtendedQueryBase.java   |    2 +-
 .../apache/solr/search/FieldQParserPlugin.java  |    1 -
 .../solr/search/FunctionQParserPlugin.java      |    1 -
 .../solr/search/FunctionRangeQParserPlugin.java |    1 -
 .../solr/search/GraphTermsQParserPlugin.java    |  311 +++
 .../apache/solr/search/HashQParserPlugin.java   |   38 +-
 .../java/org/apache/solr/search/Insanity.java   |    6 +-
 .../apache/solr/search/JoinQParserPlugin.java   |   27 +-
 .../java/org/apache/solr/search/LFUCache.java   |   10 +-
 .../java/org/apache/solr/search/LRUCache.java   |    1 -
 .../apache/solr/search/LuceneQParserPlugin.java |    2 -
 .../solr/search/OldLuceneQParserPlugin.java     |    1 -
 .../apache/solr/search/PrefixQParserPlugin.java |    3 -
 .../java/org/apache/solr/search/QParser.java    |    1 -
 .../org/apache/solr/search/QParserPlugin.java   |    1 +
 .../org/apache/solr/search/QueryContext.java    |    1 -
 .../org/apache/solr/search/QueryParsing.java    |    3 -
 .../org/apache/solr/search/QueryResultKey.java  |    8 +-
 .../apache/solr/search/QueryWrapperFilter.java  |   12 +-
 .../apache/solr/search/RawQParserPlugin.java    |    1 -
 .../apache/solr/search/ReRankQParserPlugin.java |   14 +-
 .../apache/solr/search/SimpleQParserPlugin.java |    1 -
 .../solr/search/SolrConstantScoreQuery.java     |   11 +-
 .../apache/solr/search/SolrFieldCacheMBean.java |   19 +-
 .../apache/solr/search/SolrIndexSearcher.java   |   63 +-
 .../org/apache/solr/search/SolrQueryParser.java |   18 -
 .../apache/solr/search/SolrReturnFields.java    |    3 +-
 .../org/apache/solr/search/SortedIntDocSet.java |   16 +-
 .../solr/search/SpatialBoxQParserPlugin.java    |    1 -
 .../solr/search/SpatialFilterQParserPlugin.java |    1 -
 .../solr/search/SurroundQParserPlugin.java      |    1 -
 .../apache/solr/search/TermQParserPlugin.java   |    1 -
 .../apache/solr/search/TermsQParserPlugin.java  |    1 -
 .../apache/solr/search/ValueSourceParser.java   |   24 +-
 .../apache/solr/search/XmlQParserPlugin.java    |    1 -
 .../solr/search/facet/AggValueSource.java       |    1 -
 .../org/apache/solr/search/facet/BlockJoin.java |    1 -
 .../solr/search/facet/FacetDebugInfo.java       |    6 +-
 .../apache/solr/search/facet/FacetField.java    |    1 -
 .../facet/FacetFieldProcessorNumeric.java       |    1 -
 .../apache/solr/search/facet/FacetRequest.java  |    2 -
 .../org/apache/solr/search/facet/FieldUtil.java |    2 -
 .../org/apache/solr/search/facet/HLLAgg.java    |    5 -
 .../apache/solr/search/facet/LegacyFacet.java   |    1 -
 .../solr/search/facet/SimpleAggValueSource.java |    3 -
 .../org/apache/solr/search/facet/SlotAcc.java   |    8 -
 .../solr/search/facet/StrAggValueSource.java    |    7 -
 .../solr/search/facet/UnInvertedField.java      |    5 +-
 .../solr/search/facet/UniqueMultiDvSlotAcc.java |   86 +
 .../search/facet/UniqueMultivaluedSlotAcc.java  |   69 +
 .../search/facet/UniqueSinglevaluedSlotAcc.java |   81 +
 .../apache/solr/search/facet/UniqueSlotAcc.java |  165 --
 .../solr/search/function/FileFloatSource.java   |    3 +-
 .../solr/search/function/OrdFieldSource.java    |    6 +-
 .../search/function/ReverseOrdFieldSource.java  |    6 +-
 .../apache/solr/search/grouping/Command.java    |    2 -
 .../TopGroupsShardRequestFactory.java           |    2 +-
 .../TopGroupsShardResponseProcessor.java        |    2 +-
 .../SearchGroupsResultTransformer.java          |    2 -
 .../TopGroupsResultTransformer.java             |    2 +-
 .../EndResultTransformer.java                   |    2 +-
 .../solr/search/join/BlockJoinFacetFilter.java  |   17 +
 .../search/join/BlockJoinParentQParser.java     |   11 +-
 .../join/BlockJoinParentQParserPlugin.java      |    1 -
 .../solr/search/join/GraphQParserPlugin.java    |    1 -
 .../org/apache/solr/search/join/GraphQuery.java |   67 +-
 .../solr/search/join/GraphQueryParser.java      |    1 -
 .../search/join/ScoreJoinQParserPlugin.java     |   43 +-
 .../apache/solr/search/mlt/CloudMLTQParser.java |   19 +-
 .../solr/search/mlt/MLTQParserPlugin.java       |    1 -
 .../SweetSpotSimilarityFactory.java             |    1 -
 .../apache/solr/search/stats/LRUStatsCache.java |    5 -
 .../solr/security/AuthenticationPlugin.java     |    3 +-
 .../solr/security/AuthorizationContext.java     |    1 -
 .../security/AutorizationEditOperation.java     |    2 -
 .../apache/solr/security/KerberosPlugin.java    |    1 -
 .../solr/security/PKIAuthenticationPlugin.java  |    2 +-
 .../org/apache/solr/security/Permission.java    |   49 +-
 .../solr/security/PermissionNameProvider.java   |    2 +
 .../security/RuleBasedAuthorizationPlugin.java  |   11 +-
 .../solr/servlet/DirectSolrConnection.java      |    6 -
 .../org/apache/solr/servlet/HttpSolrCall.java   |   34 +-
 .../apache/solr/servlet/LoadAdminUiServlet.java |    9 +-
 .../solr/servlet/ServletInputStreamWrapper.java |  105 +
 .../servlet/ServletOutputStreamWrapper.java     |  140 ++
 .../apache/solr/servlet/SolrDispatchFilter.java |   92 +
 .../apache/solr/servlet/SolrRequestParsers.java |   41 +-
 .../solr/servlet/cache/HttpCacheHeaderUtil.java |    2 -
 .../spelling/AbstractLuceneSpellChecker.java    |    6 -
 .../solr/spelling/DirectSolrSpellChecker.java   |    6 -
 .../solr/spelling/IndexBasedSpellChecker.java   |    2 +-
 .../solr/spelling/SpellCheckCollator.java       |    3 +
 .../solr/store/blockcache/BlockCache.java       |    1 -
 .../apache/solr/store/blockcache/Metrics.java   |    1 -
 .../apache/solr/uninverting/DocTermOrds.java    |  887 +++++++++
 .../org/apache/solr/uninverting/FieldCache.java |  466 +++++
 .../apache/solr/uninverting/FieldCacheImpl.java | 1085 +++++++++++
 .../uninverting/FieldCacheSanityChecker.java    |  425 ++++
 .../solr/uninverting/UninvertingReader.java     |  391 ++++
 .../apache/solr/uninverting/package-info.java   |   21 +
 .../org/apache/solr/update/CdcrUpdateLog.java   |    2 +-
 .../solr/update/DefaultSolrCoreState.java       |    4 +-
 .../solr/update/DeleteByQueryWrapper.java       |   30 +-
 .../apache/solr/update/DeleteUpdateCommand.java |    2 -
 .../apache/solr/update/SolrCmdDistributor.java  |    3 +-
 .../org/apache/solr/update/SolrCoreState.java   |    2 +-
 .../org/apache/solr/update/SolrIndexConfig.java |   17 +-
 .../solr/update/StreamingSolrClients.java       |   66 +-
 .../apache/solr/update/UpdateShardHandler.java  |    4 +-
 .../org/apache/solr/update/VersionInfo.java     |    2 +-
 ...tractDefaultValueUpdateProcessorFactory.java |    2 -
 ...aluesOrNoneFieldMutatingUpdateProcessor.java |    2 +-
 .../ClassificationUpdateProcessor.java          |    2 +-
 .../ClassificationUpdateProcessorFactory.java   |    2 +-
 .../ConcatFieldUpdateProcessorFactory.java      |    2 +-
 .../CountFieldValuesUpdateProcessorFactory.java |   10 -
 .../DefaultValueUpdateProcessorFactory.java     |    4 -
 .../processor/DistributedUpdateProcessor.java   |    9 +-
 .../DistributingUpdateProcessorFactory.java     |    2 -
 ...BasedVersionConstraintsProcessorFactory.java |    4 +-
 .../DocExpirationUpdateProcessorFactory.java    |   16 +-
 .../FieldMutatingUpdateProcessorFactory.java    |    3 +-
 .../FieldValueSubsetUpdateProcessorFactory.java |    2 -
 .../FirstFieldValueUpdateProcessorFactory.java  |    1 -
 .../LastFieldValueUpdateProcessorFactory.java   |    1 -
 .../solr/update/processor/MD5Signature.java     |    1 -
 .../MaxFieldValueUpdateProcessorFactory.java    |    1 -
 .../MinFieldValueUpdateProcessorFactory.java    |    1 -
 .../NoOpDistributingUpdateProcessorFactory.java |    2 -
 .../ParseDateFieldUpdateProcessorFactory.java   |    2 -
 .../update/processor/RegexpBoostProcessor.java  |    1 -
 .../processor/RunUpdateProcessorFactory.java    |    3 +-
 .../TimestampUpdateProcessorFactory.java        |    7 -
 .../processor/TolerantUpdateProcessor.java      |   22 +-
 .../TolerantUpdateProcessorFactory.java         |    1 -
 .../UniqFieldsUpdateProcessorFactory.java       |    9 -
 .../processor/UpdateRequestProcessorChain.java  |    3 +-
 .../org/apache/solr/util/CommandOperation.java  |    3 -
 .../org/apache/solr/util/DateMathParser.java    |  168 +-
 .../org/apache/solr/util/PivotListEntry.java    |    4 +-
 .../org/apache/solr/util/SimplePostTool.java    |   12 +-
 .../src/java/org/apache/solr/util/SolrCLI.java  |   64 +-
 .../org/apache/solr/util/SolrLogLayout.java     |   10 +-
 .../org/apache/solr/util/SolrPluginUtils.java   |   26 +-
 .../org/apache/solr/util/TestInjection.java     |   28 +-
 .../org/apache/solr/util/VersionedFile.java     |    4 +-
 .../solr/util/xslt/TransformerProvider.java     |    1 -
 solr/core/src/resources/ImplicitPlugins.json    |    7 +
 .../solr/analysisconfs/analysis-err-schema.xml  |   31 +-
 .../bad-schema-analyzer-class-and-nested.xml    |   34 +-
 .../bad-schema-bogus-analysis-parameters.xml    |   16 +-
 .../conf/bad-schema-bogus-field-parameters.xml  |    8 +-
 .../bad-schema-codec-global-vs-ft-mismatch.xml  |   22 +-
 .../bad-schema-currency-dynamic-multivalued.xml |   21 +-
 ...bad-schema-currency-ft-bogus-code-in-xml.xml |   26 +-
 ...ad-schema-currency-ft-bogus-default-code.xml |   26 +-
 .../conf/bad-schema-currency-ft-multivalued.xml |   18 +-
 .../conf/bad-schema-currency-ft-oer-norates.xml |   24 +-
 .../conf/bad-schema-currency-multivalued.xml    |   20 +-
 .../conf/bad-schema-dup-dynamicField.xml        |   27 +-
 .../collection1/conf/bad-schema-dup-field.xml   |   28 +-
 .../conf/bad-schema-dup-fieldType.xml           |   40 +-
 .../bad-schema-dynamicfield-default-val.xml     |   18 +-
 .../conf/bad-schema-dynamicfield-required.xml   |   18 +-
 .../conf/bad-schema-external-filefield.xml      |   10 +-
 .../collection1/conf/bad-schema-init-error.xml  |    8 +-
 ...asterisk-copyfield-dest-should-fail-test.xml |    8 +-
 ...terisk-copyfield-source-should-fail-test.xml |    8 +-
 ...asterisk-copyfield-dest-should-fail-test.xml |    8 +-
 ...terisk-copyfield-source-should-fail-test.xml |    8 +-
 ...source-matching-nothing-should-fail-test.xml |   13 +-
 .../conf/bad-schema-nontext-analyzer.xml        |   25 +-
 .../conf/bad-schema-not-indexed-but-norms.xml   |   24 +-
 .../conf/bad-schema-not-indexed-but-pos.xml     |   24 +-
 .../conf/bad-schema-not-indexed-but-tf.xml      |   23 +-
 .../conf/bad-schema-omit-tf-but-not-pos.xml     |   25 +-
 .../bad-schema-sim-global-vs-ft-mismatch.xml    |   32 +-
 .../conf/bad-schema-sweetspot-both-tf.xml       |   50 +-
 .../bad-schema-sweetspot-partial-baseline.xml   |   32 +-
 .../bad-schema-sweetspot-partial-hyperbolic.xml |   46 +-
 .../conf/bad-schema-sweetspot-partial-norms.xml |   44 +-
 .../bad-schema-uniquekey-is-copyfield-dest.xml  |   20 +-
 .../conf/bad-schema-uniquekey-multivalued.xml   |   16 +-
 .../conf/bad-schema-uniquekey-uses-default.xml  |   16 +-
 .../conf/bad-schema-unsupported-docValues.xml   |   10 +-
 .../conf/schema-HighlighterMaxOffsetTest.xml    |  122 +-
 ...chema-add-schema-fields-update-processor.xml |   22 +-
 .../solr/collection1/conf/schema-behavior.xml   |  218 ++-
 .../collection1/conf/schema-binaryfield.xml     |   78 +-
 .../conf/schema-blockjoinfacetcomponent.xml     |   41 +-
 .../solr/collection1/conf/schema-bm25.xml       |   48 +-
 .../collection1/conf/schema-charfilters.xml     |   52 +-
 ...a-class-name-shortening-on-serialization.xml |   42 +-
 .../solr/collection1/conf/schema-collate-dv.xml |   56 +-
 .../solr/collection1/conf/schema-collate.xml    |   55 +-
 .../collection1/conf/schema-complex-phrase.xml  |   20 +-
 .../collection1/conf/schema-copyfield-test.xml  |  841 ++++----
 .../collection1/conf/schema-custom-field.xml    |   40 +-
 .../collection1/conf/schema-customfield.xml     |   78 +-
 .../solr/collection1/conf/schema-dfi.xml        |   51 +-
 .../solr/collection1/conf/schema-dfr.xml        |   82 +-
 .../conf/schema-distrib-interval-faceting.xml   |  113 +-
 .../conf/schema-distributed-missing-sort.xml    |   87 +-
 .../solr/collection1/conf/schema-docValues.xml  |   80 +-
 .../conf/schema-docValuesFaceting.xml           |   93 +-
 .../collection1/conf/schema-docValuesJoin.xml   |  135 +-
 .../conf/schema-docValuesMissing.xml            |  154 +-
 .../collection1/conf/schema-docValuesMulti.xml  |   43 +-
 .../solr/collection1/conf/schema-eff.xml        |   25 +-
 .../solr/collection1/conf/schema-enums.xml      |   38 +-
 .../conf/schema-field-sort-values.xml           |   32 +-
 .../solr/collection1/conf/schema-folding.xml    |  482 +++--
 .../solr/collection1/conf/schema-hash.xml       | 1070 ++++++-----
 .../solr/collection1/conf/schema-ib.xml         |   57 +-
 .../conf/schema-id-and-version-fields-only.xml  |   12 +-
 .../collection1/conf/schema-lmdirichlet.xml     |   43 +-
 .../collection1/conf/schema-lmjelinekmercer.xml |   43 +-
 .../conf/schema-luceneMatchVersion.xml          |   22 +-
 .../conf/schema-minimal-atomic-stress.xml       |   38 +
 .../solr/collection1/conf/schema-minimal.xml    |    6 +-
 .../conf/schema-not-required-unique-key.xml     |   33 +-
 .../solr/collection1/conf/schema-numeric.xml    |   84 +-
 ...ma-one-field-no-dynamic-field-unique-key.xml |   14 +-
 .../conf/schema-one-field-no-dynamic-field.xml  |   14 +-
 .../collection1/conf/schema-phrasesuggest.xml   |   34 +-
 .../conf/schema-postingshighlight.xml           |   48 +-
 .../collection1/conf/schema-preanalyzed.xml     |   43 +-
 .../collection1/conf/schema-replication1.xml    |   15 +-
 .../collection1/conf/schema-replication2.xml    |   20 +-
 .../collection1/conf/schema-required-fields.xml |  737 +++----
 .../conf/schema-rest-lucene-match-version.xml   |   38 +-
 .../solr/collection1/conf/schema-rest.xml       | 1205 ++++++------
 .../solr/collection1/conf/schema-reversed.xml   |  118 +-
 .../solr/collection1/conf/schema-sim.xml        |   46 +-
 .../collection1/conf/schema-simpleqpplugin.xml  |   74 +-
 .../conf/schema-single-dynamic-copy-field.xml   | 1152 +++++------
 .../collection1/conf/schema-sortingresponse.xml |   67 +-
 .../solr/collection1/conf/schema-sorts.xml      |  535 +++---
 .../solr/collection1/conf/schema-spatial.xml    |   81 +-
 .../collection1/conf/schema-spellchecker.xml    |   50 +-
 .../solr/collection1/conf/schema-sql.xml        | 1087 +++++------
 .../solr/collection1/conf/schema-stop-keep.xml  |   51 +-
 .../solr/collection1/conf/schema-sweetspot.xml  |   93 +-
 .../conf/schema-synonym-tokenizer.xml           |   35 +-
 .../solr/collection1/conf/schema-tiny.xml       |   14 +-
 .../solr/collection1/conf/schema-trie.xml       |  526 ++---
 .../solr/collection1/conf/schema-version-dv.xml |   30 +-
 .../collection1/conf/schema-version-indexed.xml |   30 +-
 .../solr/collection1/conf/schema-xinclude.xml   |   12 +-
 .../test-files/solr/collection1/conf/schema.xml | 1264 ++++++------
 .../solr/collection1/conf/schema11.xml          |    2 +-
 .../solr/collection1/conf/schema12.xml          | 1087 ++++++-----
 .../solr/collection1/conf/schema15.xml          | 1076 ++++++-----
 .../solr/collection1/conf/schema_codec.xml      |   54 +-
 .../solr/collection1/conf/schema_latest.xml     | 1324 ++++++-------
 .../solr/collection1/conf/schemasurround.xml    | 1075 ++++++-----
 .../configsets/bad-mergepolicy/conf/schema.xml  |    6 +-
 .../configsets/cloud-dynamic/conf/schema.xml    |  275 +++
 .../cloud-dynamic/conf/solrconfig.xml           |   48 +
 .../cloud-managed/conf/managed-schema           |   27 +
 .../cloud-managed/conf/solrconfig.xml           |   51 +
 .../configsets/cloud-minimal/conf/schema.xml    |    8 +-
 .../configset-1/conf/schema-minimal.xml         |   25 -
 .../configset-1/conf/solrconfig-minimal.xml     |   56 -
 .../solr/configsets/configset-2/conf/schema.xml |   12 +-
 .../solr/configsets/doc-expiry/conf/schema.xml  |  271 +++
 .../solrconfig.snippet.randomindexconfig.xml    |   47 +
 .../configsets/doc-expiry/conf/solrconfig.xml   |   96 +
 .../exitable-directory/conf/schema.xml          |   28 +
 .../exitable-directory/conf/solrconfig.xml      |  117 ++
 .../solr/configsets/minimal/conf/schema.xml     |    6 +-
 .../solr/configsets/resource-sharing/schema.xml |   21 +
 .../configsets/resource-sharing/solrconfig.xml  |   51 +
 .../org/apache/solr/BasicFunctionalityTest.java |    2 +-
 .../solr/DistributedIntervalFacetingTest.java   |    3 +-
 .../test/org/apache/solr/MinimalSchemaTest.java |    1 +
 .../test/org/apache/solr/SolrInfoMBeanTest.java |    1 -
 .../apache/solr/TestDistributedGrouping.java    |   34 +-
 .../org/apache/solr/TestDistributedSearch.java  |    2 +
 .../solr/TestSimpleTrackingShardHandler.java    |    1 -
 .../org/apache/solr/TestTolerantSearch.java     |    6 +-
 .../core/src/test/org/apache/solr/TestTrie.java |    4 +-
 .../PathHierarchyTokenizerFactoryTest.java      |    3 -
 .../solr/client/solrj/ConnectionReuseTest.java  |   84 +-
 .../solrj/embedded/TestJettySolrRunner.java     |    3 +-
 .../apache/solr/cloud/AliasIntegrationTest.java |   16 +-
 .../test/org/apache/solr/cloud/AssignTest.java  |    2 +-
 .../solr/cloud/AsyncMigrateRouteKeyTest.java    |    2 +-
 .../solr/cloud/BaseCdcrDistributedZkTest.java   |    6 +-
 .../solr/cloud/BasicDistributedZk2Test.java     |    9 +-
 .../solr/cloud/BasicDistributedZkTest.java      |   14 +-
 .../cloud/ChaosMonkeyNothingIsSafeTest.java     |   46 +-
 .../apache/solr/cloud/CleanupOldIndexTest.java  |  105 +-
 .../cloud/CloudExitableDirectoryReaderTest.java |   47 +-
 .../org/apache/solr/cloud/ClusterStateTest.java |   11 +-
 .../apache/solr/cloud/CollectionReloadTest.java |   85 +-
 .../cloud/CollectionsAPIDistributedZkTest.java  |   49 +-
 .../solr/cloud/CollectionsAPISolrJTest.java     |    9 +-
 ...ConcurrentDeleteAndCreateCollectionTest.java |    7 +-
 .../apache/solr/cloud/ConfigSetsAPITest.java    |   39 +-
 .../solr/cloud/ConnectionManagerTest.java       |    5 -
 .../solr/cloud/CreateCollectionCleanupTest.java |   84 +
 .../apache/solr/cloud/CustomCollectionTest.java |   12 +-
 .../solr/cloud/DeleteInactiveReplicaTest.java   |    3 +-
 .../DeleteLastCustomShardedReplicaTest.java     |    1 -
 .../apache/solr/cloud/DeleteReplicaTest.java    |    4 +-
 .../org/apache/solr/cloud/DeleteShardTest.java  |    6 +-
 .../solr/cloud/DistribCursorPagingTest.java     |   15 +-
 ...DistribDocExpirationUpdateProcessorTest.java |  142 +-
 .../cloud/DistribJoinFromCollectionTest.java    |  144 +-
 .../apache/solr/cloud/DistributedQueueTest.java |   47 +-
 .../solr/cloud/DistributedVersionInfoTest.java  |  126 +-
 .../org/apache/solr/cloud/ForceLeaderTest.java  |    2 +-
 .../cloud/FullSolrCloudDistribCmdsTest.java     |    2 +-
 .../apache/solr/cloud/HttpPartitionTest.java    |   19 +-
 .../LeaderInitiatedRecoveryOnCommitTest.java    |    2 +-
 ...aderInitiatedRecoveryOnShardRestartTest.java |    2 +-
 .../apache/solr/cloud/MigrateRouteKeyTest.java  |    4 +-
 .../apache/solr/cloud/MultiThreadedOCPTest.java |   88 +-
 ...verseerCollectionConfigSetProcessorTest.java |  220 +--
 .../solr/cloud/OverseerTaskQueueTest.java       |   66 +
 .../org/apache/solr/cloud/OverseerTest.java     |    9 +-
 .../solr/cloud/RecoveryAfterSoftCommitTest.java |    1 -
 .../apache/solr/cloud/RemoteQueryErrorTest.java |    2 +-
 .../solr/cloud/ReplicationFactorTest.java       |    3 +-
 .../org/apache/solr/cloud/SSLMigrationTest.java |    5 +-
 .../org/apache/solr/cloud/ShardSplitTest.java   |   33 +-
 .../SharedFSAutoReplicaFailoverUtilsTest.java   |   99 +-
 .../cloud/SimpleCollectionCreateDeleteTest.java |    2 -
 .../apache/solr/cloud/SolrCloudExampleTest.java |    6 +-
 .../org/apache/solr/cloud/SyncSliceTest.java    |    4 +-
 .../solr/cloud/TestCloudBackupRestore.java      |  219 +++
 .../solr/cloud/TestCloudDeleteByQuery.java      |   17 +-
 .../apache/solr/cloud/TestCloudInspectUtil.java |    2 -
 .../apache/solr/cloud/TestCloudPivotFacet.java  |   11 +-
 .../apache/solr/cloud/TestCollectionAPI.java    |    1 -
 .../apache/solr/cloud/TestConfigSetsAPI.java    |   21 +-
 .../cloud/TestConfigSetsAPIExclusivity.java     |    5 +-
 .../solr/cloud/TestConfigSetsAPIZkFailure.java  |    5 +-
 .../org/apache/solr/cloud/TestCryptoKeys.java   |   10 +-
 .../org/apache/solr/cloud/TestLockTree.java     |  123 ++
 .../solr/cloud/TestMiniSolrCloudClusterSSL.java |  335 +++-
 .../cloud/TestOnReconnectListenerSupport.java   |  155 ++
 .../cloud/TestRandomRequestDistribution.java    |    6 +-
 .../apache/solr/cloud/TestRebalanceLeaders.java |   18 +-
 .../cloud/TestRequestStatusCollectionAPI.java   |    2 +-
 .../apache/solr/cloud/TestSSLRandomization.java |  254 +++
 .../TestStressCloudBlindAtomicUpdates.java      |  477 +++++
 .../apache/solr/cloud/TestStressLiveNodes.java  |  255 +++
 .../cloud/TestTolerantUpdateProcessorCloud.java |   38 +-
 .../TestTolerantUpdateProcessorRandomCloud.java |   10 +-
 .../solr/cloud/UnloadDistributedZkTest.java     |   30 +-
 .../test/org/apache/solr/cloud/ZkCLITest.java   |   94 +-
 .../org/apache/solr/cloud/ZkControllerTest.java |  136 +-
 .../solr/cloud/hdfs/HdfsThreadLeakTest.java     |    2 -
 .../HdfsWriteToMultipleCollectionsTest.java     |   21 +-
 .../apache/solr/cloud/hdfs/StressHdfsTest.java  |   19 +-
 .../solr/cloud/overseer/ZkStateReaderTest.java  |   81 +-
 .../solr/cloud/overseer/ZkStateWriterTest.java  |    8 +-
 .../solr/core/BlobRepositoryCloudTest.java      |  112 ++
 .../solr/core/BlobRepositoryMockingTest.java    |  163 ++
 .../solr/core/CountUsageValueSourceParser.java  |    2 +-
 .../solr/core/ExitableDirectoryReaderTest.java  |    2 +-
 .../solr/core/HdfsDirectoryFactoryTest.java     |    5 -
 .../org/apache/solr/core/MockInfoMBean.java     |    1 -
 .../solr/core/OpenCloseCoreStressTest.java      |    4 +-
 .../apache/solr/core/QueryResultKeyTest.java    |    4 +-
 .../test/org/apache/solr/core/SolrCoreTest.java |  103 +-
 .../org/apache/solr/core/TestCodecSupport.java  |    5 -
 .../apache/solr/core/TestDynamicLoading.java    |   14 +-
 .../apache/solr/core/TestInfoStreamLogging.java |    1 -
 .../apache/solr/core/TestJmxMonitoredMap.java   |   40 +-
 .../org/apache/solr/core/TestLazyCores.java     |    2 +-
 .../apache/solr/core/TestMergePolicyConfig.java |    2 +-
 .../apache/solr/core/TestSolrConfigHandler.java |   26 +-
 .../apache/solr/handler/CheckBackupStatus.java  |    2 +-
 .../FieldAnalysisRequestHandlerTest.java        |    4 -
 .../org/apache/solr/handler/JsonLoaderTest.java |   68 +-
 .../handler/StandardRequestHandlerTest.java     |    8 -
 .../apache/solr/handler/TestBlobHandler.java    |    1 -
 .../org/apache/solr/handler/TestCSVLoader.java  |    1 -
 .../apache/solr/handler/TestConfigReload.java   |    8 +-
 .../solr/handler/TestReplicationHandler.java    |  110 +-
 .../handler/TestReplicationHandlerBackup.java   |    7 +-
 .../apache/solr/handler/TestReqParamsAPI.java   |    8 +-
 .../apache/solr/handler/TestRestoreCore.java    |   45 +-
 .../org/apache/solr/handler/TestSQLHandler.java |  577 +++---
 .../handler/TestSolrConfigHandlerCloud.java     |    8 +-
 .../TestSolrConfigHandlerConcurrent.java        |    9 +-
 .../handler/ThrowErrorOnInitRequestHandler.java |    1 -
 .../handler/admin/CoreAdminHandlerTest.java     |    4 +-
 .../admin/CoreMergeIndexesAdminHandlerTest.java |    3 -
 .../DistributedDebugComponentTest.java          |    6 +-
 .../DistributedFacetPivotLargeTest.java         |    2 +-
 .../component/DistributedMLTComponentTest.java  |    1 -
 ...stributedQueryComponentOptimizationTest.java |  236 ++-
 .../DistributedQueryElevationComponentTest.java |    3 +-
 .../component/ResourceSharingTestComponent.java |  149 ++
 .../handler/component/SearchHandlerTest.java    |    5 -
 ...estDistributedStatsComponentCardinality.java |    2 +
 .../handler/component/TestExpandComponent.java  |    1 -
 .../handler/component/TestPivotHelperCode.java  |    3 -
 .../highlight/HighlighterMaxOffsetTest.java     |    1 -
 .../apache/solr/highlight/HighlighterTest.java  |   82 +-
 .../index/TestSlowCompositeReaderWrapper.java   |   95 +
 .../solr/internal/csv/CSVPrinterTest.java       |    3 -
 .../solr/internal/csv/CSVStrategyTest.java      |    2 -
 .../csv/ExtendedBufferedReaderTest.java         |    2 -
 .../org/apache/solr/request/JSONWriterTest.java |    4 -
 .../apache/solr/request/SimpleFacetsTest.java   |   33 +-
 .../solr/request/TestBinaryResponseWriter.java  |    1 -
 .../apache/solr/request/TestFacetMethods.java   |  207 ++
 .../org/apache/solr/request/TestFaceting.java   |   51 +-
 .../solr/request/TestIntervalFaceting.java      |    1 -
 .../solr/response/TestChildDocTransformer.java  |  244 ---
 .../solr/response/TestCustomDocTransformer.java |    4 +-
 .../response/TestGraphMLResponseWriter.java     |  155 ++
 .../TestPHPSerializedResponseWriter.java        |    1 -
 .../solr/response/TestRawResponseWriter.java    |   10 +-
 .../transform/TestChildDocTransformer.java      |  403 ++++
 .../transform/TestSubQueryTransformer.java      |  571 ++++++
 .../TestSubQueryTransformerCrossCore.java       |  131 ++
 .../TestSubQueryTransformerDistrib.java         |  213 ++
 .../schema/TestCopyFieldCollectionResource.java |   34 +
 .../TestDynamicFieldCollectionResource.java     |   24 +
 .../schema/TestFieldCollectionResource.java     |   51 +-
 .../solr/rest/schema/TestFieldResource.java     |    6 +
 .../solr/schema/AbstractCurrencyFieldTest.java  |    2 +-
 .../apache/solr/schema/BooleanFieldTest.java    |   78 +
 .../solr/schema/ChangedSchemaMergeTest.java     |    8 -
 .../schema/CurrencyFieldOpenExchangeTest.java   |   10 -
 .../solr/schema/CurrencyFieldXmlFileTest.java   |    9 -
 .../apache/solr/schema/DateRangeFieldTest.java  |   29 +
 .../solr/schema/DocValuesMissingTest.java       |  129 ++
 .../apache/solr/schema/DocValuesMultiTest.java  |  103 +-
 .../org/apache/solr/schema/DocValuesTest.java   |   89 +-
 .../org/apache/solr/schema/EnumFieldTest.java   |    1 -
 .../apache/solr/schema/MyCrazyCustomField.java  |    2 +-
 .../org/apache/solr/schema/PolyFieldTest.java   |    1 -
 .../solr/schema/SpatialRPTFieldTypeTest.java    |   32 +-
 .../solr/schema/TestBulkSchemaConcurrent.java   |    8 +-
 .../TestCloudManagedSchemaConcurrent.java       |   20 +-
 .../apache/solr/schema/TestCloudSchemaless.java |    9 +-
 .../apache/solr/schema/TestCollationField.java  |    1 -
 .../solr/schema/TestManagedSchemaAPI.java       |  101 +
 .../TrieIntPrefixActsAsRangeQueryFieldType.java |    2 +-
 .../solr/search/AnalyticsMergeStrategyTest.java |    5 +-
 .../apache/solr/search/AnalyticsQueryTest.java  |    1 -
 .../solr/search/DelayingSearchComponent.java    |    1 -
 .../apache/solr/search/FooQParserPlugin.java    |    1 -
 .../apache/solr/search/QueryEqualityTest.java   |    9 +
 .../apache/solr/search/QueryParsingTest.java    |    8 -
 .../org/apache/solr/search/RankQueryTest.java   |    1 -
 .../apache/solr/search/SortSpecParsingTest.java |    1 -
 .../solr/search/TestCollapseQParserPlugin.java  |    1 -
 .../test/org/apache/solr/search/TestDocSet.java |   35 +-
 .../solr/search/TestExtendedDismaxParser.java   |  155 ++
 .../solr/search/TestFilteredDocIdSet.java       |   21 +
 .../search/TestGraphTermsQParserPlugin.java     |  123 ++
 .../solr/search/TestHashQParserPlugin.java      |    9 +-
 .../org/apache/solr/search/TestLRUCache.java    |    5 -
 .../apache/solr/search/TestMissingGroups.java   |    4 +-
 .../org/apache/solr/search/TestQueryUtils.java  |    2 -
 .../solr/search/TestQueryWrapperFilter.java     |   14 +-
 .../search/TestRandomCollapseQParserPlugin.java |    7 +-
 .../solr/search/TestReRankQParserPlugin.java    |    1 -
 .../org/apache/solr/search/TestRealTimeGet.java |    1 -
 .../org/apache/solr/search/TestRecovery.java    |    2 +-
 .../apache/solr/search/TestRecoveryHdfs.java    |    1 -
 .../test/org/apache/solr/search/TestReload.java |    2 -
 .../apache/solr/search/TestReloadDeadlock.java  |    4 +-
 .../org/apache/solr/search/TestSearchPerf.java  |    1 -
 .../apache/solr/search/TestSearcherReuse.java   |    2 +-
 .../solr/search/TestSimpleQParserPlugin.java    |    3 -
 .../apache/solr/search/TestSolr4Spatial2.java   |    2 +-
 .../solr/search/TestSolrFieldCacheMBean.java    |   36 +-
 .../test/org/apache/solr/search/TestSolrJ.java  |    4 +-
 .../apache/solr/search/TestSolrQueryParser.java |    1 -
 .../test/org/apache/solr/search/TestSort.java   |   15 +-
 .../solr/search/facet/TestJsonFacets.java       |    3 -
 .../search/function/NvlValueSourceParser.java   |    2 +-
 .../solr/search/function/TestFunctionQuery.java |    3 +-
 .../function/TestMinMaxOnMultiValuedField.java  |    4 -
 .../solr/search/function/TestOrdValues.java     |    4 +-
 .../function/TestSortByMinMaxFunction.java      |    2 -
 .../apache/solr/search/join/BJQParserTest.java  |    1 -
 .../search/join/BlockJoinFacetDistribTest.java  |   97 +-
 .../solr/search/mlt/CloudMLTQParserTest.java    |  277 +--
 .../solr/search/mlt/SimpleMLTQParserTest.java   |    4 -
 .../TestClassicSimilarityFactory.java           |    1 -
 .../similarities/TestDFRSimilarityFactory.java  |    2 +-
 .../similarities/TestIBSimilarityFactory.java   |    2 +-
 .../TestNonDefinedSimilarityFactory.java        |    3 +-
 ...stPerFieldSimilarityWithDefaultOverride.java |    2 -
 .../TestSweetSpotSimilarityFactory.java         |    1 -
 .../solr/search/stats/TestDistribIDF.java       |    9 +-
 .../solr/security/BasicAuthIntegrationTest.java |   89 +-
 .../security/TestPKIAuthenticationPlugin.java   |   41 +-
 .../TestRuleBasedAuthorizationPlugin.java       |   98 +-
 .../apache/solr/servlet/ResponseHeaderTest.java |    4 -
 .../spelling/FileBasedSpellCheckerTest.java     |    1 -
 .../solr/spelling/SimpleQueryConverter.java     |    2 -
 .../solr/spelling/SpellCheckCollatorTest.java   |   30 +
 .../spelling/TestSuggestSpellingConverter.java  |    1 -
 .../suggest/TestFreeTextSuggestions.java        |    1 -
 .../solr/uninverting/TestDocTermOrds.java       |  681 +++++++
 .../apache/solr/uninverting/TestFieldCache.java |  721 +++++++
 .../solr/uninverting/TestFieldCacheReopen.java  |   70 +
 .../TestFieldCacheSanityChecker.java            |  164 ++
 .../solr/uninverting/TestFieldCacheSort.java    | 1814 ++++++++++++++++++
 .../uninverting/TestFieldCacheSortRandom.java   |  318 +++
 .../uninverting/TestFieldCacheVsDocValues.java  |  592 ++++++
 .../uninverting/TestFieldCacheWithThreads.java  |  228 +++
 .../solr/uninverting/TestLegacyFieldCache.java  |  497 +++++
 .../solr/uninverting/TestNumericTerms32.java    |  156 ++
 .../solr/uninverting/TestNumericTerms64.java    |  166 ++
 .../solr/uninverting/TestUninvertingReader.java |  395 ++++
 .../apache/solr/update/AddBlockUpdateTest.java  |    2 -
 .../update/DirectUpdateHandlerOptimizeTest.java |    1 -
 .../apache/solr/update/DocumentBuilderTest.java |   13 +-
 .../apache/solr/update/SoftAutoCommitTest.java  |   16 +-
 .../apache/solr/update/SolrIndexConfigTest.java |    2 +-
 .../update/TestDocBasedVersionConstraints.java  |   22 +-
 .../solr/update/TestExceedMaxTermLength.java    |    1 -
 .../org/apache/solr/update/VersionInfoTest.java |    2 -
 .../update/processor/AtomicUpdatesTest.java     |   44 +
 .../CloneFieldUpdateProcessorFactoryTest.java   |    6 +-
 .../processor/CustomUpdateRequestProcessor.java |    4 -
 .../DefaultValueUpdateProcessorTest.java        |    5 -
 ...DocExpirationUpdateProcessorFactoryTest.java |    1 -
 ...ommitOptimizeUpdateProcessorFactoryTest.java |    5 -
 .../RecordingUpdateProcessorFactory.java        |    7 +-
 .../solr/update/processor/ScriptEngineTest.java |    2 +-
 ...atelessScriptUpdateProcessorFactoryTest.java |    5 -
 .../processor/TestNamedUpdateProcessors.java    |   11 +-
 .../TestPartialUpdateDeduplication.java         |    3 -
 .../processor/TolerantUpdateProcessorTest.java  |    2 -
 .../UniqFieldsUpdateProcessorFactoryTest.java   |    1 -
 .../processor/UpdateProcessorTestBase.java      |    1 -
 .../UpdateRequestProcessorFactoryTest.java      |    2 +-
 .../apache/solr/util/DateMathParserTest.java    |  226 ++-
 .../apache/solr/util/SolrPluginUtilsTest.java   |   28 +
 .../org/apache/solr/util/TestFastWriter.java    |    3 -
 .../apache/solr/util/TestSolrCLIRunExample.java |    4 +-
 .../example-DIH/solr/db/conf/managed-schema     |    2 +-
 .../example-DIH/solr/mail/conf/managed-schema   |    2 +-
 .../example-DIH/solr/rss/conf/managed-schema    |    2 +-
 .../example-DIH/solr/solr/conf/managed-schema   |    2 +-
 .../example-DIH/solr/tika/conf/managed-schema   |    2 +-
 solr/example/films/README.txt                   |    2 +
 solr/example/resources/log4j.properties         |    2 +-
 solr/licenses/asm-5.0.4.jar.sha1                |    1 -
 solr/licenses/asm-5.1.jar.sha1                  |    1 +
 solr/licenses/asm-commons-5.0.4.jar.sha1        |    1 -
 solr/licenses/asm-commons-5.1.jar.sha1          |    1 +
 solr/licenses/commons-fileupload-1.2.1.jar.sha1 |    1 -
 solr/licenses/commons-fileupload-1.3.1.jar.sha1 |    1 +
 solr/licenses/commons-io-2.4.jar.sha1           |    1 -
 solr/licenses/commons-io-2.5.jar.sha1           |    1 +
 solr/server/resources/log4j.properties          |    2 +-
 .../scripts/cloud-scripts/log4j.properties      |    2 +-
 solr/server/scripts/cloud-scripts/zkcli.bat     |   15 +-
 solr/server/scripts/cloud-scripts/zkcli.sh      |   15 +-
 .../basic_configs/conf/managed-schema           |    2 +-
 .../conf/managed-schema                         |    2 +-
 .../conf/managed-schema                         |    2 +-
 .../conf/velocity/cluster.vm                    |    2 +-
 solr/server/solr/solr.xml                       |    2 +
 .../org/apache/solr/client/solrj/SolrQuery.java |   11 +-
 .../solr/client/solrj/impl/CloudSolrClient.java |  271 ++-
 .../solrj/impl/ConcurrentUpdateSolrClient.java  |  213 +-
 .../solr/client/solrj/impl/HttpClientUtil.java  |   32 +-
 .../solr/client/solrj/impl/HttpSolrClient.java  |   77 +-
 .../solrj/impl/InputStreamResponseParser.java   |    4 -
 .../solrj/impl/Krb5HttpClientBuilder.java       |    7 -
 .../client/solrj/impl/LBHttpSolrClient.java     |  126 +-
 .../solr/client/solrj/io/SolrClientCache.java   |   12 +-
 .../org/apache/solr/client/solrj/io/Tuple.java  |   53 +-
 .../client/solrj/io/comp/FieldComparator.java   |   13 +
 .../solr/client/solrj/io/comp/HashKey.java      |    2 -
 .../solrj/io/comp/MultipleFieldComparator.java  |   13 +-
 .../solr/client/solrj/io/eq/FieldEqualitor.java |   17 +-
 .../solrj/io/eq/MultipleFieldEqualitor.java     |   12 +
 .../solrj/io/graph/GatherNodesStream.java       |  675 +++++++
 .../apache/solr/client/solrj/io/graph/Node.java |   90 +
 .../solrj/io/graph/ShortestPathStream.java      |   78 +-
 .../solr/client/solrj/io/graph/Traversal.java   |   96 +
 .../solrj/io/graph/TraversalIterator.java       |  120 ++
 .../client/solrj/io/ops/ConcatOperation.java    |   15 +-
 .../client/solrj/io/ops/DistinctOperation.java  |   33 +-
 .../client/solrj/io/ops/GroupOperation.java     |   42 +-
 .../client/solrj/io/ops/ReplaceOperation.java   |    6 +
 .../solrj/io/ops/ReplaceWithFieldOperation.java |   12 +
 .../solrj/io/ops/ReplaceWithValueOperation.java |   12 +
 .../client/solrj/io/ops/StreamOperation.java    |    3 -
 .../client/solrj/io/sql/ConnectionImpl.java     |    6 +-
 .../solrj/io/sql/DatabaseMetaDataImpl.java      |    4 +-
 .../solrj/io/sql/PreparedStatementImpl.java     |  394 ++++
 .../solr/client/solrj/io/sql/ResultSetImpl.java |   78 +-
 .../solr/client/solrj/io/sql/StatementImpl.java |   67 +-
 .../client/solrj/io/stream/BiJoinStream.java    |    8 -
 .../client/solrj/io/stream/CloudSolrStream.java |  157 +-
 .../solrj/io/stream/ComplementStream.java       |   57 +-
 .../client/solrj/io/stream/DaemonStream.java    |   57 +-
 .../client/solrj/io/stream/ExceptionStream.java |   14 +
 .../client/solrj/io/stream/FacetStream.java     |  107 +-
 .../client/solrj/io/stream/HashJoinStream.java  |   89 +-
 .../client/solrj/io/stream/IntersectStream.java |   56 +-
 .../solr/client/solrj/io/stream/JDBCStream.java |   37 +
 .../solr/client/solrj/io/stream/JoinStream.java |   33 +-
 .../solrj/io/stream/LeftOuterJoinStream.java    |    4 -
 .../client/solrj/io/stream/MergeStream.java     |   35 +-
 .../solrj/io/stream/OuterHashJoinStream.java    |   18 +-
 .../client/solrj/io/stream/ParallelStream.java  |   62 +-
 .../client/solrj/io/stream/PushBackStream.java  |    7 +-
 .../client/solrj/io/stream/RandomStream.java    |  237 +++
 .../solr/client/solrj/io/stream/RankStream.java |   43 +-
 .../client/solrj/io/stream/ReducerStream.java   |   37 +-
 .../client/solrj/io/stream/RollupStream.java    |   43 +-
 .../client/solrj/io/stream/SelectStream.java    |   41 +-
 .../solr/client/solrj/io/stream/SolrStream.java |   57 +-
 .../solr/client/solrj/io/stream/SortStream.java |  199 ++
 .../client/solrj/io/stream/StatsStream.java     |   88 +-
 .../client/solrj/io/stream/StreamContext.java   |    6 +-
 .../client/solrj/io/stream/TopicStream.java     |  148 +-
 .../client/solrj/io/stream/TupleStream.java     |   10 +
 .../client/solrj/io/stream/UniqueStream.java    |   37 +-
 .../client/solrj/io/stream/UpdateStream.java    |   54 +-
 .../solrj/io/stream/expr/Explanation.java       |  158 ++
 .../solrj/io/stream/expr/Expressible.java       |    9 +
 .../solrj/io/stream/expr/StreamExplanation.java |   70 +
 .../client/solrj/io/stream/metrics/Bucket.java  |    8 +-
 .../solrj/io/stream/metrics/CountMetric.java    |   13 +-
 .../solrj/io/stream/metrics/MaxMetric.java      |   16 +-
 .../solrj/io/stream/metrics/MeanMetric.java     |   22 +-
 .../client/solrj/io/stream/metrics/Metric.java  |   35 +-
 .../solrj/io/stream/metrics/MinMetric.java      |   10 +-
 .../solrj/io/stream/metrics/SumMetric.java      |   19 +-
 .../solrj/request/CollectionAdminRequest.java   |  199 ++
 .../client/solrj/request/UpdateRequest.java     |   18 +-
 .../solr/client/solrj/response/FacetField.java  |    1 -
 .../solr/client/solrj/response/PivotField.java  |    2 -
 .../solrj/response/schema/SchemaResponse.java   |   64 +-
 .../solrj/util/SolrIdentifierValidator.java     |   12 +-
 .../apache/solr/common/SolrInputDocument.java   |    6 +-
 .../solr/common/cloud/ClusterProperties.java    |  126 ++
 .../apache/solr/common/cloud/ClusterState.java  |   92 +-
 .../solr/common/cloud/ClusterStateUtil.java     |   24 +-
 .../common/cloud/CollectionStatePredicate.java  |   42 +
 .../common/cloud/CollectionStateWatcher.java    |   42 +
 .../apache/solr/common/cloud/DocCollection.java |   60 +-
 .../apache/solr/common/cloud/OnReconnect.java   |    9 +-
 .../org/apache/solr/common/cloud/Replica.java   |   15 +-
 .../org/apache/solr/common/cloud/Slice.java     |   40 +-
 .../apache/solr/common/cloud/SolrZkClient.java  |    1 -
 .../solr/common/cloud/ZkConfigManager.java      |   26 +-
 .../apache/solr/common/cloud/ZkStateReader.java |  549 ++++--
 .../solr/common/params/CollectionParams.java    |  125 +-
 .../solr/common/params/CoreAdminParams.java     |   21 +-
 .../apache/solr/common/params/FacetParams.java  |   17 +
 .../solr/common/params/HighlightParams.java     |    1 +
 .../apache/solr/common/util/ExecutorUtil.java   |   14 +-
 .../apache/solr/common/util/JavaBinCodec.java   |    8 +-
 .../solr/common/util/JsonRecordReader.java      |  132 +-
 .../org/apache/solr/common/util/NamedList.java  |   69 +
 .../java/org/apache/solr/common/util/Pair.java  |   41 +-
 .../org/apache/solr/common/util/StrUtils.java   |   10 +-
 .../java/org/apache/solr/common/util/Utils.java |    1 +
 .../collection1/conf/schema-replication1.xml    |   15 +-
 .../solrj/solr/collection1/conf/schema-sql.xml  | 1087 +++++------
 .../solr/collection1/conf/schema-streaming.xml  |  600 ------
 .../solrj/solr/collection1/conf/schema.xml      |  975 +++++-----
 .../collection1/conf/solrconfig-streaming.xml   |   51 -
 .../configset-1/conf/schema-minimal.xml         |    6 +-
 .../solr/configsets/configset-2/conf/schema.xml |    6 +-
 .../solr/configsets/shared/conf/schema.xml      |   76 +-
 .../solr/configsets/streaming/conf/schema.xml   |  612 ++++++
 .../configsets/streaming/conf/solrconfig.xml    |   51 +
 .../solrj/solr/crazy-path-to-schema.xml         |    9 +-
 .../apache/solr/client/solrj/GetByIdTest.java   |    2 -
 .../solrj/MergeIndexesExampleTestBase.java      |    1 -
 .../client/solrj/SolrExampleBinaryTest.java     |    2 +-
 .../solr/client/solrj/SolrExampleTests.java     |    2 +-
 .../solr/client/solrj/SolrExampleXMLTest.java   |    2 +-
 .../solr/client/solrj/SolrExceptionTest.java    |    4 +-
 .../client/solrj/SolrSchemalessExampleTest.java |    3 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java |    8 +-
 .../solrj/beans/TestDocumentObjectBinder.java   |    2 -
 .../client/solrj/embedded/JettyWebappTest.java  |    4 +-
 .../embedded/LargeVolumeBinaryJettyTest.java    |    1 -
 .../solrj/embedded/LargeVolumeEmbeddedTest.java |    1 -
 .../solrj/embedded/LargeVolumeJettyTest.java    |    1 -
 .../solrj/embedded/SolrExampleEmbeddedTest.java |    1 -
 .../solrj/embedded/SolrExampleJettyTest.java    |    2 +-
 .../embedded/SolrExampleStreamingTest.java      |   23 +-
 .../solrj/impl/BasicHttpSolrClientTest.java     |   47 +-
 .../solrj/impl/CloudSolrClientBuilderTest.java  |   90 +
 .../client/solrj/impl/CloudSolrClientTest.java  |  428 ++---
 .../ConcurrentUpdateSolrClientBuilderTest.java  |   33 +
 .../impl/ConcurrentUpdateSolrClientTest.java    |  115 +-
 .../solrj/impl/HttpSolrClientBuilderTest.java   |   76 +
 .../solrj/impl/LBHttpSolrClientBuilderTest.java |   65 +
 .../solrj/io/graph/GraphExpressionTest.java     |  727 +++++--
 .../solr/client/solrj/io/graph/GraphTest.java   |  243 +--
 .../client/solrj/io/sql/JdbcDriverTest.java     |    7 +-
 .../solr/client/solrj/io/sql/JdbcTest.java      |  252 ++-
 .../client/solrj/io/stream/JDBCStreamTest.java  |  435 ++---
 .../solrj/io/stream/RecordCountStream.java      |   37 +-
 .../solrj/io/stream/StreamExpressionTest.java   | 1593 ++++++++-------
 .../StreamExpressionToExplanationTest.java      |  289 +++
 .../client/solrj/io/stream/StreamingTest.java   | 1372 +++++++------
 .../io/stream/ops/ConcatOperationTest.java      |    1 -
 .../solrj/request/TestUpdateRequestCodec.java   |    2 -
 .../cloud/TestCollectionStateWatchers.java      |  278 +++
 .../solr/common/cloud/TestZkConfigManager.java  |    6 +
 .../solr/common/util/TestJsonRecordReader.java  |   63 +-
 solr/test-framework/build.xml                   |    6 +
 .../solr/BaseDistributedSearchTestCase.java     |    2 +-
 .../java/org/apache/solr/SolrJettyTestBase.java |    2 +-
 .../java/org/apache/solr/SolrTestCaseHS.java    |   40 +-
 .../java/org/apache/solr/SolrTestCaseJ4.java    |  182 +-
 .../solr/analysis/MockTokenizerFactory.java     |    1 -
 .../solr/cloud/AbstractDistribZkTestBase.java   |   28 +-
 .../cloud/AbstractFullDistribZkTestBase.java    |  119 +-
 .../java/org/apache/solr/cloud/ChaosMonkey.java |    1 -
 .../apache/solr/cloud/MiniSolrCloudCluster.java |   50 +-
 .../org/apache/solr/cloud/MockSolrZkClient.java |    1 -
 .../apache/solr/cloud/SolrCloudTestCase.java    |    6 +
 .../org/apache/solr/util/BaseTestHarness.java   |    1 -
 .../org/apache/solr/util/ExternalPaths.java     |    4 -
 .../apache/solr/util/RESTfulServerProvider.java |    2 +-
 .../org/apache/solr/util/RandomMergePolicy.java |    8 -
 .../java/org/apache/solr/util/RandomizeSSL.java |  174 ++
 .../java/org/apache/solr/util/RestTestBase.java |    7 +-
 .../org/apache/solr/util/SSLTestConfig.java     |  335 +++-
 .../resources/SSLTestConfig.testing.keystore    |  Bin 0 -> 2208 bytes
 solr/webapp/web/css/angular/menu.css            |    1 +
 solr/webapp/web/css/angular/stream.css          |  233 +++
 solr/webapp/web/index.html                      |    7 +-
 solr/webapp/web/js/angular/app.js               |    8 +
 .../webapp/web/js/angular/controllers/stream.js |  240 +++
 solr/webapp/web/partials/schema.html            |    2 +-
 solr/webapp/web/partials/stream.html            |   64 +
 1783 files changed, 78601 insertions(+), 49057 deletions(-)
----------------------------------------------------------------------



[19/50] [abbrv] lucene-solr:apiv2: LUCENE-7334: Update ASM dependency to 5.1

Posted by no...@apache.org.
LUCENE-7334: Update ASM dependency to 5.1


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/02c65547
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/02c65547
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/02c65547

Branch: refs/heads/apiv2
Commit: 02c65547e2973dbfdea4b2a2411987d23d66a6b6
Parents: 232b44e
Author: Uwe Schindler <uw...@thetaphi.de>
Authored: Sun Jun 12 14:20:56 2016 +0200
Committer: Uwe Schindler <uw...@thetaphi.de>
Committed: Sun Jun 12 14:20:56 2016 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                         | 2 ++
 lucene/ivy-versions.properties             | 2 +-
 lucene/licenses/asm-5.0.4.jar.sha1         | 1 -
 lucene/licenses/asm-5.1.jar.sha1           | 1 +
 lucene/licenses/asm-commons-5.0.4.jar.sha1 | 1 -
 lucene/licenses/asm-commons-5.1.jar.sha1   | 1 +
 solr/licenses/asm-5.0.4.jar.sha1           | 1 -
 solr/licenses/asm-5.1.jar.sha1             | 1 +
 solr/licenses/asm-commons-5.0.4.jar.sha1   | 1 -
 solr/licenses/asm-commons-5.1.jar.sha1     | 1 +
 10 files changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index fb46c5f..64be39a 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -41,6 +41,8 @@ Other
 * LUCENE-4787: Fixed some highlighting javadocs. (Michael Dodsworth via Adrien
   Grand)
 
+* LUCENE-7334: Update ASM dependency to 5.1.  (Uwe Schindler)
+
 ======================= Lucene 6.1.0 =======================
 
 New Features

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/lucene/ivy-versions.properties
----------------------------------------------------------------------
diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties
index ac9e416..a4e1bb1 100644
--- a/lucene/ivy-versions.properties
+++ b/lucene/ivy-versions.properties
@@ -278,7 +278,7 @@ org.mortbay.jetty.version = 6.1.26
 /org.noggit/noggit = 0.6
 /org.objenesis/objenesis = 1.2
 
-org.ow2.asm.version = 5.0.4
+org.ow2.asm.version = 5.1
 /org.ow2.asm/asm = ${org.ow2.asm.version}
 /org.ow2.asm/asm-commons = ${org.ow2.asm.version}
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/lucene/licenses/asm-5.0.4.jar.sha1
----------------------------------------------------------------------
diff --git a/lucene/licenses/asm-5.0.4.jar.sha1 b/lucene/licenses/asm-5.0.4.jar.sha1
deleted file mode 100644
index 9223dba..0000000
--- a/lucene/licenses/asm-5.0.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0da08b8cce7bbf903602a25a3a163ae252435795

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/lucene/licenses/asm-5.1.jar.sha1
----------------------------------------------------------------------
diff --git a/lucene/licenses/asm-5.1.jar.sha1 b/lucene/licenses/asm-5.1.jar.sha1
new file mode 100644
index 0000000..fc907c7
--- /dev/null
+++ b/lucene/licenses/asm-5.1.jar.sha1
@@ -0,0 +1 @@
+5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/lucene/licenses/asm-commons-5.0.4.jar.sha1
----------------------------------------------------------------------
diff --git a/lucene/licenses/asm-commons-5.0.4.jar.sha1 b/lucene/licenses/asm-commons-5.0.4.jar.sha1
deleted file mode 100644
index 94fe0cd..0000000
--- a/lucene/licenses/asm-commons-5.0.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5a556786086c23cd689a0328f8519db93821c04c

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/lucene/licenses/asm-commons-5.1.jar.sha1
----------------------------------------------------------------------
diff --git a/lucene/licenses/asm-commons-5.1.jar.sha1 b/lucene/licenses/asm-commons-5.1.jar.sha1
new file mode 100644
index 0000000..8b49593
--- /dev/null
+++ b/lucene/licenses/asm-commons-5.1.jar.sha1
@@ -0,0 +1 @@
+25d8a575034dd9cfcb375a39b5334f0ba9c8474e

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/solr/licenses/asm-5.0.4.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/asm-5.0.4.jar.sha1 b/solr/licenses/asm-5.0.4.jar.sha1
deleted file mode 100644
index 9223dba..0000000
--- a/solr/licenses/asm-5.0.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0da08b8cce7bbf903602a25a3a163ae252435795

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/solr/licenses/asm-5.1.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/asm-5.1.jar.sha1 b/solr/licenses/asm-5.1.jar.sha1
new file mode 100644
index 0000000..fc907c7
--- /dev/null
+++ b/solr/licenses/asm-5.1.jar.sha1
@@ -0,0 +1 @@
+5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/solr/licenses/asm-commons-5.0.4.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/asm-commons-5.0.4.jar.sha1 b/solr/licenses/asm-commons-5.0.4.jar.sha1
deleted file mode 100644
index 94fe0cd..0000000
--- a/solr/licenses/asm-commons-5.0.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5a556786086c23cd689a0328f8519db93821c04c

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/02c65547/solr/licenses/asm-commons-5.1.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/asm-commons-5.1.jar.sha1 b/solr/licenses/asm-commons-5.1.jar.sha1
new file mode 100644
index 0000000..8b49593
--- /dev/null
+++ b/solr/licenses/asm-commons-5.1.jar.sha1
@@ -0,0 +1 @@
+25d8a575034dd9cfcb375a39b5334f0ba9c8474e


[12/50] [abbrv] lucene-solr:apiv2: remove unused GeoPointTestUtil

Posted by no...@apache.org.
remove unused GeoPointTestUtil


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c0f047ab
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c0f047ab
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c0f047ab

Branch: refs/heads/apiv2
Commit: c0f047abc0baacc8fe578149911da406d9352756
Parents: f767855
Author: Nicholas Knize <nk...@gmail.com>
Authored: Fri Jun 10 12:53:07 2016 -0500
Committer: Nicholas Knize <nk...@gmail.com>
Committed: Fri Jun 10 12:53:07 2016 -0500

----------------------------------------------------------------------
 .../geopoint/search/GeoPointTestUtil.java       | 287 -------------------
 1 file changed, 287 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c0f047ab/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/GeoPointTestUtil.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/GeoPointTestUtil.java b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/GeoPointTestUtil.java
deleted file mode 100644
index a8c4271..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/GeoPointTestUtil.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * 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.spatial.geopoint.search;
-
-import java.util.ArrayList;
-import java.util.Random;
-
-import org.apache.lucene.geo.GeoUtils;
-import org.apache.lucene.geo.Polygon;
-import org.apache.lucene.geo.Rectangle;
-
-import com.carrotsearch.randomizedtesting.RandomizedContext;
-
-// HACK: this is a wimpier version of GeoTestUtil used for now until we can
-// get all tests passing with new random number generator!
-
-final class GeoPointTestUtil {
-
-  /** returns next pseudorandom latitude (anywhere) */
-  public static double nextLatitude() {
-    return -90 + 180.0 * random().nextDouble();
-  }
-
-  /** returns next pseudorandom longitude (anywhere) */
-  public static double nextLongitude() {
-    return -180 + 360.0 * random().nextDouble();
-  }
-
-  /** returns next pseudorandom latitude, kinda close to {@code otherLatitude} */
-  public static double nextLatitudeNear(double otherLatitude) {
-    GeoUtils.checkLatitude(otherLatitude);
-    return normalizeLatitude(otherLatitude + random().nextDouble() - 0.5);
-  }
-
-  /** returns next pseudorandom longitude, kinda close to {@code otherLongitude} */
-  public static double nextLongitudeNear(double otherLongitude) {
-    GeoUtils.checkLongitude(otherLongitude);
-    return normalizeLongitude(otherLongitude + random().nextDouble() - 0.5);
-  }
-
-  /**
-   * returns next pseudorandom latitude, kinda close to {@code minLatitude/maxLatitude}
-   * <b>NOTE:</b>minLatitude/maxLatitude are merely guidelines. the returned value is sometimes
-   * outside of that range! this is to facilitate edge testing.
-   */
-  public static double nextLatitudeAround(double minLatitude, double maxLatitude) {
-    GeoUtils.checkLatitude(minLatitude);
-    GeoUtils.checkLatitude(maxLatitude);
-    return normalizeLatitude(randomRangeMaybeSlightlyOutside(minLatitude, maxLatitude));
-  }
-
-  /**
-   * returns next pseudorandom longitude, kinda close to {@code minLongitude/maxLongitude}
-   * <b>NOTE:</b>minLongitude/maxLongitude are merely guidelines. the returned value is sometimes
-   * outside of that range! this is to facilitate edge testing.
-   */
-  public static double nextLongitudeAround(double minLongitude, double maxLongitude) {
-    GeoUtils.checkLongitude(minLongitude);
-    GeoUtils.checkLongitude(maxLongitude);
-    return normalizeLongitude(randomRangeMaybeSlightlyOutside(minLongitude, maxLongitude));
-  }
-
-  /** returns next pseudorandom box: can cross the 180th meridian */
-  public static Rectangle nextBox() {
-    return nextBoxInternal(nextLatitude(), nextLatitude(), nextLongitude(), nextLongitude(), true);
-  }
-  
-  /** returns next pseudorandom box: will not cross the 180th meridian */
-  public static Rectangle nextSimpleBox() {
-    return nextBoxInternal(nextLatitude(), nextLatitude(), nextLongitude(), nextLongitude(), false);
-  }
-
-  /** returns next pseudorandom box, can cross the 180th meridian, kinda close to {@code otherLatitude} and {@code otherLongitude} */
-  public static Rectangle nextBoxNear(double otherLatitude, double otherLongitude) {
-    GeoUtils.checkLongitude(otherLongitude);
-    GeoUtils.checkLongitude(otherLongitude);
-    return nextBoxInternal(nextLatitudeNear(otherLatitude), nextLatitudeNear(otherLatitude),
-                           nextLongitudeNear(otherLongitude), nextLongitudeNear(otherLongitude), true);
-  }
-  
-  /** returns next pseudorandom box, will not cross the 180th meridian, kinda close to {@code otherLatitude} and {@code otherLongitude} */
-  public static Rectangle nextSimpleBoxNear(double otherLatitude, double otherLongitude) {
-    GeoUtils.checkLongitude(otherLongitude);
-    GeoUtils.checkLongitude(otherLongitude);
-    return nextBoxInternal(nextLatitudeNear(otherLatitude), nextLatitudeNear(otherLatitude),
-                           nextLongitudeNear(otherLongitude), nextLongitudeNear(otherLongitude), false);
-  }
-
-  /** returns next pseudorandom polygon */
-  public static Polygon nextPolygon() {
-    if (random().nextBoolean()) {
-      return surpriseMePolygon(null, null);
-    }
-
-    Rectangle box = nextBoxInternal(nextLatitude(), nextLatitude(), nextLongitude(), nextLongitude(), false);
-    if (random().nextBoolean()) {
-      // box
-      return boxPolygon(box);
-    } else {
-      // triangle
-      return trianglePolygon(box);
-    }
-  }
-
-  /** returns next pseudorandom polygon, kinda close to {@code otherLatitude} and {@code otherLongitude} */
-  public static Polygon nextPolygonNear(double otherLatitude, double otherLongitude) {
-    if (random().nextBoolean()) {
-      return surpriseMePolygon(otherLatitude, otherLongitude);
-    }
-
-    Rectangle box = nextBoxInternal(nextLatitudeNear(otherLatitude), nextLatitudeNear(otherLatitude),
-                                  nextLongitudeNear(otherLongitude), nextLongitudeNear(otherLongitude), false);
-    if (random().nextBoolean()) {
-      // box
-      return boxPolygon(box);
-    } else {
-      // triangle
-      return trianglePolygon(box);
-    }
-  }
-
-  private static Rectangle nextBoxInternal(double lat0, double lat1, double lon0, double lon1, boolean canCrossDateLine) {
-    if (lat1 < lat0) {
-      double x = lat0;
-      lat0 = lat1;
-      lat1 = x;
-    }
-
-    if (canCrossDateLine == false && lon1 < lon0) {
-      double x = lon0;
-      lon0 = lon1;
-      lon1 = x;
-    }
-
-    return new Rectangle(lat0, lat1, lon0, lon1);
-  }
-
-  private static Polygon boxPolygon(Rectangle box) {
-    assert box.crossesDateline() == false;
-    final double[] polyLats = new double[5];
-    final double[] polyLons = new double[5];
-    polyLats[0] = box.minLat;
-    polyLons[0] = box.minLon;
-    polyLats[1] = box.maxLat;
-    polyLons[1] = box.minLon;
-    polyLats[2] = box.maxLat;
-    polyLons[2] = box.maxLon;
-    polyLats[3] = box.minLat;
-    polyLons[3] = box.maxLon;
-    polyLats[4] = box.minLat;
-    polyLons[4] = box.minLon;
-    return new Polygon(polyLats, polyLons);
-  }
-
-  private static Polygon trianglePolygon(Rectangle box) {
-    assert box.crossesDateline() == false;
-    final double[] polyLats = new double[4];
-    final double[] polyLons = new double[4];
-    polyLats[0] = box.minLat;
-    polyLons[0] = box.minLon;
-    polyLats[1] = box.maxLat;
-    polyLons[1] = box.minLon;
-    polyLats[2] = box.maxLat;
-    polyLons[2] = box.maxLon;
-    polyLats[3] = box.minLat;
-    polyLons[3] = box.minLon;
-    return new Polygon(polyLats, polyLons);
-  }
-
-  private static Polygon surpriseMePolygon(Double otherLatitude, Double otherLongitude) {
-    // repeat until we get a poly that doesn't cross dateline:
-    newPoly:
-    while (true) {
-      //System.out.println("\nPOLY ITER");
-      final double centerLat;
-      final double centerLon;
-      if (otherLatitude == null) {
-        centerLat = nextLatitude();
-        centerLon = nextLongitude();
-      } else {
-        GeoUtils.checkLatitude(otherLatitude);
-        GeoUtils.checkLongitude(otherLongitude);
-        centerLat = nextLatitudeNear(otherLatitude);
-        centerLon = nextLongitudeNear(otherLongitude);
-      }
-
-      double radius = 0.1 + 20 * random().nextDouble();
-      double radiusDelta = random().nextDouble();
-
-      ArrayList<Double> lats = new ArrayList<>();
-      ArrayList<Double> lons = new ArrayList<>();
-      double angle = 0.0;
-      while (true) {
-        angle += random().nextDouble()*40.0;
-        //System.out.println("  angle " + angle);
-        if (angle > 360) {
-          break;
-        }
-        double len = radius * (1.0 - radiusDelta + radiusDelta * random().nextDouble());
-        //System.out.println("    len=" + len);
-        double lat = centerLat + len * Math.cos(Math.toRadians(angle));
-        double lon = centerLon + len * Math.sin(Math.toRadians(angle));
-        if (lon <= GeoUtils.MIN_LON_INCL || lon >= GeoUtils.MAX_LON_INCL) {
-          // cannot cross dateline: try again!
-          continue newPoly;
-        }
-        if (lat > 90) {
-          // cross the north pole
-          lat = 180 - lat;
-          lon = 180 - lon;
-        } else if (lat < -90) {
-          // cross the south pole
-          lat = -180 - lat;
-          lon = 180 - lon;
-        }
-        if (lon <= GeoUtils.MIN_LON_INCL || lon >= GeoUtils.MAX_LON_INCL) {
-          // cannot cross dateline: try again!
-          continue newPoly;
-        }
-        lats.add(lat);
-        lons.add(lon);
-
-        //System.out.println("    lat=" + lats.get(lats.size()-1) + " lon=" + lons.get(lons.size()-1));
-      }
-
-      // close it
-      lats.add(lats.get(0));
-      lons.add(lons.get(0));
-
-      double[] latsArray = new double[lats.size()];
-      double[] lonsArray = new double[lons.size()];
-      for(int i=0;i<lats.size();i++) {
-        latsArray[i] = lats.get(i);
-        lonsArray[i] = lons.get(i);
-      }
-      return new Polygon(latsArray, lonsArray);
-    }
-  }
-
-  /** Returns random double min to max or up to 1% outside of that range */
-  private static double randomRangeMaybeSlightlyOutside(double min, double max) {
-    return min + (random().nextDouble() + (0.5 - random().nextDouble()) * .02) * (max - min);
-  }
-
-  /** Puts latitude in range of -90 to 90. */
-  private static double normalizeLatitude(double latitude) {
-    if (latitude >= -90 && latitude <= 90) {
-      return latitude; //common case, and avoids slight double precision shifting
-    }
-    double off = Math.abs((latitude + 90) % 360);
-    return (off <= 180 ? off : 360-off) - 90;
-  }
-
-  /** Puts longitude in range of -180 to +180. */
-  private static double normalizeLongitude(double longitude) {
-    if (longitude >= -180 && longitude <= 180) {
-      return longitude; //common case, and avoids slight double precision shifting
-    }
-    double off = (longitude + 180) % 360;
-    if (off < 0) {
-      return 180 + off;
-    } else if (off == 0 && longitude > 0) {
-      return 180;
-    } else {
-      return -180 + off;
-    }
-  }
-
-  /** Keep it simple, we don't need to take arbitrary Random for geo tests */
-  private static Random random() {
-   return RandomizedContext.current().getRandom();
-  }
-}


[17/50] [abbrv] lucene-solr:apiv2: SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields

Posted by no...@apache.org.
SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/844ca4a3
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/844ca4a3
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/844ca4a3

Branch: refs/heads/apiv2
Commit: 844ca4a348e282b5f857aa7ce4de6f9781766ef9
Parents: 79d1b8c
Author: Erick Erickson <er...@apache.org>
Authored: Sat Jun 11 17:38:19 2016 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Sat Jun 11 17:38:19 2016 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  13 ++
 .../org/apache/solr/request/SimpleFacets.java   |   4 +-
 .../solr/response/SortingResponseWriter.java    | 126 ++++++++++++++++--
 .../java/org/apache/solr/schema/BoolField.java  |  43 ++++++-
 .../apache/solr/search/SolrIndexSearcher.java   |  12 +-
 .../solr/collection1/conf/schema-docValues.xml  |   5 +-
 .../conf/schema-docValuesMissing.xml            |  13 ++
 .../collection1/conf/schema-docValuesMulti.xml  |   1 +
 .../solr/collection1/conf/schema15.xml          |   1 +
 .../solr/schema/DocValuesMissingTest.java       | 129 +++++++++++++++++++
 .../apache/solr/schema/DocValuesMultiTest.java  | 103 ++++++++++++++-
 .../org/apache/solr/schema/DocValuesTest.java   |  87 +++++++++++--
 .../org/apache/solr/client/solrj/io/Tuple.java  |  53 +++++++-
 .../solr/configsets/streaming/conf/schema.xml   |  13 +-
 .../client/solrj/io/stream/StreamingTest.java   | 128 ++++++++++++++++++
 15 files changed, 692 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index b9b88d3..659a1d7 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -47,6 +47,19 @@ Optimizations
 
 ==================  6.2.0 ==================
 
+
+Upgrading from Solr any prior release
+----------------------
+
+Detailed Change List
+----------------------
+
+New Features
+----------------------
+
+* SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields
+
+
 Bug Fixes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index c804b74..017deb4 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -554,8 +554,8 @@ public class SimpleFacets {
 
      /*The user did not specify any preference*/
      if (method == null) {
-      /* Always use filters for booleans... we know the number of values is very small. */
-       if (type instanceof BoolField) {
+       /* Always use filters for booleans if not DocValues only... we know the number of values is very small. */
+       if (type instanceof BoolField && (field.indexed() == true || field.hasDocValues() == false)) {
          method = FacetMethod.ENUM;
        } else if (type.getNumericType() != null && !field.multiValued()) {
         /* the per-segment approach is optimal for numeric field types since there

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/java/org/apache/solr/response/SortingResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/SortingResponseWriter.java b/solr/core/src/java/org/apache/solr/response/SortingResponseWriter.java
index 8daf90f..b3752a8 100644
--- a/solr/core/src/java/org/apache/solr/response/SortingResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/SortingResponseWriter.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.lang.invoke.MethodHandles;
+import java.util.Date;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -44,10 +45,12 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
+import org.apache.solr.schema.BoolField;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.schema.StrField;
+import org.apache.solr.schema.TrieDateField;
 import org.apache.solr.schema.TrieDoubleField;
 import org.apache.solr.schema.TrieFloatField;
 import org.apache.solr.schema.TrieIntField;
@@ -99,14 +102,24 @@ public class SortingResponseWriter implements QueryResponseWriter {
       exception = new IOException(new SyntaxError("Scoring is not currently supported with xsort."));
     }
 
-    FixedBitSet[] sets = (FixedBitSet[])req.getContext().get("export");
-    Integer th = (Integer)req.getContext().get("totalHits");
-
-    if(sets == null) {
-      exception = new IOException(new SyntaxError("xport RankQuery is required for xsort: rq={!xport}"));
+    // There is a bailout in SolrIndexSearcher.getDocListNC when there are _no_ docs in the index at all.
+    // if (lastDocRequested <= 0) {
+    // That causes the totalHits and export entries in the context to _not_ get set.
+    // The only time that really matters is when we search against an _empty_ set. That's too obscure
+    // a condition to handle as part of this patch, if someone wants to pursue it it can be reproduced with:
+    // ant test  -Dtestcase=StreamingTest -Dtests.method=testAllValidExportTypes -Dtests.seed=10F13879D0D1D6AD -Dtests.slow=true -Dtests.locale=es-PA -Dtests.timezone=America/Bahia_Banderas -Dtests.asserts=true -Dtests.file.encoding=ISO-8859-1
+    // You'll have to uncomment the if below to hit the null pointer exception.
+    // This is such an unusual case (i.e. an empty index) that catching this concdition here is probably OK.
+    // This came to light in the very artifical case of indexing a single doc to Cloud.
+    int totalHits = 0;
+    FixedBitSet[] sets = null;
+    if (req.getContext().get("totalHits") != null) {
+      totalHits = ((Integer)req.getContext().get("totalHits")).intValue();
+      sets = (FixedBitSet[]) req.getContext().get("export");
+      if (sets == null) {
+        exception = new IOException(new SyntaxError("xport RankQuery is required for xsort: rq={!xport}"));
+      }
     }
-
-    int totalHits = th.intValue();
     SolrParams params = req.getParams();
     String fl = params.get("fl");
 
@@ -132,7 +145,7 @@ public class SortingResponseWriter implements QueryResponseWriter {
 
     try {
       fieldWriters = getFieldWriters(fields, req.getSearcher());
-    }catch(Exception e) {
+    } catch (Exception e) {
       exception = e;
     }
 
@@ -309,8 +322,21 @@ public class SortingResponseWriter implements QueryResponseWriter {
         } else {
           writers[i] = new StringFieldWriter(field, fieldType);
         }
-      } else {
-        throw new IOException("Export fields must either be one of the following types: int,float,long,double,string");
+      } else if (fieldType instanceof TrieDateField) {
+        if (multiValued) {
+          writers[i] = new MultiFieldWriter(field, fieldType, false);
+        } else {
+          writers[i] = new DateFieldWriter(field);
+        }
+      } else if(fieldType instanceof BoolField) {
+        if(multiValued) {
+          writers[i] = new MultiFieldWriter(field, fieldType, true);
+        } else {
+          writers[i] = new BoolFieldWriter(field, fieldType);
+        }
+      }
+      else {
+        throw new IOException("Export fields must either be one of the following types: int,float,long,double,string,date,boolean");
       }
     }
     return writers;
@@ -362,8 +388,25 @@ public class SortingResponseWriter implements QueryResponseWriter {
         } else {
           sortValues[i] = new StringValue(vals, field, new IntAsc());
         }
+      } else if (ft instanceof TrieDateField) {
+        if (reverse) {
+          sortValues[i] = new LongValue(field, new LongDesc());
+        } else {
+          sortValues[i] = new LongValue(field, new LongAsc());
+        }
+      } else if (ft instanceof BoolField) {
+        // This is a bit of a hack, but since the boolean field stores ByteRefs, just like Strings
+        // _and_ since "F" happens to sort before "T" (thus false sorts "less" than true)
+        // we can just use the existing StringValue here.
+        LeafReader reader = searcher.getLeafReader();
+        SortedDocValues vals =  reader.getSortedDocValues(field);
+        if(reverse) {
+          sortValues[i] = new StringValue(vals, field, new IntDesc());
+        } else {
+          sortValues[i] = new StringValue(vals, field, new IntAsc());
+        }
       } else {
-        throw new IOException("Sort fields must be one of the following types: int,float,long,double,string");
+        throw new IOException("Sort fields must be one of the following types: int,float,long,double,string,date,boolean");
       }
     }
 
@@ -1296,6 +1339,65 @@ public class SortingResponseWriter implements QueryResponseWriter {
     }
   }
 
+  class DateFieldWriter extends FieldWriter {
+    private String field;
+
+    public DateFieldWriter(String field) {
+      this.field = field;
+    }
+
+    public boolean write(int docId, LeafReader reader, Writer out, int fieldIndex) throws IOException {
+      NumericDocValues vals = DocValues.getNumeric(reader, this.field);
+      long val = vals.get(docId);
+
+      if (fieldIndex > 0) {
+        out.write(',');
+      }
+      out.write('"');
+      out.write(this.field);
+      out.write('"');
+      out.write(':');
+      out.write('"');
+      writeStr(new Date(val).toInstant().toString(), out);
+      out.write('"');
+      return true;
+    }
+  }
+
+  class BoolFieldWriter extends FieldWriter {
+    private String field;
+    private FieldType fieldType;
+    private CharsRefBuilder cref = new CharsRefBuilder();
+
+    public BoolFieldWriter(String field, FieldType fieldType) {
+      this.field = field;
+      this.fieldType = fieldType;
+    }
+
+    public boolean write(int docId, LeafReader reader, Writer out, int fieldIndex) throws IOException {
+      SortedDocValues vals = DocValues.getSorted(reader, this.field);
+      int ord = vals.getOrd(docId);
+      if(ord == -1) {
+        return false;
+      }
+
+      BytesRef ref = vals.lookupOrd(ord);
+      fieldType.indexedToReadable(ref, cref);
+
+      if (fieldIndex > 0) {
+        out.write(',');
+      }
+      out.write('"');
+      out.write(this.field);
+      out.write('"');
+      out.write(':');
+      //out.write('"');
+      writeStr(cref.toString(), out);
+      //out.write('"');
+      return true;
+    }
+  }
+
   class FloatFieldWriter extends FieldWriter {
     private String field;
 
@@ -1614,4 +1716,4 @@ public class SortingResponseWriter implements QueryResponseWriter {
       return (Object[]) heap;
     }
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/java/org/apache/solr/schema/BoolField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/BoolField.java b/solr/core/src/java/org/apache/solr/schema/BoolField.java
index 01161e7..1ecdb59 100644
--- a/solr/core/src/java/org/apache/solr/schema/BoolField.java
+++ b/solr/core/src/java/org/apache/solr/schema/BoolField.java
@@ -17,11 +17,16 @@
 package org.apache.solr.schema;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.document.SortedDocValuesField;
+import org.apache.lucene.document.SortedSetDocValuesField;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.LeafReaderContext;
@@ -123,7 +128,11 @@ public class BoolField extends PrimitiveFieldType {
 
   @Override
   public String toExternal(IndexableField f) {
-    return indexedToReadable(f.stringValue());
+    if (f.binaryValue() == null) {
+      return null;
+    }
+
+    return indexedToReadable(f.binaryValue().utf8ToString());
   }
 
   @Override
@@ -144,7 +153,7 @@ public class BoolField extends PrimitiveFieldType {
 
   private static final CharsRef TRUE = new CharsRef("true");
   private static final CharsRef FALSE = new CharsRef("false");
-  
+
   @Override
   public CharsRef indexedToReadable(BytesRef input, CharsRefBuilder charsRef) {
     if (input.length > 0 && input.bytes[input.offset] == 'T') {
@@ -169,6 +178,36 @@ public class BoolField extends PrimitiveFieldType {
   public Object unmarshalSortValue(Object value) {
     return unmarshalStringSortValue(value);
   }
+
+  @Override
+  public List<IndexableField> createFields(SchemaField field, Object value, float boost) {
+    IndexableField fval = createField(field, value, boost);
+
+    if (field.hasDocValues()) {
+      IndexableField docval;
+      final BytesRef bytes = new BytesRef(toInternal(value.toString()));
+      if (field.multiValued()) {
+        docval = new SortedSetDocValuesField(field.getName(), bytes);
+      } else {
+        docval = new SortedDocValuesField(field.getName(), bytes);
+      }
+
+      // Only create a list of we have 2 values...
+      if (fval != null) {
+        List<IndexableField> fields = new ArrayList<>(2);
+        fields.add(fval);
+        fields.add(docval);
+        return fields;
+      }
+
+      fval = docval;
+    }
+    return Collections.singletonList(fval);
+  }
+
+  @Override
+  public void checkSchemaField(final SchemaField field) {
+  }
 }
 
 // TODO - this can be much more efficient - use FixedBitSet or Bits

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index 33d616e..213f758 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -112,6 +112,7 @@ import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.schema.BoolField;
 import org.apache.solr.schema.EnumField;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
@@ -841,8 +842,15 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
             break;
           case SORTED:
             SortedDocValues sdv = leafReader.getSortedDocValues(fieldName);
-            if (sdv.getOrd(docid) >= 0) {
-              doc.addField(fieldName, sdv.get(docid).utf8ToString());
+            int ord = sdv.getOrd(docid);
+            if (ord >= 0) {
+              // Special handling for Boolean fields since they're stored as 'T' and 'F'.
+              if (schemaField.getType() instanceof BoolField) {
+                final BytesRef bRef = sdv.lookupOrd(ord);
+                doc.addField(fieldName, schemaField.getType().toObject(schemaField, bRef));
+              } else {
+                doc.addField(fieldName, sdv.get(docid).utf8ToString());
+              }
             }
             break;
           case SORTED_NUMERIC:

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
index 59fe99a..c7b7de8 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
@@ -61,7 +61,8 @@
   <field name="longdv" type="long" indexed="false" stored="false" docValues="true" default="4"/>
   <field name="datedv" type="date" indexed="false" stored="false" docValues="true" default="1995-12-31T23:59:59.999Z"/>
 
-  <field name="stringdv" type="string" indexed="false" stored="false" docValues="true" default="solr"/>
+  <field name="stringdv" type="string" indexed="false" stored="false" docValues="true" default="solr" />
+  <field name="booldv" type="boolean" indexed="false" stored="false" docValues="true" default="true" />
 
   <field name="floatdvs" type="float" indexed="false" stored="false" docValues="true" default="1"/>
   <field name="intdvs" type="int" indexed="false" stored="false" docValues="true" default="2"/>
@@ -69,7 +70,7 @@
   <field name="longdvs" type="long" indexed="false" stored="false" docValues="true" default="4"/>
   <field name="datedvs" type="date" indexed="false" stored="false" docValues="true" default="1995-12-31T23:59:59.999Z"/>
   <field name="stringdvs" type="string" indexed="false" stored="false" docValues="true" default="solr"/>
-
+  <field name="booldvs" type="boolean" indexed="false" stored="false" docValues="true" default="true"/>
 
   <uniqueKey>id</uniqueKey>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
index 2204749..ac319e2 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
@@ -25,6 +25,7 @@
   <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <fieldType name="date" class="solr.TrieDateField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <fieldType name="string" class="solr.StrField"/>
+  <fieldType name="boolean" class="solr.BoolField"/>
 
   <field name="id" type="string" required="true"/>
 
@@ -61,6 +62,13 @@
          sortMissingLast="true"/>
 
 
+  <field name="booldv" type="boolean" indexed="false" stored="false" docValues="true"/>
+  <field name="booldv_missingfirst" type="boolean" indexed="false" stored="false" docValues="true"
+         sortMissingFirst="true"/>
+  <field name="booldv_missinglast" type="boolean" indexed="false" stored="false" docValues="true"
+         sortMissingLast="true"/>
+
+
   <dynamicField name="*_floatdv" type="float" indexed="false" stored="false" docValues="true"/>
   <dynamicField name="*_floatdv_missingfirst" type="float" indexed="false" stored="false" docValues="true"
                 sortMissingFirst="true"/>
@@ -97,6 +105,11 @@
   <dynamicField name="*_stringdv_missinglast" type="string" indexed="false" stored="false" docValues="true"
                 sortMissingLast="true"/>
 
+  <dynamicField name="*_booldv" type="boolean" indexed="false" stored="false" docValues="true"/>
+  <dynamicField name="*_booldv_missingfirst" type="boolean" indexed="false" stored="false" docValues="true"
+                sortMissingFirst="true"/>
+  <dynamicField name="*_booldv_missinglast" type="boolean" indexed="false" stored="false" docValues="true"
+                sortMissingLast="true"/>
 
   <uniqueKey>id</uniqueKey>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
index 93a8588..81c7836 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
@@ -42,6 +42,7 @@
   <field name="datedv" type="date" indexed="false" stored="false" docValues="true" multiValued="true"/>
 
   <field name="stringdv" type="string" indexed="false" stored="false" docValues="true" multiValued="true"/>
+  <field name="booldv" type="boolean" indexed="false" stored="false" docValues="true" multiValued="true"/>
 
   <uniqueKey>id</uniqueKey>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test-files/solr/collection1/conf/schema15.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema15.xml b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
index 82faa6a..d545149 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema15.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
@@ -452,6 +452,7 @@
   <field name="bind" type="boolean" indexed="true" stored="false"/>
   <field name="bsto" type="boolean" indexed="false" stored="true"/>
   <field name="bindsto" type="boolean" indexed="true" stored="true"/>
+  <field name="bindstom" type="boolean" indexed="true" stored="true" multiValued="true"/>
   <field name="isto" type="int" indexed="false" stored="true"/>
   <field name="iind" type="int" indexed="true" stored="false"/>
   <field name="ssto" type="string" indexed="false" stored="true"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test/org/apache/solr/schema/DocValuesMissingTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/DocValuesMissingTest.java b/solr/core/src/test/org/apache/solr/schema/DocValuesMissingTest.java
index 847130b..04d38fd 100644
--- a/solr/core/src/test/org/apache/solr/schema/DocValuesMissingTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/DocValuesMissingTest.java
@@ -18,6 +18,7 @@ package org.apache.solr.schema;
 
 import org.apache.solr.SolrTestCaseJ4;
 import org.junit.BeforeClass;
+import org.junit.Test;
 
 /**
  * Tests things like sorting on docvalues with missing values
@@ -123,239 +124,290 @@ public class DocValuesMissingTest extends SolrTestCaseJ4 {
   }
 
   /** float with default lucene sort (treats as 0) */
+  @Test
   public void testFloatSort() throws Exception {
     checkSortMissingDefault("floatdv", "-1.3", "4.2");
   }
   /** dynamic float with default lucene sort (treats as 0) */
+  @Test
   public void testDynFloatSort() throws Exception {
     checkSortMissingDefault("dyn_floatdv", "-1.3", "4.2");
   }
 
   /** float with sort missing always first */
+  @Test
   public void testFloatSortMissingFirst() throws Exception {
     checkSortMissingFirst("floatdv_missingfirst", "-1.3", "4.2");
   }
   /** dynamic float with sort missing always first */
+  @Test
   public void testDynFloatSortMissingFirst() throws Exception {
     checkSortMissingFirst("dyn_floatdv_missingfirst", "-1.3", "4.2");
   }
 
   /** float with sort missing always last */
+  @Test
   public void testFloatSortMissingLast() throws Exception {
     checkSortMissingLast("floatdv_missinglast", "-1.3", "4.2");
   }
   /** dynamic float with sort missing always last */
+  @Test
   public void testDynFloatSortMissingLast() throws Exception {
     checkSortMissingLast("dyn_floatdv_missinglast", "-1.3", "4.2");
   }
   
   /** float function query based on missing */
+  @Test
   public void testFloatMissingFunction() throws Exception {
     checkSortMissingFunction("floatdv", "-1.3", "4.2");
   }
   /** dyanmic float function query based on missing */
+  @Test
   public void testDynFloatMissingFunction() throws Exception {
     checkSortMissingFunction("dyn_floatdv", "-1.3", "4.2");
   }
   
   /** float missing facet count */
+  @Test
   public void testFloatMissingFacet() throws Exception {
     checkSortMissingFacet("floatdv", "-1.3", "4.2");
   }
   /** dynamic float missing facet count */
+  @Test
   public void testDynFloatMissingFacet() throws Exception {
     checkSortMissingFacet("dyn_floatdv", "-1.3", "4.2");
   }
 
   /** int with default lucene sort (treats as 0) */
+  @Test
   public void testIntSort() throws Exception {
     checkSortMissingDefault("intdv", "-1", "4");
   }
   /** dynamic int with default lucene sort (treats as 0) */
+  @Test
   public void testDynIntSort() throws Exception {
     checkSortMissingDefault("dyn_intdv", "-1", "4");
   }
   
   /** int with sort missing always first */
+  @Test
   public void testIntSortMissingFirst() throws Exception {
     checkSortMissingFirst("intdv_missingfirst", "-1", "4");
   }
   /** dynamic int with sort missing always first */
+  @Test
   public void testDynIntSortMissingFirst() throws Exception {
     checkSortMissingFirst("dyn_intdv_missingfirst", "-1", "4");
   }
   
   /** int with sort missing always last */
+  @Test
   public void testIntSortMissingLast() throws Exception {
     checkSortMissingLast("intdv_missinglast", "-1", "4");
   }
   /** dynamic int with sort missing always last */
+  @Test
   public void testDynIntSortMissingLast() throws Exception {
     checkSortMissingLast("dyn_intdv_missinglast", "-1", "4");
   }
   
   /** int function query based on missing */
+  @Test
   public void testIntMissingFunction() throws Exception {
     checkSortMissingFunction("intdv", "-1", "4");
   }
   /** dynamic int function query based on missing */
+  @Test
   public void testDynIntMissingFunction() throws Exception {
     checkSortMissingFunction("dyn_intdv", "-1", "4");
   }
   
   /** int missing facet count */
+  @Test
   public void testIntMissingFacet() throws Exception {
     checkSortMissingFacet("intdv", "-1", "4");
   }
   /** dynamic int missing facet count */
+  @Test
   public void testDynIntMissingFacet() throws Exception {
     checkSortMissingFacet("dyn_intdv", "-1", "4");
   }
   
   /** double with default lucene sort (treats as 0) */
+  @Test
   public void testDoubleSort() throws Exception {
     checkSortMissingDefault("doubledv", "-1.3", "4.2");
   }
   /** dynamic double with default lucene sort (treats as 0) */
+  @Test
   public void testDynDoubleSort() throws Exception {
     checkSortMissingDefault("dyn_doubledv", "-1.3", "4.2");
   }
   
   /** double with sort missing always first */
+  @Test
   public void testDoubleSortMissingFirst() throws Exception {
     checkSortMissingFirst("doubledv_missingfirst", "-1.3", "4.2");
   }
   /** dynamic double with sort missing always first */
+  @Test
   public void testDynDoubleSortMissingFirst() throws Exception {
     checkSortMissingFirst("dyn_doubledv_missingfirst", "-1.3", "4.2");
   }
 
   /** double with sort missing always last */
+  @Test
   public void testDoubleSortMissingLast() throws Exception {
     checkSortMissingLast("doubledv_missinglast", "-1.3", "4.2");
   }
   /** dynamic double with sort missing always last */
+  @Test
   public void testDynDoubleSortMissingLast() throws Exception {
     checkSortMissingLast("dyn_doubledv_missinglast", "-1.3", "4.2");
   }
   
   /** double function query based on missing */
+  @Test
   public void testDoubleMissingFunction() throws Exception {
     checkSortMissingFunction("doubledv", "-1.3", "4.2");
   }
   /** dyanmic double function query based on missing */
+  @Test
   public void testDynDoubleMissingFunction() throws Exception {
     checkSortMissingFunction("dyn_doubledv", "-1.3", "4.2");
   }
   
   /** double missing facet count */
+  @Test
   public void testDoubleMissingFacet() throws Exception {
     checkSortMissingFacet("doubledv", "-1.3", "4.2");
   }
   /** dynamic double missing facet count */
+  @Test
   public void testDynDoubleMissingFacet() throws Exception {
     checkSortMissingFacet("dyn_doubledv", "-1.3", "4.2");
   }
   
   /** long with default lucene sort (treats as 0) */
+  @Test
   public void testLongSort() throws Exception {
     checkSortMissingDefault("longdv", "-1", "4");
   }
   /** dynamic long with default lucene sort (treats as 0) */
+  @Test
   public void testDynLongSort() throws Exception {
     checkSortMissingDefault("dyn_longdv", "-1", "4");
   }
 
   /** long with sort missing always first */
+  @Test
   public void testLongSortMissingFirst() throws Exception {
     checkSortMissingFirst("longdv_missingfirst", "-1", "4");
   }
   /** dynamic long with sort missing always first */
+  @Test
   public void testDynLongSortMissingFirst() throws Exception {
     checkSortMissingFirst("dyn_longdv_missingfirst", "-1", "4");
   }
 
   /** long with sort missing always last */
+  @Test
   public void testLongSortMissingLast() throws Exception {
     checkSortMissingLast("longdv_missinglast", "-1", "4");
   }
   /** dynamic long with sort missing always last */
+  @Test
   public void testDynLongSortMissingLast() throws Exception {
     checkSortMissingLast("dyn_longdv_missinglast", "-1", "4");
   }
   
   /** long function query based on missing */
+  @Test
   public void testLongMissingFunction() throws Exception {
     checkSortMissingFunction("longdv", "-1", "4");
   }
   /** dynamic long function query based on missing */
+  @Test
   public void testDynLongMissingFunction() throws Exception {
     checkSortMissingFunction("dyn_longdv", "-1", "4");
   }
   
   /** long missing facet count */
+  @Test
   public void testLongMissingFacet() throws Exception {
     checkSortMissingFacet("longdv", "-1", "4");
   }
   /** dynamic long missing facet count */
+  @Test
   public void testDynLongMissingFacet() throws Exception {
     checkSortMissingFacet("dyn_longdv", "-1", "4");
   }
   
   /** date with default lucene sort (treats as 1970) */
+  @Test
   public void testDateSort() throws Exception {
     checkSortMissingDefault("datedv", "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   /** dynamic date with default lucene sort (treats as 1970) */
+  @Test
   public void testDynDateSort() throws Exception {
     checkSortMissingDefault("dyn_datedv", "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   
   /** date with sort missing always first */
+  @Test
   public void testDateSortMissingFirst() throws Exception {
     checkSortMissingFirst("datedv_missingfirst", 
                           "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   /** dynamic date with sort missing always first */
+  @Test
   public void testDynDateSortMissingFirst() throws Exception {
     checkSortMissingFirst("dyn_datedv_missingfirst", 
                           "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   
   /** date with sort missing always last */
+  @Test
   public void testDateSortMissingLast() throws Exception {
     checkSortMissingLast("datedv_missinglast", 
                           "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   /** dynamic date with sort missing always last */
+  @Test
   public void testDynDateSortMissingLast() throws Exception {
     checkSortMissingLast("dyn_datedv_missinglast", 
                          "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   
   /** date function query based on missing */
+  @Test
   public void testDateMissingFunction() throws Exception {
     checkSortMissingFunction("datedv", 
                              "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   /** dynamic date function query based on missing */
+  @Test
   public void testDynDateMissingFunction() throws Exception {
     checkSortMissingFunction("dyn_datedv", 
                              "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   
   /** date missing facet count */
+  @Test
   public void testDateMissingFacet() throws Exception {
     checkSortMissingFacet("datedv", 
                           "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   /** dynamic date missing facet count */
+  @Test
   public void testDynDateMissingFacet() throws Exception {
     checkSortMissingFacet("dyn_datedv", 
                           "1900-12-31T23:59:59.999Z", "2005-12-31T23:59:59.999Z");
   }
   
   /** string (and dynamic string) with default lucene sort (treats as "") */
+  @Test
   public void testStringSort() throws Exception {
 
     // note: cant use checkSortMissingDefault because 
@@ -377,33 +429,40 @@ public class DocValuesMissingTest extends SolrTestCaseJ4 {
   }
   
   /** string with sort missing always first */
+  @Test
   public void testStringSortMissingFirst() throws Exception {
     checkSortMissingFirst("stringdv_missingfirst", "a", "z");
   }
   /** dynamic string with sort missing always first */
+  @Test
   public void testDynStringSortMissingFirst() throws Exception {
     checkSortMissingFirst("dyn_stringdv_missingfirst", "a", "z");
   }
   
   /** string with sort missing always last */
+  @Test
   public void testStringSortMissingLast() throws Exception {
     checkSortMissingLast("stringdv_missinglast", "a", "z");
   }
   /** dynamic string with sort missing always last */
+  @Test
   public void testDynStringSortMissingLast() throws Exception {
     checkSortMissingLast("dyn_stringdv_missinglast", "a", "z");
   }
 
   /** string function query based on missing */
+  @Test
   public void testStringMissingFunction() throws Exception {
     checkSortMissingFunction("stringdv", "a", "z");
   }
   /** dynamic string function query based on missing */
+  @Test
   public void testDynStringMissingFunction() throws Exception {
     checkSortMissingFunction("dyn_stringdv", "a", "z");
   }
   
   /** string missing facet count */
+  @Test
   public void testStringMissingFacet() throws Exception {
     assertU(adoc("id", "0")); // missing
     assertU(adoc("id", "1")); // missing
@@ -415,4 +474,74 @@ public class DocValuesMissingTest extends SolrTestCaseJ4 {
         "//lst[@name='facet_fields']/lst[@name='stringdv']/int[@name='z'][.=1]",
         "//lst[@name='facet_fields']/lst[@name='stringdv']/int[.=2]");
   }
+
+  /** bool (and dynamic bool) with default lucene sort (treats as "") */
+  @Test
+  public void testBoolSort() throws Exception {
+    // note: cant use checkSortMissingDefault because 
+    // nothing sorts lower then the default of "" and
+    // bool fields are, at root, string fields.
+    for (String field : new String[] {"booldv","dyn_booldv"}) {
+      assertU(adoc("id", "0")); // missing
+      assertU(adoc("id", "1", field, "false"));
+      assertU(adoc("id", "2", field, "true"));
+      assertU(commit());
+      assertQ(req("q", "*:*", "sort", field+" asc"),
+          "//result/doc[1]/str[@name='id'][.=0]",
+          "//result/doc[2]/str[@name='id'][.=1]",
+          "//result/doc[3]/str[@name='id'][.=2]");
+      assertQ(req("q", "*:*", "sort", field+" desc"),
+          "//result/doc[1]/str[@name='id'][.=2]",
+          "//result/doc[2]/str[@name='id'][.=1]",
+          "//result/doc[3]/str[@name='id'][.=0]");
+    }
+  }
+
+  /** bool with sort missing always first */
+  @Test
+  public void testBoolSortMissingFirst() throws Exception {
+    checkSortMissingFirst("booldv_missingfirst", "false", "ture");
+  }
+  /** dynamic bool with sort missing always first */
+  @Test
+  public void testDynBoolSortMissingFirst() throws Exception {
+    checkSortMissingFirst("dyn_booldv_missingfirst", "false", "true");
+  }
+
+  /** bool with sort missing always last */
+  @Test
+  public void testBoolSortMissingLast() throws Exception {
+    checkSortMissingLast("booldv_missinglast", "false", "true");
+  }
+  /** dynamic bool with sort missing always last */
+  @Test
+  public void testDynBoolSortMissingLast() throws Exception {
+    checkSortMissingLast("dyn_booldv_missinglast", "false", "true");
+  }
+
+  /** bool function query based on missing */
+  @Test
+  public void testBoolMissingFunction() throws Exception {
+    checkSortMissingFunction("booldv", "false", "true");
+  }
+  /** dynamic bool function query based on missing */
+  @Test
+  public void testDynBoolMissingFunction() throws Exception {
+    checkSortMissingFunction("dyn_booldv", "false", "true");
+  }
+
+  /** bool missing facet count */
+  @Test
+  public void testBoolMissingFacet() throws Exception {
+    assertU(adoc("id", "0")); // missing
+    assertU(adoc("id", "1")); // missing
+    assertU(adoc("id", "2", "booldv", "false"));
+    assertU(adoc("id", "3", "booldv", "true"));
+    assertU(commit());
+    assertQ(req("q", "*:*", "facet", "true", "facet.field", "booldv", "facet.mincount", "1", "facet.missing", "true"),
+        "//lst[@name='facet_fields']/lst[@name='booldv']/int[@name='false'][.=1]",
+        "//lst[@name='facet_fields']/lst[@name='booldv']/int[@name='true'][.=1]",
+        "//lst[@name='facet_fields']/lst[@name='booldv']/int[.=2]");
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java b/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
index 7b4a5db..90c8b73 100644
--- a/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
@@ -25,6 +25,7 @@ import org.apache.solr.core.SolrCore;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.RefCounted;
 import org.junit.BeforeClass;
+import org.junit.Test;
 
 import java.io.IOException;
 
@@ -36,7 +37,7 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
     
     // sanity check our schema meets our expectations
     final IndexSchema schema = h.getCore().getLatestSchema();
-    for (String f : new String[] {"floatdv", "intdv", "doubledv", "longdv", "datedv", "stringdv"}) {
+    for (String f : new String[] {"floatdv", "intdv", "doubledv", "longdv", "datedv", "stringdv", "booldv"}) {
       final SchemaField sf = schema.getField(f);
       assertTrue(f + " is not multiValued, test is useless, who changed the schema?",
                  sf.multiValued());
@@ -52,8 +53,11 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
     assertU(delQ("*:*"));
   }
 
+  @Test
   public void testDocValues() throws IOException {
-    assertU(adoc("id", "1", "floatdv", "4.5", "intdv", "-1", "intdv", "3", "stringdv", "value1", "stringdv", "value2"));
+    assertU(adoc("id", "1", "floatdv", "4.5", "intdv", "-1", "intdv", "3",
+        "stringdv", "value1", "stringdv", "value2",
+        "booldv", "false", "booldv", "true"));
     assertU(commit());
     try (SolrCore core = h.getCoreInc()) {
       final RefCounted<SolrIndexSearcher> searcherRef = core.openNewSearcher(true, true);
@@ -63,6 +67,7 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
         assertEquals(1, reader.numDocs());
         final FieldInfos infos = reader.getFieldInfos();
         assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("stringdv").getDocValuesType());
+        assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("booldv").getDocValuesType());
         assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("floatdv").getDocValuesType());
         assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("intdv").getDocValuesType());
 
@@ -71,6 +76,14 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
         assertEquals(0, dv.nextOrd());
         assertEquals(1, dv.nextOrd());
         assertEquals(SortedSetDocValues.NO_MORE_ORDS, dv.nextOrd());
+
+        dv = reader.getSortedSetDocValues("booldv");
+        dv.setDocument(0);
+        assertEquals(0, dv.nextOrd());
+        assertEquals(1, dv.nextOrd());
+        assertEquals(SortedSetDocValues.NO_MORE_ORDS, dv.nextOrd());
+
+
       } finally {
         searcherRef.decref();
       }
@@ -80,6 +93,7 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
   /** Tests the ability to do basic queries (without scoring, just match-only) on
    *  string docvalues fields that are not inverted (indexed "forward" only)
    */
+  @Test
   public void testStringDocValuesMatch() throws Exception {
     assertU(adoc("id", "1", "stringdv", "b"));
     assertU(adoc("id", "2", "stringdv", "a"));
@@ -123,10 +137,49 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
         "//result/doc[1]/str[@name='id'][.=4]"
     );
   }
-  
+
+  /** Tests the ability to do basic queries (without scoring, just match-only) on
+   *  boolean docvalues fields that are not inverted (indexed "forward" only)
+   */
+  @Test
+  public void testBoolDocValuesMatch() throws Exception {
+    assertU(adoc("id", "1", "booldv", "true"));
+    assertU(adoc("id", "2", "booldv", "false"));
+    assertU(adoc("id", "3", "booldv", "true"));
+    assertU(adoc("id", "4", "booldv", "false"));
+    assertU(adoc("id", "5", "booldv", "true", "booldv", "false"));
+    assertU(commit());
+
+    // string: termquery
+    assertQ(req("q", "booldv:true", "sort", "id asc"),
+        "//*[@numFound='3']",
+        "//result/doc[1]/str[@name='id'][.=1]",
+        "//result/doc[2]/str[@name='id'][.=3]",
+        "//result/doc[3]/str[@name='id'][.=5]"
+    );
+
+    // boolean: range query, 
+    assertQ(req("q", "booldv:[false TO false]", "sort", "id asc"),
+        "//*[@numFound='3']",
+        "//result/doc[1]/str[@name='id'][.=2]",
+        "//result/doc[2]/str[@name='id'][.=4]",
+        "//result/doc[3]/str[@name='id'][.=5]");
+
+
+    assertQ(req("q", "*:*", "sort", "id asc", "rows", "10", "fl", "booldv"),
+        "//result/doc[1]/arr[@name='booldv']/bool[1][.='true']",
+        "//result/doc[2]/arr[@name='booldv']/bool[1][.='false']",
+        "//result/doc[3]/arr[@name='booldv']/bool[1][.='true']",
+        "//result/doc[4]/arr[@name='booldv']/bool[1][.='false']",
+        "//result/doc[5]/arr[@name='booldv']/bool[1][.='false']",
+        "//result/doc[5]/arr[@name='booldv']/bool[2][.='true']"
+    );
+
+  }
   /** Tests the ability to do basic queries (without scoring, just match-only) on
    *  float docvalues fields that are not inverted (indexed "forward" only)
    */
+  @Test
   public void testFloatDocValuesMatch() throws Exception {
     assertU(adoc("id", "1", "floatdv", "2"));
     assertU(adoc("id", "2", "floatdv", "-5"));
@@ -166,6 +219,7 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
   /** Tests the ability to do basic queries (without scoring, just match-only) on
    *  double docvalues fields that are not inverted (indexed "forward" only)
    */
+  @Test
   public void testDoubleDocValuesMatch() throws Exception {
     assertU(adoc("id", "1", "doubledv", "2"));
     assertU(adoc("id", "2", "doubledv", "-5"));
@@ -201,17 +255,34 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
             "//result/doc[1]/str[@name='id'][.=2]"
             );
   }
-  
+  @Test
   public void testDocValuesFacetingSimple() {
     // this is the random test verbatim from DocValuesTest, so it populates with the default values defined in its schema.
     for (int i = 0; i < 50; ++i) {
-      assertU(adoc("id", "" + i, "floatdv", "1", "intdv", "2", "doubledv", "3", "longdv", "4", "datedv", "1995-12-31T23:59:59.999Z"));
+      assertU(adoc("id", "" + i, "floatdv", "1", "intdv", "2", "doubledv", "3", "longdv", "4", 
+          "datedv", "1995-12-31T23:59:59.999Z",
+          "stringdv", "abc", "booldv", "true"));
     }
     for (int i = 0; i < 50; ++i) {
       if (rarely()) {
         assertU(commit()); // to have several segments
       }
-      assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i, "datedv", (1900+i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i));
+      switch (i % 3) {
+        case 0:
+          assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i, 
+              "datedv", (1900+i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i, "booldv", "true", "booldv", "true"));
+          break;
+        case 1:
+          assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i,
+              "datedv", (1900+i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i, "booldv", "false", "booldv", "false"));
+          break;
+        case 2:
+          assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i,
+              "datedv", (1900+i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i, "booldv", "true", "booldv", "false"));
+          break;
+      }
+
+
     }
     assertU(commit());
     assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "longdv", "facet.sort", "count", "facet.limit", "1"),
@@ -248,5 +319,25 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
         "//lst[@name='datedv']/int[@name='1900-12-31T23:59:59.999Z'][.='1']");
     assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "datedv", "facet.sort", "index", "facet.offset", "33", "facet.limit", "1", "facet.mincount", "1"),
         "//lst[@name='datedv']/int[@name='1933-12-31T23:59:59.999Z'][.='1']");
+
+
+    assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "stringdv", "facet.sort", "count", "facet.limit", "1"),
+        "//lst[@name='stringdv']/int[@name='abc'][.='50']");
+    assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "stringdv", "facet.sort", "count", "facet.offset", "1", "facet.limit", "-1", "facet.mincount", "1"),
+        "//lst[@name='stringdv']/int[@name='abc1'][.='1']",
+        "//lst[@name='stringdv']/int[@name='abc13'][.='1']",
+        "//lst[@name='stringdv']/int[@name='abc19'][.='1']",
+        "//lst[@name='stringdv']/int[@name='abc49'][.='1']"
+        );
+    
+    // Even though offseting by 33, the sort order is abc1 abc11....abc2 so it throws the position in the return list off.
+    assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "stringdv", "facet.sort", "index", "facet.offset", "33", "facet.limit", "1", "facet.mincount", "1"),
+        "//lst[@name='stringdv']/int[@name='abc38'][.='1']");
+
+
+    assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "booldv", "facet.sort", "count"),
+        "//lst[@name='booldv']/int[@name='true'][.='83']",
+        "//lst[@name='booldv']/int[@name='false'][.='33']");
+
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/core/src/test/org/apache/solr/schema/DocValuesTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/DocValuesTest.java b/solr/core/src/test/org/apache/solr/schema/DocValuesTest.java
index b4248da..d59d326 100644
--- a/solr/core/src/test/org/apache/solr/schema/DocValuesTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/DocValuesTest.java
@@ -27,6 +27,7 @@ import org.apache.solr.core.SolrCore;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.RefCounted;
 import org.junit.BeforeClass;
+import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,7 +50,7 @@ public class DocValuesTest extends SolrTestCaseJ4 {
 
     // sanity check our schema meets our expectations
     final IndexSchema schema = h.getCore().getLatestSchema();
-    for (String f : new String[] {"floatdv", "intdv", "doubledv", "longdv", "datedv", "stringdv"}) {
+    for (String f : new String[] {"floatdv", "intdv", "doubledv", "longdv", "datedv", "stringdv", "booldv"}) {
       final SchemaField sf = schema.getField(f);
       assertFalse(f + " is multiValued, test is useless, who changed the schema?",
                   sf.multiValued());
@@ -65,6 +66,7 @@ public class DocValuesTest extends SolrTestCaseJ4 {
     assertU(delQ("*:*"));
   }
 
+  @Test
   public void testDocValues() throws IOException {
     assertU(adoc("id", "1"));
     assertU(commit());
@@ -80,17 +82,21 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         assertEquals(DocValuesType.NUMERIC, infos.fieldInfo("doubledv").getDocValuesType());
         assertEquals(DocValuesType.NUMERIC, infos.fieldInfo("longdv").getDocValuesType());
         assertEquals(DocValuesType.SORTED, infos.fieldInfo("stringdv").getDocValuesType());
+        assertEquals(DocValuesType.SORTED, infos.fieldInfo("booldv").getDocValuesType());
 
         assertEquals((long) Float.floatToIntBits(1), reader.getNumericDocValues("floatdv").get(0));
         assertEquals(2L, reader.getNumericDocValues("intdv").get(0));
         assertEquals(Double.doubleToLongBits(3), reader.getNumericDocValues("doubledv").get(0));
         assertEquals(4L, reader.getNumericDocValues("longdv").get(0));
+        assertEquals("solr", reader.getSortedDocValues("stringdv").get(0).utf8ToString());
+        assertEquals("T", reader.getSortedDocValues("booldv").get(0).utf8ToString());
 
         final IndexSchema schema = core.getLatestSchema();
         final SchemaField floatDv = schema.getField("floatdv");
         final SchemaField intDv = schema.getField("intdv");
         final SchemaField doubleDv = schema.getField("doubledv");
         final SchemaField longDv = schema.getField("longdv");
+        final SchemaField boolDv = schema.getField("booldv");
 
         FunctionValues values = floatDv.getType().getValueSource(floatDv, null).getValues(null, searcher.getLeafReader().leaves().get(0));
         assertEquals(1f, values.floatVal(0), 0f);
@@ -104,6 +110,10 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         values = longDv.getType().getValueSource(longDv, null).getValues(null, searcher.getLeafReader().leaves().get(0));
         assertEquals(4L, values.longVal(0));
         assertEquals(4L, values.objectVal(0));
+        
+        values = boolDv.getType().getValueSource(boolDv, null).getValues(null, searcher.getLeafReader().leaves().get(0));
+        assertEquals("true", values.strVal(0));
+        assertEquals(true, values.objectVal(0));
 
         // check reversibility of created fields
         tstToObj(schema.getField("floatdv"), -1.5f);
@@ -118,6 +128,8 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         tstToObj(schema.getField("datedvs"), new Date(1000));
         tstToObj(schema.getField("stringdv"), "foo");
         tstToObj(schema.getField("stringdvs"), "foo");
+        tstToObj(schema.getField("booldv"), true);
+        tstToObj(schema.getField("booldvs"), true);
 
       } finally {
         searcherRef.decref();
@@ -132,10 +144,11 @@ public class DocValuesTest extends SolrTestCaseJ4 {
     }
   }
 
+  @Test
   public void testDocValuesSorting() {
-    assertU(adoc("id", "1", "floatdv", "2", "intdv", "3", "doubledv", "4", "longdv", "5", "datedv", "1995-12-31T23:59:59.999Z", "stringdv", "b"));
-    assertU(adoc("id", "2", "floatdv", "5", "intdv", "4", "doubledv", "3", "longdv", "2", "datedv", "1997-12-31T23:59:59.999Z", "stringdv", "a"));
-    assertU(adoc("id", "3", "floatdv", "3", "intdv", "1", "doubledv", "2", "longdv", "1", "datedv", "1996-12-31T23:59:59.999Z", "stringdv", "c"));
+    assertU(adoc("id", "1", "floatdv", "2", "intdv", "3", "doubledv", "4", "longdv", "5", "datedv", "1995-12-31T23:59:59.999Z", "stringdv", "b", "booldv", "true"));
+    assertU(adoc("id", "2", "floatdv", "5", "intdv", "4", "doubledv", "3", "longdv", "2", "datedv", "1997-12-31T23:59:59.999Z", "stringdv", "a", "booldv", "false"));
+    assertU(adoc("id", "3", "floatdv", "3", "intdv", "1", "doubledv", "2", "longdv", "1", "datedv", "1996-12-31T23:59:59.999Z", "stringdv", "c", "booldv", "true"));
     assertU(adoc("id", "4"));
     assertU(commit());
     assertQ(req("q", "*:*", "sort", "floatdv desc", "rows", "1", "fl", "id"),
@@ -146,8 +159,10 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         "//int[@name='id'][.='1']");
     assertQ(req("q", "*:*", "sort", "longdv desc", "rows", "1", "fl", "id"),
         "//int[@name='id'][.='1']");
-    assertQ(req("q", "*:*", "sort", "datedv desc", "rows", "1", "fl", "id"),
-        "//int[@name='id'][.='2']");
+    assertQ(req("q", "*:*", "sort", "datedv desc", "rows", "1", "fl", "id,datedv"),
+        "//int[@name='id'][.='2']",
+        "//result/doc[1]/date[@name='datedv'][.='1997-12-31T23:59:59.999Z']"
+        );
     assertQ(req("q", "*:*", "sort", "stringdv desc", "rows", "1", "fl", "id"),
         "//int[@name='id'][.='4']");
     assertQ(req("q", "*:*", "sort", "floatdv asc", "rows", "1", "fl", "id"),
@@ -162,8 +177,17 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         "//int[@name='id'][.='1']");
     assertQ(req("q", "*:*", "sort", "stringdv asc", "rows", "1", "fl", "id"),
         "//int[@name='id'][.='2']");
+    assertQ(req("q", "*:*", "sort", "booldv asc", "rows", "10", "fl", "booldv,stringdv"),
+        "//result/doc[1]/bool[@name='booldv'][.='false']",
+        "//result/doc[2]/bool[@name='booldv'][.='true']",
+        "//result/doc[3]/bool[@name='booldv'][.='true']",
+        "//result/doc[4]/bool[@name='booldv'][.='true']"
+        );
+        
+
   }
   
+  @Test
   public void testDocValuesSorting2() {
     assertU(adoc("id", "1", "doubledv", "12"));
     assertU(adoc("id", "2", "doubledv", "50.567"));
@@ -184,6 +208,7 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         );
   }
 
+  @Test
   public void testDocValuesFaceting() {
     for (int i = 0; i < 50; ++i) {
       assertU(adoc("id", "" + i));
@@ -192,7 +217,20 @@ public class DocValuesTest extends SolrTestCaseJ4 {
       if (rarely()) {
         assertU(commit()); // to have several segments
       }
-      assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i, "datedv", (1900+i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i));
+      switch (i % 3) {
+        case 0:
+          assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i,
+              "datedv", (1900 + i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i, "booldv", "false"));
+          break;
+        case 1:
+          assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i,
+              "datedv", (1900 + i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i, "booldv", "true"));
+          break;
+        case 2:
+          assertU(adoc("id", "1000" + i, "floatdv", "" + i, "intdv", "" + i, "doubledv", "" + i, "longdv", "" + i,
+              "datedv", (1900 + i) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i));
+          break;
+      }
     }
     assertU(commit());
     assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "longdv", "facet.sort", "count", "facet.limit", "1"),
@@ -229,8 +267,20 @@ public class DocValuesTest extends SolrTestCaseJ4 {
         "//lst[@name='datedv']/int[@name='1900-12-31T23:59:59.999Z'][.='1']");
     assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "datedv", "facet.sort", "index", "facet.offset", "33", "facet.limit", "1", "facet.mincount", "1"),
         "//lst[@name='datedv']/int[@name='1933-12-31T23:59:59.999Z'][.='1']");
+
+    assertQ(req("q", "booldv:true"),
+        "//*[@numFound='83']");
+
+    assertQ(req("q", "booldv:false"),
+        "//*[@numFound='17']");
+
+    assertQ(req("q", "*:*", "facet", "true", "rows", "0", "facet.field", "booldv", "facet.sort", "index", "facet.mincount", "1"),
+        "//lst[@name='booldv']/int[@name='false'][.='17']",
+        "//lst[@name='booldv']/int[@name='true'][.='83']");
+
   }
 
+  @Test
   public void testDocValuesStats() {
     for (int i = 0; i < 50; ++i) {
       assertU(adoc("id", "1000" + i, "floatdv", "" + i%2, "intdv", "" + i%3, "doubledv", "" + i%4, "longdv", "" + i%5, "datedv", (1900+i%6) + "-12-31T23:59:59.999Z", "stringdv", "abc" + i%7));
@@ -293,10 +343,11 @@ public class DocValuesTest extends SolrTestCaseJ4 {
   /** Tests the ability to do basic queries (without scoring, just match-only) on
    *  docvalues fields that are not inverted (indexed "forward" only)
    */
+  @Test
   public void testDocValuesMatch() throws Exception {
-    assertU(adoc("id", "1", "floatdv", "2", "intdv", "3", "doubledv", "3.1", "longdv", "5", "datedv", "1995-12-31T23:59:59.999Z", "stringdv", "b"));
-    assertU(adoc("id", "2", "floatdv", "-5", "intdv", "4", "doubledv", "-4.3", "longdv", "2", "datedv", "1997-12-31T23:59:59.999Z", "stringdv", "a"));
-    assertU(adoc("id", "3", "floatdv", "3", "intdv", "1", "doubledv", "2.1", "longdv", "1", "datedv", "1996-12-31T23:59:59.999Z", "stringdv", "c"));
+    assertU(adoc("id", "1", "floatdv", "2", "intdv", "3", "doubledv", "3.1", "longdv", "5", "datedv", "1995-12-31T23:59:59.999Z", "stringdv", "b", "booldv", "false"));
+    assertU(adoc("id", "2", "floatdv", "-5", "intdv", "4", "doubledv", "-4.3", "longdv", "2", "datedv", "1997-12-31T23:59:59.999Z", "stringdv", "a", "booldv", "true"));
+    assertU(adoc("id", "3", "floatdv", "3", "intdv", "1", "doubledv", "2.1", "longdv", "1", "datedv", "1996-12-31T23:59:59.999Z", "stringdv", "c", "booldv", "false"));
     assertU(adoc("id", "4", "floatdv", "3", "intdv", "-1", "doubledv", "1.5", "longdv", "1", "datedv", "1996-12-31T23:59:59.999Z", "stringdv", "car"));
     assertU(commit());
 
@@ -439,8 +490,23 @@ public class DocValuesTest extends SolrTestCaseJ4 {
             "//result/doc[1]/int[@name='id'][.=2]",
             "//result/doc[2]/int[@name='id'][.=4]"
             );
+    // boolean basic queries:
+
+    assertQ(req("q", "booldv:false", "sort", "id asc"),
+        "//*[@numFound='2']",
+        "//result/doc[1]/int[@name='id'][.=1]",
+        "//result/doc[2]/int[@name='id'][.=3]"
+    );
+
+    assertQ(req("q", "booldv:true", "sort", "id asc"),
+        "//*[@numFound='2']",
+        "//result/doc[1]/int[@name='id'][.=2]",
+        "//result/doc[2]/int[@name='id'][.=4]"
+    );
+
   }
 
+  @Test
   public void testFloatAndDoubleRangeQueryRandom() throws Exception {
 
     String fieldName[] = new String[] {"floatdv", "doubledv"};
@@ -556,6 +622,7 @@ public class DocValuesTest extends SolrTestCaseJ4 {
     }
   }
 
+  @Test
   public void testFloatAndDoubleRangeQuery() throws Exception {
     String fieldName[] = new String[] {"floatdv", "doubledv"};
     String largestNegative[] = new String[] {String.valueOf(0f-Float.MIN_NORMAL), String.valueOf(0f-Double.MIN_NORMAL)};

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
index dee19ab..2f64651 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
@@ -16,10 +16,12 @@
  */
 package org.apache.solr.client.solrj.io;
 
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.List;
-import java.util.Iterator;
 
 
 /**
@@ -87,6 +89,53 @@ public class Tuple implements Cloneable {
     }
   }
 
+  // Convenience method since Booleans can be pased around as Strings.
+  public Boolean getBool(Object key) {
+    Object o = this.fields.get(key);
+
+    if (o == null) {
+      return null;
+    }
+
+    if (o instanceof Boolean) {
+      return (Boolean) o;
+    } else {
+      //Attempt to parse the Boolean
+      return Boolean.parseBoolean(o.toString());
+    }
+  }
+
+  public List<Boolean> getBools(Object key) {
+    return (List<Boolean>) this.fields.get(key);
+  }
+
+  // Convenience methods since the dates are actually shipped around as Strings.
+  public Date getDate(Object key) {
+    Object o = this.fields.get(key);
+
+    if (o == null) {
+      return null;
+    }
+
+    if (o instanceof Date) {
+      return (Date) o;
+    } else {
+      //Attempt to parse the Date from a String
+      return new Date(Instant.parse(o.toString()).toEpochMilli());
+    }
+  }
+
+  public List<Date> getDates(Object key) {
+    List<String> vals = (List<String>) this.fields.get(key);
+    if (vals == null) return null;
+    
+    List<Date> ret = new ArrayList<>();
+    for (String dateStr : (List<String>) this.fields.get(key)) {
+      ret.add(new Date(Instant.parse(dateStr).toEpochMilli()));
+    }
+    return ret;
+  }
+
   public Double getDouble(Object key) {
     Object o = this.fields.get(key);
 
@@ -144,4 +193,4 @@ public class Tuple implements Cloneable {
   public void merge(Tuple other){
     fields.putAll(other.getMap());
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml b/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
index c10f6cf..34ecdcb 100644
--- a/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
+++ b/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
@@ -395,8 +395,19 @@
     <field name="f_multi" type="float" indexed="true" stored="true" docValues="true" multiValued="true"/>
     <field name="l_multi" type="long" indexed="true" stored="true" docValues="true" multiValued="true"/>
     <field name="d_multi" type="double" indexed="true" stored="true" docValues="true" multiValued="true"/>
+    <field name="dt_multi" type="date" indexed="true" stored="true" docValues="true" multiValued="true"/>
+    <field name="b_multi" type="boolean" indexed="true" stored="true" docValues="true" multiValued="true"/>
 
-    <field name="uuid" type="uuid" stored="true" />
+    <field name="s_sing" type="string" indexed="true" stored="true" docValues="true" multiValued="false"/>
+    <field name="i_sing" type="int" indexed="true" stored="true" docValues="true" multiValued="false"/>
+    <field name="f_sing" type="float" indexed="true" stored="true" docValues="true" multiValued="false"/>
+    <field name="l_sing" type="long" indexed="true" stored="true" docValues="true" multiValued="false"/>
+    <field name="d_sing" type="double" indexed="true" stored="true" docValues="true" multiValued="false"/>
+    <field name="dt_sing" type="tdate" indexed="true" stored="true" docValues="true" multiValued="false"/>
+    <field name="b_sing" type="boolean" indexed="true" stored="true" docValues="true" multiValued="false"/>
+
+
+  <field name="uuid" type="uuid" stored="true" />
     <field name="name" type="nametext" indexed="true" stored="true"/>
     <field name="text" type="text" indexed="true" stored="false"/>
     <field name="subject" type="text" indexed="true" stored="true"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/844ca4a3/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamingTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamingTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamingTest.java
index 1cea311..9685b74 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamingTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamingTest.java
@@ -17,7 +17,9 @@
 package org.apache.solr.client.solrj.io.stream;
 
 import java.io.IOException;
+import java.time.Instant;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -1740,6 +1742,132 @@ public class StreamingTest extends SolrCloudTestCase {
 
   }
 
+  @Test
+  public void testDateBoolSorting() throws Exception {
+
+    new UpdateRequest()
+        .add(id, "0", "b_sing", "false", "dt_sing", "1981-03-04T01:02:03.78Z")
+        .add(id, "3", "b_sing", "true", "dt_sing", "1980-03-04T01:02:03.78Z")
+        .add(id, "2", "b_sing", "false", "dt_sing", "1981-04-04T01:02:03.78Z")
+        .add(id, "1", "b_sing", "true", "dt_sing", "1980-04-04T01:02:03.78Z")
+        .add(id, "4", "b_sing", "true", "dt_sing", "1980-04-04T01:02:03.78Z")
+        .commit(cluster.getSolrClient(), COLLECTION);
+
+
+    trySortWithQt("/export");
+    trySortWithQt("/select");
+  }
+  private void trySortWithQt(String which) throws Exception {
+    //Basic CloudSolrStream Test bools desc
+
+    SolrParams sParams = mapParams("q", "*:*", "qt", which, "fl", "id,b_sing", "sort", "b_sing asc,id asc");
+    CloudSolrStream stream = new CloudSolrStream(zkHost, COLLECTION, sParams);
+    try  {
+      List<Tuple> tuples = getTuples(stream);
+
+      assert (tuples.size() == 5);
+      assertOrder(tuples, 0, 2, 1, 3, 4);
+
+      //Basic CloudSolrStream Test bools desc
+      sParams = mapParams("q", "*:*", "qt", which, "fl", "id,b_sing", "sort", "b_sing desc,id desc");
+      stream = new CloudSolrStream(zkHost, COLLECTION, sParams);
+      tuples = getTuples(stream);
+
+      assert (tuples.size() == 5);
+      assertOrder(tuples, 4, 3, 1, 2, 0);
+
+      //Basic CloudSolrStream Test dates desc
+      sParams = mapParams("q", "*:*", "qt", which, "fl", "id,dt_sing", "sort", "dt_sing desc,id asc");
+      stream = new CloudSolrStream(zkHost, COLLECTION, sParams);
+      tuples = getTuples(stream);
+
+      assert (tuples.size() == 5);
+      assertOrder(tuples, 2, 0, 1, 4, 3);
+
+      //Basic CloudSolrStream Test ates desc
+      sParams = mapParams("q", "*:*", "qt", which, "fl", "id,dt_sing", "sort", "dt_sing asc,id desc");
+      stream = new CloudSolrStream(zkHost, COLLECTION, sParams);
+      tuples = getTuples(stream);
+
+      assert (tuples.size() == 5);
+      assertOrder(tuples, 3, 4, 1, 0, 2);
+    } finally {
+      if (stream != null) {
+        stream.close();
+      }
+    }
+
+  }
+
+
+  @Test
+  public void testAllValidExportTypes() throws Exception {
+
+    //Test whether all the expected types are actually returned, including booleans and dates.
+    // The contract is that the /select and /export handlers return the same format, so we can test this once each
+    // way
+    new UpdateRequest()
+        .add(id, "0", "i_sing", "11", "i_multi", "12", "i_multi", "13",
+            "l_sing", "14", "l_multi", "15", "l_multi", "16",
+            "f_sing", "1.70", "f_multi", "1.80", "f_multi", "1.90",
+            "d_sing", "1.20", "d_multi", "1.21", "d_multi", "1.22",
+            "s_sing", "single", "s_multi", "sm1", "s_multi", "sm2",
+            "dt_sing", "1980-01-02T11:11:33.89Z", "dt_multi", "1981-03-04T01:02:03.78Z", "dt_multi", "1981-05-24T04:05:06.99Z",
+            "b_sing", "true", "b_multi", "false", "b_multi", "true"
+        )
+        .commit(cluster.getSolrClient(), COLLECTION);
+
+    tryWithQt("/export");
+    tryWithQt("/select");
+  }
+  
+  // We should be getting the exact same thing back with both the export and select handlers, so test
+  private void tryWithQt(String which) throws IOException {
+    SolrParams sParams = StreamingTest.mapParams("q", "*:*", "qt", which, "fl", 
+        "id,i_sing,i_multi,l_sing,l_multi,f_sing,f_multi,d_sing,d_multi,dt_sing,dt_multi,s_sing,s_multi,b_sing,b_multi", 
+        "sort", "i_sing asc");
+    try (CloudSolrStream stream = new CloudSolrStream(zkHost, COLLECTION, sParams)) {
+
+      Tuple tuple = getTuple(stream); // All I really care about is that all the fields are returned. There's
+
+      assertTrue("Integers should be returned", tuple.getLong("i_sing") == 11L);
+      assertTrue("MV should be returned for i_multi", tuple.getLongs("i_multi").get(0) == 12);
+      assertTrue("MV should be returned for i_multi", tuple.getLongs("i_multi").get(1) == 13);
+
+      assertTrue("longs should be returned", tuple.getLong("l_sing") == 14L);
+      assertTrue("MV should be returned for l_multi", tuple.getLongs("l_multi").get(0) == 15);
+      assertTrue("MV should be returned for l_multi", tuple.getLongs("l_multi").get(1) == 16);
+
+      assertTrue("floats should be returned", tuple.getDouble("f_sing") == 1.7);
+      assertTrue("MV should be returned for f_multi", tuple.getDoubles("f_multi").get(0) == 1.8);
+      assertTrue("MV should be returned for f_multi", tuple.getDoubles("f_multi").get(1) == 1.9);
+
+      assertTrue("doubles should be returned", tuple.getDouble("d_sing") == 1.2);
+      assertTrue("MV should be returned for d_multi", tuple.getDoubles("d_multi").get(0) == 1.21);
+      assertTrue("MV should be returned for d_multi", tuple.getDoubles("d_multi").get(1) == 1.22);
+
+      assertTrue("Strings should be returned", tuple.getString("s_sing").equals("single"));
+      assertTrue("MV should be returned for s_multi", tuple.getStrings("s_multi").get(0).equals("sm1"));
+      assertTrue("MV should be returned for s_multi", tuple.getStrings("s_multi").get(1).equals("sm2"));
+
+      assertTrue("Dates should be returned as Strings", tuple.getString("dt_sing").equals("1980-01-02T11:11:33.890Z"));
+      assertTrue("MV dates should be returned as Strings for dt_multi", tuple.getStrings("dt_multi").get(0).equals("1981-03-04T01:02:03.780Z"));
+      assertTrue("MV dates should be returned as Strings for dt_multi", tuple.getStrings("dt_multi").get(1).equals("1981-05-24T04:05:06.990Z"));
+
+      // Also test native type conversion
+      Date dt = new Date(Instant.parse("1980-01-02T11:11:33.890Z").toEpochMilli());
+      assertTrue("Dates should be returned as Dates", tuple.getDate("dt_sing").equals(dt));
+      dt = new Date(Instant.parse("1981-03-04T01:02:03.780Z").toEpochMilli());
+      assertTrue("MV dates should be returned as Dates for dt_multi", tuple.getDates("dt_multi").get(0).equals(dt));
+      dt = new Date(Instant.parse("1981-05-24T04:05:06.990Z").toEpochMilli());
+      assertTrue("MV dates should be returned as Dates  for dt_multi", tuple.getDates("dt_multi").get(1).equals(dt));
+      
+      assertTrue("Booleans should be returned", tuple.getBool("b_sing"));
+      assertFalse("MV boolean should be returned for b_multi", tuple.getBools("b_multi").get(0));
+      assertTrue("MV boolean should be returned for b_multi", tuple.getBools("b_multi").get(1));
+    }
+
+  }
   protected List<Tuple> getTuples(TupleStream tupleStream) throws IOException {
     tupleStream.open();
     List<Tuple> tuples = new ArrayList();


[32/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove one more unused import

Posted by no...@apache.org.
LUCENE-7319: remove one more unused import


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/95c7e6d7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/95c7e6d7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/95c7e6d7

Branch: refs/heads/apiv2
Commit: 95c7e6d716ae5e96a9fff3b68bbbb2a383f4c073
Parents: c8911cc
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Jun 13 11:11:02 2016 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Jun 13 11:11:02 2016 +0100

----------------------------------------------------------------------
 .../apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java   | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/95c7e6d7/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
index 6b87939..78bf299 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/mockrandom/MockRandomPostingsFormat.java
@@ -49,7 +49,6 @@ import org.apache.lucene.index.IndexFileNames;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.index.SegmentWriteState;
 import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;


[27/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/SegmentInfosSearcherManager.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/SegmentInfosSearcherManager.java b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/SegmentInfosSearcherManager.java
index bdb9510..4fda0fa 100644
--- a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/SegmentInfosSearcherManager.java
+++ b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/SegmentInfosSearcherManager.java
@@ -34,7 +34,6 @@ import org.apache.lucene.search.ReferenceManager;
 import org.apache.lucene.search.SearcherFactory;
 import org.apache.lucene.search.SearcherManager;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.ThreadInterruptedException;
 
 /** A SearcherManager that refreshes via an externally provided (NRT) SegmentInfos, either from {@link IndexWriter} or via
  *  nrt replication to another index.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/IndexAndTaxonomyRevisionTest.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/IndexAndTaxonomyRevisionTest.java b/lucene/replicator/src/test/org/apache/lucene/replicator/IndexAndTaxonomyRevisionTest.java
index 022298b..214c47e 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/IndexAndTaxonomyRevisionTest.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/IndexAndTaxonomyRevisionTest.java
@@ -34,7 +34,6 @@ import org.apache.lucene.replicator.IndexAndTaxonomyRevision.SnapshotDirectoryTa
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/IndexRevisionTest.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/IndexRevisionTest.java b/lucene/replicator/src/test/org/apache/lucene/replicator/IndexRevisionTest.java
index 77f323d..1477d28 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/IndexRevisionTest.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/IndexRevisionTest.java
@@ -29,7 +29,6 @@ import org.apache.lucene.index.SnapshotDeletionPolicy;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/LocalReplicatorTest.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/LocalReplicatorTest.java b/lucene/replicator/src/test/org/apache/lucene/replicator/LocalReplicatorTest.java
index af23da1..d88218e 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/LocalReplicatorTest.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/LocalReplicatorTest.java
@@ -31,7 +31,6 @@ import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.SnapshotDeletionPolicy;
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.junit.After;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java b/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java
index a6045b5..6d27071 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java
@@ -17,8 +17,6 @@
 package org.apache.lucene.replicator;
 
 import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
 import org.apache.http.conn.HttpClientConnectionManager;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Connection.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Connection.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Connection.java
index 7db7bc1..87fce57 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Connection.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Connection.java
@@ -23,8 +23,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.InetAddress;
 import java.net.Socket;
-import java.net.SocketException;
-
 import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.DataOutput;
 import org.apache.lucene.store.InputStreamDataInput;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Jobs.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Jobs.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Jobs.java
index f75a027..6968fdb 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Jobs.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/Jobs.java
@@ -19,8 +19,6 @@ package org.apache.lucene.replicator.nrt;
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.PriorityQueue;
 
 import org.apache.lucene.store.AlreadyClosedException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleCopyJob.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleCopyJob.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleCopyJob.java
index c8663e2..cee74ce 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleCopyJob.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleCopyJob.java
@@ -17,48 +17,13 @@ package org.apache.lucene.replicator.nrt;
  * limitations under the License.
  */
 
-import java.io.BufferedOutputStream;
-import java.io.Closeable;
-import java.io.EOFException;
-import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.nio.file.Files;
-import java.nio.file.NoSuchFileException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.index.CorruptIndexException;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.store.DataInput;
-import org.apache.lucene.store.DataOutput;
-import org.apache.lucene.store.IOContext;
-import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.InputStreamDataInput;
-import org.apache.lucene.store.MockDirectoryWrapper;
-import org.apache.lucene.store.OutputStreamDataOutput;
-import org.apache.lucene.store.OutputStreamIndexOutput;
-import org.apache.lucene.store.RateLimiter;
 import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 
 /** Handles one set of files that need copying, either because we have a
  *  new NRT point, or we are pre-copying merged files for merge warming. */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleTransLog.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleTransLog.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleTransLog.java
index 4c11e52..dd2085f 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleTransLog.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimpleTransLog.java
@@ -30,9 +30,6 @@ import org.apache.lucene.document.Field;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.CorruptIndexException;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.Term;
 import org.apache.lucene.store.ByteArrayDataInput;
 import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.RAMOutputStream;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestNRTReplication.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestNRTReplication.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestNRTReplication.java
index 955d84e..576186a 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestNRTReplication.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestNRTReplication.java
@@ -32,7 +32,6 @@ import java.util.regex.Pattern;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LineFileDocs;
-import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestStressNRTReplication.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestStressNRTReplication.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestStressNRTReplication.java
index f2d0bf8..b53dc78 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestStressNRTReplication.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/TestStressNRTReplication.java
@@ -50,7 +50,6 @@ import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LineFileDocs;
-import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java b/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
index ce73e40..54f4aa4 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
@@ -26,7 +26,6 @@ import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.util.Bits;
 
 final class IDVersionPostingsReader extends PostingsReaderBase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionSegmentTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionSegmentTermsEnum.java b/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionSegmentTermsEnum.java
index dbb2981..0af64d9 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionSegmentTermsEnum.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionSegmentTermsEnum.java
@@ -26,7 +26,6 @@ import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.store.ByteArrayDataInput;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.RamUsageEstimator;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java b/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java
index 21724bd..8f466cc 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyTermsEnum.java
@@ -26,7 +26,6 @@ import org.apache.lucene.search.BoostAttribute;
 import org.apache.lucene.search.FuzzyTermsEnum;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.StringHelper;
 import org.apache.lucene.util.UnicodeUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/sandbox/src/java/org/apache/lucene/search/TokenStreamToTermAutomatonQuery.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/search/TokenStreamToTermAutomatonQuery.java b/lucene/sandbox/src/java/org/apache/lucene/search/TokenStreamToTermAutomatonQuery.java
index cac0783..7c56c8b 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/search/TokenStreamToTermAutomatonQuery.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/search/TokenStreamToTermAutomatonQuery.java
@@ -24,8 +24,6 @@ import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
 import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.RollingBuffer;
-import org.apache.lucene.util.automaton.Automaton;
 
 /** Consumes a TokenStream and creates an {@link TermAutomatonQuery}
  *  where the transition labels are tokens from the {@link

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DPoint.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DPoint.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DPoint.java
index 15426e6..fd48476 100644
--- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DPoint.java
+++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DPoint.java
@@ -16,9 +16,6 @@
  */
 package org.apache.lucene.spatial3d;
 
-import java.util.List;
-import java.util.ArrayList;
-
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.index.PointValues;
@@ -27,12 +24,6 @@ import org.apache.lucene.geo.GeoUtils;
 import org.apache.lucene.spatial3d.geom.GeoPoint;
 import org.apache.lucene.spatial3d.geom.GeoShape;
 import org.apache.lucene.spatial3d.geom.PlanetModel;
-import org.apache.lucene.spatial3d.geom.GeoCircleFactory;
-import org.apache.lucene.spatial3d.geom.GeoBBoxFactory;
-import org.apache.lucene.spatial3d.geom.GeoPolygonFactory;
-import org.apache.lucene.spatial3d.geom.GeoPathFactory;
-import org.apache.lucene.spatial3d.geom.GeoCompositePolygon;
-import org.apache.lucene.spatial3d.geom.GeoPolygon;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.NumericUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
index 8528471..5e91fa7 100644
--- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
+++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
@@ -19,8 +19,6 @@ package org.apache.lucene.spatial3d.geom;
 import java.util.Arrays;
 import java.util.List;
 import java.util.ArrayList;
-import java.util.Set;
-import java.util.HashSet;
 
 /**
  * GeoComplexPolygon objects are structures designed to handle very large numbers of edges.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/StandardXYZSolid.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/StandardXYZSolid.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/StandardXYZSolid.java
index a88675a..0f79f24 100644
--- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/StandardXYZSolid.java
+++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/StandardXYZSolid.java
@@ -16,8 +16,6 @@
  */
 package org.apache.lucene.spatial3d.geom;
 
-import java.util.Arrays;
-
 /**
  * 3D rectangle, bounded on six sides by X,Y,Z limits
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
index fed5ada..d9baf61 100644
--- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
+++ b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
@@ -58,7 +58,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.SimpleCollector;
 import org.apache.lucene.spatial3d.geom.GeoArea;
 import org.apache.lucene.spatial3d.geom.GeoAreaFactory;
-import org.apache.lucene.spatial3d.geom.GeoBBox;
 import org.apache.lucene.spatial3d.geom.GeoBBoxFactory;
 import org.apache.lucene.spatial3d.geom.GeoCircleFactory;
 import org.apache.lucene.spatial3d.geom.GeoPathFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java
index 6aec9b3..a5a0207 100755
--- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java
+++ b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java
@@ -21,8 +21,6 @@ import java.util.List;
 import java.util.BitSet;
 
 import org.junit.Test;
-import org.junit.Ignore;
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java b/lucene/suggest/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
index f372382..1db4a9e 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
@@ -26,9 +26,7 @@ import org.apache.lucene.search.MaxNonCompetitiveBoostAttribute;
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
-import org.apache.lucene.util.UnicodeUtil;
 import org.apache.lucene.util.automaton.LevenshteinAutomata;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneDictionary.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneDictionary.java b/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneDictionary.java
index 5612463..b96af9b 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneDictionary.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneDictionary.java
@@ -18,7 +18,6 @@ package org.apache.lucene.search.spell;
 
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.suggest.InputIterator;
-import org.apache.lucene.util.BytesRefIterator;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.MultiFields;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java b/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
index 191f431..f3cc5bd 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
@@ -24,7 +24,6 @@ import java.util.Queue;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.spell.SuggestMode;
-import org.apache.lucene.util.BytesRef;
 
 /**
  * <p>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
index 16e9406..9174137 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.io.StringReader;
 import java.nio.file.Path;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FSTUtil.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FSTUtil.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FSTUtil.java
index 28e263b..61f2fe1 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FSTUtil.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FSTUtil.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.Transition;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/SuggestStopFilter.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/SuggestStopFilter.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/SuggestStopFilter.java
index dd8e082..d7aa2bb 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/SuggestStopFilter.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/SuggestStopFilter.java
@@ -26,7 +26,6 @@ import org.apache.lucene.analysis.tokenattributes.KeywordAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.AttributeSource.State;
 
 /** Like {@link StopFilter} except it will not remove the
  *  last token if that token was not followed by some token

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionBuilder.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionBuilder.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionBuilder.java
index 241525d..3706724 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionBuilder.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionBuilder.java
@@ -24,7 +24,6 @@ import org.apache.lucene.search.suggest.InMemorySorter;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.BytesRefIterator;
-import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.fst.*;
 import org.apache.lucene.util.packed.PackedInts;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
index d50100b..3e78f59 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
@@ -30,7 +30,6 @@ import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
-import org.apache.lucene.util.UnicodeUtil;
 
 /**
  * Suggest implementation based on 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/FileDictionaryTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/FileDictionaryTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/FileDictionaryTest.java
index 6d32570..bf021ea 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/FileDictionaryTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/FileDictionaryTest.java
@@ -28,7 +28,6 @@ import java.util.Map;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.TestUtil;
 import org.junit.Test;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/PersistenceTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/PersistenceTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/PersistenceTest.java
index ea0394b..a4a9d21 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/PersistenceTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/PersistenceTest.java
@@ -26,7 +26,6 @@ import org.apache.lucene.search.suggest.fst.FSTCompletionLookup;
 import org.apache.lucene.search.suggest.jaspell.JaspellLookup;
 import org.apache.lucene.search.suggest.tst.TSTLookup;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
index 6345463..d0d3a41 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
@@ -21,7 +21,6 @@ import java.io.StringReader;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -41,7 +40,6 @@ import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.suggest.Input;
 import org.apache.lucene.search.suggest.InputArrayIterator;
 import org.apache.lucene.search.suggest.Lookup.LookupResult;
-import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
index 7baa73c..590eb86 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
@@ -51,7 +51,6 @@ import org.apache.lucene.search.suggest.Input;
 import org.apache.lucene.search.suggest.InputArrayIterator;
 import org.apache.lucene.search.suggest.Lookup.LookupResult;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LineFileDocs;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
index ba6cf0a..adda0fc 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
@@ -43,7 +43,6 @@ import org.apache.lucene.search.suggest.Input;
 import org.apache.lucene.search.suggest.InputArrayIterator;
 import org.apache.lucene.search.suggest.Lookup.LookupResult;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.IOUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/FSTCompletionTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/FSTCompletionTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/FSTCompletionTest.java
index 855df48..57c3521 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/FSTCompletionTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/FSTCompletionTest.java
@@ -23,7 +23,6 @@ import org.apache.lucene.search.suggest.*;
 import org.apache.lucene.search.suggest.Lookup.LookupResult;
 import org.apache.lucene.search.suggest.fst.FSTCompletion.Completion;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/WFSTCompletionTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/WFSTCompletionTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/WFSTCompletionTest.java
index fa45931..f225ef9 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/WFSTCompletionTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/WFSTCompletionTest.java
@@ -22,7 +22,6 @@ import org.apache.lucene.search.suggest.Input;
 import org.apache.lucene.search.suggest.InputArrayIterator;
 import org.apache.lucene.search.suggest.Lookup.LookupResult;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/analysis/CollationTestBase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/analysis/CollationTestBase.java b/lucene/test-framework/src/java/org/apache/lucene/analysis/CollationTestBase.java
index 7e8682e..4efc2a9 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/analysis/CollationTestBase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/analysis/CollationTestBase.java
@@ -22,7 +22,6 @@ import java.util.Map;
 
 import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/analysis/MockAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/analysis/MockAnalyzer.java b/lucene/test-framework/src/java/org/apache/lucene/analysis/MockAnalyzer.java
index bd9c5e8..e87bf45 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/analysis/MockAnalyzer.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/analysis/MockAnalyzer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.lucene.analysis;
 
-import java.io.Reader;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Random;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/analysis/MockCharFilter.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/analysis/MockCharFilter.java b/lucene/test-framework/src/java/org/apache/lucene/analysis/MockCharFilter.java
index 01e8970..c9bb2f2 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/analysis/MockCharFilter.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/analysis/MockCharFilter.java
@@ -19,7 +19,6 @@ package org.apache.lucene.analysis;
 import java.io.IOException;
 import java.io.Reader;
 import java.util.Map;
-import java.util.SortedMap;
 import java.util.TreeMap;
 
 /** the purpose of this charfilter is to send offsets out of bounds

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/analysis/MockPayloadAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/analysis/MockPayloadAnalyzer.java b/lucene/test-framework/src/java/org/apache/lucene/analysis/MockPayloadAnalyzer.java
index a1e8bce..5b11ed2 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/analysis/MockPayloadAnalyzer.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/analysis/MockPayloadAnalyzer.java
@@ -21,7 +21,6 @@ import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.util.BytesRef;
 
 import java.io.IOException;
-import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointsFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointsFormat.java
index b672913..731aaec 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointsFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointsFormat.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.codecs.asserting;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
 
 import org.apache.lucene.codecs.PointsFormat;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointsFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointsFormat.java
index 4d16461..fd2260b 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointsFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointsFormat.java
@@ -24,11 +24,8 @@ import org.apache.lucene.codecs.PointsReader;
 import org.apache.lucene.codecs.PointsWriter;
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.MergeState;
-import org.apache.lucene.index.SegmentInfo;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.index.SegmentWriteState;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
 
 class CrankyPointsFormat extends PointsFormat {
   PointsFormat delegate;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
index 432a25d..5e6809f 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
@@ -40,7 +40,6 @@ import org.apache.lucene.analysis.CannedTokenStream;
 import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.Token;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.Analyzer.TokenStreamComponents;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
@@ -61,7 +60,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.AttributeImpl;
 import org.apache.lucene.util.AttributeReflector;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.TestUtil;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java b/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
index cac861e..8a7a903 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.index;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java b/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
index 79788f5..02382e8 100755
--- a/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
@@ -17,12 +17,9 @@
 package org.apache.lucene.index;
 
 import java.io.IOException;
-import java.util.Map;
-
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.MergePolicy;
 import org.apache.lucene.index.MergeTrigger;
-import org.apache.lucene.index.SegmentCommitInfo;
 import org.apache.lucene.index.SegmentInfos;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
index e79d548..ac94cf7 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
@@ -41,7 +41,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.FailOnNonBulkMergesInfoStream;
-import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LineFileDocs;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.NamedThreadFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/mockfile/MockFileSystemTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/mockfile/MockFileSystemTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/mockfile/MockFileSystemTestCase.java
index 0ab96cd..08fa46f 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/mockfile/MockFileSystemTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/mockfile/MockFileSystemTestCase.java
@@ -19,7 +19,6 @@ package org.apache.lucene.mockfile;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.URI;
-import java.nio.charset.Charset;
 import java.nio.file.DirectoryStream;
 import java.nio.file.Files;
 import java.nio.file.InvalidPathException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/mockfile/WindowsFS.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/mockfile/WindowsFS.java b/lucene/test-framework/src/java/org/apache/lucene/mockfile/WindowsFS.java
index f304642..b7b5457 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/mockfile/WindowsFS.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/mockfile/WindowsFS.java
@@ -16,19 +16,15 @@
  */
 package org.apache.lucene.mockfile;
 
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.file.CopyOption;
 import java.nio.file.FileSystem;
 import java.nio.file.Files;
-import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.attribute.BasicFileAttributeView;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
 
 /** 
  * FileSystem that (imperfectly) acts like windows. 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
index b5b3c53..01791b7 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.io.PrintStream;
 import java.io.UnsupportedEncodingException;
 import java.nio.file.AccessDeniedException;
-import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.util.concurrent.CyclicBarrier;
 import java.util.concurrent.atomic.AtomicBoolean;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java b/lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java
index 6be51f7..e7542da 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java
@@ -19,7 +19,6 @@ package org.apache.lucene.util;
 import java.io.Closeable;
 
 import org.apache.lucene.store.BaseDirectoryWrapper;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.junit.Assert;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/java/org/apache/lucene/util/LineFileDocs.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/LineFileDocs.java b/lucene/test-framework/src/java/org/apache/lucene/util/LineFileDocs.java
index 8844d8f..2f5dc74 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/util/LineFileDocs.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/util/LineFileDocs.java
@@ -37,7 +37,6 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.IntPoint;
-import org.apache.lucene.document.IntPoint;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
 import org.apache.lucene.document.StringField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/analysis/TestLookaheadTokenFilter.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/analysis/TestLookaheadTokenFilter.java b/lucene/test-framework/src/test/org/apache/lucene/analysis/TestLookaheadTokenFilter.java
index 3168ba4..cccaf6b8 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/analysis/TestLookaheadTokenFilter.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/analysis/TestLookaheadTokenFilter.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.analysis;
 
 import java.io.IOException;
-import java.io.Reader;
 import java.util.Random;
 
 public class TestLookaheadTokenFilter extends BaseTokenStreamTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingStoredFieldsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingStoredFieldsFormat.java b/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingStoredFieldsFormat.java
index c6396ae..4ca4ffb 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingStoredFieldsFormat.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingStoredFieldsFormat.java
@@ -25,21 +25,17 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.IntPoint;
-import org.apache.lucene.document.IntPoint;
 import org.apache.lucene.document.StoredField;
 import org.apache.lucene.index.BaseStoredFieldsFormatTestCase;
 import org.apache.lucene.index.CodecReader;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.NoMergePolicy;
 import org.apache.lucene.store.ByteArrayDataInput;
 import org.apache.lucene.store.ByteArrayDataOutput;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
-
 import com.carrotsearch.randomizedtesting.generators.RandomInts;
 
 public class TestCompressingStoredFieldsFormat extends BaseStoredFieldsFormatTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingTermVectorsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingTermVectorsFormat.java b/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingTermVectorsFormat.java
index f4858d1..cf1c6a3 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingTermVectorsFormat.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/codecs/compressing/TestCompressingTermVectorsFormat.java
@@ -23,7 +23,6 @@ import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
-import org.apache.lucene.document.StoredField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.BaseTermVectorsFormatTestCase;
 import org.apache.lucene.index.CodecReader;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/index/TestAssertingLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/index/TestAssertingLeafReader.java b/lucene/test-framework/src/test/org/apache/lucene/index/TestAssertingLeafReader.java
index 5276301..cdd025d 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/index/TestAssertingLeafReader.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/index/TestAssertingLeafReader.java
@@ -18,18 +18,10 @@ package org.apache.lucene.index;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.search.QueryUtils.FCInvisibleMultiReader;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 public class TestAssertingLeafReader extends LuceneTestCase {
   public void testAssertBits() throws Exception {
     Directory dir = newDirectory();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestHandleTrackingFS.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestHandleTrackingFS.java b/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestHandleTrackingFS.java
index 5681311..72415f0 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestHandleTrackingFS.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestHandleTrackingFS.java
@@ -21,11 +21,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.Object;
 import java.lang.Override;
-import java.lang.RuntimeException;
 import java.net.URI;
-import java.nio.channels.AsynchronousFileChannel;
-import java.nio.channels.ByteChannel;
-import java.nio.channels.FileChannel;
 import java.nio.channels.SeekableByteChannel;
 import java.nio.file.DirectoryStream;
 import java.nio.file.FileSystem;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestWindowsFS.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestWindowsFS.java b/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestWindowsFS.java
index 8779d77..5e0a687 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestWindowsFS.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/mockfile/TestWindowsFS.java
@@ -21,8 +21,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.Exception;
-import java.lang.InterruptedException;
-import java.lang.NoSuchFieldException;
 import java.lang.RuntimeException;
 import java.net.URI;
 import java.nio.file.FileSystem;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/test-framework/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java b/lucene/test-framework/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
index f324bb4..ef7b0f3 100644
--- a/lucene/test-framework/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
+++ b/lucene/test-framework/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
@@ -20,11 +20,7 @@ import java.io.IOException;
 import java.nio.file.Path;
 
 import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LuceneTestCase.Nightly;
 
 public class TestMockDirectoryWrapper extends BaseDirectoryTestCase {
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationField.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationField.java b/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationField.java
index e25e440..e21b4dd 100644
--- a/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationField.java
+++ b/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationField.java
@@ -21,8 +21,6 @@ import java.io.FileOutputStream;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCaseJ4;
 import org.junit.BeforeClass;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
index 1e8f4f9..fc7df4b 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
@@ -22,7 +22,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
index 984398c..bf67213 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.analytics.facet;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java
index 2efc386..2f3d957 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DIHCacheSupport.java
@@ -20,11 +20,8 @@ import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrap
 
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.solr.common.SolrException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
index 2e9d93a..0766c7f 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandler.java
@@ -24,33 +24,27 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.UpdateParams;
 import org.apache.solr.common.util.ContentStreamBase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.util.SystemIdResolver;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.handler.RequestHandlerBase;
-import org.apache.solr.handler.RequestHandlerUtils;
 import org.apache.solr.response.RawResponseWriter;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.apache.solr.update.processor.UpdateRequestProcessorChain;
 import org.apache.solr.util.plugin.SolrCoreAware;
 
 import java.util.*;
-import java.io.StringReader;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Constructor;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.xml.sax.InputSource;
 
 /**
  * <p>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
index f58dc6e..9bd217a 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
@@ -17,7 +17,6 @@
 package org.apache.solr.handler.dataimport;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Evaluator.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Evaluator.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Evaluator.java
index 9255e06..22282b9 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Evaluator.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Evaluator.java
@@ -20,14 +20,9 @@ import static org.apache.solr.handler.dataimport.DataImportHandlerException.SEVE
 import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
 import java.util.regex.Pattern;
 
-import org.apache.solr.util.DateMathParser;
-
 /**
  * <p>
  * Pluggable functions for resolving variables

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/UrlEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/UrlEvaluator.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/UrlEvaluator.java
index d961e63..8a6654c 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/UrlEvaluator.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/UrlEvaluator.java
@@ -20,7 +20,6 @@ import static org.apache.solr.handler.dataimport.DataImportHandlerException.SEVE
 import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow;
 
 import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java
index 93046bf..637e1ef 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java
@@ -26,7 +26,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.commons.io.IOUtils;
 
-import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.stream.StreamResult;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Zipper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Zipper.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Zipper.java
index 59793bc..096b3a8 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Zipper.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/Zipper.java
@@ -24,7 +24,6 @@ import org.apache.solr.handler.dataimport.DIHCacheSupport.Relation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Supplier;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.PeekingIterator;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/ConfigParseUtil.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/ConfigParseUtil.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/ConfigParseUtil.java
index fc4a7ac..c369296 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/ConfigParseUtil.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/ConfigParseUtil.java
@@ -17,14 +17,8 @@
 package org.apache.solr.handler.dataimport.config;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-
-import org.apache.solr.handler.dataimport.DataImporter;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.SchemaField;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDataConfig.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDataConfig.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDataConfig.java
index 05ee93b..7a56fd2 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDataConfig.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDataConfig.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.handler.dataimport;
 
-import org.apache.solr.handler.dataimport.config.ConfigNameConstants;
 import org.apache.solr.handler.dataimport.config.DIHConfiguration;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java
index e3f1805..527dad0 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java
@@ -17,7 +17,6 @@
 package org.apache.solr.handler.dataimport;
 
 import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.handler.dataimport.config.ConfigNameConstants;
 import org.apache.solr.handler.dataimport.config.DIHConfiguration;
 import org.apache.solr.handler.dataimport.config.Entity;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestEphemeralCache.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestEphemeralCache.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestEphemeralCache.java
index c9b5abe..ddccafe 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestEphemeralCache.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestEphemeralCache.java
@@ -23,7 +23,6 @@ import java.util.List;
 import static org.hamcrest.CoreMatchers.*;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class TestEphemeralCache extends AbstractDataImportHandlerTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListEntityProcessor.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListEntityProcessor.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListEntityProcessor.java
index 7674dd5..dd2cf72 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListEntityProcessor.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListEntityProcessor.java
@@ -19,7 +19,6 @@ package org.apache.solr.handler.dataimport;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java
index c978a45..aad8e30 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java
@@ -20,7 +20,6 @@ import java.io.File;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.junit.BeforeClass;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
index 44ea047..97c7714 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
@@ -17,7 +17,6 @@
 package org.apache.solr.handler.dataimport;
 
 import java.io.IOException;
-import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java
index 8d50ba5..a7d3d0a 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java
@@ -21,7 +21,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.io.FileUtils;
-import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java
index 5a6ef9d..82b757e 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.handler.dataimport;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.StringReader;
 import java.util.Properties;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestScriptTransformer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestScriptTransformer.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestScriptTransformer.java
index d478985..c106f8e 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestScriptTransformer.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestScriptTransformer.java
@@ -16,11 +16,9 @@
  */
 package org.apache.solr.handler.dataimport;
 
-import org.apache.solr.handler.dataimport.config.ConfigNameConstants;
 import org.apache.solr.handler.dataimport.config.DIHConfiguration;
 import org.junit.Test;
 import org.w3c.dom.Document;
-import org.w3c.dom.Element;
 import org.xml.sax.InputSource;
 
 import javax.xml.parsers.DocumentBuilder;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSimplePropertiesWriter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSimplePropertiesWriter.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSimplePropertiesWriter.java
index 3c476a7..93a26c3 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSimplePropertiesWriter.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSimplePropertiesWriter.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.handler.dataimport;
 
-import java.io.File;
 import java.lang.invoke.MethodHandles;
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -29,7 +28,6 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.solr.common.util.SuppressForbidden;
-import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java
index 1750bda..1f22a8c 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java
@@ -20,7 +20,6 @@ import java.lang.invoke.MethodHandles;
 
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/langid/src/java/org/apache/solr/update/processor/LangDetectLanguageIdentifierUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/langid/src/java/org/apache/solr/update/processor/LangDetectLanguageIdentifierUpdateProcessorFactory.java b/solr/contrib/langid/src/java/org/apache/solr/update/processor/LangDetectLanguageIdentifierUpdateProcessorFactory.java
index dcf1bd5..59663ce 100644
--- a/solr/contrib/langid/src/java/org/apache/solr/update/processor/LangDetectLanguageIdentifierUpdateProcessorFactory.java
+++ b/solr/contrib/langid/src/java/org/apache/solr/update/processor/LangDetectLanguageIdentifierUpdateProcessorFactory.java
@@ -20,7 +20,6 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/langid/src/java/org/apache/solr/update/processor/LanguageIdentifierUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/solr/contrib/langid/src/java/org/apache/solr/update/processor/LanguageIdentifierUpdateProcessor.java b/solr/contrib/langid/src/java/org/apache/solr/update/processor/LanguageIdentifierUpdateProcessor.java
index a78a1fe..ce81ae1 100644
--- a/solr/contrib/langid/src/java/org/apache/solr/update/processor/LanguageIdentifierUpdateProcessor.java
+++ b/solr/contrib/langid/src/java/org/apache/solr/update/processor/LanguageIdentifierUpdateProcessor.java
@@ -33,7 +33,6 @@ import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
index 23d04c6..1c17855 100644
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
+++ b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
@@ -37,13 +37,10 @@ import java.text.NumberFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
 import net.sourceforge.argparse4j.ArgumentParsers;
 import net.sourceforge.argparse4j.impl.Arguments;
 import net.sourceforge.argparse4j.impl.action.HelpArgumentAction;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
index 4bbbce8..b52939e 100644
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
+++ b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
 import java.net.URI;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.Arrays;
 import java.util.HashSet;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
index 9704a08..959ca54 100644
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
+++ b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
@@ -28,7 +28,6 @@ import org.apache.lucene.util.Constants;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.hadoop.morphline.MorphlineMapper;
 import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.apache.solr.util.BadMrClusterThreadsFilter;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/Assign.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/Assign.java b/solr/core/src/java/org/apache/solr/cloud/Assign.java
index b68dfe1..e6e08f9 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Assign.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Assign.java
@@ -19,7 +19,6 @@ package org.apache.solr.cloud;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/DistributedMap.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/DistributedMap.java b/solr/core/src/java/org/apache/solr/cloud/DistributedMap.java
index c3b5690..6e3ae1e 100644
--- a/solr/core/src/java/org/apache/solr/cloud/DistributedMap.java
+++ b/solr/core/src/java/org/apache/solr/cloud/DistributedMap.java
@@ -22,7 +22,6 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCmdExecutor;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.data.ACL;
 import org.apache.zookeeper.data.Stat;
 
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/SizeLimitedDistributedMap.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/SizeLimitedDistributedMap.java b/solr/core/src/java/org/apache/solr/cloud/SizeLimitedDistributedMap.java
index 82ab141..6501b8c 100644
--- a/solr/core/src/java/org/apache/solr/cloud/SizeLimitedDistributedMap.java
+++ b/solr/core/src/java/org/apache/solr/cloud/SizeLimitedDistributedMap.java
@@ -20,9 +20,7 @@ import java.util.List;
 
 import org.apache.lucene.util.PriorityQueue;
 import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.data.ACL;
 import org.apache.zookeeper.data.Stat;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/overseer/NodeMutator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/NodeMutator.java b/solr/core/src/java/org/apache/solr/cloud/overseer/NodeMutator.java
index 6ca0745..96018b9 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/NodeMutator.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/NodeMutator.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
 
 import org.apache.solr.common.cloud.ClusterState;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/overseer/OverseerAction.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/OverseerAction.java b/solr/core/src/java/org/apache/solr/cloud/overseer/OverseerAction.java
index ea00806..3fefc8f 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/OverseerAction.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/OverseerAction.java
@@ -18,8 +18,6 @@ package org.apache.solr.cloud.overseer;
 
 import java.util.Locale;
 
-import org.apache.solr.cloud.Overseer;
-
 /**
  * Enum of actions supported by the overseer only.
  *


[10/50] [abbrv] lucene-solr:apiv2: LUCENE-7291: Fix spatial HeatmapFacetCounter bug with dateline and large non-point shapes

Posted by no...@apache.org.
LUCENE-7291: Fix spatial HeatmapFacetCounter bug with dateline and large non-point shapes


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b33d7176
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b33d7176
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b33d7176

Branch: refs/heads/apiv2
Commit: b33d7176aa3624df2de1708b17919f20d034872f
Parents: e4db256
Author: David Smiley <ds...@apache.org>
Authored: Fri Jun 10 13:36:07 2016 -0400
Committer: David Smiley <ds...@apache.org>
Committed: Fri Jun 10 13:36:07 2016 -0400

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |  4 +++
 .../spatial/prefix/HeatmapFacetCounter.java     | 34 +++++++++++---------
 .../spatial/prefix/HeatmapFacetCounterTest.java | 27 ++++++++++------
 3 files changed, 40 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b33d7176/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index b4ec596..fb5d93a 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -143,6 +143,10 @@ Bug Fixes
 
 * LUCENE-7286: Added support for highlighting SynonymQuery. (Adrien Grand)
 
+* LUCENE-7291: Spatial heatmap faceting could mis-count when the heatmap crosses the
+  dateline and indexed non-point shapes are much bigger than the heatmap region.
+  (David Smiley)
+
 Other
 
 * LUCENE-7295: TermAutomatonQuery.hashCode calculates Automaton.toDot().hash,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b33d7176/lucene/spatial-extras/src/java/org/apache/lucene/spatial/prefix/HeatmapFacetCounter.java
----------------------------------------------------------------------
diff --git a/lucene/spatial-extras/src/java/org/apache/lucene/spatial/prefix/HeatmapFacetCounter.java b/lucene/spatial-extras/src/java/org/apache/lucene/spatial/prefix/HeatmapFacetCounter.java
index adee2be..c3c98f7 100644
--- a/lucene/spatial-extras/src/java/org/apache/lucene/spatial/prefix/HeatmapFacetCounter.java
+++ b/lucene/spatial-extras/src/java/org/apache/lucene/spatial/prefix/HeatmapFacetCounter.java
@@ -20,17 +20,17 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.locationtech.spatial4j.context.SpatialContext;
-import org.locationtech.spatial4j.shape.Point;
-import org.locationtech.spatial4j.shape.Rectangle;
-import org.locationtech.spatial4j.shape.Shape;
-import org.locationtech.spatial4j.shape.SpatialRelation;
 import org.apache.lucene.index.IndexReaderContext;
 import org.apache.lucene.spatial.prefix.tree.Cell;
 import org.apache.lucene.spatial.prefix.tree.CellIterator;
 import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.Bits;
+import org.locationtech.spatial4j.context.SpatialContext;
+import org.locationtech.spatial4j.shape.Point;
+import org.locationtech.spatial4j.shape.Rectangle;
+import org.locationtech.spatial4j.shape.Shape;
+import org.locationtech.spatial4j.shape.SpatialRelation;
 
 /**
  * Computes spatial facets in two dimensions as a grid of numbers.  The data is often visualized as a so-called
@@ -204,8 +204,9 @@ public class HeatmapFacetCounter {
 
     int[] pair = new int[2];//output of intersectInterval
     for (Map.Entry<Rectangle, Integer> entry : ancestors.entrySet()) {
-      Rectangle rect = entry.getKey();
+      Rectangle rect = entry.getKey(); // from a cell (thus doesn't cross DL)
       final int count = entry.getValue();
+
       //note: we approach this in a way that eliminates int overflow/underflow (think huge cell, tiny heatmap)
       intersectInterval(heatMinY, heatMaxY, cellHeight, rows, rect.getMinY(), rect.getMaxY(), pair);
       final int startRow = pair[0];
@@ -218,32 +219,33 @@ public class HeatmapFacetCounter {
         incrementRange(heatmap, startCol, endCol, startRow, endRow, count);
 
       } else {
+        // note: the cell rect might intersect 2 disjoint parts of the heatmap, so we do the left & right separately
+        final int leftColumns = (int) Math.round((180 - heatMinX) / cellWidth);
+        final int rightColumns = heatmap.columns - leftColumns;
         //left half of dateline:
-        if (rect.getMaxX() >= heatMinX) {
-          final int leftColumns = (int) Math.round((180 - heatMinX) / cellWidth) + 1;
+        if (rect.getMaxX() > heatMinX) {
           intersectInterval(heatMinX, 180, cellWidth, leftColumns, rect.getMinX(), rect.getMaxX(), pair);
           final int startCol = pair[0];
           final int endCol = pair[1];
           incrementRange(heatmap, startCol, endCol, startRow, endRow, count);
         }
         //right half of dateline
-        if (rect.getMinY() <= heatMaxX) {
-          final int rightColumns = (int) Math.round(heatMaxX / cellWidth) + 1;
-          intersectInterval(0, heatMaxX, cellWidth, rightColumns, rect.getMinX(), rect.getMaxX(), pair);
-          final int startCol = pair[0];
-          final int endCol = pair[1];
+        if (rect.getMinX() < heatMaxX) {
+          intersectInterval(-180, heatMaxX, cellWidth, rightColumns, rect.getMinX(), rect.getMaxX(), pair);
+          final int startCol = pair[0] + leftColumns;
+          final int endCol = pair[1] + leftColumns;
           incrementRange(heatmap, startCol, endCol, startRow, endRow, count);
         }
       }
-
     }
 
     return heatmap;
   }
 
-  private static void intersectInterval(double heatMin, double heatMax, double heatCellLen, int heatLen,
+  private static void intersectInterval(double heatMin, double heatMax, double heatCellLen, int numCells,
                                         double cellMin, double cellMax,
                                         int[] out) {
+    assert heatMin < heatMax && cellMin < cellMax;
     //precondition: we know there's an intersection
     if (heatMin >= cellMin) {
       out[0] = 0;
@@ -251,7 +253,7 @@ public class HeatmapFacetCounter {
       out[0] = (int) Math.round((cellMin - heatMin) / heatCellLen);
     }
     if (heatMax <= cellMax) {
-      out[1] = heatLen - 1;
+      out[1] = numCells - 1;
     } else {
       out[1] = (int) Math.round((cellMax - heatMin) / heatCellLen) - 1;
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b33d7176/lucene/spatial-extras/src/test/org/apache/lucene/spatial/prefix/HeatmapFacetCounterTest.java
----------------------------------------------------------------------
diff --git a/lucene/spatial-extras/src/test/org/apache/lucene/spatial/prefix/HeatmapFacetCounterTest.java b/lucene/spatial-extras/src/test/org/apache/lucene/spatial/prefix/HeatmapFacetCounterTest.java
index 2de18cc..a38f5b6 100644
--- a/lucene/spatial-extras/src/test/org/apache/lucene/spatial/prefix/HeatmapFacetCounterTest.java
+++ b/lucene/spatial-extras/src/test/org/apache/lucene/spatial/prefix/HeatmapFacetCounterTest.java
@@ -21,15 +21,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.carrotsearch.randomizedtesting.annotations.Repeat;
-import org.locationtech.spatial4j.context.SpatialContext;
-import org.locationtech.spatial4j.context.SpatialContextFactory;
-import org.locationtech.spatial4j.distance.DistanceUtils;
-import org.locationtech.spatial4j.shape.Circle;
-import org.locationtech.spatial4j.shape.Point;
-import org.locationtech.spatial4j.shape.Rectangle;
-import org.locationtech.spatial4j.shape.Shape;
-import org.locationtech.spatial4j.shape.SpatialRelation;
-import org.locationtech.spatial4j.shape.impl.RectangleImpl;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TotalHitCountCollector;
 import org.apache.lucene.spatial.StrategyTestCase;
@@ -39,6 +30,15 @@ import org.apache.lucene.util.Bits;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.locationtech.spatial4j.context.SpatialContext;
+import org.locationtech.spatial4j.context.SpatialContextFactory;
+import org.locationtech.spatial4j.distance.DistanceUtils;
+import org.locationtech.spatial4j.shape.Circle;
+import org.locationtech.spatial4j.shape.Point;
+import org.locationtech.spatial4j.shape.Rectangle;
+import org.locationtech.spatial4j.shape.Shape;
+import org.locationtech.spatial4j.shape.SpatialRelation;
+import org.locationtech.spatial4j.shape.impl.RectangleImpl;
 
 import static com.carrotsearch.randomizedtesting.RandomizedTest.atMost;
 import static com.carrotsearch.randomizedtesting.RandomizedTest.randomIntBetween;
@@ -83,6 +83,15 @@ public class HeatmapFacetCounterTest extends StrategyTestCase {
   }
 
   @Test
+  public void testLucene7291Dateline() throws IOException {
+    grid = new QuadPrefixTree(ctx, 2); // only 2, and we wind up with some big leaf cells
+    strategy = new RecursivePrefixTreeStrategy(grid, getTestClass().getSimpleName());
+    adoc("0", ctx.makeRectangle(-102, -83, 43, 52));
+    commit();
+    validateHeatmapResultLoop(ctx.makeRectangle(179, -179, 62, 63), 2, 100);// HM crosses dateline
+  }
+
+  @Test
   public void testQueryCircle() throws IOException {
     //overwrite setUp; non-geo bounds is more straight-forward; otherwise 88,88 would actually be practically north,
     final SpatialContextFactory spatialContextFactory = new SpatialContextFactory();


[28/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
index 4e775f3..b91bb9b 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
@@ -19,7 +19,6 @@ package org.apache.lucene.index;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -53,11 +52,7 @@ import org.apache.lucene.document.SortedSetDocValuesField;
 import org.apache.lucene.document.StoredField;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
-import org.apache.lucene.index.PointValues.IntersectVisitor;
-import org.apache.lucene.index.PointValues.Relation;
-import org.apache.lucene.index.TermsEnum.SeekStatus;
 import org.apache.lucene.search.CollectionStatistics;
-import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.EarlyTerminatingSortingCollector;
 import org.apache.lucene.search.FieldDoc;
 import org.apache.lucene.search.IndexSearcher;
@@ -79,8 +74,6 @@ import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.NumericUtils;
 import org.apache.lucene.util.TestUtil;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 
 public class TestIndexSorting extends LuceneTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
index fb3e07e..912af72 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
@@ -29,7 +29,6 @@ import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -69,8 +68,6 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.PhraseQuery;
 import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.BaseDirectoryWrapper;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
index ae07641..de380c9 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
@@ -18,7 +18,6 @@ package org.apache.lucene.index;
 
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
index ec033d4..2014c16 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
@@ -34,7 +34,6 @@ import org.apache.lucene.search.similarities.ClassicSimilarity;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.InfoStream;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.SetOnce.AlreadySetException;
 import org.junit.Test;
 
 public class TestIndexWriterConfig extends LuceneTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
index 28041ae..9940927 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
@@ -18,10 +18,6 @@ package org.apache.lucene.index;
 
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
 import java.util.Locale;
 
 import org.apache.lucene.analysis.Analyzer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
index 5ee9520..3074f03 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterFromReader.java
@@ -28,7 +28,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 
 public class TestIndexWriterFromReader extends LuceneTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java
index 9587380..01e73f7 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java
@@ -25,8 +25,6 @@ import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.TestUtil;
 
 /**
  * This tests the patch for issue #LUCENE-715 (IndexWriter does not

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
index b7d0b29..e1f42f8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
@@ -38,8 +38,6 @@ import org.apache.lucene.store.RAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 
-import static org.apache.lucene.index.TestIndexWriter.assertNoUnreferencedFiles;
-
 /**
  * Tests for IndexWriter when the disk runs out of space
  */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
index 9c7a6f9..8d4c5c7 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
@@ -23,7 +23,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -36,7 +35,6 @@ import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestMergeRateLimiter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMergeRateLimiter.java b/lucene/core/src/test/org/apache/lucene/index/TestMergeRateLimiter.java
index 670bcdb..ef922bb 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMergeRateLimiter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMergeRateLimiter.java
@@ -17,8 +17,6 @@
 package org.apache.lucene.index;
 
 
-import java.util.Collections;
-
 import org.apache.lucene.document.Document;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
index 72a67ec..1f43ddd 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
@@ -34,7 +34,6 @@ import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.lucene.util.TestUtil;
 
 import com.carrotsearch.randomizedtesting.generators.RandomPicks;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java b/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java
index ed59d5b..ac352c1 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java
@@ -44,7 +44,6 @@ import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 
 public class TestMultiTermsEnum extends LuceneTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java b/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
index 11f7f80..6aabbc8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNeverDelete.java
@@ -25,8 +25,6 @@ import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.store.BaseDirectoryWrapper;
-import org.apache.lucene.store.MockDirectoryWrapper;
-import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestNoMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNoMergePolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestNoMergePolicy.java
index 21f54d7..415a263 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNoMergePolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNoMergePolicy.java
@@ -22,7 +22,6 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Arrays;
 
-import org.apache.lucene.util.LuceneTestCase;
 import org.junit.Test;
 
 public class TestNoMergePolicy extends BaseMergePolicyTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
index 71b8284..219dd05 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
@@ -44,13 +44,11 @@ import org.apache.lucene.search.SortField;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopFieldDocs;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.store.NRTCachingDirectory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.lucene.util.TestUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java b/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
index f5a74b5..e573445 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
@@ -25,7 +25,6 @@ import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java b/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
index 3c12a0d..195f548 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
@@ -37,10 +37,8 @@ import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TermStatistics;
 import org.apache.lucene.search.similarities.TFIDFSimilarity;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 
 
 public class TestOmitTf extends LuceneTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java b/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
index 166c9e4d..3efdc8b 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
@@ -18,8 +18,6 @@ package org.apache.lucene.index;
 
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Random;
 
 import org.apache.lucene.analysis.MockAnalyzer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestParallelTermEnum.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestParallelTermEnum.java b/lucene/core/src/test/org/apache/lucene/index/TestParallelTermEnum.java
index a83c549..25d05ca 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestParallelTermEnum.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestParallelTermEnum.java
@@ -25,7 +25,6 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java b/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
index eca293e..e893d87 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
@@ -42,7 +42,6 @@ import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java b/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
index 68d697b..34d8afb 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
@@ -18,9 +18,7 @@ package org.apache.lucene.index;
 
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
 import java.util.Map;
 import java.util.Random;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
index f4a6024..21424cc 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
@@ -22,7 +22,6 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.MockDirectoryWrapper;
-import org.apache.lucene.util.TestUtil;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestReaderClosed.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestReaderClosed.java b/lucene/core/src/test/org/apache/lucene/index/TestReaderClosed.java
index 401254b..981a0ee 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestReaderClosed.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestReaderClosed.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.index;
 
 
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.RejectedExecutionException;
 
 import org.apache.lucene.analysis.MockAnalyzer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java b/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
index 179d266..feea111 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
@@ -19,7 +19,6 @@ package org.apache.lucene.index;
 
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.store.BaseDirectoryWrapper;
-import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.StringHelper;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
index c72e26d..42a4041 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
@@ -30,9 +30,7 @@ import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.ThreadInterruptedException;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java b/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
index 84d326f..d12caf1 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
@@ -18,30 +18,24 @@ package org.apache.lucene.search;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Random;
 import java.util.Set;
 
 import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.StringField;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.ExitableDirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MockRandomMergePolicy;
 import org.apache.lucene.index.QueryTimeout;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.SerialMergeScheduler;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.LeafCollector;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.ScoreDoc;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java b/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java
index 8201bf8..8748a1a 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java
@@ -30,7 +30,6 @@ import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.SortedDocValuesField;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestMatchNoDocsQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestMatchNoDocsQuery.java b/lucene/core/src/test/org/apache/lucene/search/TestMatchNoDocsQuery.java
index d9ebf1d..06d8504 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestMatchNoDocsQuery.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestMatchNoDocsQuery.java
@@ -24,7 +24,6 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.Term;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.store.Directory;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java b/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
index 0d6cb36..be6a87b 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
@@ -39,7 +39,6 @@ import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.similarities.ClassicSimilarity;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 import org.junit.AfterClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java b/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
index 52e4012..a704d54 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
@@ -36,7 +36,6 @@ import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java b/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java
index 4b1a4d2..741ebe3 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java
@@ -29,9 +29,7 @@ import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.BitDocIdSet;
 import org.apache.lucene.util.BitSetIterator;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.LuceneTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java b/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
index c332c10..be49d2e 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
@@ -23,7 +23,6 @@ import org.apache.lucene.document.Field;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.MultiDocValues;
 import org.apache.lucene.index.NumericDocValues;
 import org.apache.lucene.index.RandomIndexWriter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java b/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
index 178d792..87762df 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
@@ -36,7 +36,6 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 
 public class TestBufferedIndexInput extends LuceneTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java b/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
index 571119d..88f304b 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
@@ -24,7 +24,6 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 
 public class TestDirectory extends LuceneTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java b/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
index 927c913..51b4a44 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
@@ -31,7 +31,6 @@ import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.TestIndexWriterReader;
-import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.TestUtil;
 
 public class TestFileSwitchDirectory extends BaseDirectoryTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/store/TestRateLimiter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestRateLimiter.java b/lucene/core/src/test/org/apache/lucene/store/TestRateLimiter.java
index 50db1cd..338a30c 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestRateLimiter.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestRateLimiter.java
@@ -18,7 +18,6 @@ package org.apache.lucene.store;
 
 
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.lucene.store.RateLimiter.SimpleRateLimiter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/store/TestSimpleFSLockFactory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestSimpleFSLockFactory.java b/lucene/core/src/test/org/apache/lucene/store/TestSimpleFSLockFactory.java
index ec50498..981b8d8 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestSimpleFSLockFactory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestSimpleFSLockFactory.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.nio.file.Path;
 
 import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.TestUtil;
 
 /** Simple tests for SimpleFSLockFactory */
 public class TestSimpleFSLockFactory extends BaseLockFactoryTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/util/Test2BPagedBytes.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/Test2BPagedBytes.java b/lucene/core/src/test/org/apache/lucene/util/Test2BPagedBytes.java
index 073aed6..77f573c 100644
--- a/lucene/core/src/test/org/apache/lucene/util/Test2BPagedBytes.java
+++ b/lucene/core/src/test/org/apache/lucene/util/Test2BPagedBytes.java
@@ -25,7 +25,6 @@ import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.LuceneTestCase.Monster;
-import org.junit.Ignore;
 
 @Monster("You must increase heap to > 2 G to run this")
 public class Test2BPagedBytes extends LuceneTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/util/TestIOUtils.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestIOUtils.java b/lucene/core/src/test/org/apache/lucene/util/TestIOUtils.java
index f068b11..75cf2ec 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestIOUtils.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestIOUtils.java
@@ -38,7 +38,6 @@ import java.util.UUID;
 import org.apache.lucene.mockfile.FilterFileSystem;
 import org.apache.lucene.mockfile.FilterFileSystemProvider;
 import org.apache.lucene.mockfile.FilterPath;
-import org.apache.lucene.util.LuceneTestCase.SuppressFileSystems;
 
 /** Simple test methods for IOUtils */
 public class TestIOUtils extends LuceneTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/util/TestRecyclingByteBlockAllocator.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestRecyclingByteBlockAllocator.java b/lucene/core/src/test/org/apache/lucene/util/TestRecyclingByteBlockAllocator.java
index 7dffba0..825dd57 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestRecyclingByteBlockAllocator.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestRecyclingByteBlockAllocator.java
@@ -19,7 +19,6 @@ package org.apache.lucene.util;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicLong;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/util/TestRecyclingIntBlockAllocator.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestRecyclingIntBlockAllocator.java b/lucene/core/src/test/org/apache/lucene/util/TestRecyclingIntBlockAllocator.java
index 89f0dbe..9b0f162 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestRecyclingIntBlockAllocator.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestRecyclingIntBlockAllocator.java
@@ -19,7 +19,6 @@ package org.apache.lucene.util;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicLong;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/util/automaton/FiniteStringsIteratorTest.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/automaton/FiniteStringsIteratorTest.java b/lucene/core/src/test/org/apache/lucene/util/automaton/FiniteStringsIteratorTest.java
index 4edc7ad..94158c0 100644
--- a/lucene/core/src/test/org/apache/lucene/util/automaton/FiniteStringsIteratorTest.java
+++ b/lucene/core/src/test/org/apache/lucene/util/automaton/FiniteStringsIteratorTest.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.util.automaton;
 
 
-import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/util/automaton/LimitedFiniteStringsIteratorTest.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/automaton/LimitedFiniteStringsIteratorTest.java b/lucene/core/src/test/org/apache/lucene/util/automaton/LimitedFiniteStringsIteratorTest.java
index 5303417..50723d7 100644
--- a/lucene/core/src/test/org/apache/lucene/util/automaton/LimitedFiniteStringsIteratorTest.java
+++ b/lucene/core/src/test/org/apache/lucene/util/automaton/LimitedFiniteStringsIteratorTest.java
@@ -19,7 +19,6 @@ package org.apache.lucene.util.automaton;
 
 import java.util.List;
 
-import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/demo/src/test/org/apache/lucene/demo/TestDemo.java
----------------------------------------------------------------------
diff --git a/lucene/demo/src/test/org/apache/lucene/demo/TestDemo.java b/lucene/demo/src/test/org/apache/lucene/demo/TestDemo.java
index 6ee4add..5a21b90 100644
--- a/lucene/demo/src/test/org/apache/lucene/demo/TestDemo.java
+++ b/lucene/demo/src/test/org/apache/lucene/demo/TestDemo.java
@@ -18,13 +18,11 @@ package org.apache.lucene.demo;
 
 
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.PrintStream;
 import java.nio.charset.Charset;
 import java.nio.file.Path;
 
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
 
 public class TestDemo extends LuceneTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/demo/src/test/org/apache/lucene/demo/facet/TestExpressionAggregationFacetsExample.java
----------------------------------------------------------------------
diff --git a/lucene/demo/src/test/org/apache/lucene/demo/facet/TestExpressionAggregationFacetsExample.java b/lucene/demo/src/test/org/apache/lucene/demo/facet/TestExpressionAggregationFacetsExample.java
index 0c052ce..31bf106 100644
--- a/lucene/demo/src/test/org/apache/lucene/demo/facet/TestExpressionAggregationFacetsExample.java
+++ b/lucene/demo/src/test/org/apache/lucene/demo/facet/TestExpressionAggregationFacetsExample.java
@@ -17,9 +17,6 @@
 package org.apache.lucene.demo.facet;
 
 
-import java.util.List;
-import java.util.Locale;
-
 import org.apache.lucene.facet.FacetResult;
 import org.apache.lucene.util.LuceneTestCase;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java
----------------------------------------------------------------------
diff --git a/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java b/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java
index 94e6b0f..7083e65 100644
--- a/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java
+++ b/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java
@@ -17,8 +17,6 @@
 package org.apache.lucene.demo.facet;
 
 
-import java.util.List;
-
 import org.apache.lucene.facet.FacetResult;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleSortedSetFacetsExample.java
----------------------------------------------------------------------
diff --git a/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleSortedSetFacetsExample.java b/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleSortedSetFacetsExample.java
index 240c7b3..d860d58 100644
--- a/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleSortedSetFacetsExample.java
+++ b/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleSortedSetFacetsExample.java
@@ -20,7 +20,6 @@ package org.apache.lucene.demo.facet;
 import java.util.List;
 
 import org.apache.lucene.facet.FacetResult;
-import org.apache.lucene.facet.taxonomy.FacetLabel;
 import org.apache.lucene.util.LuceneTestCase;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptLexer.java
----------------------------------------------------------------------
diff --git a/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptLexer.java b/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptLexer.java
index 4827dc4..ad40e9c 100644
--- a/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptLexer.java
+++ b/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptLexer.java
@@ -2,12 +2,9 @@
 package org.apache.lucene.expressions.js;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
 import org.antlr.v4.runtime.*;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.*;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 class JavascriptLexer extends Lexer {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptParser.java
----------------------------------------------------------------------
diff --git a/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptParser.java b/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptParser.java
index 463f288..564f6ff 100644
--- a/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptParser.java
+++ b/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptParser.java
@@ -3,11 +3,8 @@ package org.apache.lucene.expressions.js;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.misc.*;
 import org.antlr.v4.runtime.tree.*;
 import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 class JavascriptParser extends Parser {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/facet/src/java/org/apache/lucene/facet/sortedset/DefaultSortedSetDocValuesReaderState.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/java/org/apache/lucene/facet/sortedset/DefaultSortedSetDocValuesReaderState.java b/lucene/facet/src/java/org/apache/lucene/facet/sortedset/DefaultSortedSetDocValuesReaderState.java
index e052541..936c962 100644
--- a/lucene/facet/src/java/org/apache/lucene/facet/sortedset/DefaultSortedSetDocValuesReaderState.java
+++ b/lucene/facet/src/java/org/apache/lucene/facet/sortedset/DefaultSortedSetDocValuesReaderState.java
@@ -29,7 +29,6 @@ import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.index.MultiDocValues.MultiSortedDocValues;
 import org.apache.lucene.index.MultiDocValues.MultiSortedSetDocValues;
 import org.apache.lucene.index.MultiDocValues.OrdinalMap;
 import org.apache.lucene.index.MultiDocValues;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestFacetLabel.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestFacetLabel.java b/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestFacetLabel.java
index 436c78b..de8705c 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestFacetLabel.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestFacetLabel.java
@@ -16,8 +16,6 @@
  */
 package org.apache.lucene.facet.taxonomy;
 
-import java.util.Arrays;
-
 import org.apache.lucene.facet.FacetField;
 import org.apache.lucene.facet.FacetTestCase;
 import org.apache.lucene.facet.sortedset.SortedSetDocValuesFacetField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestAddTaxonomy.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestAddTaxonomy.java b/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestAddTaxonomy.java
index 7a71450..a860ec9 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestAddTaxonomy.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestAddTaxonomy.java
@@ -31,20 +31,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.TestUtil;
 
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.lucene.facet.FacetTestCase;
-import org.apache.lucene.facet.taxonomy.FacetLabel;
-import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.DiskOrdinalMap;
-import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.MemoryOrdinalMap;
-import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.OrdinalMap;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.TestUtil;
-
 public class TestAddTaxonomy extends FacetTestCase {
 
   private void dotest(int ncats, final int range) throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java
----------------------------------------------------------------------
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java
index 404e3ee..6824684 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java
@@ -16,7 +16,6 @@
  */
 package org.apache.lucene.search.grouping;
 
-import org.apache.lucene.search.Collector;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.SimpleCollector;
 import org.apache.lucene.util.BytesRef;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/highlighter/src/test/org/apache/lucene/search/highlight/OffsetLimitTokenFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/highlight/OffsetLimitTokenFilterTest.java b/lucene/highlighter/src/test/org/apache/lucene/search/highlight/OffsetLimitTokenFilterTest.java
index 16cee83..2ebbaf1 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/highlight/OffsetLimitTokenFilterTest.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/highlight/OffsetLimitTokenFilterTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.lucene.search.highlight;
 
-import java.io.Reader;
 import java.io.StringReader;
 
 import org.apache.lucene.analysis.*;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java
----------------------------------------------------------------------
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java b/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java
index d48ae94..4b52e03 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java
@@ -17,10 +17,6 @@
 package org.apache.lucene.search.vectorhighlight;
 
 import java.io.IOException;
-import java.io.Reader;
-import java.util.HashSet;
-import java.util.Set;
-
 import org.apache.lucene.analysis.*;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.search.BooleanQuery;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java b/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
index e4ee760..e4e099f 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
@@ -17,10 +17,8 @@
 package org.apache.lucene.search.join;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java b/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
index ab6aa58..3fc6485 100644
--- a/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
+++ b/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
----------------------------------------------------------------------
diff --git a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
index 1010c13..5751457 100644
--- a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
+++ b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
@@ -17,14 +17,11 @@
 package org.apache.lucene.index.memory;
 
 import java.io.IOException;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.BiFunction;
 import java.util.function.Function;
-import java.util.function.Supplier;
-import java.util.stream.IntStream;
 import java.util.stream.LongStream;
 
 import org.apache.lucene.analysis.Analyzer;
@@ -51,20 +48,17 @@ import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.index.PointValues;
 import org.apache.lucene.index.PostingsEnum;
 import org.apache.lucene.index.SortedDocValues;
 import org.apache.lucene.index.SortedNumericDocValues;
 import org.apache.lucene.index.SortedSetDocValues;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.PhraseQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.similarities.BM25Similarity;
 import org.apache.lucene.search.similarities.ClassicSimilarity;
 import org.apache.lucene.util.BytesRef;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java
----------------------------------------------------------------------
diff --git a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java
index ba1263e..45e9551 100644
--- a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java
+++ b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java
@@ -25,7 +25,6 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.function.IntSupplier;
 import java.util.function.Supplier;
 
 import org.apache.lucene.analysis.Analyzer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java b/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
index 94c7003..b4e2131 100644
--- a/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
+++ b/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
@@ -29,7 +29,6 @@ import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.SuppressForbidden;
-import org.apache.lucene.util.Version;
 
 /**
  * This tool splits input index into multiple equal parts. The method employed

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java b/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
index a83fe83..7c97457 100644
--- a/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
+++ b/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
@@ -22,7 +22,6 @@ import org.apache.lucene.document.Field;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.Version;
 
 public class TestMultiPassIndexSplitter extends LuceneTestCase {
   IndexReader input;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java b/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
index 54ad744..2f2d4f7 100644
--- a/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
+++ b/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
@@ -30,7 +30,6 @@ import org.apache.lucene.index.BinaryDocValues;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiDocValues;
 import org.apache.lucene.index.NumericDocValues;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java b/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java
index 0252a04..aabbd70 100644
--- a/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java
+++ b/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java
@@ -30,7 +30,6 @@ import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.fst.UpToTwoPositiveIntOutputs.TwoLongs;
 
 import static org.apache.lucene.util.fst.FSTTester.getRandomString;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java b/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
index cafa819..3d82723 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
@@ -31,7 +31,6 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Weight;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
  * Query that is boosted by a ValueSource

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java b/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java
index cf6f267..f66f790 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java
@@ -19,7 +19,6 @@ package org.apache.lucene.queries.function.valuesource;
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.NumericDocValues;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/SumTotalTermFreqValueSource.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/SumTotalTermFreqValueSource.java b/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/SumTotalTermFreqValueSource.java
index 9594ad9..746ad8e 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/SumTotalTermFreqValueSource.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/SumTotalTermFreqValueSource.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.queries.function.valuesource;
 
 import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.index.Fields;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java b/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java
index 71eeef4..f8b10ef 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java
@@ -34,8 +34,6 @@ import org.apache.lucene.index.Fields;
 import org.apache.lucene.index.FilterDirectoryReader;
 import org.apache.lucene.index.FilterLeafReader;
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreExplanations.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreExplanations.java b/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreExplanations.java
index 9ab90a4..c87a004 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreExplanations.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreExplanations.java
@@ -32,7 +32,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.similarities.BM25Similarity;
 import org.apache.lucene.search.similarities.ClassicSimilarity;
-import org.apache.lucene.search.similarities.Similarity;
 
 public class TestCustomScoreExplanations extends BaseExplanationTestCase {
   public void testOneTerm() throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
index af93ff0..8f8294a 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
@@ -11,7 +11,6 @@ import org.apache.lucene.document.DateTools;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermRangeQuery;
-import org.apache.lucene.search.TermQuery;
 
 /**
  * This class is generated by JavaCC.  The most important method is

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java
index a844524..8c8951e 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java
@@ -1,15 +1,5 @@
 /* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
 package org.apache.lucene.queryparser.classic;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.DateTools;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermRangeQuery;
-import org.apache.lucene.search.TermQuery;
 
 /** Token Manager. */
 @SuppressWarnings("cast")

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/ext/ExtendableQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/ext/ExtendableQueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/ext/ExtendableQueryParser.java
index c023d08..b71846d 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/ext/ExtendableQueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/ext/ExtendableQueryParser.java
@@ -21,7 +21,6 @@ import org.apache.lucene.queryparser.ext.Extensions.Pair;
 import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.util.Version;
 
 /**
  * The {@link ExtendableQueryParser} enables arbitrary query parser extension

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/DummyQueryNodeBuilder.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/DummyQueryNodeBuilder.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/DummyQueryNodeBuilder.java
index 593e6ce..52001e5 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/DummyQueryNodeBuilder.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/DummyQueryNodeBuilder.java
@@ -18,7 +18,6 @@ package org.apache.lucene.queryparser.flexible.standard.builders;
 
 import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
 import org.apache.lucene.queryparser.flexible.core.builders.QueryTreeBuilder;
-import org.apache.lucene.queryparser.flexible.core.nodes.FieldQueryNode;
 import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode;
 import org.apache.lucene.search.TermQuery;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParserTokenManager.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParserTokenManager.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParserTokenManager.java
index 18ae9c7..2758bed 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParserTokenManager.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParserTokenManager.java
@@ -17,28 +17,6 @@ package org.apache.lucene.queryparser.flexible.standard.parser;
  * limitations under the License.
  */
 
-import java.io.StringReader;
-import java.util.Vector;
-import java.util.Arrays;
-import org.apache.lucene.queryparser.flexible.messages.Message;
-import org.apache.lucene.queryparser.flexible.messages.MessageImpl;
-import org.apache.lucene.queryparser.flexible.core.QueryNodeParseException;
-import org.apache.lucene.queryparser.flexible.core.messages.QueryParserMessages;
-import org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.BooleanQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.BoostQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.FieldQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.FuzzyQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.ModifierQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.GroupQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.OrQueryNode;
-import org.apache.lucene.queryparser.flexible.standard.nodes.RegexpQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.SlopQueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode;
-import org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode;
-import org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser;
-import org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode;
-
 /** Token Manager. */
 @SuppressWarnings("cast")
 public class StandardSyntaxParserTokenManager implements StandardSyntaxParserConstants

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java
index b6e3f7f..d7303ad 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.queryparser.flexible.standard.processors;
 
 import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.lucene.queryparser.flexible.core.QueryNodeException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java
index 6e4a394..38a9a47 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java
@@ -16,15 +16,12 @@
  */
 package org.apache.lucene.queryparser.flexible.standard.processors;
 
-import java.util.Locale;
-
 import org.apache.lucene.queryparser.flexible.core.config.QueryConfigHandler;
 import org.apache.lucene.queryparser.flexible.core.processors.NoChildOptimizationQueryNodeProcessor;
 import org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorPipeline;
 import org.apache.lucene.queryparser.flexible.core.processors.RemoveDeletedQueryNodesProcessor;
 import org.apache.lucene.queryparser.flexible.standard.builders.StandardQueryTreeBuilder;
 import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler;
-import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler.ConfigurationKeys;
 import org.apache.lucene.queryparser.flexible.standard.parser.StandardSyntaxParser;
 import org.apache.lucene.search.Query;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.java
index be4d8e0..bd91f04 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.java
@@ -6,8 +6,6 @@ import java.util.List;
 import java.io.StringReader;
 
 
-import org.apache.lucene.analysis.TokenStream;
-
 import org.apache.lucene.queryparser.surround.query.SrndQuery;
 import org.apache.lucene.queryparser.surround.query.FieldsQuery;
 import org.apache.lucene.queryparser.surround.query.OrQuery;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParserTokenManager.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParserTokenManager.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParserTokenManager.java
index 9bd1076..60501c7 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParserTokenManager.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParserTokenManager.java
@@ -1,18 +1,5 @@
 /* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
 package org.apache.lucene.queryparser.surround.parser;
-import java.util.ArrayList;
-import java.util.List;
-import java.io.StringReader;
-import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.queryparser.surround.query.SrndQuery;
-import org.apache.lucene.queryparser.surround.query.FieldsQuery;
-import org.apache.lucene.queryparser.surround.query.OrQuery;
-import org.apache.lucene.queryparser.surround.query.AndQuery;
-import org.apache.lucene.queryparser.surround.query.NotQuery;
-import org.apache.lucene.queryparser.surround.query.DistanceQuery;
-import org.apache.lucene.queryparser.surround.query.SrndTermQuery;
-import org.apache.lucene.queryparser.surround.query.SrndPrefixQuery;
-import org.apache.lucene.queryparser.surround.query.SrndTruncQuery;
 
 /** Token Manager. */
 @SuppressWarnings("cast")

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
index 41772a0..bdb6256 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.queryparser.classic;
 
 import java.io.IOException;
-import java.io.Reader;
 import java.util.Objects;
 
 import org.apache.lucene.analysis.*;
@@ -26,7 +25,6 @@ import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.util.Version;
 
 /**
  * Test QueryParser's ability to deal with Analyzers that return more

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java
index 1651038..043f597 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java
@@ -26,7 +26,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.util.LuceneTestCase;
 
 import java.io.IOException;
-import java.io.Reader;
 
 public class TestMultiPhraseQueryParsing extends LuceneTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
index b58cede..5156f73 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.queryparser.flexible.precedence;
 
 import java.io.IOException;
-import java.io.Reader;
 import java.text.DateFormat;
 import java.util.Calendar;
 import java.util.Date;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
index 0f941d0..56ef65a 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
@@ -17,8 +17,6 @@
 package org.apache.lucene.queryparser.flexible.standard;
 
 import java.io.IOException;
-import java.io.Reader;
-
 import org.apache.lucene.analysis.*;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
@@ -26,7 +24,6 @@ import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
 import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
 import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler;
-import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler.Operator;
 import org.apache.lucene.util.LuceneTestCase;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestStandardQP.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestStandardQP.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestStandardQP.java
index cc2ac12..25c737f 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestStandardQP.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestStandardQP.java
@@ -16,8 +16,6 @@
  */
 package org.apache.lucene.queryparser.flexible.standard;
 
-import java.io.Reader;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.analysis.MockTokenizer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java
index 3fdde30..31fb61a 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java
@@ -36,7 +36,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.automaton.LevenshteinAutomata;
 
 import static org.apache.lucene.queryparser.simple.SimpleQueryParser.AND_OPERATOR;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java
index 0b88b0d..4c2e34a 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java
@@ -33,7 +33,6 @@ import org.xml.sax.SAXException;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 import java.io.IOException;
-import java.util.Locale;
 import java.util.Properties;
 import java.util.StringTokenizer;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyOneFile.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyOneFile.java b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyOneFile.java
index faec778..ab71e05 100644
--- a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyOneFile.java
+++ b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyOneFile.java
@@ -22,10 +22,8 @@ import java.io.IOException;
 import java.util.Locale;
 
 import org.apache.lucene.store.DataInput;
-import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.util.IOUtils;
 
 /** Copies one file from an incoming DataInput to a dest filename in a local Directory */
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyState.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyState.java b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyState.java
index 630c3a9..c5ddda0 100644
--- a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyState.java
+++ b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/CopyState.java
@@ -22,7 +22,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.lucene.index.SegmentInfos;
-import org.apache.lucene.store.Directory;
 
 /** Holds incRef'd file level details for one point-in-time segment infos on the primary node.
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/Node.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/Node.java b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/Node.java
index f5853ce..85da89c 100644
--- a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/Node.java
+++ b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/Node.java
@@ -23,15 +23,8 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.nio.file.NoSuchFileException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
 import org.apache.lucene.codecs.CodecUtil;
 import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.DirectoryReader;
@@ -39,11 +32,8 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.ReferenceManager;
 import org.apache.lucene.search.SearcherFactory;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.RAMOutputStream;
-import org.apache.lucene.util.StringHelper;
 
 /** Common base class for {@link PrimaryNode} and {@link ReplicaNode}.
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/ReplicaFileDeleter.java
----------------------------------------------------------------------
diff --git a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/ReplicaFileDeleter.java b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/ReplicaFileDeleter.java
index 41e0a6f..1638c29 100644
--- a/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/ReplicaFileDeleter.java
+++ b/lucene/replicator/src/java/org/apache/lucene/replicator/nrt/ReplicaFileDeleter.java
@@ -20,11 +20,9 @@ package org.apache.lucene.replicator.nrt;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.file.NoSuchFileException;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 


[03/50] [abbrv] lucene-solr:apiv2: LatLonPoint no longer needs to fork core's PointRangeQuery

Posted by no...@apache.org.
LatLonPoint no longer needs to fork core's PointRangeQuery


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/96320696
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/96320696
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/96320696

Branch: refs/heads/apiv2
Commit: 963206969eddca6ec743f5f0901e0abdfeacd3cc
Parents: d55cc8f
Author: Mike McCandless <mi...@apache.org>
Authored: Thu Jun 9 19:22:24 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Thu Jun 9 19:22:24 2016 -0400

----------------------------------------------------------------------
 .../org/apache/lucene/document/LatLonPoint.java |   3 +-
 .../lucene/document/LatLonPointBoxQuery.java    | 279 -------------------
 2 files changed, 2 insertions(+), 280 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/96320696/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPoint.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPoint.java b/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPoint.java
index a63e4bd..426a702 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPoint.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPoint.java
@@ -34,6 +34,7 @@ import org.apache.lucene.search.FieldDoc;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.MatchNoDocsQuery;
+import org.apache.lucene.search.PointRangeQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TopFieldDocs;
@@ -228,7 +229,7 @@ public class LatLonPoint extends Field {
   }
   
   private static Query newBoxInternal(String field, byte[] min, byte[] max) {
-    return new LatLonPointBoxQuery(field, min, max, 2) {
+    return new PointRangeQuery(field, min, max, 2) {
       @Override
       protected String toString(int dimension, byte[] value) {
         if (dimension == 0) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/96320696/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPointBoxQuery.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPointBoxQuery.java b/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPointBoxQuery.java
deleted file mode 100644
index 6898d0d..0000000
--- a/lucene/sandbox/src/java/org/apache/lucene/document/LatLonPointBoxQuery.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * 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.document;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Objects;
-
-import org.apache.lucene.index.PointValues;
-import org.apache.lucene.index.PointValues.IntersectVisitor;
-import org.apache.lucene.index.PointValues.Relation;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.PointRangeQuery;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.Weight;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.LeafReader;
-import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.util.DocIdSetBuilder;
-import org.apache.lucene.util.StringHelper;
-
-/** 
- * Fast version of {@link PointRangeQuery}. It is fast for actual range queries!
- * @lucene.experimental
- */
-abstract class LatLonPointBoxQuery extends Query {
-  final String field;
-  final int numDims;
-  final int bytesPerDim;
-  final byte[] lowerPoint;
-  final byte[] upperPoint;
-
-  /** 
-   * Expert: create a multidimensional range query for point values.
-   *
-   * @param field field name. must not be {@code null}.
-   * @param lowerPoint lower portion of the range (inclusive).
-   * @param upperPoint upper portion of the range (inclusive).
-   * @param numDims number of dimensions.
-   * @throws IllegalArgumentException if {@code field} is null, or if {@code lowerValue.length != upperValue.length}
-   */
-  protected LatLonPointBoxQuery(String field, byte[] lowerPoint, byte[] upperPoint, int numDims) {
-    checkArgs(field, lowerPoint, upperPoint);
-    this.field = field;
-    if (numDims <= 0) {
-      throw new IllegalArgumentException("numDims must be positive, got " + numDims);
-    }
-    if (lowerPoint.length == 0) {
-      throw new IllegalArgumentException("lowerPoint has length of zero");
-    }
-    if (lowerPoint.length % numDims != 0) {
-      throw new IllegalArgumentException("lowerPoint is not a fixed multiple of numDims");
-    }
-    if (lowerPoint.length != upperPoint.length) {
-      throw new IllegalArgumentException("lowerPoint has length=" + lowerPoint.length + " but upperPoint has different length=" + upperPoint.length);
-    }
-    this.numDims = numDims;
-    this.bytesPerDim = lowerPoint.length / numDims;
-
-    this.lowerPoint = lowerPoint;
-    this.upperPoint = upperPoint;
-  }
-
-  /** 
-   * Check preconditions for all factory methods
-   * @throws IllegalArgumentException if {@code field}, {@code lowerPoint} or {@code upperPoint} are null.
-   */
-  public static void checkArgs(String field, Object lowerPoint, Object upperPoint) {
-    if (field == null) {
-      throw new IllegalArgumentException("field must not be null");
-    }
-    if (lowerPoint == null) {
-      throw new IllegalArgumentException("lowerPoint must not be null");
-    }
-    if (upperPoint == null) {
-      throw new IllegalArgumentException("upperPoint must not be null");
-    }
-  }
-
-  @Override
-  public final Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
-
-    // We don't use RandomAccessWeight here: it's no good to approximate with "match all docs".
-    // This is an inverted structure and should be used in the first pass:
-
-    return new ConstantScoreWeight(this) {
-
-      private DocIdSetIterator buildMatchingIterator(LeafReader reader, PointValues values) throws IOException {
-        DocIdSetBuilder result = new DocIdSetBuilder(reader.maxDoc(), values, field);
-
-        values.intersect(field,
-            new IntersectVisitor() {
-
-              DocIdSetBuilder.BulkAdder adder;
-
-              @Override
-              public void grow(int count) {
-                adder = result.grow(count);
-              }
-
-              @Override
-              public void visit(int docID) {
-                adder.add(docID);
-              }
-
-              @Override
-              public void visit(int docID, byte[] packedValue) {
-                for(int dim=0;dim<numDims;dim++) {
-                  int offset = dim*bytesPerDim;
-                  if (StringHelper.compare(bytesPerDim, packedValue, offset, lowerPoint, offset) < 0) {
-                    // Doc's value is too low, in this dimension
-                    return;
-                  }
-                  if (StringHelper.compare(bytesPerDim, packedValue, offset, upperPoint, offset) > 0) {
-                    // Doc's value is too high, in this dimension
-                    return;
-                  }
-                }
-
-                // Doc is in-bounds
-                adder.add(docID);
-              }
-
-              @Override
-              public Relation compare(byte[] minPackedValue, byte[] maxPackedValue) {
-
-                boolean crosses = false;
-
-                for(int dim=0;dim<numDims;dim++) {
-                  int offset = dim*bytesPerDim;
-
-                  if (StringHelper.compare(bytesPerDim, minPackedValue, offset, upperPoint, offset) > 0 ||
-                      StringHelper.compare(bytesPerDim, maxPackedValue, offset, lowerPoint, offset) < 0) {
-                    return Relation.CELL_OUTSIDE_QUERY;
-                  }
-
-                  crosses |= StringHelper.compare(bytesPerDim, minPackedValue, offset, lowerPoint, offset) < 0 ||
-                    StringHelper.compare(bytesPerDim, maxPackedValue, offset, upperPoint, offset) > 0;
-                }
-
-                if (crosses) {
-                  return Relation.CELL_CROSSES_QUERY;
-                } else {
-                  return Relation.CELL_INSIDE_QUERY;
-                }
-              }
-            });
-        return result.build().iterator();
-      }
-
-      @Override
-      public Scorer scorer(LeafReaderContext context) throws IOException {
-        LeafReader reader = context.reader();
-        PointValues values = reader.getPointValues();
-        if (values == null) {
-          // No docs in this segment indexed any points
-          return null;
-        }
-        FieldInfo fieldInfo = reader.getFieldInfos().fieldInfo(field);
-        if (fieldInfo == null) {
-          // No docs in this segment indexed this field at all
-          return null;
-        }
-        if (fieldInfo.getPointDimensionCount() != numDims) {
-          throw new IllegalArgumentException("field=\"" + field + "\" was indexed with numDims=" + fieldInfo.getPointDimensionCount() + " but this query has numDims=" + numDims);
-        }
-        if (bytesPerDim != fieldInfo.getPointNumBytes()) {
-          throw new IllegalArgumentException("field=\"" + field + "\" was indexed with bytesPerDim=" + fieldInfo.getPointNumBytes() + " but this query has bytesPerDim=" + bytesPerDim);
-        }
-
-        boolean allDocsMatch;
-        if (values.getDocCount(field) == reader.maxDoc()) {
-          final byte[] fieldPackedLower = values.getMinPackedValue(field);
-          final byte[] fieldPackedUpper = values.getMaxPackedValue(field);
-          allDocsMatch = true;
-          for (int i = 0; i < numDims; ++i) {
-            int offset = i * bytesPerDim;
-            if (StringHelper.compare(bytesPerDim, lowerPoint, offset, fieldPackedLower, offset) > 0
-                || StringHelper.compare(bytesPerDim, upperPoint, offset, fieldPackedUpper, offset) < 0) {
-              allDocsMatch = false;
-              break;
-            }
-          }
-        } else {
-          allDocsMatch = false;
-        }
-
-        DocIdSetIterator iterator;
-        if (allDocsMatch) {
-          // all docs have a value and all points are within bounds, so everything matches
-          iterator = DocIdSetIterator.all(reader.maxDoc());
-        } else {
-          iterator = buildMatchingIterator(reader, values);
-        }
-
-        return new ConstantScoreScorer(this, score(), iterator);
-      }
-    };
-  }
-
-  @Override
-  public final int hashCode() {
-    int hash = classHash();
-    hash = 31 * hash + field.hashCode();
-    hash = 31 * hash + Arrays.hashCode(lowerPoint);
-    hash = 31 * hash + Arrays.hashCode(upperPoint);
-    hash = 31 * hash + numDims;
-    hash = 31 * hash + Objects.hashCode(bytesPerDim);
-    return hash;
-  }
-
-  @Override
-  public final boolean equals(Object other) {
-    return sameClassAs(other) &&
-           equalsTo(getClass().cast(other));
-  }
-
-  private boolean equalsTo(LatLonPointBoxQuery other) {
-    return field.equals(other.field) &&
-           numDims == other.numDims &&
-           bytesPerDim == other.bytesPerDim &&
-           Arrays.equals(lowerPoint, other.lowerPoint) &&
-           Arrays.equals(upperPoint, other.upperPoint);
-  }
-
-  @Override
-  public final String toString(String field) {
-    final StringBuilder sb = new StringBuilder();
-    if (this.field.equals(field) == false) {
-      sb.append(this.field);
-      sb.append(':');
-    }
-
-    // print ourselves as "range per dimension"
-    for (int i = 0; i < numDims; i++) {
-      if (i > 0) {
-        sb.append(',');
-      }
-      
-      int startOffset = bytesPerDim * i;
-
-      sb.append('[');
-      sb.append(toString(i, Arrays.copyOfRange(lowerPoint, startOffset, startOffset + bytesPerDim)));
-      sb.append(" TO ");
-      sb.append(toString(i, Arrays.copyOfRange(upperPoint, startOffset, startOffset + bytesPerDim)));
-      sb.append(']');
-    }
-
-    return sb.toString();
-  }
-
-  /**
-   * Returns a string of a single value in a human-readable format for debugging.
-   * This is used by {@link #toString()}.
-   *
-   * @param dimension dimension of the particular value
-   * @param value single value, never null
-   * @return human readable value for debugging
-   */
-  protected abstract String toString(int dimension, byte[] value);
-}


[08/50] [abbrv] lucene-solr:apiv2: LUCENE-7326: don't use postings format by name in this test

Posted by no...@apache.org.
LUCENE-7326: don't use postings format by name in this test


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/816fae96
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/816fae96
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/816fae96

Branch: refs/heads/apiv2
Commit: 816fae9622d9719fd38a5381a7029383e54d2e77
Parents: 0eacfe8
Author: Mike McCandless <mi...@apache.org>
Authored: Fri Jun 10 11:57:14 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Fri Jun 10 11:57:41 2016 -0400

----------------------------------------------------------------------
 .../index/BasePostingsFormatTestCase.java       | 283 +++++++++----------
 1 file changed, 138 insertions(+), 145 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/816fae96/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
index 10ed5b1..d6cf1e5 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
@@ -16,13 +16,6 @@
  */
 package org.apache.lucene.index;
 
-import static org.apache.lucene.index.PostingsEnum.ALL;
-import static org.apache.lucene.index.PostingsEnum.FREQS;
-import static org.apache.lucene.index.PostingsEnum.NONE;
-import static org.apache.lucene.index.PostingsEnum.OFFSETS;
-import static org.apache.lucene.index.PostingsEnum.PAYLOADS;
-import static org.apache.lucene.index.PostingsEnum.POSITIONS;
-
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.Collections;
@@ -38,9 +31,8 @@ import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.Token;
 import org.apache.lucene.codecs.FieldsConsumer;
 import org.apache.lucene.codecs.FieldsProducer;
+import org.apache.lucene.codecs.FilterCodec;
 import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.asserting.AssertingCodec;
-import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
@@ -51,13 +43,19 @@ import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LineFileDocs;
 import org.apache.lucene.util.RamUsageTester;
 import org.apache.lucene.util.TestUtil;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
+import static org.apache.lucene.index.PostingsEnum.ALL;
+import static org.apache.lucene.index.PostingsEnum.FREQS;
+import static org.apache.lucene.index.PostingsEnum.NONE;
+import static org.apache.lucene.index.PostingsEnum.OFFSETS;
+import static org.apache.lucene.index.PostingsEnum.PAYLOADS;
+import static org.apache.lucene.index.PostingsEnum.POSITIONS;
+
 /**
  * Abstract class to do basic tests for a postings format.
  * NOTE: This test focuses on the postings
@@ -165,8 +163,9 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
 
     te.seekExact(fieldAndTerm.term);
     checkReuse(te, PostingsEnum.FREQS, PostingsEnum.ALL, false);
-    if (isPostingsEnumReuseImplemented())
+    if (isPostingsEnumReuseImplemented()) {
       checkReuse(te, PostingsEnum.ALL, PostingsEnum.ALL, true);
+    }
 
     fieldsProducer.close();
     dir.close();
@@ -175,10 +174,11 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
   protected static void checkReuse(TermsEnum termsEnum, int firstFlags, int secondFlags, boolean shouldReuse) throws IOException {
     PostingsEnum postings1 = termsEnum.postings(null, firstFlags);
     PostingsEnum postings2 = termsEnum.postings(postings1, secondFlags);
-    if (shouldReuse)
+    if (shouldReuse) {
       assertSame("Expected PostingsEnum " + postings1.getClass().getName() + " to be reused", postings1, postings2);
-    else
+    } else {
       assertNotSame("Expected PostingsEnum " + postings1.getClass().getName() + " to not be reused", postings1, postings2);
+    }
   }
   
   public void testJustEmptyField() throws Exception {
@@ -337,61 +337,104 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
     // TODO: would be better to use / delegate to the current
     // Codec returned by getCodec()
 
-    iwc.setCodec(new AssertingCodec() {
+    iwc.setCodec(new FilterCodec(getCodec().getName(), getCodec()) {
         @Override
-        public PostingsFormat getPostingsFormatForField(String field) {
+        public PostingsFormat postingsFormat() {
 
-          PostingsFormat p = getCodec().postingsFormat();
-          if (p instanceof PerFieldPostingsFormat) {
-            p = ((PerFieldPostingsFormat) p).getPostingsFormatForField(field);
-          }
-          final PostingsFormat defaultPostingsFormat = p;
+          final PostingsFormat defaultPostingsFormat = delegate.postingsFormat();
 
           final Thread mainThread = Thread.currentThread();
 
-          if (field.equals("body")) {
-
-            // A PF that counts up some stats and then in
-            // the end we verify the stats match what the
-            // final IndexReader says, just to exercise the
-            // new freedom of iterating the postings more
-            // than once at flush/merge:
-
-            return new PostingsFormat(defaultPostingsFormat.getName()) {
-
-              @Override
-              public FieldsConsumer fieldsConsumer(final SegmentWriteState state) throws IOException {
-
-                final FieldsConsumer fieldsConsumer = defaultPostingsFormat.fieldsConsumer(state);
-
-                return new FieldsConsumer() {
-                  @Override
-                  public void write(Fields fields) throws IOException {
-                    fieldsConsumer.write(fields);
-
-                    boolean isMerge = state.context.context == IOContext.Context.MERGE;
-
-                    // We only use one thread for flushing
-                    // in this test:
-                    assert isMerge || Thread.currentThread() == mainThread;
+          // A PF that counts up some stats and then in
+          // the end we verify the stats match what the
+          // final IndexReader says, just to exercise the
+          // new freedom of iterating the postings more
+          // than once at flush/merge:
+
+          return new PostingsFormat(defaultPostingsFormat.getName()) {
+
+            @Override
+            public FieldsConsumer fieldsConsumer(final SegmentWriteState state) throws IOException {
+
+              final FieldsConsumer fieldsConsumer = defaultPostingsFormat.fieldsConsumer(state);
+
+              return new FieldsConsumer() {
+                @Override
+                public void write(Fields fields) throws IOException {
+                  fieldsConsumer.write(fields);
+
+                  boolean isMerge = state.context.context == IOContext.Context.MERGE;
+
+                  // We only use one thread for flushing
+                  // in this test:
+                  assert isMerge || Thread.currentThread() == mainThread;
+
+                  // We iterate the provided TermsEnum
+                  // twice, so we excercise this new freedom
+                  // with the inverted API; if
+                  // addOnSecondPass is true, we add up
+                  // term stats on the 2nd iteration:
+                  boolean addOnSecondPass = random().nextBoolean();
+
+                  //System.out.println("write isMerge=" + isMerge + " 2ndPass=" + addOnSecondPass);
+
+                  // Gather our own stats:
+                  Terms terms = fields.terms("body");
+                  assert terms != null;
+
+                  TermsEnum termsEnum = terms.iterator();
+                  PostingsEnum docs = null;
+                  while(termsEnum.next() != null) {
+                    BytesRef term = termsEnum.term();
+                    // TODO: also sometimes ask for payloads/offsets?
+                    boolean noPositions = random().nextBoolean();
+                    if (noPositions) {
+                      docs = termsEnum.postings(docs, PostingsEnum.FREQS);
+                    } else {
+                      docs = termsEnum.postings(null, PostingsEnum.POSITIONS);
+                    }
+                    int docFreq = 0;
+                    long totalTermFreq = 0;
+                    while (docs.nextDoc() != PostingsEnum.NO_MORE_DOCS) {
+                      docFreq++;
+                      totalTermFreq += docs.freq();
+                      int limit = TestUtil.nextInt(random(), 1, docs.freq());
+                      if (!noPositions) {
+                        for (int i = 0; i < limit; i++) {
+                          docs.nextPosition();
+                        }
+                      }
+                    }
 
-                    // We iterate the provided TermsEnum
-                    // twice, so we excercise this new freedom
-                    // with the inverted API; if
-                    // addOnSecondPass is true, we add up
-                    // term stats on the 2nd iteration:
-                    boolean addOnSecondPass = random().nextBoolean();
+                    String termString = term.utf8ToString();
 
-                    //System.out.println("write isMerge=" + isMerge + " 2ndPass=" + addOnSecondPass);
+                    // During merge we should only see terms
+                    // we had already seen during a
+                    // previous flush:
+                    assertTrue(isMerge==false || termFreqs.containsKey(termString));
 
-                    // Gather our own stats:
-                    Terms terms = fields.terms("body");
-                    assert terms != null;
+                    if (isMerge == false) {
+                      if (addOnSecondPass == false) {
+                        TermFreqs tf = termFreqs.get(termString);
+                        if (tf == null) {
+                          tf = new TermFreqs();
+                          termFreqs.put(termString, tf);
+                        }
+                        tf.docFreq += docFreq;
+                        tf.totalTermFreq += totalTermFreq;
+                        sumDocFreq.addAndGet(docFreq);
+                        sumTotalTermFreq.addAndGet(totalTermFreq);
+                      } else if (termFreqs.containsKey(termString) == false) {
+                        // Add placeholder (2nd pass will
+                        // set its counts):
+                        termFreqs.put(termString, new TermFreqs());
+                      }
+                    }
+                  }
 
-                    TermsEnum termsEnum = terms.iterator();
-                    PostingsEnum docs = null;
-                    while(termsEnum.next() != null) {
-                      BytesRef term = termsEnum.term();
+                  // Also test seeking the TermsEnum:
+                  for(String term : termFreqs.keySet()) {
+                    if (termsEnum.seekExact(new BytesRef(term))) {
                       // TODO: also sometimes ask for payloads/offsets?
                       boolean noPositions = random().nextBoolean();
                       if (noPositions) {
@@ -399,6 +442,7 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
                       } else {
                         docs = termsEnum.postings(null, PostingsEnum.POSITIONS);
                       }
+
                       int docFreq = 0;
                       long totalTermFreq = 0;
                       while (docs.nextDoc() != PostingsEnum.NO_MORE_DOCS) {
@@ -412,96 +456,43 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
                         }
                       }
 
-                      String termString = term.utf8ToString();
-
-                      // During merge we should only see terms
-                      // we had already seen during a
-                      // previous flush:
-                      assertTrue(isMerge==false || termFreqs.containsKey(termString));
-
-                      if (isMerge == false) {
-                        if (addOnSecondPass == false) {
-                          TermFreqs tf = termFreqs.get(termString);
-                          if (tf == null) {
-                            tf = new TermFreqs();
-                            termFreqs.put(termString, tf);
-                          }
-                          tf.docFreq += docFreq;
-                          tf.totalTermFreq += totalTermFreq;
-                          sumDocFreq.addAndGet(docFreq);
-                          sumTotalTermFreq.addAndGet(totalTermFreq);
-                        } else if (termFreqs.containsKey(termString) == false) {
-                          // Add placeholder (2nd pass will
-                          // set its counts):
-                          termFreqs.put(termString, new TermFreqs());
-                        }
-                      }
-                    }
-
-                    // Also test seeking the TermsEnum:
-                    for(String term : termFreqs.keySet()) {
-                      if (termsEnum.seekExact(new BytesRef(term))) {
-                        // TODO: also sometimes ask for payloads/offsets?
-                        boolean noPositions = random().nextBoolean();
-                        if (noPositions) {
-                          docs = termsEnum.postings(docs, PostingsEnum.FREQS);
-                        } else {
-                          docs = termsEnum.postings(null, PostingsEnum.POSITIONS);
-                        }
-
-                        int docFreq = 0;
-                        long totalTermFreq = 0;
-                        while (docs.nextDoc() != PostingsEnum.NO_MORE_DOCS) {
-                          docFreq++;
-                          totalTermFreq += docs.freq();
-                          int limit = TestUtil.nextInt(random(), 1, docs.freq());
-                          if (!noPositions) {
-                            for (int i = 0; i < limit; i++) {
-                              docs.nextPosition();
-                            }
-                          }
-                        }
-
-                        if (isMerge == false && addOnSecondPass) {
-                          TermFreqs tf = termFreqs.get(term);
-                          assert tf != null;
-                          tf.docFreq += docFreq;
-                          tf.totalTermFreq += totalTermFreq;
-                          sumDocFreq.addAndGet(docFreq);
-                          sumTotalTermFreq.addAndGet(totalTermFreq);
-                        }
-
-                        //System.out.println("  term=" + term + " docFreq=" + docFreq + " ttDF=" + termToDocFreq.get(term));
-                        assertTrue(docFreq <= termFreqs.get(term).docFreq);
-                        assertTrue(totalTermFreq <= termFreqs.get(term).totalTermFreq);
+                      if (isMerge == false && addOnSecondPass) {
+                        TermFreqs tf = termFreqs.get(term);
+                        assert tf != null;
+                        tf.docFreq += docFreq;
+                        tf.totalTermFreq += totalTermFreq;
+                        sumDocFreq.addAndGet(docFreq);
+                        sumTotalTermFreq.addAndGet(totalTermFreq);
                       }
-                    }
 
-                    // Also test seekCeil
-                    for(int iter=0;iter<10;iter++) {
-                      BytesRef term = new BytesRef(TestUtil.randomRealisticUnicodeString(random()));
-                      SeekStatus status = termsEnum.seekCeil(term);
-                      if (status == SeekStatus.NOT_FOUND) {
-                        assertTrue(term.compareTo(termsEnum.term()) < 0);
-                      }
+                      //System.out.println("  term=" + term + " docFreq=" + docFreq + " ttDF=" + termToDocFreq.get(term));
+                      assertTrue(docFreq <= termFreqs.get(term).docFreq);
+                      assertTrue(totalTermFreq <= termFreqs.get(term).totalTermFreq);
                     }
                   }
 
-                  @Override
-                  public void close() throws IOException {
-                    fieldsConsumer.close();
+                  // Also test seekCeil
+                  for(int iter=0;iter<10;iter++) {
+                    BytesRef term = new BytesRef(TestUtil.randomRealisticUnicodeString(random()));
+                    SeekStatus status = termsEnum.seekCeil(term);
+                    if (status == SeekStatus.NOT_FOUND) {
+                      assertTrue(term.compareTo(termsEnum.term()) < 0);
+                    }
                   }
-                };
-              }
-
-              @Override
-              public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException {
-                return defaultPostingsFormat.fieldsProducer(state);
-              }
-            };
-          } else {
-            return defaultPostingsFormat;
-          }
+                }
+
+                @Override
+                public void close() throws IOException {
+                  fieldsConsumer.close();
+                }
+              };
+            }
+
+            @Override
+            public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException {
+              return defaultPostingsFormat.fieldsProducer(state);
+            }
+          };
         }
       });
 
@@ -512,8 +503,10 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
     int bytesIndexed = 0;
     while (bytesIndexed < bytesToIndex) {
       Document doc = docs.nextDoc();
-      w.addDocument(doc);
-      bytesIndexed += RamUsageTester.sizeOf(doc);
+      Document justBodyDoc = new Document();
+      justBodyDoc.add(doc.getField("body"));
+      w.addDocument(justBodyDoc);
+      bytesIndexed += RamUsageTester.sizeOf(justBodyDoc);
     }
 
     IndexReader r = w.getReader();


[41/50] [abbrv] lucene-solr:apiv2: SOLR-9204: Remove unused imports.

Posted by no...@apache.org.
SOLR-9204: Remove unused imports.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/bd7ddb8f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/bd7ddb8f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/bd7ddb8f

Branch: refs/heads/apiv2
Commit: bd7ddb8fbfedd29711c8f5e466022ecb3810b70a
Parents: 5a03216
Author: Adrien Grand <jp...@gmail.com>
Authored: Tue Jun 14 09:29:02 2016 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Tue Jun 14 10:25:23 2016 +0200

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java  | 1 -
 solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java | 1 -
 2 files changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd7ddb8f/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
index ada4af3..067b57b 100644
--- a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
@@ -31,7 +31,6 @@ import java.util.concurrent.TimeUnit;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.FsStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.PathFilter;
 import org.apache.hadoop.security.UserGroupInformation;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd7ddb8f/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
index 14898d7..9de4a78 100644
--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
@@ -76,7 +76,6 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.SuppressForbidden;
 import org.apache.solr.core.CloseHook;
-import org.apache.solr.core.DirectoryFactory;
 import org.apache.solr.core.DirectoryFactory.DirContext;
 import org.apache.solr.core.IndexDeletionPolicyWrapper;
 import org.apache.solr.core.SolrCore;


[44/50] [abbrv] lucene-solr:apiv2: Merge remote-tracking branch 'origin/master'

Posted by no...@apache.org.
Merge remote-tracking branch 'origin/master'


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ccf2070e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ccf2070e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ccf2070e

Branch: refs/heads/apiv2
Commit: ccf2070e53015a076867e850f7bdcfa03d25e7f4
Parents: 97e696d 82a9244
Author: Noble Paul <no...@apache.org>
Authored: Tue Jun 14 19:38:23 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Jun 14 19:38:23 2016 +0530

----------------------------------------------------------------------
 dev-tools/scripts/addVersion.py                 |  34 +-
 lucene/CHANGES.txt                              |   6 +
 .../lucene/analysis/ar/ArabicAnalyzer.java      |   1 -
 .../charfilter/HTMLStripCharFilter.java         |   1 -
 .../analysis/charfilter/NormalizeCharMap.java   |   2 -
 .../lucene/analysis/ckb/SoraniAnalyzer.java     |   1 -
 .../HyphenationCompoundWordTokenFilter.java     |   1 -
 ...phenationCompoundWordTokenFilterFactory.java |   1 -
 .../lucene/analysis/core/LowerCaseFilter.java   |   3 +-
 .../lucene/analysis/core/StopAnalyzer.java      |   1 -
 .../lucene/analysis/core/UpperCaseFilter.java   |   3 +-
 .../analysis/el/GreekLowerCaseFilter.java       |   4 +-
 .../lucene/analysis/en/PorterStemmer.java       |   4 -
 .../lucene/analysis/fa/PersianAnalyzer.java     |   1 -
 .../lucene/analysis/hi/HindiAnalyzer.java       |   1 -
 .../lucene/analysis/minhash/MinHashFilter.java  | 504 +++++++++++++++++++
 .../analysis/minhash/MinHashFilterFactory.java  |  57 +++
 .../lucene/analysis/minhash/package-info.java   |  21 +
 .../WordDelimiterFilterFactory.java             |   2 -
 .../analysis/ngram/EdgeNGramTokenFilter.java    |   7 +-
 .../analysis/ngram/EdgeNGramTokenizer.java      |   1 -
 .../lucene/analysis/ngram/NGramTokenFilter.java |  13 +-
 .../lucene/analysis/ngram/NGramTokenizer.java   |   8 +-
 .../lucene/analysis/nl/DutchAnalyzer.java       |   1 -
 .../pattern/PatternCaptureGroupTokenFilter.java |   1 -
 .../query/QueryAutoStopWordAnalyzer.java        |   1 -
 .../analysis/standard/ClassicTokenizerImpl.java |   1 -
 .../standard/UAX29URLEmailTokenizerFactory.java |   1 -
 .../analysis/synonym/SynonymFilterFactory.java  |   2 -
 .../lucene/analysis/synonym/SynonymMap.java     |   2 -
 .../apache/lucene/analysis/th/ThaiAnalyzer.java |   1 -
 .../lucene/analysis/tr/TurkishAnalyzer.java     |   1 -
 .../lucene/analysis/util/CharArrayMap.java      |  17 +-
 .../lucene/analysis/util/CharTokenizer.java     |   5 +-
 .../lucene/analysis/util/CharacterUtils.java    | 229 ++-------
 .../analysis/wikipedia/WikipediaTokenizer.java  |   1 -
 .../lucene/collation/CollationKeyAnalyzer.java  |   2 -
 ...ache.lucene.analysis.util.TokenFilterFactory |   1 +
 .../lucene/analysis/ar/TestArabicAnalyzer.java  |   1 -
 .../ar/TestArabicNormalizationFilter.java       |   1 -
 .../bg/TestBulgarianStemFilterFactory.java      |   1 -
 .../analysis/br/TestBrazilianAnalyzer.java      |   1 -
 .../TestHTMLStripCharFilterFactory.java         |   1 -
 .../analysis/cjk/TestCJKWidthFilterFactory.java |   1 -
 .../lucene/analysis/ckb/TestSoraniAnalyzer.java |   1 -
 .../TestSoraniNormalizationFilterFactory.java   |   1 -
 .../commongrams/CommonGramsFilterTest.java      |   1 -
 .../TestCommonGramsQueryFilterFactory.java      |   3 -
 .../analysis/core/TestKeywordAnalyzer.java      |   1 -
 .../lucene/analysis/core/TestRandomChains.java  |   1 -
 .../de/TestGermanLightStemFilterFactory.java    |   1 -
 .../analysis/de/TestGermanStemFilter.java       |   1 -
 .../el/TestGreekLowerCaseFilterFactory.java     |   1 -
 .../analysis/el/TestGreekStemFilterFactory.java |   1 -
 .../en/TestEnglishMinimalStemFilterFactory.java |   1 -
 .../analysis/en/TestKStemFilterFactory.java     |   1 -
 .../en/TestPorterStemFilterFactory.java         |   1 -
 .../lucene/analysis/fa/TestPersianAnalyzer.java |   1 -
 .../TestPersianNormalizationFilterFactory.java  |   1 -
 .../fr/TestFrenchLightStemFilterFactory.java    |   1 -
 .../fr/TestFrenchMinimalStemFilterFactory.java  |   1 -
 .../ga/TestIrishLowerCaseFilterFactory.java     |   1 -
 .../TestGalicianMinimalStemFilterFactory.java   |   1 -
 .../gl/TestGalicianStemFilterFactory.java       |   1 -
 .../lucene/analysis/hi/TestHindiAnalyzer.java   |   1 -
 .../lucene/analysis/hi/TestHindiFilters.java    |   2 -
 .../lucene/analysis/hi/TestHindiNormalizer.java |   4 -
 .../hu/TestHungarianLightStemFilterFactory.java |   1 -
 .../analysis/hunspell/Test64kAffixes.java       |   2 -
 .../analysis/hunspell/TestAllDictionaries.java  |   1 -
 .../analysis/hunspell/TestAllDictionaries2.java |   1 -
 .../analysis/hunspell/TestDictionary.java       |   1 -
 .../hunspell/TestHunspellStemFilter.java        |   1 -
 .../it/TestItalianLightStemFilterFactory.java   |   1 -
 .../analysis/minhash/MinHashFilterTest.java     | 330 ++++++++++++
 .../miscellaneous/TestKeywordMarkerFilter.java  |   2 -
 .../TestStemmerOverrideFilter.java              |   4 +-
 .../miscellaneous/TestTrimFilterFactory.java    |   1 -
 .../no/TestNorwegianLightStemFilterFactory.java |   1 -
 .../TestPatternReplaceCharFilterFactory.java    |   1 -
 .../TestPatternReplaceFilterFactory.java        |   1 -
 .../DelimitedPayloadTokenFilterTest.java        |   4 -
 .../pt/TestPortugueseStemFilterFactory.java     |   1 -
 .../reverse/TestReverseStringFilterFactory.java |   1 -
 .../ru/TestRussianLightStemFilterFactory.java   |   1 -
 .../analysis/shingle/ShingleFilterTest.java     |   1 -
 .../shingle/TestShingleFilterFactory.java       |   1 -
 .../standard/TestStandardFactories.java         |   1 -
 .../lucene/analysis/th/TestThaiAnalyzer.java    |   1 -
 .../analysis/util/TestCharacterUtils.java       | 155 +-----
 .../collation/ICUCollationKeyAnalyzer.java      |   3 -
 .../icu/TestICUFoldingFilterFactory.java        |   1 -
 .../icu/TestICUNormalizer2FilterFactory.java    |   1 -
 .../icu/TestICUTransformFilterFactory.java      |   1 -
 .../segmentation/TestICUTokenizerFactory.java   |   1 -
 .../analysis/ja/dict/ConnectionCosts.java       |   1 -
 .../lucene/analysis/ja/dict/UserDictionary.java |   1 -
 .../analysis/morfologik/MorfologikFilter.java   |   4 +-
 .../TestDoubleMetaphoneFilterFactory.java       |   3 -
 .../TestStempelPolishStemFilterFactory.java     |   1 -
 .../uima/UIMAAnnotationsTokenizerFactory.java   |   1 -
 .../lucene/analysis/uima/UIMABaseAnalyzer.java  |   1 -
 ...IMATypeAwareAnnotationsTokenizerFactory.java |   1 -
 .../uima/UIMATypeAwareAnalyzerTest.java         |   1 -
 .../lucene50/Lucene50SegmentInfoFormat.java     |   4 -
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |   4 -
 .../benchmark/byTask/tasks/AddIndexesTask.java  |   3 -
 .../byTask/tasks/NearRealtimeReaderTask.java    |   1 -
 .../benchmark/byTask/tasks/OpenReaderTask.java  |   1 -
 .../lucene/benchmark/byTask/tasks/ReadTask.java |   1 -
 .../byTask/tasks/ReopenReaderTask.java          |   1 -
 .../byTask/tasks/RollbackIndexTask.java         |   2 -
 .../byTask/tasks/WriteEnwikiLineDocTask.java    |   1 -
 .../benchmark/quality/utils/SimpleQQParser.java |   1 -
 .../tasks/WriteEnwikiLineDocTaskTest.java       |   4 -
 .../lucene/classification/Classifier.java       |   4 -
 .../SimpleNaiveBayesDocumentClassifier.java     |   2 -
 .../classification/utils/DatasetSplitter.java   |   2 -
 .../SimpleNaiveBayesClassifierTest.java         |   1 -
 .../utils/DocToDoubleVectorUtilsTest.java       |   2 -
 .../codecs/blockterms/BlockTermsReader.java     |   1 -
 .../blocktreeords/OrdsIntersectTermsEnum.java   |   2 -
 .../blocktreeords/OrdsSegmentTermsEnum.java     |   2 -
 .../lucene/codecs/memory/FSTOrdTermsReader.java |   1 -
 .../simpletext/SimpleTextFieldsReader.java      |   1 -
 .../simpletext/SimpleTextLiveDocsFormat.java    |   2 -
 .../simpletext/SimpleTextTermVectorsReader.java |   1 -
 .../java/org/apache/lucene/analysis/Token.java  |   1 -
 .../org/apache/lucene/codecs/NormsConsumer.java |   2 -
 .../lucene/codecs/StoredFieldsWriter.java       |   1 -
 .../apache/lucene/codecs/TermVectorsWriter.java |   1 -
 .../codecs/lucene50/Lucene50PostingsFormat.java |   1 -
 .../lucene62/Lucene62SegmentInfoFormat.java     |   1 -
 .../org/apache/lucene/index/DocIDMerger.java    |   2 -
 .../apache/lucene/index/DocumentsWriter.java    |  40 +-
 .../index/DocumentsWriterPerThreadPool.java     |   5 +-
 .../org/apache/lucene/index/IndexWriter.java    |  10 +-
 .../apache/lucene/index/IndexWriterConfig.java  |   1 -
 .../lucene/index/MappingMultiPostingsEnum.java  |   2 -
 .../org/apache/lucene/index/MergePolicy.java    |   2 -
 .../org/apache/lucene/index/MergeState.java     |   1 -
 .../org/apache/lucene/index/MultiSorter.java    |   1 -
 .../index/TermVectorsConsumerPerField.java      |   1 -
 .../apache/lucene/index/TermsHashPerField.java  |   1 -
 .../apache/lucene/search/BlendedTermQuery.java  |   1 -
 .../apache/lucene/search/ConjunctionDISI.java   | 188 +++----
 .../apache/lucene/search/ConjunctionScorer.java |   4 +-
 .../search/ControlledRealTimeReopenThread.java  |   3 +-
 .../EarlyTerminatingSortingCollector.java       |   1 -
 .../apache/lucene/search/ExactPhraseScorer.java |   3 +-
 .../apache/lucene/search/FuzzyTermsEnum.java    |   1 -
 .../java/org/apache/lucene/search/Multiset.java |   2 -
 .../apache/lucene/search/PointInSetQuery.java   |   6 -
 .../org/apache/lucene/search/RegexpQuery.java   |   1 -
 .../lucene/search/SloppyPhraseScorer.java       |   3 +-
 .../apache/lucene/search/TwoPhaseIterator.java  |  79 +--
 .../lucene/store/ByteArrayIndexInput.java       |   2 -
 .../org/apache/lucene/util/CharsRefBuilder.java |   1 -
 .../automaton/DaciukMihovAutomatonBuilder.java  |   1 -
 .../lucene/util/mutable/MutableValueStr.java    |   1 -
 .../util/packed/MonotonicBlockPackedWriter.java |   1 -
 .../lucene/util/packed/MonotonicLongValues.java |   1 -
 .../lucene54/TestLucene54DocValuesFormat.java   |   2 -
 .../apache/lucene/document/TestFieldType.java   |   2 -
 .../org/apache/lucene/index/Test2BPoints.java   |   6 -
 .../index/TestBinaryDocValuesUpdates.java       |   2 -
 .../org/apache/lucene/index/TestCodecs.java     |   5 -
 .../lucene/index/TestDirectoryReader.java       |   1 -
 .../apache/lucene/index/TestDocIDMerger.java    |   2 -
 .../lucene/index/TestDocsAndPositions.java      |   1 -
 .../apache/lucene/index/TestFieldsReader.java   |   1 -
 .../lucene/index/TestIndexFileDeleter.java      |   4 -
 .../org/apache/lucene/index/TestIndexInput.java |   4 -
 .../apache/lucene/index/TestIndexSorting.java   |   7 -
 .../apache/lucene/index/TestIndexWriter.java    |   3 -
 .../lucene/index/TestIndexWriterCommit.java     |   1 -
 .../lucene/index/TestIndexWriterConfig.java     |   1 -
 .../lucene/index/TestIndexWriterForceMerge.java |   4 -
 .../lucene/index/TestIndexWriterFromReader.java |   1 -
 .../index/TestIndexWriterLockRelease.java       |   2 -
 .../lucene/index/TestIndexWriterOnDiskFull.java |   2 -
 .../index/TestIndexingSequenceNumbers.java      |   2 -
 .../lucene/index/TestMergeRateLimiter.java      |   2 -
 .../lucene/index/TestMixedDocValuesUpdates.java |   1 -
 .../apache/lucene/index/TestMultiTermsEnum.java |   1 -
 .../apache/lucene/index/TestNeverDelete.java    |   2 -
 .../apache/lucene/index/TestNoMergePolicy.java  |   1 -
 .../index/TestNumericDocValuesUpdates.java      |   2 -
 .../apache/lucene/index/TestOmitPositions.java  |   1 -
 .../org/apache/lucene/index/TestOmitTf.java     |   2 -
 .../index/TestParallelCompositeReader.java      |   2 -
 .../lucene/index/TestParallelTermEnum.java      |   1 -
 .../org/apache/lucene/index/TestPayloads.java   |   1 -
 .../lucene/index/TestPerSegmentDeletes.java     |   2 -
 .../TestPersistentSnapshotDeletionPolicy.java   |   1 -
 .../apache/lucene/index/TestReaderClosed.java   |   1 -
 .../apache/lucene/index/TestSegmentInfos.java   |   1 -
 .../index/TestSnapshotDeletionPolicy.java       |   2 -
 .../lucene/search/TestConjunctionDISI.java      |  12 +-
 .../TestControlledRealTimeReopenThread.java     |  20 +-
 .../TestEarlyTerminatingSortingCollector.java   |   6 -
 .../apache/lucene/search/TestIndexSearcher.java |   1 -
 .../lucene/search/TestMatchNoDocsQuery.java     |   1 -
 .../apache/lucene/search/TestPhraseQuery.java   |   1 -
 .../apache/lucene/search/TestRegexpRandom2.java |   1 -
 .../apache/lucene/search/TestScorerPerf.java    |   2 -
 .../lucene/search/TestSimilarityProvider.java   |   1 -
 .../lucene/store/TestBufferedIndexInput.java    |   1 -
 .../org/apache/lucene/store/TestDirectory.java  |   1 -
 .../lucene/store/TestFileSwitchDirectory.java   |   1 -
 .../apache/lucene/store/TestRateLimiter.java    |   1 -
 .../lucene/store/TestSimpleFSLockFactory.java   |   1 -
 .../apache/lucene/util/Test2BPagedBytes.java    |   1 -
 .../org/apache/lucene/util/TestIOUtils.java     |   1 -
 .../util/TestRecyclingByteBlockAllocator.java   |   1 -
 .../util/TestRecyclingIntBlockAllocator.java    |   1 -
 .../automaton/FiniteStringsIteratorTest.java    |   1 -
 .../LimitedFiniteStringsIteratorTest.java       |   1 -
 .../test/org/apache/lucene/demo/TestDemo.java   |   2 -
 .../TestExpressionAggregationFacetsExample.java |   3 -
 .../demo/facet/TestRangeFacetsExample.java      |   2 -
 .../facet/TestSimpleSortedSetFacetsExample.java |   1 -
 .../lucene/expressions/js/JavascriptLexer.java  |   3 -
 .../lucene/expressions/js/JavascriptParser.java |   3 -
 .../DefaultSortedSetDocValuesReaderState.java   |   1 -
 .../lucene/facet/taxonomy/TestFacetLabel.java   |   2 -
 .../taxonomy/directory/TestAddTaxonomy.java     |  14 -
 .../grouping/AbstractGroupFacetCollector.java   |   1 -
 .../highlight/OffsetLimitTokenFilterTest.java   |   1 -
 .../vectorhighlight/IndexTimeSynonymTest.java   |   4 -
 .../search/join/ToParentBlockJoinQuery.java     |   2 -
 .../lucene/search/join/TestBlockJoin.java       |   1 -
 .../apache/lucene/index/memory/MemoryIndex.java |   2 +-
 .../lucene/index/memory/TestMemoryIndex.java    |   6 -
 .../memory/TestMemoryIndexAgainstRAMDir.java    |   1 -
 .../lucene/index/MultiPassIndexSplitter.java    |   1 -
 .../index/TestMultiPassIndexSplitter.java       |   1 -
 .../search/TestDiversifiedTopDocsCollector.java |   1 -
 .../apache/lucene/util/fst/TestFSTsMisc.java    |   1 -
 .../lucene/queries/function/BoostedQuery.java   |   1 -
 .../function/valuesource/DoubleFieldSource.java |   1 -
 .../SumTotalTermFreqValueSource.java            |   1 -
 .../apache/lucene/queries/TermsQueryTest.java   |   2 -
 .../queries/TestCustomScoreExplanations.java    |   1 -
 .../lucene/queryparser/classic/QueryParser.java |   3 +-
 .../lucene/queryparser/classic/QueryParser.jj   |   2 +-
 .../classic/QueryParserTokenManager.java        |  10 -
 .../queryparser/ext/ExtendableQueryParser.java  |   1 -
 .../flexible/standard/StandardQueryParser.java  |   2 +-
 .../builders/DummyQueryNodeBuilder.java         |   1 -
 .../StandardSyntaxParserTokenManager.java       |  22 -
 .../MultiFieldQueryNodeProcessor.java           |   1 -
 .../StandardQueryNodeProcessorPipeline.java     |   3 -
 .../surround/parser/QueryParser.java            |   2 -
 .../parser/QueryParserTokenManager.java         |  13 -
 .../queryparser/classic/TestMultiAnalyzer.java  |   2 -
 .../classic/TestMultiPhraseQueryParsing.java    |   1 -
 .../precedence/TestPrecedenceQueryParser.java   |   1 -
 .../standard/TestMultiAnalyzerQPHelper.java     |   3 -
 .../flexible/standard/TestStandardQP.java       |   2 -
 .../simple/TestSimpleQueryParser.java           |   1 -
 .../xml/TestQueryTemplateManager.java           |   1 -
 .../lucene/replicator/nrt/CopyOneFile.java      |   2 -
 .../apache/lucene/replicator/nrt/CopyState.java |   1 -
 .../org/apache/lucene/replicator/nrt/Node.java  |  10 -
 .../replicator/nrt/ReplicaFileDeleter.java      |   2 -
 .../nrt/SegmentInfosSearcherManager.java        |   1 -
 .../IndexAndTaxonomyRevisionTest.java           |   1 -
 .../lucene/replicator/IndexRevisionTest.java    |   1 -
 .../lucene/replicator/LocalReplicatorTest.java  |   1 -
 .../lucene/replicator/ReplicatorTestCase.java   |   2 -
 .../lucene/replicator/nrt/Connection.java       |   2 -
 .../org/apache/lucene/replicator/nrt/Jobs.java  |   2 -
 .../lucene/replicator/nrt/SimpleCopyJob.java    |  35 --
 .../lucene/replicator/nrt/SimpleTransLog.java   |   3 -
 .../replicator/nrt/TestNRTReplication.java      |   1 -
 .../nrt/TestStressNRTReplication.java           |   1 -
 .../idversion/IDVersionPostingsReader.java      |   1 -
 .../idversion/IDVersionSegmentTermsEnum.java    |   1 -
 .../sandbox/queries/SlowFuzzyTermsEnum.java     |   1 -
 .../search/TokenStreamToTermAutomatonQuery.java |   2 -
 lucene/site/changes/changes2html.pl             |   4 +-
 lucene/site/xsl/index.xsl                       |  14 +-
 .../org/apache/lucene/spatial3d/Geo3DPoint.java |   9 -
 .../spatial3d/geom/GeoComplexPolygon.java       |   2 -
 .../lucene/spatial3d/geom/StandardXYZSolid.java |   2 -
 .../apache/lucene/spatial3d/TestGeo3DPoint.java |   1 -
 .../lucene/spatial3d/geom/GeoPolygonTest.java   |   2 -
 .../lucene/search/spell/DirectSpellChecker.java |   2 -
 .../lucene/search/spell/LuceneDictionary.java   |   1 -
 .../search/spell/WordBreakSpellChecker.java     |   1 -
 .../analyzing/AnalyzingInfixSuggester.java      |   1 -
 .../search/suggest/analyzing/FSTUtil.java       |   1 -
 .../suggest/analyzing/SuggestStopFilter.java    |   1 -
 .../suggest/fst/FSTCompletionBuilder.java       |   1 -
 .../search/suggest/jaspell/JaspellLookup.java   |   1 -
 .../search/suggest/FileDictionaryTest.java      |   1 -
 .../lucene/search/suggest/PersistenceTest.java  |   1 -
 .../analyzing/AnalyzingInfixSuggesterTest.java  |   2 -
 .../analyzing/AnalyzingSuggesterTest.java       |   1 -
 .../suggest/analyzing/FuzzySuggesterTest.java   |   1 -
 .../search/suggest/fst/FSTCompletionTest.java   |   1 -
 .../search/suggest/fst/WFSTCompletionTest.java  |   1 -
 .../lucene/analysis/CollationTestBase.java      |   1 -
 .../apache/lucene/analysis/MockAnalyzer.java    |   1 -
 .../apache/lucene/analysis/MockCharFilter.java  |   1 -
 .../lucene/analysis/MockPayloadAnalyzer.java    |   1 -
 .../codecs/asserting/AssertingPointsFormat.java |   1 -
 .../codecs/cranky/CrankyPointsFormat.java       |   3 -
 .../mockrandom/MockRandomPostingsFormat.java    |   1 -
 .../index/BaseTermVectorsFormatTestCase.java    |   2 -
 .../java/org/apache/lucene/index/DocHelper.java |   1 -
 .../apache/lucene/index/ForceMergePolicy.java   |   3 -
 .../ThreadedIndexingAndSearchingTestCase.java   |   1 -
 .../lucene/mockfile/MockFileSystemTestCase.java |   1 -
 .../org/apache/lucene/mockfile/WindowsFS.java   |   4 -
 .../lucene/store/BaseLockFactoryTestCase.java   |   1 -
 .../apache/lucene/util/CloseableDirectory.java  |   1 -
 .../org/apache/lucene/util/LineFileDocs.java    |   1 -
 .../analysis/TestLookaheadTokenFilter.java      |   1 -
 .../TestCompressingStoredFieldsFormat.java      |   4 -
 .../TestCompressingTermVectorsFormat.java       |   1 -
 .../lucene/index/TestAssertingLeafReader.java   |   8 -
 .../lucene/mockfile/TestHandleTrackingFS.java   |   4 -
 .../apache/lucene/mockfile/TestWindowsFS.java   |   2 -
 .../lucene/store/TestMockDirectoryWrapper.java  |   4 -
 lucene/tools/javadoc/ecj.javadocs.prefs         |   2 +-
 solr/CHANGES.txt                                |  28 +-
 .../solr/schema/TestICUCollationField.java      |   2 -
 .../analytics/facet/FieldFacetExtrasTest.java   |   1 -
 .../solr/analytics/facet/FieldFacetTest.java    |   1 -
 .../handler/dataimport/DIHCacheSupport.java     |   3 -
 .../handler/dataimport/DataImportHandler.java   |   6 -
 .../solr/handler/dataimport/DebugInfo.java      |   1 -
 .../solr/handler/dataimport/Evaluator.java      |   5 -
 .../solr/handler/dataimport/UrlEvaluator.java   |   1 -
 .../dataimport/XPathEntityProcessor.java        |   1 -
 .../apache/solr/handler/dataimport/Zipper.java  |   1 -
 .../dataimport/config/ConfigParseUtil.java      |   6 -
 .../solr/handler/dataimport/TestDataConfig.java |   1 -
 .../solr/handler/dataimport/TestDocBuilder.java |   1 -
 .../handler/dataimport/TestEphemeralCache.java  |   1 -
 .../dataimport/TestFileListEntityProcessor.java |   1 -
 .../TestFileListWithLineEntityProcessor.java    |   1 -
 .../dataimport/TestHierarchicalDocBuilder.java  |   1 -
 .../dataimport/TestNonWritablePersistFile.java  |   1 -
 .../TestPlainTextEntityProcessor.java           |   1 -
 .../dataimport/TestScriptTransformer.java       |   2 -
 .../dataimport/TestSimplePropertiesWriter.java  |   2 -
 .../dataimport/TestSqlEntityProcessorDelta.java |   1 -
 ...anguageIdentifierUpdateProcessorFactory.java |   1 -
 .../LanguageIdentifierUpdateProcessor.java      |   1 -
 .../solr/hadoop/MapReduceIndexerTool.java       |   3 -
 .../apache/solr/hadoop/SolrOutputFormat.java    |   1 -
 .../apache/solr/hadoop/MorphlineMapperTest.java |   1 -
 .../src/java/org/apache/solr/cloud/Assign.java  |   1 -
 .../org/apache/solr/cloud/DistributedMap.java   |   1 -
 .../solr/cloud/OverseerTaskProcessor.java       |   2 -
 .../apache/solr/cloud/OverseerTaskQueue.java    |   1 -
 .../solr/cloud/SizeLimitedDistributedMap.java   |   2 -
 .../apache/solr/cloud/overseer/NodeMutator.java |   1 -
 .../solr/cloud/overseer/OverseerAction.java     |   2 -
 .../solr/cloud/overseer/SliceMutator.java       |   2 -
 .../solr/cloud/overseer/ZkStateWriter.java      |   2 -
 .../apache/solr/cloud/rule/ReplicaAssigner.java |   1 -
 .../org/apache/solr/core/BlobRepository.java    |   6 -
 .../solr/core/CachingDirectoryFactory.java      |   6 +-
 .../org/apache/solr/core/ConfigOverlay.java     |   4 -
 .../org/apache/solr/core/ConfigSetService.java  |   1 -
 .../org/apache/solr/core/CoreContainer.java     |   1 -
 .../org/apache/solr/core/DirectoryFactory.java  |  25 +
 .../apache/solr/core/HdfsDirectoryFactory.java  |  33 +-
 .../solr/core/SimpleFSDirectoryFactory.java     |   1 -
 .../src/java/org/apache/solr/core/SolrCore.java |   1 -
 .../java/org/apache/solr/core/SolrCores.java    |   2 -
 .../solr/handler/ContentStreamHandlerBase.java  |   1 -
 .../org/apache/solr/handler/GraphHandler.java   |   2 -
 .../solr/handler/MoreLikeThisHandler.java       |   2 -
 .../apache/solr/handler/RealTimeGetHandler.java |   1 -
 .../apache/solr/handler/ReplicationHandler.java |   3 +-
 .../apache/solr/handler/RequestHandlerBase.java |   2 -
 .../solr/handler/admin/ConfigSetsHandler.java   |   1 -
 .../solr/handler/admin/CoreAdminHandler.java    |   2 -
 .../solr/handler/admin/CoreAdminOperation.java  |   2 +-
 .../handler/admin/ShowFileRequestHandler.java   |   2 -
 .../handler/admin/SolrInfoMBeanHandler.java     |   1 -
 .../handler/component/HighlightComponent.java   |   1 -
 .../solr/handler/component/QueryComponent.java  |   2 -
 .../handler/component/RealTimeGetComponent.java |   1 -
 .../handler/component/SpellCheckComponent.java  |   2 -
 .../handler/component/SpellCheckMergeData.java  |   1 -
 .../handler/component/StatsValuesFactory.java   |   3 -
 .../solr/handler/component/TermsComponent.java  |   1 -
 .../apache/solr/handler/loader/JsonLoader.java  |   2 -
 .../solr/highlight/PostingsSolrHighlighter.java |   1 -
 .../solr/index/SlowCompositeReaderWrapper.java  |   1 -
 .../apache/solr/index/SortingMergePolicy.java   |  21 -
 .../org/apache/solr/internal/csv/CSVParser.java |   2 -
 .../apache/solr/internal/csv/CSVPrinter.java    |   2 -
 .../org/apache/solr/parser/QueryParser.java     |   6 -
 .../solr/parser/QueryParserTokenManager.java    |  13 -
 .../apache/solr/parser/SolrQueryParserBase.java |   1 -
 .../apache/solr/request/SolrRequestInfo.java    |   1 -
 .../org/apache/solr/request/json/JSONUtil.java  |   6 -
 .../apache/solr/request/json/ObjectUtil.java    |   3 -
 .../solr/response/BinaryResponseWriter.java     |   1 -
 .../solr/response/GeoJSONResponseWriter.java    |   1 -
 .../solr/response/JSONResponseWriter.java       |   5 -
 .../response/PHPSerializedResponseWriter.java   |   1 -
 .../org/apache/solr/response/ResultContext.java |   1 -
 .../transform/ExcludedMarkerFactory.java        |   2 -
 .../org/apache/solr/rest/SolrSchemaRestApi.java |   2 -
 .../schema/analysis/ManagedWordSetResource.java |   1 -
 .../solr/schema/JsonPreAnalyzedParser.java      |   1 -
 .../solr/schema/ManagedIndexSchemaFactory.java  |   2 -
 .../solr/search/CollapsingQParserPlugin.java    |   1 -
 .../apache/solr/search/DisMaxQParserPlugin.java |   1 -
 .../java/org/apache/solr/search/DocSlice.java   |   1 -
 .../search/ExtendedDismaxQParserPlugin.java     |   1 -
 .../apache/solr/search/FieldQParserPlugin.java  |   1 -
 .../solr/search/FunctionQParserPlugin.java      |   1 -
 .../solr/search/FunctionRangeQParserPlugin.java |   1 -
 .../apache/solr/search/JoinQParserPlugin.java   |   1 -
 .../java/org/apache/solr/search/LRUCache.java   |   1 -
 .../apache/solr/search/LuceneQParserPlugin.java |   2 -
 .../solr/search/OldLuceneQParserPlugin.java     |   1 -
 .../apache/solr/search/PrefixQParserPlugin.java |   3 -
 .../java/org/apache/solr/search/QParser.java    |   1 -
 .../org/apache/solr/search/QueryContext.java    |   1 -
 .../org/apache/solr/search/QueryParsing.java    |   3 -
 .../apache/solr/search/RawQParserPlugin.java    |   1 -
 .../apache/solr/search/ReRankQParserPlugin.java |   1 -
 .../apache/solr/search/SimpleQParserPlugin.java |   1 -
 .../apache/solr/search/SolrFieldCacheMBean.java |   1 -
 .../org/apache/solr/search/SolrQueryParser.java |  18 -
 .../apache/solr/search/SolrReturnFields.java    |   1 -
 .../solr/search/SpatialBoxQParserPlugin.java    |   1 -
 .../solr/search/SpatialFilterQParserPlugin.java |   1 -
 .../solr/search/SurroundQParserPlugin.java      |   1 -
 .../apache/solr/search/TermQParserPlugin.java   |   1 -
 .../apache/solr/search/TermsQParserPlugin.java  |   1 -
 .../apache/solr/search/XmlQParserPlugin.java    |   1 -
 .../solr/search/facet/AggValueSource.java       |   1 -
 .../org/apache/solr/search/facet/BlockJoin.java |   1 -
 .../apache/solr/search/facet/FacetField.java    |   1 -
 .../facet/FacetFieldProcessorNumeric.java       |   1 -
 .../apache/solr/search/facet/FacetRequest.java  |   2 -
 .../org/apache/solr/search/facet/FieldUtil.java |   2 -
 .../org/apache/solr/search/facet/HLLAgg.java    |   5 -
 .../apache/solr/search/facet/LegacyFacet.java   |   1 -
 .../solr/search/facet/SimpleAggValueSource.java |   3 -
 .../org/apache/solr/search/facet/SlotAcc.java   |   8 -
 .../solr/search/facet/StrAggValueSource.java    |   7 -
 .../solr/search/facet/UnInvertedField.java      |   1 -
 .../solr/search/function/FileFloatSource.java   |   1 -
 .../apache/solr/search/grouping/Command.java    |   2 -
 .../SearchGroupsResultTransformer.java          |   2 -
 .../join/BlockJoinParentQParserPlugin.java      |   1 -
 .../solr/search/join/GraphQParserPlugin.java    |   1 -
 .../org/apache/solr/search/join/GraphQuery.java |   3 -
 .../solr/search/join/GraphQueryParser.java      |   1 -
 .../search/join/ScoreJoinQParserPlugin.java     |   1 -
 .../solr/search/mlt/MLTQParserPlugin.java       |   1 -
 .../SweetSpotSimilarityFactory.java             |   1 -
 .../apache/solr/search/stats/LRUStatsCache.java |   5 -
 .../solr/security/AuthorizationContext.java     |   1 -
 .../security/AutorizationEditOperation.java     |   2 -
 .../apache/solr/security/KerberosPlugin.java    |   1 -
 .../security/RuleBasedAuthorizationPlugin.java  |   2 -
 .../solr/servlet/DirectSolrConnection.java      |   6 -
 .../org/apache/solr/servlet/HttpSolrCall.java   |   5 -
 .../solr/servlet/cache/HttpCacheHeaderUtil.java |   2 -
 .../spelling/AbstractLuceneSpellChecker.java    |   6 -
 .../solr/spelling/DirectSolrSpellChecker.java   |   6 -
 .../solr/store/blockcache/BlockCache.java       |   1 -
 .../apache/solr/store/blockcache/Metrics.java   |   1 -
 .../solr/update/DeleteByQueryWrapper.java       |   1 -
 .../apache/solr/update/DeleteUpdateCommand.java |   2 -
 ...tractDefaultValueUpdateProcessorFactory.java |   2 -
 .../CountFieldValuesUpdateProcessorFactory.java |  10 -
 .../DefaultValueUpdateProcessorFactory.java     |   4 -
 .../DistributingUpdateProcessorFactory.java     |   2 -
 .../FieldMutatingUpdateProcessorFactory.java    |   1 -
 .../FieldValueSubsetUpdateProcessorFactory.java |   2 -
 .../FirstFieldValueUpdateProcessorFactory.java  |   1 -
 .../LastFieldValueUpdateProcessorFactory.java   |   1 -
 .../solr/update/processor/MD5Signature.java     |   1 -
 .../MaxFieldValueUpdateProcessorFactory.java    |   1 -
 .../MinFieldValueUpdateProcessorFactory.java    |   1 -
 .../NoOpDistributingUpdateProcessorFactory.java |   2 -
 .../ParseDateFieldUpdateProcessorFactory.java   |   2 -
 .../update/processor/RegexpBoostProcessor.java  |   1 -
 .../processor/RunUpdateProcessorFactory.java    |   1 -
 .../TimestampUpdateProcessorFactory.java        |   7 -
 .../processor/TolerantUpdateProcessor.java      |   6 -
 .../TolerantUpdateProcessorFactory.java         |   1 -
 .../UniqFieldsUpdateProcessorFactory.java       |   9 -
 .../processor/UpdateRequestProcessorChain.java  |   1 -
 .../org/apache/solr/util/CommandOperation.java  |   3 -
 .../org/apache/solr/util/PivotListEntry.java    |   2 -
 .../org/apache/solr/util/SolrPluginUtils.java   |  26 +-
 .../solr/util/xslt/TransformerProvider.java     |   1 -
 .../solr/DistributedIntervalFacetingTest.java   |   1 -
 .../test/org/apache/solr/SolrInfoMBeanTest.java |   1 -
 .../solr/TestSimpleTrackingShardHandler.java    |   1 -
 .../PathHierarchyTokenizerFactoryTest.java      |   3 -
 .../apache/solr/cloud/AliasIntegrationTest.java |   2 -
 .../solr/cloud/BaseCdcrDistributedZkTest.java   |   2 -
 .../org/apache/solr/cloud/ClusterStateTest.java |   1 -
 ...ConcurrentDeleteAndCreateCollectionTest.java |   1 -
 .../solr/cloud/ConnectionManagerTest.java       |   5 -
 .../solr/cloud/DeleteInactiveReplicaTest.java   |   1 -
 .../DeleteLastCustomShardedReplicaTest.java     |   1 -
 .../solr/cloud/DistribCursorPagingTest.java     |   3 -
 .../apache/solr/cloud/DistributedQueueTest.java |   1 -
 .../apache/solr/cloud/HttpPartitionTest.java    |   1 -
 .../apache/solr/cloud/MultiThreadedOCPTest.java |   1 -
 ...verseerCollectionConfigSetProcessorTest.java |   1 -
 .../solr/cloud/OverseerTaskQueueTest.java       |   3 -
 .../org/apache/solr/cloud/OverseerTest.java     |   1 -
 .../solr/cloud/RecoveryAfterSoftCommitTest.java |   1 -
 .../solr/cloud/ReplicationFactorTest.java       |   1 -
 .../org/apache/solr/cloud/SSLMigrationTest.java |   1 -
 .../cloud/SimpleCollectionCreateDeleteTest.java |   2 -
 .../apache/solr/cloud/SolrCloudExampleTest.java |   2 -
 .../org/apache/solr/cloud/SyncSliceTest.java    |   2 -
 .../solr/cloud/TestCloudDeleteByQuery.java      |   7 -
 .../apache/solr/cloud/TestCloudInspectUtil.java |   2 -
 .../apache/solr/cloud/TestCollectionAPI.java    |   1 -
 .../apache/solr/cloud/TestConfigSetsAPI.java    |   1 -
 .../cloud/TestConfigSetsAPIExclusivity.java     |   1 -
 .../solr/cloud/TestConfigSetsAPIZkFailure.java  |   1 -
 .../org/apache/solr/cloud/TestCryptoKeys.java   |   1 -
 .../org/apache/solr/cloud/TestLockTree.java     |   7 -
 .../solr/cloud/TestMiniSolrCloudClusterSSL.java |   1 -
 .../apache/solr/cloud/TestSSLRandomization.java |   2 -
 .../TestStressCloudBlindAtomicUpdates.java      |   6 -
 .../solr/cloud/hdfs/HdfsThreadLeakTest.java     |   2 -
 .../HdfsWriteToMultipleCollectionsTest.java     |  19 +
 .../solr/core/BlobRepositoryCloudTest.java      |   6 -
 .../solr/core/BlobRepositoryMockingTest.java    |   2 -
 .../solr/core/HdfsDirectoryFactoryTest.java     |   5 -
 .../org/apache/solr/core/MockInfoMBean.java     |   1 -
 .../apache/solr/core/TestDynamicLoading.java    |   1 -
 .../apache/solr/core/TestInfoStreamLogging.java |   1 -
 .../apache/solr/core/TestJmxMonitoredMap.java   |   3 -
 .../FieldAnalysisRequestHandlerTest.java        |   4 -
 .../org/apache/solr/handler/JsonLoaderTest.java |   4 -
 .../handler/StandardRequestHandlerTest.java     |   8 -
 .../apache/solr/handler/TestBlobHandler.java    |   1 -
 .../org/apache/solr/handler/TestCSVLoader.java  |   1 -
 .../apache/solr/handler/TestConfigReload.java   |   1 -
 .../apache/solr/handler/TestReqParamsAPI.java   |   1 -
 .../handler/TestSolrConfigHandlerCloud.java     |   1 -
 .../TestSolrConfigHandlerConcurrent.java        |   2 -
 .../handler/ThrowErrorOnInitRequestHandler.java |   1 -
 .../admin/CoreMergeIndexesAdminHandlerTest.java |   3 -
 .../component/DistributedMLTComponentTest.java  |   1 -
 .../handler/component/TestExpandComponent.java  |   1 -
 .../handler/component/TestPivotHelperCode.java  |   3 -
 .../highlight/HighlighterMaxOffsetTest.java     |   1 -
 .../solr/internal/csv/CSVPrinterTest.java       |   3 -
 .../solr/internal/csv/CSVStrategyTest.java      |   2 -
 .../csv/ExtendedBufferedReaderTest.java         |   2 -
 .../org/apache/solr/request/JSONWriterTest.java |   4 -
 .../solr/request/TestBinaryResponseWriter.java  |   1 -
 .../org/apache/solr/request/TestFaceting.java   |   1 -
 .../solr/request/TestIntervalFaceting.java      |   1 -
 .../TestPHPSerializedResponseWriter.java        |   1 -
 .../solr/response/TestRawResponseWriter.java    |   4 -
 .../schema/CurrencyFieldOpenExchangeTest.java   |  10 -
 .../solr/schema/CurrencyFieldXmlFileTest.java   |   9 -
 .../org/apache/solr/schema/EnumFieldTest.java   |   1 -
 .../org/apache/solr/schema/PolyFieldTest.java   |   1 -
 .../solr/schema/TestBulkSchemaConcurrent.java   |   1 -
 .../TestCloudManagedSchemaConcurrent.java       |   1 -
 .../apache/solr/schema/TestCloudSchemaless.java |   2 -
 .../apache/solr/schema/TestCollationField.java  |   1 -
 .../apache/solr/search/AnalyticsQueryTest.java  |   1 -
 .../solr/search/DelayingSearchComponent.java    |   1 -
 .../apache/solr/search/FooQParserPlugin.java    |   1 -
 .../apache/solr/search/QueryParsingTest.java    |   8 -
 .../org/apache/solr/search/RankQueryTest.java   |   1 -
 .../apache/solr/search/SortSpecParsingTest.java |   1 -
 .../solr/search/TestCollapseQParserPlugin.java  |   1 -
 .../search/TestGraphTermsQParserPlugin.java     |  12 -
 .../solr/search/TestHashQParserPlugin.java      |   5 -
 .../org/apache/solr/search/TestLRUCache.java    |   5 -
 .../apache/solr/search/TestMissingGroups.java   |   2 -
 .../org/apache/solr/search/TestQueryUtils.java  |   2 -
 .../search/TestRandomCollapseQParserPlugin.java |   3 -
 .../solr/search/TestReRankQParserPlugin.java    |   1 -
 .../org/apache/solr/search/TestRealTimeGet.java |   1 -
 .../apache/solr/search/TestRecoveryHdfs.java    |   1 -
 .../test/org/apache/solr/search/TestReload.java |   2 -
 .../org/apache/solr/search/TestSearchPerf.java  |   1 -
 .../solr/search/TestSimpleQParserPlugin.java    |   3 -
 .../apache/solr/search/TestSolrQueryParser.java |   1 -
 .../test/org/apache/solr/search/TestSort.java   |   1 -
 .../solr/search/facet/TestJsonFacets.java       |   3 -
 .../solr/search/function/TestFunctionQuery.java |   1 -
 .../function/TestMinMaxOnMultiValuedField.java  |   4 -
 .../function/TestSortByMinMaxFunction.java      |   2 -
 .../apache/solr/search/join/BJQParserTest.java  |   1 -
 .../solr/search/mlt/SimpleMLTQParserTest.java   |   4 -
 .../TestClassicSimilarityFactory.java           |   1 -
 .../TestNonDefinedSimilarityFactory.java        |   1 -
 ...stPerFieldSimilarityWithDefaultOverride.java |   2 -
 .../TestSweetSpotSimilarityFactory.java         |   1 -
 .../solr/search/stats/TestDistribIDF.java       |   1 -
 .../security/TestPKIAuthenticationPlugin.java   |   6 -
 .../apache/solr/servlet/ResponseHeaderTest.java |   4 -
 .../spelling/FileBasedSpellCheckerTest.java     |   1 -
 .../solr/spelling/SimpleQueryConverter.java     |   2 -
 .../spelling/TestSuggestSpellingConverter.java  |   1 -
 .../suggest/TestFreeTextSuggestions.java        |   1 -
 .../apache/solr/uninverting/TestFieldCache.java |  10 -
 .../apache/solr/update/AddBlockUpdateTest.java  |   2 -
 .../update/DirectUpdateHandlerOptimizeTest.java |   1 -
 .../solr/update/TestExceedMaxTermLength.java    |   1 -
 .../org/apache/solr/update/VersionInfoTest.java |   2 -
 .../processor/CustomUpdateRequestProcessor.java |   4 -
 .../DefaultValueUpdateProcessorTest.java        |   5 -
 ...DocExpirationUpdateProcessorFactoryTest.java |   1 -
 ...ommitOptimizeUpdateProcessorFactoryTest.java |   5 -
 .../RecordingUpdateProcessorFactory.java        |   3 -
 ...atelessScriptUpdateProcessorFactoryTest.java |   5 -
 .../processor/TestNamedUpdateProcessors.java    |   1 -
 .../TestPartialUpdateDeduplication.java         |   3 -
 .../processor/TolerantUpdateProcessorTest.java  |   2 -
 .../UniqFieldsUpdateProcessorFactoryTest.java   |   1 -
 .../processor/UpdateProcessorTestBase.java      |   1 -
 .../apache/solr/util/SolrPluginUtilsTest.java   |  28 ++
 .../org/apache/solr/util/TestFastWriter.java    |   3 -
 .../solrj/impl/InputStreamResponseParser.java   |   4 -
 .../solrj/impl/Krb5HttpClientBuilder.java       |   7 -
 .../solr/client/solrj/io/comp/HashKey.java      |   2 -
 .../solrj/io/comp/MultipleFieldComparator.java  |   1 -
 .../client/solrj/io/stream/BiJoinStream.java    |   8 -
 .../solrj/io/stream/LeftOuterJoinStream.java    |   4 -
 .../client/solrj/io/stream/StreamContext.java   |   2 -
 .../solrj/io/stream/expr/StreamExplanation.java |   2 -
 .../solr/client/solrj/response/FacetField.java  |   1 -
 .../solr/client/solrj/response/PivotField.java  |   2 -
 .../solr/common/cloud/ClusterStateUtil.java     |   2 -
 .../apache/solr/common/cloud/SolrZkClient.java  |   1 -
 .../solr/common/cloud/ZkConfigManager.java      |   1 -
 .../apache/solr/client/solrj/GetByIdTest.java   |   2 -
 .../solrj/MergeIndexesExampleTestBase.java      |   1 -
 .../client/solrj/SolrSchemalessExampleTest.java |   1 -
 .../solrj/beans/TestDocumentObjectBinder.java   |   2 -
 .../embedded/LargeVolumeBinaryJettyTest.java    |   1 -
 .../solrj/embedded/LargeVolumeEmbeddedTest.java |   1 -
 .../solrj/embedded/LargeVolumeJettyTest.java    |   1 -
 .../solrj/embedded/SolrExampleEmbeddedTest.java |   1 -
 .../solr/client/solrj/io/graph/GraphTest.java   |   2 -
 .../client/solrj/io/sql/JdbcDriverTest.java     |   1 -
 .../solrj/io/stream/RecordCountStream.java      |   1 -
 .../StreamExpressionToExplanationTest.java      |   1 -
 .../io/stream/ops/ConcatOperationTest.java      |   1 -
 .../solrj/request/TestUpdateRequestCodec.java   |   2 -
 .../solr/common/cloud/TestZkConfigManager.java  |   1 -
 .../solr/common/util/TestJsonRecordReader.java  |   1 -
 .../solr/analysis/MockTokenizerFactory.java     |   1 -
 .../java/org/apache/solr/cloud/ChaosMonkey.java |   1 -
 .../org/apache/solr/cloud/MockSolrZkClient.java |   1 -
 .../org/apache/solr/util/BaseTestHarness.java   |   1 -
 .../org/apache/solr/util/ExternalPaths.java     |   4 -
 .../org/apache/solr/util/RandomMergePolicy.java |   8 -
 .../org/apache/solr/util/SSLTestConfig.java     |   4 -
 670 files changed, 1394 insertions(+), 1902 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccf2070e/solr/CHANGES.txt
----------------------------------------------------------------------
diff --cc solr/CHANGES.txt
index bd7f19c,e2a7112..5601791
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@@ -57,11 -62,8 +62,10 @@@ Detailed Change Lis
  New Features
  ----------------------
  
 -* SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields
 +* SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields (Erick Erickson)
 +
 +* SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh (noble)
  
- 
  Bug Fixes
  ----------------------
  


[50/50] [abbrv] lucene-solr:apiv2: SOLR-8029: merging with trunk

Posted by no...@apache.org.
SOLR-8029: merging with trunk


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b333e6bd
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b333e6bd
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b333e6bd

Branch: refs/heads/apiv2
Commit: b333e6bd0a3b86f85d68d47b65b12ef99ab03a86
Parents: b48f4d6
Author: Noble Paul <no...@apache.org>
Authored: Thu Jun 16 17:37:02 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Thu Jun 16 17:37:02 2016 +0530

----------------------------------------------------------------------
 .../org/apache/solr/handler/SchemaHandler.java  | 12 +++++-------
 .../solr/handler/admin/CoreAdminHandler.java    |  2 +-
 .../org/apache/solr/servlet/HttpSolrCall.java   |  4 +++-
 .../test/org/apache/solr/core/SolrCoreTest.java |  1 +
 .../solr/handler/admin/TestCollectionAPIs.java  |  2 +-
 .../java/org/apache/solr/common/util/Map2.java  | 20 ++++++++++----------
 6 files changed, 21 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b333e6bd/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 529c695..f3b7257 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -21,20 +21,20 @@ import java.lang.invoke.MethodHandles;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
+import org.apache.solr.api.Api;
+import org.apache.solr.api.ApiBag;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.params.MapSolrParams;
+import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
+import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
@@ -43,8 +43,6 @@ import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.ManagedIndexSchema;
 import org.apache.solr.schema.SchemaManager;
 import org.apache.solr.schema.ZkIndexSchemaReader;
-import org.apache.solr.api.Api;
-import org.apache.solr.api.ApiBag;
 import org.apache.solr.security.AuthorizationContext;
 import org.apache.solr.security.PermissionNameProvider;
 import org.apache.solr.util.plugin.SolrCoreAware;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b333e6bd/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index b06bba1..231f6a4 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@ -63,7 +63,7 @@ import static org.apache.solr.security.PermissionNameProvider.Name.CORE_READ_PER
  *
  * @since solr 1.3
  */
-public class CoreAdminHandler extends RequestHandlerBase  {
+public class CoreAdminHandler extends RequestHandlerBase implements PermissionNameProvider {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   protected final CoreContainer coreContainer;
   protected final Map<String, Map<String, TaskObject>> requestStatusMap;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b333e6bd/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 6812228..d83b238 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -44,6 +44,8 @@ import java.util.Set;
 
 import com.google.common.collect.ImmutableSet;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.input.CloseShieldInputStream;
+import org.apache.commons.io.output.CloseShieldOutputStream;
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.Header;
 import org.apache.http.HeaderIterator;
@@ -791,7 +793,7 @@ public class HttpSolrCall {
     return result;
   }
 
-  private SolrCore getCoreByCollection(String collectionName) {
+  protected SolrCore getCoreByCollection(String collectionName) {
     ZkStateReader zkStateReader = cores.getZkController().getZkStateReader();
 
     ClusterState clusterState = zkStateReader.getClusterState();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b333e6bd/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
index 049d5e7..17fc55e 100644
--- a/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
+++ b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
@@ -108,6 +108,7 @@ public class SolrCoreTest extends SolrTestCaseJ4 {
       ++ihCount; assertEquals(pathToClassMap.get("/update/csv"), "solr.UpdateRequestHandler");
       ++ihCount; assertEquals(pathToClassMap.get("/update/json"), "solr.UpdateRequestHandler");
       ++ihCount; assertEquals(pathToClassMap.get("/update/json/docs"), "solr.UpdateRequestHandler");
+      ++ihCount; assertEquals(pathToClassMap.get("update"), "solr.UpdateRequestHandlerApi");
     }
     assertEquals("wrong number of implicit handlers", ihCount, implicitHandlers.size());
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b333e6bd/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java b/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java
index edc87e0..6cfbf92 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java
@@ -132,7 +132,7 @@ public class TestCollectionAPIs extends SolrTestCaseJ4 {
   ZkNodeProps compareOutput(final ApiBag apiBag, final String path, final SolrRequest.METHOD method,
                             final String payload, final CoreContainer cc, String expectedOutputMapJson) throws Exception {
     Pair<SolrQueryRequest, SolrQueryResponse> ctx = makeCall(apiBag, path, method, payload, cc);
-    ZkNodeProps output = (ZkNodeProps) ctx.getKey().getContext().get(ZkNodeProps.class.getName());
+    ZkNodeProps output = (ZkNodeProps) ctx.first().getContext().get(ZkNodeProps.class.getName());
     Map expected = (Map) fromJSONString(expectedOutputMapJson);
     assertMapEqual(expected, output);
     return output;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b333e6bd/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/Map2.java b/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
index b5306a1..69a85be 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
@@ -46,25 +46,25 @@ public class Map2<K, V> implements Map<K, V> {
     return null;
   };
   public static final Predicate<Pair> NOT_NULL_OF_TYPE = pair -> {
-    if (pair.getKey() == null) return " Must not be NULL";
-    if (pair.getValue() instanceof Class) {
-      return ((Class) pair.getValue()).isAssignableFrom(pair.getKey().getClass()) ?
+    if (pair.first() == null) return " Must not be NULL";
+    if (pair.second() instanceof Class) {
+      return ((Class) pair.first()).isAssignableFrom(pair.first().getClass()) ?
           null :
-          " Must be of type " + ((Class) pair.getValue()).getName();
+          " Must be of type " + ((Class) pair.second()).getName();
     }
     return " Unknown Type";
   };
   public static final Predicate<Pair> ENUM_OF = pair -> {
-    if (pair.getValue() instanceof Set) {
-      Set set = (Set) pair.getValue();
-      if (pair.getKey() instanceof Collection) {
-        for (Object o : (Collection) pair.getKey()) {
+    if (pair.second() instanceof Set) {
+      Set set = (Set) pair.second();
+      if (pair.first() instanceof Collection) {
+        for (Object o : (Collection) pair.first()) {
           if (!set.contains(o)) {
-            return " Must be one of " + pair.getValue();
+            return " Must be one of " + pair.second();
           }
         }
       } else {
-        if (!set.contains(pair.getKey())) return " Must be one of " + pair.getValue() + ", got " + pair.getKey();
+        if (!set.contains(pair.first())) return " Must be one of " + pair.second() + ", got " + pair.first();
       }
       return null;
     } else {


[06/50] [abbrv] lucene-solr:apiv2: LUCENE-7327: fix rare test bug

Posted by no...@apache.org.
LUCENE-7327: fix rare test bug


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a923d945
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a923d945
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a923d945

Branch: refs/heads/apiv2
Commit: a923d945b4f6b0874a2ab0a1e5ef538725aa3373
Parents: e418bd0
Author: Mike McCandless <mi...@apache.org>
Authored: Fri Jun 10 10:17:34 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Fri Jun 10 10:18:01 2016 -0400

----------------------------------------------------------------------
 .../src/java/org/apache/lucene/spatial3d/Geo3DUtil.java      | 4 ++--
 .../src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java | 8 +++++++-
 2 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a923d945/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DUtil.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DUtil.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DUtil.java
index b5ce250..6d73210 100644
--- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DUtil.java
+++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/Geo3DUtil.java
@@ -45,8 +45,8 @@ class Geo3DUtil {
   private static final int BITS = 32;
   private static final double MUL = (0x1L<<BITS)/(2*MAX_VALUE);
   static final double DECODE = getNextSafeDouble(1/MUL);
-  private static final int MIN_ENCODED_VALUE = encodeValue(-MAX_VALUE);
-  private static final int MAX_ENCODED_VALUE = encodeValue(MAX_VALUE);
+  static final int MIN_ENCODED_VALUE = encodeValue(-MAX_VALUE);
+  static final int MAX_ENCODED_VALUE = encodeValue(MAX_VALUE);
 
   public static int encodeValue(double x) {
     if (x > MAX_VALUE) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a923d945/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
index 85ec548..fed5ada 100644
--- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
+++ b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/TestGeo3DPoint.java
@@ -1207,13 +1207,19 @@ public class TestGeo3DPoint extends LuceneTestCase {
 
   /**
    * step through some integers, ensuring they decode to their expected double values.
-   * double values start at -90 and increase by LATITUDE_DECODE for each integer.
+   * double values start at -planetMax and increase by Geo3DUtil.DECODE for each integer.
    * check edge cases within the double range and random doubles within the range too.
    */
   public void testQuantization() throws Exception {
     Random random = random();
     for (int i = 0; i < 10000; i++) {
       int encoded = random.nextInt();
+      if (encoded < Geo3DUtil.MIN_ENCODED_VALUE) {
+        continue;
+      }
+      if (encoded > Geo3DUtil.MAX_ENCODED_VALUE) {
+        continue;
+      }
       double min = encoded * Geo3DUtil.DECODE;
       double decoded = Geo3DUtil.decodeValueFloor(encoded);
       // should exactly equal expected value


[39/50] [abbrv] lucene-solr:apiv2: Address Solr Changes.html problems: 1) In solr/CHANGES.txt, add a 'Versions of Major Components' section to the 6.2.0 and 6.1.0 releases; 2) In addVersion.py: when adding a new version to solr/CHANGES.txt, add a line re

Posted by no...@apache.org.
Address Solr Changes.html problems: 1) In solr/CHANGES.txt, add a 'Versions of Major Components' section to the 6.2.0 and 6.1.0 releases; 2) In addVersion.py: when adding a new version to solr/CHANGES.txt, add a line referring to LUCENE_CHANGES.txt, and add a 'Versions of Major Components' section with versions interpolated from ivy-versions.properties; and 3) In changes2html.pl: allow section names to have up to 6 words (to handle 'Upgrading from Solr any prior release')


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/843adfb7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/843adfb7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/843adfb7

Branch: refs/heads/apiv2
Commit: 843adfb7ba136f092eddb2b2da95b38e17804533
Parents: a2a1bd2
Author: Steve Rowe <sa...@apache.org>
Authored: Mon Jun 13 20:13:14 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Mon Jun 13 20:13:14 2016 -0400

----------------------------------------------------------------------
 dev-tools/scripts/addVersion.py     | 34 ++++++++++++++++++++++++++++----
 lucene/site/changes/changes2html.pl |  4 ++--
 solr/CHANGES.txt                    | 23 +++++++++++++++++----
 3 files changed, 51 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/843adfb7/dev-tools/scripts/addVersion.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/addVersion.py b/dev-tools/scripts/addVersion.py
index 630e86f..cc41116 100644
--- a/dev-tools/scripts/addVersion.py
+++ b/dev-tools/scripts/addVersion.py
@@ -20,8 +20,10 @@ from scriptutil import *
 
 import argparse
 import re
+from configparser import ConfigParser, ExtendedInterpolation
+from textwrap import dedent
 
-def update_changes(filename, new_version):
+def update_changes(filename, new_version, init_changes = '(No Changes)\n\n'):
   print('  adding new section to %s...' % filename, end='', flush=True)
   matcher = re.compile(r'\d+\.\d+\.\d+\s+===')
   def edit(buffer, match, line):
@@ -30,7 +32,7 @@ def update_changes(filename, new_version):
     match = new_version.previous_dot_matcher.search(line)
     if match is not None:
       buffer.append(line.replace(match.group(0), new_version.dot))
-      buffer.append('(No Changes)\n\n')
+      buffer.append(init_changes)
     buffer.append(line)
     return match is not None
      
@@ -184,14 +186,38 @@ def read_config():
   print ("branch_type is %s " % c.branch_type)
 
   return c
+
+# Hack ConfigParser, designed to parse INI files, to parse & interpolate Java .properties files
+def parse_properties_file(filename):
+  contents = open(filename, encoding='ISO-8859-1').read().replace('%', '%%') # Escape interpolation metachar
+  parser = ConfigParser(interpolation=ExtendedInterpolation())               # Handle ${property-name} interpolation
+  parser.read_string("[DUMMY_SECTION]\n" + contents)                         # Add required section
+  return dict(parser.items('DUMMY_SECTION'))
+
+def get_solr_init_changes():
+  return dedent('''
+    Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
+
+    Versions of Major Components
+    ---------------------
+    Apache Tika %(org.apache.tika.version)s
+    Carrot2 %(/org.carrot2/carrot2-mini)s
+    Velocity %(/org.apache.velocity/velocity)s and Velocity Tools %(/org.apache.velocity/velocity-tools)s
+    Apache UIMA %(org.apache.uima.version)s
+    Apache ZooKeeper %(/org.apache.zookeeper/zookeeper)s
+    Jetty %(org.eclipse.jetty.version)s
+
+
+    (No Changes)\n\n
+    ''' % parse_properties_file('lucene/ivy-versions.properties'))
   
 def main():
   c = read_config() 
 
   print('\nAdding new version %s' % c.version)
   update_changes('lucene/CHANGES.txt', c.version)
-  update_changes('solr/CHANGES.txt', c.version)
-  add_constant(c.version, not c.matching_branch) 
+  update_changes('solr/CHANGES.txt', c.version, get_solr_init_changes())
+  add_constant(c.version, not c.matching_branch)
 
   if c.matching_branch:
     print('\nUpdating latest version')

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/843adfb7/lucene/site/changes/changes2html.pl
----------------------------------------------------------------------
diff --git a/lucene/site/changes/changes2html.pl b/lucene/site/changes/changes2html.pl
index 5399930..d71f296 100755
--- a/lucene/site/changes/changes2html.pl
+++ b/lucene/site/changes/changes2html.pl
@@ -117,10 +117,10 @@ for (my $line_num = 0 ; $line_num <= $#lines ; ++$line_num) {
   }
 
   # Section heading: no leading whitespace, initial word capitalized,
-  #                  five words or less, and no trailing punctuation, 
+  #                  six words or less, and no trailing punctuation,
   #                  except colons - don't match the one otherwise matching
   #                  non-section-name by excluding "StandardTokenizer"
-  if (    /^(?!.*StandardTokenizer)([A-Z]\S*(?:\s+\S+){0,4})(?<![-.;!()])\s*$/
+  if (    /^(?!.*StandardTokenizer)([A-Z]\S*(?:\s+\S+){0,5})(?<![-.;!()])\s*$/
       and not $in_major_component_versions_section) {
     my $heading = $1;
     $heading =~ s/:$//; # Strip trailing colon, if any

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/843adfb7/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 82b8760..e2a7112 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -47,9 +47,14 @@ Optimizations
 
 ==================  6.2.0 ==================
 
-
-Upgrading from Solr any prior release
-----------------------
+Versions of Major Components
+---------------------
+Apache Tika 1.7
+Carrot2 3.12.0
+Velocity 1.7 and Velocity Tools 2.0
+Apache UIMA 2.3.1
+Apache ZooKeeper 3.4.6
+Jetty 9.3.8.v20160314
 
 Detailed Change List
 ----------------------
@@ -59,7 +64,6 @@ New Features
 
 * SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields
 
-
 Bug Fixes
 ----------------------
 
@@ -72,6 +76,17 @@ Bug Fixes
 
 ==================  6.1.0 ==================
 
+Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
+
+Versions of Major Components
+---------------------
+Apache Tika 1.7
+Carrot2 3.12.0
+Velocity 1.7 and Velocity Tools 2.0
+Apache UIMA 2.3.1
+Apache ZooKeeper 3.4.6
+Jetty 9.3.8.v20160314
+
 Upgrading from Solr any prior release
 ----------------------
 


[07/50] [abbrv] lucene-solr:apiv2: SOLR-9176: Fix facet method fallback selection

Posted by no...@apache.org.
SOLR-9176: Fix facet method fallback selection


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/0eacfe87
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/0eacfe87
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/0eacfe87

Branch: refs/heads/apiv2
Commit: 0eacfe87c28bb8725ee70626eab762fe596ff79e
Parents: a923d94
Author: Alan Woodward <ro...@apache.org>
Authored: Fri Jun 10 15:23:27 2016 +0100
Committer: Alan Woodward <ro...@apache.org>
Committed: Fri Jun 10 15:40:25 2016 +0100

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   3 +
 .../org/apache/solr/request/SimpleFacets.java   | 112 ++++++----
 .../apache/solr/request/TestFacetMethods.java   | 207 +++++++++++++++++++
 .../org/apache/solr/request/TestFaceting.java   |  48 ++++-
 4 files changed, 319 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0eacfe87/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 73a60f2..b9b88d3 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -207,6 +207,9 @@ Bug Fixes
   and there are explicit operators (except for AND) - addresses problems caused by SOLR-2649.
   (Greg Pendlebury, Jan H�ydahl, Erick Erickson, Steve Rowe)
 
+* SOLR-9176: facet method ENUM was sometimes unnecessarily being rewritten to
+  FCS, causing slowdowns (Alessandro Benedetti, Jesse McLaughlin, Alan Woodward)
+
 Optimizations
 ----------------------
 * SOLR-8722: Don't force a full ZkStateReader refresh on every Overseer operation.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0eacfe87/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 0668ee6..c804b74 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -413,54 +413,27 @@ public class SimpleFacets {
 
     // determine what type of faceting method to use
     final String methodStr = params.getFieldParam(field, FacetParams.FACET_METHOD);
-    FacetMethod method = null;
+    final FacetMethod requestedMethod;
     if (FacetParams.FACET_METHOD_enum.equals(methodStr)) {
-      method = FacetMethod.ENUM;
+      requestedMethod = FacetMethod.ENUM;
     } else if (FacetParams.FACET_METHOD_fcs.equals(methodStr)) {
-      method = FacetMethod.FCS;
+      requestedMethod = FacetMethod.FCS;
     } else if (FacetParams.FACET_METHOD_fc.equals(methodStr)) {
-      method = FacetMethod.FC;
+      requestedMethod = FacetMethod.FC;
     } else if(FacetParams.FACET_METHOD_uif.equals(methodStr)) {
-      method = FacetMethod.UIF;
-    }
-
-    if (method == FacetMethod.ENUM && TrieField.getMainValuePrefix(ft) != null) {
-      // enum can't deal with trie fields that index several terms per value
-      method = sf.multiValued() ? FacetMethod.FC : FacetMethod.FCS;
-    }
-
-    if (method == null && ft instanceof BoolField) {
-      // Always use filters for booleans... we know the number of values is very small.
-      method = FacetMethod.ENUM;
+      requestedMethod = FacetMethod.UIF;
+    }else{
+      requestedMethod=null;
     }
 
     final boolean multiToken = sf.multiValued() || ft.multiValuedFieldCache();
-    
-    if (ft.getNumericType() != null && !sf.multiValued()) {
-      // the per-segment approach is optimal for numeric field types since there
-      // are no global ords to merge and no need to create an expensive
-      // top-level reader
-      method = FacetMethod.FCS;
-    }
-
-    if (method == null) {
-      // TODO: default to per-segment or not?
-      method = FacetMethod.FC;
-    }
 
-    if (method == FacetMethod.FCS && multiToken) {
-      // only fc knows how to deal with multi-token fields
-      method = FacetMethod.FC;
-    }
-    
-    if (method == FacetMethod.ENUM && sf.hasDocValues()) {
-      // only fc can handle docvalues types
-      method = FacetMethod.FC;
-    }
+    FacetMethod appliedFacetMethod = selectFacetMethod(sf, requestedMethod, mincount);
 
     RTimer timer = null;
     if (fdebug != null) {
-       fdebug.putInfoItem("method", method.name());
+       fdebug.putInfoItem("requestedMethod", requestedMethod==null?"not specified":requestedMethod.name());
+       fdebug.putInfoItem("appliedMethod", appliedFacetMethod.name());
        fdebug.putInfoItem("inputDocSetSize", docs.size());
        fdebug.putInfoItem("field", field);
        timer = new RTimer();
@@ -469,8 +442,8 @@ public class SimpleFacets {
     if (params.getFieldBool(field, GroupParams.GROUP_FACET, false)) {
       counts = getGroupedCounts(searcher, docs, field, multiToken, offset,limit, mincount, missing, sort, prefix, contains, ignoreCase);
     } else {
-      assert method != null;
-      switch (method) {
+      assert appliedFacetMethod != null;
+      switch (appliedFacetMethod) {
         case ENUM:
           assert TrieField.getMainValuePrefix(ft) == null;
           counts = getFacetTermEnumCounts(searcher, docs, field, offset, limit, mincount,missing,sort,prefix, contains, ignoreCase, params);
@@ -494,7 +467,6 @@ public class SimpleFacets {
           }
           break;
         case UIF:
-
             //Emulate the JSON Faceting structure so we can use the same parsing classes
             Map<String, Object> jsonFacet = new HashMap<>(13);
             jsonFacet.put("type", "terms");
@@ -566,6 +538,66 @@ public class SimpleFacets {
     return counts;
   }
 
+  /**
+   * This method will force the appropriate facet method even if the user provided a different one as a request parameter
+   *
+   * N.B. this method could overwrite what you passed as request parameter. Be Extra careful
+   *
+   * @param field field we are faceting
+   * @param method the facet method passed as a request parameter
+   * @param mincount the minimum value a facet should have to be returned
+   * @return the FacetMethod to use
+   */
+   static FacetMethod selectFacetMethod(SchemaField field, FacetMethod method, Integer mincount) {
+
+     FieldType type = field.getType();
+
+     /*The user did not specify any preference*/
+     if (method == null) {
+      /* Always use filters for booleans... we know the number of values is very small. */
+       if (type instanceof BoolField) {
+         method = FacetMethod.ENUM;
+       } else if (type.getNumericType() != null && !field.multiValued()) {
+        /* the per-segment approach is optimal for numeric field types since there
+           are no global ords to merge and no need to create an expensive
+           top-level reader */
+         method = FacetMethod.FCS;
+       } else {
+         // TODO: default to per-segment or not?
+         method = FacetMethod.FC;
+       }
+     }
+
+     /* FC without docValues does not support single valued numeric facets */
+     if (method == FacetMethod.FC
+         && type.getNumericType() != null && !field.multiValued()) {
+       method = FacetMethod.FCS;
+     }
+
+     /* UIF without DocValues can't deal with mincount=0, the reason is because
+         we create the buckets based on the values present in the result set.
+         So we are not going to see facet values which are not in the result set */
+     if (method == FacetMethod.UIF
+         && !field.hasDocValues() && mincount == 0) {
+       method = field.multiValued() ? FacetMethod.FC : FacetMethod.FCS;
+     }
+
+     /* ENUM can't deal with trie fields that index several terms per value */
+     if (method == FacetMethod.ENUM
+         && TrieField.getMainValuePrefix(type) != null) {
+       method = field.multiValued() ? FacetMethod.FC : FacetMethod.FCS;
+     }
+
+     /* FCS can't deal with multi token fields */
+     final boolean multiToken = field.multiValued() || type.multiValuedFieldCache();
+     if (method == FacetMethod.FCS
+         && multiToken) {
+       method = FacetMethod.FC;
+     }
+
+     return method;
+  }
+
   public NamedList<Integer> getGroupedCounts(SolrIndexSearcher searcher,
                                              DocSet base,
                                              String field,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0eacfe87/solr/core/src/test/org/apache/solr/request/TestFacetMethods.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestFacetMethods.java b/solr/core/src/test/org/apache/solr/request/TestFacetMethods.java
new file mode 100644
index 0000000..29c0ef2
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/request/TestFacetMethods.java
@@ -0,0 +1,207 @@
+package org.apache.solr.request;
+
+/*
+ * 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.
+ */
+
+import org.apache.solr.schema.BoolField;
+import org.apache.solr.schema.SchemaField;
+import org.apache.solr.schema.StrField;
+import org.apache.solr.schema.TrieIntField;
+import org.junit.Test;
+
+import static junit.framework.Assert.assertEquals;
+
+public class TestFacetMethods {
+
+  // TODO - make these public in FieldProperties?
+  protected final static int MULTIVALUED         = 0x00000200;
+  protected final static int DOC_VALUES          = 0x00008000;
+
+  @Test
+  public void testNumericSingleValuedDV() {
+
+    SchemaField field = new SchemaField("field", new TrieIntField(), DOC_VALUES, null);
+
+    // default is FCS, can't use ENUM due to trie-field terms, FC rewrites to FCS for efficiency
+
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+
+  }
+
+  @Test
+  public void testNumericMultiValuedDV() {
+
+    SchemaField field = new SchemaField("field", new TrieIntField(), DOC_VALUES ^ MULTIVALUED, null);
+
+    // default is FC, can't use ENUM due to trie-field terms, can't use FCS because of multivalues
+
+    // default value is FC
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+
+  }
+
+  @Test
+  public void testNumericSingleValuedNoDV() {
+
+    SchemaField field = new SchemaField("field", new TrieIntField(), 0, null);
+
+    // only works with FCS for mincount = 0, UIF for count > 0 is fine
+
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+
+  }
+
+  @Test
+  public void testNumericMultiValuedNoDV() {
+
+    SchemaField field = new SchemaField("field", new TrieIntField(), MULTIVALUED, null);
+
+    // only works with FC for mincount = 0, UIF for count > 1 is fine
+
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+
+  }
+
+  @Test
+  public void testTextSingleValuedDV() {
+
+    SchemaField field = new SchemaField("field", new StrField(), DOC_VALUES, null);
+
+    // default is FC, otherwise just uses the passed-in method
+
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+
+  }
+
+  @Test
+  public void testTextMultiValuedDV() {
+
+    SchemaField field = new SchemaField("field", new StrField(), DOC_VALUES ^ MULTIVALUED, null);
+
+    // default is FC, can't use FCS because of multivalues
+
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+
+  }
+
+  @Test
+  public void testTextSingleValuedNoDV() {
+
+    SchemaField field = new SchemaField("field", new StrField(), 0, null);
+
+    // default is FC, UIF rewrites to FCS for mincount = 0
+    // TODO should it rewrite to FC instead?
+
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FCS, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+
+  }
+
+  @Test
+  public void testTextMultiValuedNoDV() {
+
+    SchemaField field = new SchemaField("field", new StrField(), MULTIVALUED, null);
+
+    // default is FC, can't use FCS for multivalued fields, UIF rewrites to FC for mincount = 0
+
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 0));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, null, 1));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.ENUM, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FCS, 1));
+    assertEquals(SimpleFacets.FacetMethod.UIF, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.UIF, 1));
+    assertEquals(SimpleFacets.FacetMethod.FC, SimpleFacets.selectFacetMethod(field, SimpleFacets.FacetMethod.FC, 1));
+
+  }
+
+  @Test
+  public void testBooleanDefaults() {
+
+    // BoolField defaults to ENUM
+
+    SchemaField field = new SchemaField("field", new BoolField(), 0, null);
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, null, 0));
+    assertEquals(SimpleFacets.FacetMethod.ENUM, SimpleFacets.selectFacetMethod(field, null, 1));
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0eacfe87/solr/core/src/test/org/apache/solr/request/TestFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestFaceting.java b/solr/core/src/test/org/apache/solr/request/TestFaceting.java
index 4dd49e1..cee9f52 100644
--- a/solr/core/src/test/org/apache/solr/request/TestFaceting.java
+++ b/solr/core/src/test/org/apache/solr/request/TestFaceting.java
@@ -255,17 +255,17 @@ public class TestFaceting extends SolrTestCaseJ4 {
 
     int i=iter-1;
     assertQ("check many tokens",
-            req("q", "id:"+t(i),"indent","true"
-                ,"facet", "true", "facet.method",((methodSeed + i)%2 ==0 ?"fc":"uif")
-                ,"facet.field", "many_ws"
-                ,"facet.limit", "-1"
-                ,"facet.mincount", "1"
+        req("q", "id:" + t(i), "indent", "true"
+            , "facet", "true", "facet.method", ((methodSeed + i) % 2 == 0 ? "fc" : "uif")
+            , "facet.field", "many_ws"
+            , "facet.limit", "-1"
+            , "facet.mincount", "1"
 
-                )
-            ,"*[count(//lst[@name='many_ws']/int)=" + 2 + "]"
-            ,"//lst[@name='many_ws']/int[@name='" + t(i1+i) + "'][.='1']"
-            ,"//lst[@name='many_ws']/int[@name='" + t(i1*2+i) + "'][.='1']"
-            );
+        )
+        , "*[count(//lst[@name='many_ws']/int)=" + 2 + "]"
+        , "//lst[@name='many_ws']/int[@name='" + t(i1 + i) + "'][.='1']"
+        , "//lst[@name='many_ws']/int[@name='" + t(i1 * 2 + i) + "'][.='1']"
+    );
   }
 
   @Test
@@ -314,8 +314,34 @@ public class TestFaceting extends SolrTestCaseJ4 {
         "//lst[@name='facet_fields']/lst[@name='f_td']/int[1][@name='-420.126']",
         "//lst[@name='facet_fields']/lst[@name='f_td']/int[2][@name='-285.672']",
         "//lst[@name='facet_fields']/lst[@name='f_td']/int[3][@name='-1.218']");
+
+    assertQ(req("q", "*:*", FacetParams.FACET, "true", FacetParams.FACET_FIELD, "f_td", "f.f_td.facet.sort", FacetParams.FACET_SORT_INDEX, FacetParams.FACET_MINCOUNT, "1", FacetParams.FACET_METHOD, FacetParams.FACET_METHOD_uif),
+        "*[count(//lst[@name='f_td']/int)=3]",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[1][@name='-420.126']",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[2][@name='-285.672']",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[3][@name='-1.218']");
     
-    assertQ(req("q", "*:*", FacetParams.FACET, "true", FacetParams.FACET_FIELD, "f_td", "f.f_td.facet.sort", FacetParams.FACET_SORT_INDEX, FacetParams.FACET_MINCOUNT, "1", "indent","true"),
+    assertQ(req("q", "*:*", FacetParams.FACET, "true", FacetParams.FACET_FIELD, "f_td", "f.f_td.facet.sort", FacetParams.FACET_SORT_INDEX, FacetParams.FACET_MINCOUNT, "1", "indent", "true"),
+        "*[count(//lst[@name='f_td']/int)=3]",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[1][@name='-420.126']",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[2][@name='-285.672']",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[3][@name='-1.218']");
+  }
+
+  @Test
+  public void testFacetSortWithMinCount0() {
+    assertU(adoc("id", "1.0", "f_td", "-420.126"));
+    assertU(adoc("id", "2.0", "f_td", "-285.672"));
+    assertU(adoc("id", "3.0", "f_td", "-1.218"));
+    assertU(commit());
+
+    assertQ(req("q", "id:1.0", FacetParams.FACET, "true", FacetParams.FACET_FIELD, "f_td", "f.f_td.facet.sort", FacetParams.FACET_SORT_INDEX, FacetParams.FACET_MINCOUNT, "0", FacetParams.FACET_METHOD, FacetParams.FACET_METHOD_fc),
+        "*[count(//lst[@name='f_td']/int)=3]",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[1][@name='-420.126']",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[2][@name='-285.672']",
+        "//lst[@name='facet_fields']/lst[@name='f_td']/int[3][@name='-1.218']");
+
+    assertQ(req("q", "id:1.0", FacetParams.FACET, "true", FacetParams.FACET_FIELD, "f_td", "f.f_td.facet.sort", FacetParams.FACET_SORT_INDEX, FacetParams.FACET_MINCOUNT, "0", FacetParams.FACET_METHOD, FacetParams.FACET_METHOD_uif),
         "*[count(//lst[@name='f_td']/int)=3]",
         "//lst[@name='facet_fields']/lst[@name='f_td']/int[1][@name='-420.126']",
         "//lst[@name='facet_fields']/lst[@name='f_td']/int[2][@name='-285.672']",


[30/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
LUCENE-7319: remove unused imports


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/52f5c502
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/52f5c502
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/52f5c502

Branch: refs/heads/apiv2
Commit: 52f5c502468846138f73ab83837528fa91a54733
Parents: b9ded92
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Jun 13 09:35:09 2016 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Jun 13 09:59:14 2016 +0100

----------------------------------------------------------------------
 .../lucene/analysis/ar/ArabicAnalyzer.java      |  1 -
 .../charfilter/HTMLStripCharFilter.java         |  1 -
 .../analysis/charfilter/NormalizeCharMap.java   |  2 --
 .../lucene/analysis/ckb/SoraniAnalyzer.java     |  1 -
 .../HyphenationCompoundWordTokenFilter.java     |  1 -
 ...phenationCompoundWordTokenFilterFactory.java |  1 -
 .../lucene/analysis/core/StopAnalyzer.java      |  1 -
 .../lucene/analysis/en/PorterStemmer.java       |  4 ---
 .../lucene/analysis/fa/PersianAnalyzer.java     |  1 -
 .../lucene/analysis/hi/HindiAnalyzer.java       |  1 -
 .../WordDelimiterFilterFactory.java             |  2 --
 .../analysis/ngram/EdgeNGramTokenizer.java      |  1 -
 .../lucene/analysis/nl/DutchAnalyzer.java       |  1 -
 .../pattern/PatternCaptureGroupTokenFilter.java |  1 -
 .../query/QueryAutoStopWordAnalyzer.java        |  1 -
 .../analysis/standard/ClassicTokenizerImpl.java |  1 -
 .../standard/UAX29URLEmailTokenizerFactory.java |  1 -
 .../analysis/synonym/SynonymFilterFactory.java  |  2 --
 .../lucene/analysis/synonym/SynonymMap.java     |  2 --
 .../apache/lucene/analysis/th/ThaiAnalyzer.java |  1 -
 .../lucene/analysis/tr/TurkishAnalyzer.java     |  1 -
 .../analysis/wikipedia/WikipediaTokenizer.java  |  1 -
 .../lucene/collation/CollationKeyAnalyzer.java  |  2 --
 .../lucene/analysis/ar/TestArabicAnalyzer.java  |  1 -
 .../ar/TestArabicNormalizationFilter.java       |  1 -
 .../bg/TestBulgarianStemFilterFactory.java      |  1 -
 .../analysis/br/TestBrazilianAnalyzer.java      |  1 -
 .../TestHTMLStripCharFilterFactory.java         |  1 -
 .../analysis/cjk/TestCJKWidthFilterFactory.java |  1 -
 .../lucene/analysis/ckb/TestSoraniAnalyzer.java |  1 -
 .../TestSoraniNormalizationFilterFactory.java   |  1 -
 .../commongrams/CommonGramsFilterTest.java      |  1 -
 .../TestCommonGramsQueryFilterFactory.java      |  3 --
 .../analysis/core/TestKeywordAnalyzer.java      |  1 -
 .../lucene/analysis/core/TestRandomChains.java  |  1 -
 .../de/TestGermanLightStemFilterFactory.java    |  1 -
 .../analysis/de/TestGermanStemFilter.java       |  1 -
 .../el/TestGreekLowerCaseFilterFactory.java     |  1 -
 .../analysis/el/TestGreekStemFilterFactory.java |  1 -
 .../en/TestEnglishMinimalStemFilterFactory.java |  1 -
 .../analysis/en/TestKStemFilterFactory.java     |  1 -
 .../en/TestPorterStemFilterFactory.java         |  1 -
 .../lucene/analysis/fa/TestPersianAnalyzer.java |  1 -
 .../TestPersianNormalizationFilterFactory.java  |  1 -
 .../fr/TestFrenchLightStemFilterFactory.java    |  1 -
 .../fr/TestFrenchMinimalStemFilterFactory.java  |  1 -
 .../ga/TestIrishLowerCaseFilterFactory.java     |  1 -
 .../TestGalicianMinimalStemFilterFactory.java   |  1 -
 .../gl/TestGalicianStemFilterFactory.java       |  1 -
 .../lucene/analysis/hi/TestHindiAnalyzer.java   |  1 -
 .../lucene/analysis/hi/TestHindiFilters.java    |  2 --
 .../lucene/analysis/hi/TestHindiNormalizer.java |  4 ---
 .../hu/TestHungarianLightStemFilterFactory.java |  1 -
 .../analysis/hunspell/Test64kAffixes.java       |  2 --
 .../analysis/hunspell/TestAllDictionaries.java  |  1 -
 .../analysis/hunspell/TestAllDictionaries2.java |  1 -
 .../analysis/hunspell/TestDictionary.java       |  1 -
 .../hunspell/TestHunspellStemFilter.java        |  1 -
 .../it/TestItalianLightStemFilterFactory.java   |  1 -
 .../miscellaneous/TestKeywordMarkerFilter.java  |  2 --
 .../miscellaneous/TestTrimFilterFactory.java    |  1 -
 .../no/TestNorwegianLightStemFilterFactory.java |  1 -
 .../TestPatternReplaceCharFilterFactory.java    |  1 -
 .../TestPatternReplaceFilterFactory.java        |  1 -
 .../DelimitedPayloadTokenFilterTest.java        |  4 ---
 .../pt/TestPortugueseStemFilterFactory.java     |  1 -
 .../reverse/TestReverseStringFilterFactory.java |  1 -
 .../ru/TestRussianLightStemFilterFactory.java   |  1 -
 .../analysis/shingle/ShingleFilterTest.java     |  1 -
 .../shingle/TestShingleFilterFactory.java       |  1 -
 .../standard/TestStandardFactories.java         |  1 -
 .../lucene/analysis/th/TestThaiAnalyzer.java    |  1 -
 .../collation/ICUCollationKeyAnalyzer.java      |  3 --
 .../icu/TestICUFoldingFilterFactory.java        |  1 -
 .../icu/TestICUNormalizer2FilterFactory.java    |  1 -
 .../icu/TestICUTransformFilterFactory.java      |  1 -
 .../segmentation/TestICUTokenizerFactory.java   |  1 -
 .../analysis/ja/dict/ConnectionCosts.java       |  1 -
 .../lucene/analysis/ja/dict/UserDictionary.java |  1 -
 .../TestDoubleMetaphoneFilterFactory.java       |  3 --
 .../TestStempelPolishStemFilterFactory.java     |  1 -
 .../uima/UIMAAnnotationsTokenizerFactory.java   |  1 -
 .../lucene/analysis/uima/UIMABaseAnalyzer.java  |  1 -
 ...IMATypeAwareAnnotationsTokenizerFactory.java |  1 -
 .../uima/UIMATypeAwareAnalyzerTest.java         |  1 -
 .../lucene50/Lucene50SegmentInfoFormat.java     |  4 ---
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |  4 ---
 .../benchmark/byTask/tasks/AddIndexesTask.java  |  3 --
 .../byTask/tasks/NearRealtimeReaderTask.java    |  1 -
 .../benchmark/byTask/tasks/OpenReaderTask.java  |  1 -
 .../lucene/benchmark/byTask/tasks/ReadTask.java |  1 -
 .../byTask/tasks/ReopenReaderTask.java          |  1 -
 .../byTask/tasks/RollbackIndexTask.java         |  2 --
 .../byTask/tasks/WriteEnwikiLineDocTask.java    |  1 -
 .../benchmark/quality/utils/SimpleQQParser.java |  1 -
 .../tasks/WriteEnwikiLineDocTaskTest.java       |  4 ---
 .../lucene/classification/Classifier.java       |  4 ---
 .../SimpleNaiveBayesDocumentClassifier.java     |  2 --
 .../classification/utils/DatasetSplitter.java   |  2 --
 .../SimpleNaiveBayesClassifierTest.java         |  1 -
 .../utils/DocToDoubleVectorUtilsTest.java       |  2 --
 .../codecs/blockterms/BlockTermsReader.java     |  1 -
 .../blocktreeords/OrdsIntersectTermsEnum.java   |  2 --
 .../blocktreeords/OrdsSegmentTermsEnum.java     |  2 --
 .../lucene/codecs/memory/FSTOrdTermsReader.java |  1 -
 .../simpletext/SimpleTextFieldsReader.java      |  1 -
 .../simpletext/SimpleTextLiveDocsFormat.java    |  2 --
 .../simpletext/SimpleTextTermVectorsReader.java |  1 -
 .../java/org/apache/lucene/analysis/Token.java  |  1 -
 .../org/apache/lucene/codecs/NormsConsumer.java |  2 --
 .../lucene/codecs/StoredFieldsWriter.java       |  1 -
 .../apache/lucene/codecs/TermVectorsWriter.java |  1 -
 .../codecs/lucene50/Lucene50PostingsFormat.java |  1 -
 .../lucene62/Lucene62SegmentInfoFormat.java     |  1 -
 .../org/apache/lucene/index/DocIDMerger.java    |  2 --
 .../index/DocumentsWriterPerThreadPool.java     |  2 --
 .../apache/lucene/index/IndexWriterConfig.java  |  1 -
 .../lucene/index/MappingMultiPostingsEnum.java  |  2 --
 .../org/apache/lucene/index/MergePolicy.java    |  2 --
 .../org/apache/lucene/index/MergeState.java     |  1 -
 .../org/apache/lucene/index/MultiSorter.java    |  1 -
 .../index/TermVectorsConsumerPerField.java      |  1 -
 .../apache/lucene/index/TermsHashPerField.java  |  1 -
 .../apache/lucene/search/BlendedTermQuery.java  |  1 -
 .../EarlyTerminatingSortingCollector.java       |  1 -
 .../apache/lucene/search/FuzzyTermsEnum.java    |  1 -
 .../java/org/apache/lucene/search/Multiset.java |  2 --
 .../apache/lucene/search/PointInSetQuery.java   |  6 ----
 .../org/apache/lucene/search/RegexpQuery.java   |  1 -
 .../lucene/store/ByteArrayIndexInput.java       |  2 --
 .../org/apache/lucene/util/CharsRefBuilder.java |  1 -
 .../automaton/DaciukMihovAutomatonBuilder.java  |  1 -
 .../lucene/util/mutable/MutableValueStr.java    |  1 -
 .../util/packed/MonotonicBlockPackedWriter.java |  1 -
 .../lucene/util/packed/MonotonicLongValues.java |  1 -
 .../lucene54/TestLucene54DocValuesFormat.java   |  2 --
 .../apache/lucene/document/TestFieldType.java   |  2 --
 .../org/apache/lucene/index/Test2BPoints.java   |  6 ----
 .../index/TestBinaryDocValuesUpdates.java       |  2 --
 .../org/apache/lucene/index/TestCodecs.java     |  5 ---
 .../lucene/index/TestDirectoryReader.java       |  1 -
 .../apache/lucene/index/TestDocIDMerger.java    |  2 --
 .../lucene/index/TestDocsAndPositions.java      |  1 -
 .../apache/lucene/index/TestFieldsReader.java   |  1 -
 .../lucene/index/TestIndexFileDeleter.java      |  4 ---
 .../org/apache/lucene/index/TestIndexInput.java |  4 ---
 .../apache/lucene/index/TestIndexSorting.java   |  7 ----
 .../apache/lucene/index/TestIndexWriter.java    |  3 --
 .../lucene/index/TestIndexWriterCommit.java     |  1 -
 .../lucene/index/TestIndexWriterConfig.java     |  1 -
 .../lucene/index/TestIndexWriterForceMerge.java |  4 ---
 .../lucene/index/TestIndexWriterFromReader.java |  1 -
 .../index/TestIndexWriterLockRelease.java       |  2 --
 .../lucene/index/TestIndexWriterOnDiskFull.java |  2 --
 .../index/TestIndexingSequenceNumbers.java      |  2 --
 .../lucene/index/TestMergeRateLimiter.java      |  2 --
 .../lucene/index/TestMixedDocValuesUpdates.java |  1 -
 .../apache/lucene/index/TestMultiTermsEnum.java |  1 -
 .../apache/lucene/index/TestNeverDelete.java    |  2 --
 .../apache/lucene/index/TestNoMergePolicy.java  |  1 -
 .../index/TestNumericDocValuesUpdates.java      |  2 --
 .../apache/lucene/index/TestOmitPositions.java  |  1 -
 .../org/apache/lucene/index/TestOmitTf.java     |  2 --
 .../index/TestParallelCompositeReader.java      |  2 --
 .../lucene/index/TestParallelTermEnum.java      |  1 -
 .../org/apache/lucene/index/TestPayloads.java   |  1 -
 .../lucene/index/TestPerSegmentDeletes.java     |  2 --
 .../TestPersistentSnapshotDeletionPolicy.java   |  1 -
 .../apache/lucene/index/TestReaderClosed.java   |  1 -
 .../apache/lucene/index/TestSegmentInfos.java   |  1 -
 .../index/TestSnapshotDeletionPolicy.java       |  2 --
 .../TestEarlyTerminatingSortingCollector.java   |  6 ----
 .../apache/lucene/search/TestIndexSearcher.java |  1 -
 .../lucene/search/TestMatchNoDocsQuery.java     |  1 -
 .../apache/lucene/search/TestPhraseQuery.java   |  1 -
 .../apache/lucene/search/TestRegexpRandom2.java |  1 -
 .../apache/lucene/search/TestScorerPerf.java    |  2 --
 .../lucene/search/TestSimilarityProvider.java   |  1 -
 .../lucene/store/TestBufferedIndexInput.java    |  1 -
 .../org/apache/lucene/store/TestDirectory.java  |  1 -
 .../lucene/store/TestFileSwitchDirectory.java   |  1 -
 .../apache/lucene/store/TestRateLimiter.java    |  1 -
 .../lucene/store/TestSimpleFSLockFactory.java   |  1 -
 .../apache/lucene/util/Test2BPagedBytes.java    |  1 -
 .../org/apache/lucene/util/TestIOUtils.java     |  1 -
 .../util/TestRecyclingByteBlockAllocator.java   |  1 -
 .../util/TestRecyclingIntBlockAllocator.java    |  1 -
 .../automaton/FiniteStringsIteratorTest.java    |  1 -
 .../LimitedFiniteStringsIteratorTest.java       |  1 -
 .../test/org/apache/lucene/demo/TestDemo.java   |  2 --
 .../TestExpressionAggregationFacetsExample.java |  3 --
 .../demo/facet/TestRangeFacetsExample.java      |  2 --
 .../facet/TestSimpleSortedSetFacetsExample.java |  1 -
 .../lucene/expressions/js/JavascriptLexer.java  |  3 --
 .../lucene/expressions/js/JavascriptParser.java |  3 --
 .../DefaultSortedSetDocValuesReaderState.java   |  1 -
 .../lucene/facet/taxonomy/TestFacetLabel.java   |  2 --
 .../taxonomy/directory/TestAddTaxonomy.java     | 14 --------
 .../grouping/AbstractGroupFacetCollector.java   |  1 -
 .../highlight/OffsetLimitTokenFilterTest.java   |  1 -
 .../vectorhighlight/IndexTimeSynonymTest.java   |  4 ---
 .../search/join/ToParentBlockJoinQuery.java     |  2 --
 .../lucene/search/join/TestBlockJoin.java       |  1 -
 .../lucene/index/memory/TestMemoryIndex.java    |  6 ----
 .../memory/TestMemoryIndexAgainstRAMDir.java    |  1 -
 .../lucene/index/MultiPassIndexSplitter.java    |  1 -
 .../index/TestMultiPassIndexSplitter.java       |  1 -
 .../search/TestDiversifiedTopDocsCollector.java |  1 -
 .../apache/lucene/util/fst/TestFSTsMisc.java    |  1 -
 .../lucene/queries/function/BoostedQuery.java   |  1 -
 .../function/valuesource/DoubleFieldSource.java |  1 -
 .../SumTotalTermFreqValueSource.java            |  1 -
 .../apache/lucene/queries/TermsQueryTest.java   |  2 --
 .../queries/TestCustomScoreExplanations.java    |  1 -
 .../lucene/queryparser/classic/QueryParser.java |  1 -
 .../classic/QueryParserTokenManager.java        | 10 ------
 .../queryparser/ext/ExtendableQueryParser.java  |  1 -
 .../builders/DummyQueryNodeBuilder.java         |  1 -
 .../StandardSyntaxParserTokenManager.java       | 22 ------------
 .../MultiFieldQueryNodeProcessor.java           |  1 -
 .../StandardQueryNodeProcessorPipeline.java     |  3 --
 .../surround/parser/QueryParser.java            |  2 --
 .../parser/QueryParserTokenManager.java         | 13 --------
 .../queryparser/classic/TestMultiAnalyzer.java  |  2 --
 .../classic/TestMultiPhraseQueryParsing.java    |  1 -
 .../precedence/TestPrecedenceQueryParser.java   |  1 -
 .../standard/TestMultiAnalyzerQPHelper.java     |  3 --
 .../flexible/standard/TestStandardQP.java       |  2 --
 .../simple/TestSimpleQueryParser.java           |  1 -
 .../xml/TestQueryTemplateManager.java           |  1 -
 .../lucene/replicator/nrt/CopyOneFile.java      |  2 --
 .../apache/lucene/replicator/nrt/CopyState.java |  1 -
 .../org/apache/lucene/replicator/nrt/Node.java  | 10 ------
 .../replicator/nrt/ReplicaFileDeleter.java      |  2 --
 .../nrt/SegmentInfosSearcherManager.java        |  1 -
 .../IndexAndTaxonomyRevisionTest.java           |  1 -
 .../lucene/replicator/IndexRevisionTest.java    |  1 -
 .../lucene/replicator/LocalReplicatorTest.java  |  1 -
 .../lucene/replicator/ReplicatorTestCase.java   |  2 --
 .../lucene/replicator/nrt/Connection.java       |  2 --
 .../org/apache/lucene/replicator/nrt/Jobs.java  |  2 --
 .../lucene/replicator/nrt/SimpleCopyJob.java    | 35 --------------------
 .../lucene/replicator/nrt/SimpleTransLog.java   |  3 --
 .../replicator/nrt/TestNRTReplication.java      |  1 -
 .../nrt/TestStressNRTReplication.java           |  1 -
 .../idversion/IDVersionPostingsReader.java      |  1 -
 .../idversion/IDVersionSegmentTermsEnum.java    |  1 -
 .../sandbox/queries/SlowFuzzyTermsEnum.java     |  1 -
 .../search/TokenStreamToTermAutomatonQuery.java |  2 --
 .../org/apache/lucene/spatial3d/Geo3DPoint.java |  9 -----
 .../spatial3d/geom/GeoComplexPolygon.java       |  2 --
 .../lucene/spatial3d/geom/StandardXYZSolid.java |  2 --
 .../apache/lucene/spatial3d/TestGeo3DPoint.java |  1 -
 .../lucene/spatial3d/geom/GeoPolygonTest.java   |  2 --
 .../lucene/search/spell/DirectSpellChecker.java |  2 --
 .../lucene/search/spell/LuceneDictionary.java   |  1 -
 .../search/spell/WordBreakSpellChecker.java     |  1 -
 .../analyzing/AnalyzingInfixSuggester.java      |  1 -
 .../search/suggest/analyzing/FSTUtil.java       |  1 -
 .../suggest/analyzing/SuggestStopFilter.java    |  1 -
 .../suggest/fst/FSTCompletionBuilder.java       |  1 -
 .../search/suggest/jaspell/JaspellLookup.java   |  1 -
 .../search/suggest/FileDictionaryTest.java      |  1 -
 .../lucene/search/suggest/PersistenceTest.java  |  1 -
 .../analyzing/AnalyzingInfixSuggesterTest.java  |  2 --
 .../analyzing/AnalyzingSuggesterTest.java       |  1 -
 .../suggest/analyzing/FuzzySuggesterTest.java   |  1 -
 .../search/suggest/fst/FSTCompletionTest.java   |  1 -
 .../search/suggest/fst/WFSTCompletionTest.java  |  1 -
 .../lucene/analysis/CollationTestBase.java      |  1 -
 .../apache/lucene/analysis/MockAnalyzer.java    |  1 -
 .../apache/lucene/analysis/MockCharFilter.java  |  1 -
 .../lucene/analysis/MockPayloadAnalyzer.java    |  1 -
 .../codecs/asserting/AssertingPointsFormat.java |  1 -
 .../codecs/cranky/CrankyPointsFormat.java       |  3 --
 .../index/BaseTermVectorsFormatTestCase.java    |  2 --
 .../java/org/apache/lucene/index/DocHelper.java |  1 -
 .../apache/lucene/index/ForceMergePolicy.java   |  3 --
 .../ThreadedIndexingAndSearchingTestCase.java   |  1 -
 .../lucene/mockfile/MockFileSystemTestCase.java |  1 -
 .../org/apache/lucene/mockfile/WindowsFS.java   |  4 ---
 .../lucene/store/BaseLockFactoryTestCase.java   |  1 -
 .../apache/lucene/util/CloseableDirectory.java  |  1 -
 .../org/apache/lucene/util/LineFileDocs.java    |  1 -
 .../analysis/TestLookaheadTokenFilter.java      |  1 -
 .../TestCompressingStoredFieldsFormat.java      |  4 ---
 .../TestCompressingTermVectorsFormat.java       |  1 -
 .../lucene/index/TestAssertingLeafReader.java   |  8 -----
 .../lucene/mockfile/TestHandleTrackingFS.java   |  4 ---
 .../apache/lucene/mockfile/TestWindowsFS.java   |  2 --
 .../lucene/store/TestMockDirectoryWrapper.java  |  4 ---
 .../solr/schema/TestICUCollationField.java      |  2 --
 .../analytics/facet/FieldFacetExtrasTest.java   |  1 -
 .../solr/analytics/facet/FieldFacetTest.java    |  1 -
 .../handler/dataimport/DIHCacheSupport.java     |  3 --
 .../handler/dataimport/DataImportHandler.java   |  6 ----
 .../solr/handler/dataimport/DebugInfo.java      |  1 -
 .../solr/handler/dataimport/Evaluator.java      |  5 ---
 .../solr/handler/dataimport/UrlEvaluator.java   |  1 -
 .../dataimport/XPathEntityProcessor.java        |  1 -
 .../apache/solr/handler/dataimport/Zipper.java  |  1 -
 .../dataimport/config/ConfigParseUtil.java      |  6 ----
 .../solr/handler/dataimport/TestDataConfig.java |  1 -
 .../solr/handler/dataimport/TestDocBuilder.java |  1 -
 .../handler/dataimport/TestEphemeralCache.java  |  1 -
 .../dataimport/TestFileListEntityProcessor.java |  1 -
 .../TestFileListWithLineEntityProcessor.java    |  1 -
 .../dataimport/TestHierarchicalDocBuilder.java  |  1 -
 .../dataimport/TestNonWritablePersistFile.java  |  1 -
 .../TestPlainTextEntityProcessor.java           |  1 -
 .../dataimport/TestScriptTransformer.java       |  2 --
 .../dataimport/TestSimplePropertiesWriter.java  |  2 --
 .../dataimport/TestSqlEntityProcessorDelta.java |  1 -
 ...anguageIdentifierUpdateProcessorFactory.java |  1 -
 .../LanguageIdentifierUpdateProcessor.java      |  1 -
 .../solr/hadoop/MapReduceIndexerTool.java       |  3 --
 .../apache/solr/hadoop/SolrOutputFormat.java    |  1 -
 .../apache/solr/hadoop/MorphlineMapperTest.java |  1 -
 .../src/java/org/apache/solr/cloud/Assign.java  |  1 -
 .../org/apache/solr/cloud/DistributedMap.java   |  1 -
 .../solr/cloud/SizeLimitedDistributedMap.java   |  2 --
 .../apache/solr/cloud/overseer/NodeMutator.java |  1 -
 .../solr/cloud/overseer/OverseerAction.java     |  2 --
 .../solr/cloud/overseer/SliceMutator.java       |  2 --
 .../solr/cloud/overseer/ZkStateWriter.java      |  2 --
 .../apache/solr/cloud/rule/ReplicaAssigner.java |  1 -
 .../org/apache/solr/core/BlobRepository.java    |  6 ----
 .../org/apache/solr/core/ConfigOverlay.java     |  4 ---
 .../org/apache/solr/core/ConfigSetService.java  |  1 -
 .../org/apache/solr/core/CoreContainer.java     |  1 -
 .../apache/solr/core/HdfsDirectoryFactory.java  |  1 -
 .../solr/core/SimpleFSDirectoryFactory.java     |  1 -
 .../src/java/org/apache/solr/core/SolrCore.java |  1 -
 .../java/org/apache/solr/core/SolrCores.java    |  2 --
 .../solr/handler/ContentStreamHandlerBase.java  |  1 -
 .../org/apache/solr/handler/GraphHandler.java   |  2 --
 .../solr/handler/MoreLikeThisHandler.java       |  2 --
 .../apache/solr/handler/RealTimeGetHandler.java |  1 -
 .../apache/solr/handler/RequestHandlerBase.java |  2 --
 .../solr/handler/admin/ConfigSetsHandler.java   |  1 -
 .../solr/handler/admin/CoreAdminHandler.java    |  2 --
 .../handler/admin/ShowFileRequestHandler.java   |  2 --
 .../handler/admin/SolrInfoMBeanHandler.java     |  1 -
 .../handler/component/HighlightComponent.java   |  1 -
 .../solr/handler/component/QueryComponent.java  |  2 --
 .../handler/component/RealTimeGetComponent.java |  1 -
 .../handler/component/SpellCheckComponent.java  |  2 --
 .../handler/component/SpellCheckMergeData.java  |  1 -
 .../handler/component/StatsValuesFactory.java   |  3 --
 .../solr/handler/component/TermsComponent.java  |  1 -
 .../solr/highlight/PostingsSolrHighlighter.java |  1 -
 .../solr/index/SlowCompositeReaderWrapper.java  |  1 -
 .../apache/solr/index/SortingMergePolicy.java   | 21 ------------
 .../org/apache/solr/internal/csv/CSVParser.java |  2 --
 .../apache/solr/internal/csv/CSVPrinter.java    |  2 --
 .../org/apache/solr/parser/QueryParser.java     |  6 ----
 .../solr/parser/QueryParserTokenManager.java    | 13 --------
 .../apache/solr/parser/SolrQueryParserBase.java |  1 -
 .../apache/solr/request/SolrRequestInfo.java    |  1 -
 .../org/apache/solr/request/json/JSONUtil.java  |  6 ----
 .../apache/solr/request/json/ObjectUtil.java    |  3 --
 .../solr/response/BinaryResponseWriter.java     |  1 -
 .../solr/response/GeoJSONResponseWriter.java    |  1 -
 .../solr/response/JSONResponseWriter.java       |  5 ---
 .../response/PHPSerializedResponseWriter.java   |  1 -
 .../org/apache/solr/response/ResultContext.java |  1 -
 .../transform/ExcludedMarkerFactory.java        |  2 --
 .../org/apache/solr/rest/SolrSchemaRestApi.java |  2 --
 .../schema/analysis/ManagedWordSetResource.java |  1 -
 .../solr/schema/JsonPreAnalyzedParser.java      |  1 -
 .../solr/schema/ManagedIndexSchemaFactory.java  |  2 --
 .../solr/search/CollapsingQParserPlugin.java    |  1 -
 .../apache/solr/search/DisMaxQParserPlugin.java |  1 -
 .../java/org/apache/solr/search/DocSlice.java   |  1 -
 .../search/ExtendedDismaxQParserPlugin.java     |  1 -
 .../apache/solr/search/FieldQParserPlugin.java  |  1 -
 .../solr/search/FunctionQParserPlugin.java      |  1 -
 .../solr/search/FunctionRangeQParserPlugin.java |  1 -
 .../apache/solr/search/JoinQParserPlugin.java   |  1 -
 .../java/org/apache/solr/search/LRUCache.java   |  1 -
 .../apache/solr/search/LuceneQParserPlugin.java |  2 --
 .../solr/search/OldLuceneQParserPlugin.java     |  1 -
 .../apache/solr/search/PrefixQParserPlugin.java |  3 --
 .../java/org/apache/solr/search/QParser.java    |  1 -
 .../org/apache/solr/search/QueryContext.java    |  1 -
 .../org/apache/solr/search/QueryParsing.java    |  3 --
 .../apache/solr/search/RawQParserPlugin.java    |  1 -
 .../apache/solr/search/ReRankQParserPlugin.java |  1 -
 .../apache/solr/search/SimpleQParserPlugin.java |  1 -
 .../apache/solr/search/SolrFieldCacheMBean.java |  1 -
 .../org/apache/solr/search/SolrQueryParser.java | 18 ----------
 .../apache/solr/search/SolrReturnFields.java    |  1 -
 .../solr/search/SpatialBoxQParserPlugin.java    |  1 -
 .../solr/search/SpatialFilterQParserPlugin.java |  1 -
 .../solr/search/SurroundQParserPlugin.java      |  1 -
 .../apache/solr/search/TermQParserPlugin.java   |  1 -
 .../apache/solr/search/TermsQParserPlugin.java  |  1 -
 .../apache/solr/search/XmlQParserPlugin.java    |  1 -
 .../solr/search/facet/AggValueSource.java       |  1 -
 .../org/apache/solr/search/facet/BlockJoin.java |  1 -
 .../apache/solr/search/facet/FacetField.java    |  1 -
 .../facet/FacetFieldProcessorNumeric.java       |  1 -
 .../apache/solr/search/facet/FacetRequest.java  |  2 --
 .../org/apache/solr/search/facet/FieldUtil.java |  2 --
 .../org/apache/solr/search/facet/HLLAgg.java    |  5 ---
 .../apache/solr/search/facet/LegacyFacet.java   |  1 -
 .../solr/search/facet/SimpleAggValueSource.java |  3 --
 .../org/apache/solr/search/facet/SlotAcc.java   |  8 -----
 .../solr/search/facet/StrAggValueSource.java    |  7 ----
 .../solr/search/facet/UnInvertedField.java      |  1 -
 .../solr/search/function/FileFloatSource.java   |  1 -
 .../apache/solr/search/grouping/Command.java    |  2 --
 .../SearchGroupsResultTransformer.java          |  2 --
 .../join/BlockJoinParentQParserPlugin.java      |  1 -
 .../solr/search/join/GraphQParserPlugin.java    |  1 -
 .../org/apache/solr/search/join/GraphQuery.java |  3 --
 .../solr/search/join/GraphQueryParser.java      |  1 -
 .../search/join/ScoreJoinQParserPlugin.java     |  1 -
 .../solr/search/mlt/MLTQParserPlugin.java       |  1 -
 .../SweetSpotSimilarityFactory.java             |  1 -
 .../apache/solr/search/stats/LRUStatsCache.java |  5 ---
 .../solr/security/AuthorizationContext.java     |  1 -
 .../security/AutorizationEditOperation.java     |  2 --
 .../apache/solr/security/KerberosPlugin.java    |  1 -
 .../security/RuleBasedAuthorizationPlugin.java  |  2 --
 .../solr/servlet/DirectSolrConnection.java      |  6 ----
 .../org/apache/solr/servlet/HttpSolrCall.java   |  5 ---
 .../solr/servlet/cache/HttpCacheHeaderUtil.java |  2 --
 .../spelling/AbstractLuceneSpellChecker.java    |  6 ----
 .../solr/spelling/DirectSolrSpellChecker.java   |  6 ----
 .../solr/store/blockcache/BlockCache.java       |  1 -
 .../apache/solr/store/blockcache/Metrics.java   |  1 -
 .../solr/update/DeleteByQueryWrapper.java       |  1 -
 .../apache/solr/update/DeleteUpdateCommand.java |  2 --
 ...tractDefaultValueUpdateProcessorFactory.java |  2 --
 .../CountFieldValuesUpdateProcessorFactory.java | 10 ------
 .../DefaultValueUpdateProcessorFactory.java     |  4 ---
 .../DistributingUpdateProcessorFactory.java     |  2 --
 .../FieldMutatingUpdateProcessorFactory.java    |  1 -
 .../FieldValueSubsetUpdateProcessorFactory.java |  2 --
 .../FirstFieldValueUpdateProcessorFactory.java  |  1 -
 .../LastFieldValueUpdateProcessorFactory.java   |  1 -
 .../solr/update/processor/MD5Signature.java     |  1 -
 .../MaxFieldValueUpdateProcessorFactory.java    |  1 -
 .../MinFieldValueUpdateProcessorFactory.java    |  1 -
 .../NoOpDistributingUpdateProcessorFactory.java |  2 --
 .../ParseDateFieldUpdateProcessorFactory.java   |  2 --
 .../update/processor/RegexpBoostProcessor.java  |  1 -
 .../processor/RunUpdateProcessorFactory.java    |  1 -
 .../TimestampUpdateProcessorFactory.java        |  7 ----
 .../processor/TolerantUpdateProcessor.java      |  6 ----
 .../TolerantUpdateProcessorFactory.java         |  1 -
 .../UniqFieldsUpdateProcessorFactory.java       |  9 -----
 .../processor/UpdateRequestProcessorChain.java  |  1 -
 .../org/apache/solr/util/CommandOperation.java  |  3 --
 .../org/apache/solr/util/PivotListEntry.java    |  2 --
 .../src/java/org/apache/solr/util/SolrCLI.java  |  1 -
 .../org/apache/solr/util/SolrPluginUtils.java   |  1 -
 .../solr/util/xslt/TransformerProvider.java     |  1 -
 .../solr/DistributedIntervalFacetingTest.java   |  1 -
 .../test/org/apache/solr/SolrInfoMBeanTest.java |  1 -
 .../solr/TestSimpleTrackingShardHandler.java    |  1 -
 .../PathHierarchyTokenizerFactoryTest.java      |  3 --
 .../apache/solr/cloud/AliasIntegrationTest.java |  2 --
 .../solr/cloud/BaseCdcrDistributedZkTest.java   |  2 --
 .../org/apache/solr/cloud/ClusterStateTest.java |  1 -
 ...ConcurrentDeleteAndCreateCollectionTest.java |  1 -
 .../solr/cloud/ConnectionManagerTest.java       |  5 ---
 .../solr/cloud/DeleteInactiveReplicaTest.java   |  1 -
 .../DeleteLastCustomShardedReplicaTest.java     |  1 -
 .../solr/cloud/DistribCursorPagingTest.java     |  3 --
 .../apache/solr/cloud/HttpPartitionTest.java    |  1 -
 ...verseerCollectionConfigSetProcessorTest.java |  1 -
 .../org/apache/solr/cloud/OverseerTest.java     |  1 -
 .../solr/cloud/RecoveryAfterSoftCommitTest.java |  1 -
 .../solr/cloud/ReplicationFactorTest.java       |  1 -
 .../org/apache/solr/cloud/SSLMigrationTest.java |  1 -
 .../cloud/SimpleCollectionCreateDeleteTest.java |  2 --
 .../apache/solr/cloud/SolrCloudExampleTest.java |  2 --
 .../org/apache/solr/cloud/SyncSliceTest.java    |  2 --
 .../solr/cloud/TestCloudDeleteByQuery.java      |  7 ----
 .../apache/solr/cloud/TestCloudInspectUtil.java |  2 --
 .../apache/solr/cloud/TestCollectionAPI.java    |  1 -
 .../apache/solr/cloud/TestConfigSetsAPI.java    |  1 -
 .../cloud/TestConfigSetsAPIExclusivity.java     |  1 -
 .../solr/cloud/TestConfigSetsAPIZkFailure.java  |  1 -
 .../org/apache/solr/cloud/TestCryptoKeys.java   |  1 -
 .../org/apache/solr/cloud/TestLockTree.java     |  7 ----
 .../solr/cloud/TestMiniSolrCloudClusterSSL.java |  1 -
 .../apache/solr/cloud/TestSSLRandomization.java |  2 --
 .../TestStressCloudBlindAtomicUpdates.java      |  6 ----
 .../solr/cloud/hdfs/HdfsThreadLeakTest.java     |  2 --
 .../solr/core/BlobRepositoryCloudTest.java      |  6 ----
 .../solr/core/BlobRepositoryMockingTest.java    |  2 --
 .../solr/core/HdfsDirectoryFactoryTest.java     |  5 ---
 .../org/apache/solr/core/MockInfoMBean.java     |  1 -
 .../apache/solr/core/TestDynamicLoading.java    |  1 -
 .../apache/solr/core/TestInfoStreamLogging.java |  1 -
 .../apache/solr/core/TestJmxMonitoredMap.java   |  3 --
 .../FieldAnalysisRequestHandlerTest.java        |  4 ---
 .../org/apache/solr/handler/JsonLoaderTest.java |  4 ---
 .../handler/StandardRequestHandlerTest.java     |  8 -----
 .../apache/solr/handler/TestBlobHandler.java    |  1 -
 .../org/apache/solr/handler/TestCSVLoader.java  |  1 -
 .../apache/solr/handler/TestConfigReload.java   |  1 -
 .../apache/solr/handler/TestReqParamsAPI.java   |  1 -
 .../handler/TestSolrConfigHandlerCloud.java     |  1 -
 .../TestSolrConfigHandlerConcurrent.java        |  2 --
 .../handler/ThrowErrorOnInitRequestHandler.java |  1 -
 .../admin/CoreMergeIndexesAdminHandlerTest.java |  3 --
 .../component/DistributedMLTComponentTest.java  |  1 -
 .../handler/component/TestExpandComponent.java  |  1 -
 .../handler/component/TestPivotHelperCode.java  |  3 --
 .../highlight/HighlighterMaxOffsetTest.java     |  1 -
 .../solr/internal/csv/CSVPrinterTest.java       |  3 --
 .../solr/internal/csv/CSVStrategyTest.java      |  2 --
 .../csv/ExtendedBufferedReaderTest.java         |  2 --
 .../org/apache/solr/request/JSONWriterTest.java |  4 ---
 .../solr/request/TestBinaryResponseWriter.java  |  1 -
 .../org/apache/solr/request/TestFaceting.java   |  1 -
 .../solr/request/TestIntervalFaceting.java      |  1 -
 .../TestPHPSerializedResponseWriter.java        |  1 -
 .../solr/response/TestRawResponseWriter.java    |  4 ---
 .../schema/CurrencyFieldOpenExchangeTest.java   | 10 ------
 .../solr/schema/CurrencyFieldXmlFileTest.java   |  9 -----
 .../org/apache/solr/schema/EnumFieldTest.java   |  1 -
 .../org/apache/solr/schema/PolyFieldTest.java   |  1 -
 .../solr/schema/TestBulkSchemaConcurrent.java   |  1 -
 .../TestCloudManagedSchemaConcurrent.java       |  1 -
 .../apache/solr/schema/TestCloudSchemaless.java |  2 --
 .../apache/solr/schema/TestCollationField.java  |  1 -
 .../apache/solr/search/AnalyticsQueryTest.java  |  1 -
 .../solr/search/DelayingSearchComponent.java    |  1 -
 .../apache/solr/search/FooQParserPlugin.java    |  1 -
 .../apache/solr/search/QueryParsingTest.java    |  8 -----
 .../org/apache/solr/search/RankQueryTest.java   |  1 -
 .../apache/solr/search/SortSpecParsingTest.java |  1 -
 .../solr/search/TestCollapseQParserPlugin.java  |  1 -
 .../search/TestGraphTermsQParserPlugin.java     | 12 -------
 .../solr/search/TestHashQParserPlugin.java      |  5 ---
 .../org/apache/solr/search/TestLRUCache.java    |  5 ---
 .../apache/solr/search/TestMissingGroups.java   |  2 --
 .../org/apache/solr/search/TestQueryUtils.java  |  2 --
 .../search/TestRandomCollapseQParserPlugin.java |  3 --
 .../solr/search/TestReRankQParserPlugin.java    |  1 -
 .../org/apache/solr/search/TestRealTimeGet.java |  1 -
 .../apache/solr/search/TestRecoveryHdfs.java    |  1 -
 .../test/org/apache/solr/search/TestReload.java |  2 --
 .../org/apache/solr/search/TestSearchPerf.java  |  1 -
 .../solr/search/TestSimpleQParserPlugin.java    |  3 --
 .../apache/solr/search/TestSolrQueryParser.java |  1 -
 .../test/org/apache/solr/search/TestSort.java   |  1 -
 .../solr/search/facet/TestJsonFacets.java       |  3 --
 .../solr/search/function/TestFunctionQuery.java |  1 -
 .../function/TestMinMaxOnMultiValuedField.java  |  4 ---
 .../function/TestSortByMinMaxFunction.java      |  2 --
 .../apache/solr/search/join/BJQParserTest.java  |  1 -
 .../solr/search/mlt/SimpleMLTQParserTest.java   |  4 ---
 .../TestClassicSimilarityFactory.java           |  1 -
 .../TestNonDefinedSimilarityFactory.java        |  1 -
 ...stPerFieldSimilarityWithDefaultOverride.java |  2 --
 .../TestSweetSpotSimilarityFactory.java         |  1 -
 .../solr/search/stats/TestDistribIDF.java       |  1 -
 .../security/TestPKIAuthenticationPlugin.java   |  6 ----
 .../apache/solr/servlet/ResponseHeaderTest.java |  4 ---
 .../spelling/FileBasedSpellCheckerTest.java     |  1 -
 .../solr/spelling/SimpleQueryConverter.java     |  2 --
 .../spelling/TestSuggestSpellingConverter.java  |  1 -
 .../suggest/TestFreeTextSuggestions.java        |  1 -
 .../apache/solr/uninverting/TestFieldCache.java | 10 ------
 .../apache/solr/update/AddBlockUpdateTest.java  |  2 --
 .../update/DirectUpdateHandlerOptimizeTest.java |  1 -
 .../solr/update/TestExceedMaxTermLength.java    |  1 -
 .../org/apache/solr/update/VersionInfoTest.java |  2 --
 .../processor/CustomUpdateRequestProcessor.java |  4 ---
 .../DefaultValueUpdateProcessorTest.java        |  5 ---
 ...DocExpirationUpdateProcessorFactoryTest.java |  1 -
 ...ommitOptimizeUpdateProcessorFactoryTest.java |  5 ---
 .../RecordingUpdateProcessorFactory.java        |  3 --
 ...atelessScriptUpdateProcessorFactoryTest.java |  5 ---
 .../processor/TestNamedUpdateProcessors.java    |  1 -
 .../TestPartialUpdateDeduplication.java         |  3 --
 .../processor/TolerantUpdateProcessorTest.java  |  2 --
 .../UniqFieldsUpdateProcessorFactoryTest.java   |  1 -
 .../processor/UpdateProcessorTestBase.java      |  1 -
 .../org/apache/solr/util/TestFastWriter.java    |  3 --
 .../solrj/impl/InputStreamResponseParser.java   |  4 ---
 .../solrj/impl/Krb5HttpClientBuilder.java       |  7 ----
 .../solr/client/solrj/io/comp/HashKey.java      |  2 --
 .../solrj/io/comp/MultipleFieldComparator.java  |  1 -
 .../client/solrj/io/stream/BiJoinStream.java    |  8 -----
 .../solrj/io/stream/LeftOuterJoinStream.java    |  4 ---
 .../client/solrj/io/stream/StreamContext.java   |  2 --
 .../solrj/io/stream/expr/StreamExplanation.java |  2 --
 .../solr/client/solrj/response/FacetField.java  |  1 -
 .../solr/client/solrj/response/PivotField.java  |  2 --
 .../solr/common/cloud/ClusterStateUtil.java     |  2 --
 .../apache/solr/common/cloud/SolrZkClient.java  |  1 -
 .../solr/common/cloud/ZkConfigManager.java      |  1 -
 .../apache/solr/client/solrj/GetByIdTest.java   |  2 --
 .../solrj/MergeIndexesExampleTestBase.java      |  1 -
 .../client/solrj/SolrSchemalessExampleTest.java |  1 -
 .../solrj/beans/TestDocumentObjectBinder.java   |  2 --
 .../embedded/LargeVolumeBinaryJettyTest.java    |  1 -
 .../solrj/embedded/LargeVolumeEmbeddedTest.java |  1 -
 .../solrj/embedded/LargeVolumeJettyTest.java    |  1 -
 .../solrj/embedded/SolrExampleEmbeddedTest.java |  1 -
 .../solr/client/solrj/io/graph/GraphTest.java   |  2 --
 .../client/solrj/io/sql/JdbcDriverTest.java     |  1 -
 .../solrj/io/stream/RecordCountStream.java      |  1 -
 .../StreamExpressionToExplanationTest.java      |  1 -
 .../io/stream/ops/ConcatOperationTest.java      |  1 -
 .../solrj/request/TestUpdateRequestCodec.java   |  2 --
 .../solr/common/cloud/TestZkConfigManager.java  |  1 -
 .../solr/common/util/TestJsonRecordReader.java  |  1 -
 .../solr/analysis/MockTokenizerFactory.java     |  1 -
 .../java/org/apache/solr/cloud/ChaosMonkey.java |  1 -
 .../org/apache/solr/cloud/MockSolrZkClient.java |  1 -
 .../org/apache/solr/util/BaseTestHarness.java   |  1 -
 .../org/apache/solr/util/ExternalPaths.java     |  4 ---
 .../org/apache/solr/util/RandomMergePolicy.java |  8 -----
 .../org/apache/solr/util/SSLTestConfig.java     |  4 ---
 622 files changed, 1320 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/ArabicAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/ArabicAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/ArabicAnalyzer.java
index ae827e0..0beadfb 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/ArabicAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/ArabicAnalyzer.java
@@ -30,7 +30,6 @@ import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.util.Version;
 
 /**
  * {@link Analyzer} for Arabic. 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
index 1f681a8..fea84d8 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.charfilter;
 
 import java.io.IOException;
 import java.io.Reader;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java
index e724374..ffc832f 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java
@@ -22,9 +22,7 @@ import java.util.Map;
 import java.util.TreeMap;
 
 import org.apache.lucene.util.CharsRef;
-import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
-import org.apache.lucene.util.fst.Builder;
 import org.apache.lucene.util.fst.CharSequenceOutputs;
 import org.apache.lucene.util.fst.FST;
 import org.apache.lucene.util.fst.Outputs;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/ckb/SoraniAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ckb/SoraniAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ckb/SoraniAnalyzer.java
index ef29c2f..f1697b7 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ckb/SoraniAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ckb/SoraniAnalyzer.java
@@ -34,7 +34,6 @@ import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
 import org.apache.lucene.analysis.util.WordlistLoader;
 import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.Version;
 
 /**
  * {@link Analyzer} for Sorani Kurdish.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java
index c047358..bef438c 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java
@@ -23,7 +23,6 @@ import org.apache.lucene.analysis.compound.hyphenation.HyphenationTree;
 import org.apache.lucene.analysis.util.CharArraySet;
 import org.xml.sax.InputSource;
 
-import java.io.File;
 import java.io.IOException;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilterFactory.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilterFactory.java
index 3b8d0b7..9ffe405 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilterFactory.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilterFactory.java
@@ -30,7 +30,6 @@ import java.util.Map;
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.lucene.util.Version;
 import org.xml.sax.InputSource;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopAnalyzer.java
index 9f4b05a..0c8fdc8 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopAnalyzer.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.analysis.core;
 
 
-import java.io.File;
 import java.io.IOException;
 import java.io.Reader;
 import java.nio.file.Path;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/PorterStemmer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/PorterStemmer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/PorterStemmer.java
index ef239b1..897798b 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/PorterStemmer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/PorterStemmer.java
@@ -44,10 +44,6 @@ package org.apache.lucene.analysis.en;
 */
 
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.FileInputStream;
-
 import org.apache.lucene.util.ArrayUtil;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/fa/PersianAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/fa/PersianAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/fa/PersianAnalyzer.java
index 36a9d5f..4014d82 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/fa/PersianAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/fa/PersianAnalyzer.java
@@ -30,7 +30,6 @@ import org.apache.lucene.analysis.core.StopFilter;
 import org.apache.lucene.analysis.standard.StandardTokenizer;
 import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
-import org.apache.lucene.util.Version;
 
 /**
  * {@link Analyzer} for Persian.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/hi/HindiAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/hi/HindiAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/hi/HindiAnalyzer.java
index 4947ed9..9fffe23 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/hi/HindiAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/hi/HindiAnalyzer.java
@@ -30,7 +30,6 @@ import org.apache.lucene.analysis.core.DecimalDigitFilter;
 import org.apache.lucene.analysis.core.LowerCaseFilter;
 import org.apache.lucene.analysis.core.StopFilter;
 import org.apache.lucene.analysis.in.IndicNormalizationFilter;
-import org.apache.lucene.util.Version;
 
 /**
  * Analyzer for Hindi.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilterFactory.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilterFactory.java
index a7e58bf..2f51a2b 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilterFactory.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilterFactory.java
@@ -23,8 +23,6 @@ import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.ResourceLoader;
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.lucene.analysis.util.TokenFilterFactory;
-import org.apache.lucene.util.Version;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java
index 5356c9a..3d253b5 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java
@@ -19,7 +19,6 @@ package org.apache.lucene.analysis.ngram;
 
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.util.AttributeFactory;
-import org.apache.lucene.util.Version;
 
 /**
  * Tokenizes the input from an edge into n-grams of given size(s).

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/nl/DutchAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/nl/DutchAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/nl/DutchAnalyzer.java
index e955067..e8b152d 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/nl/DutchAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/nl/DutchAnalyzer.java
@@ -31,7 +31,6 @@ import org.apache.lucene.analysis.standard.StandardTokenizer;
 import org.apache.lucene.analysis.util.CharArrayMap;
 import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.WordlistLoader;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
 import org.apache.lucene.util.IOUtils;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternCaptureGroupTokenFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternCaptureGroupTokenFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternCaptureGroupTokenFilter.java
index 5563c23..f5c203c 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternCaptureGroupTokenFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternCaptureGroupTokenFilter.java
@@ -24,7 +24,6 @@ import org.apache.lucene.analysis.TokenFilter;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java
index 3ba7927..61475d2 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java
@@ -30,7 +30,6 @@ import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CharsRefBuilder;
-import org.apache.lucene.util.UnicodeUtil;
 
 /**
  * An {@link Analyzer} used primarily at query time to wrap another analyzer and provide a layer of protection

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java
index 48365ff..7311459 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.lucene.analysis.standard;
 
-import java.io.Reader;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java
index ee0bf45..c7c5214 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.standard;
 import org.apache.lucene.analysis.util.TokenizerFactory;
 import org.apache.lucene.util.AttributeFactory;
 
-import java.io.Reader;
 import java.util.Map;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
index b9c5529..2488665 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.synonym;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CodingErrorAction;
 import java.nio.charset.StandardCharsets;
@@ -39,7 +38,6 @@ import org.apache.lucene.analysis.util.ResourceLoader;
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.lucene.analysis.util.TokenFilterFactory;
 import org.apache.lucene.analysis.util.TokenizerFactory;
-import org.apache.lucene.util.Version;
 
 /**
  * Factory for {@link SynonymFilter}.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymMap.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymMap.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymMap.java
index fea5b69..fc8703f 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymMap.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymMap.java
@@ -36,9 +36,7 @@ import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.BytesRefHash;
 import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
-import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
-import org.apache.lucene.util.UnicodeUtil;
 import org.apache.lucene.util.fst.ByteSequenceOutputs;
 import org.apache.lucene.util.fst.FST;
 import org.apache.lucene.util.fst.Util;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiAnalyzer.java
index ba4010a..cd5ea3b 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiAnalyzer.java
@@ -27,7 +27,6 @@ import org.apache.lucene.analysis.core.LowerCaseFilter;
 import org.apache.lucene.analysis.core.StopFilter;
 import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
-import org.apache.lucene.util.Version;
 
 /**
  * {@link Analyzer} for Thai language. It uses {@link java.text.BreakIterator} to break words.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishAnalyzer.java
index 539b203..c9ed471 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishAnalyzer.java
@@ -30,7 +30,6 @@ import org.apache.lucene.analysis.standard.StandardFilter;
 import org.apache.lucene.analysis.standard.StandardTokenizer;
 import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
-import org.apache.lucene.util.Version;
 import org.tartarus.snowball.ext.TurkishStemmer;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java
index ead4e35..4b662e9 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java
@@ -26,7 +26,6 @@ import org.apache.lucene.util.AttributeFactory;
 import org.apache.lucene.util.AttributeSource;
 
 import java.io.IOException;
-import java.io.Reader;
 import java.util.*;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/java/org/apache/lucene/collation/CollationKeyAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/collation/CollationKeyAnalyzer.java b/lucene/analysis/common/src/java/org/apache/lucene/collation/CollationKeyAnalyzer.java
index 08501b9..f7b15f6 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/collation/CollationKeyAnalyzer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/collation/CollationKeyAnalyzer.java
@@ -20,8 +20,6 @@ package org.apache.lucene.collation;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.core.KeywordTokenizer;
-import org.apache.lucene.util.Version;
-
 import java.text.Collator;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicAnalyzer.java
index 579943a..d60b5f2 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicAnalyzer.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.Version;
 
 /**
  * Test the Arabic Analyzer

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicNormalizationFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicNormalizationFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicNormalizationFilter.java
index 03d13e3..a040901 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicNormalizationFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicNormalizationFilter.java
@@ -18,7 +18,6 @@ package org.apache.lucene.analysis.ar;
 
 
 import java.io.IOException;
-import java.io.Reader;
 import java.io.StringReader;
 
 import org.apache.lucene.analysis.Analyzer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java
index 4b19c94..2cd8e84 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.bg;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/br/TestBrazilianAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/br/TestBrazilianAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/br/TestBrazilianAnalyzer.java
index 6158b33..a05dd0b 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/br/TestBrazilianAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/br/TestBrazilianAnalyzer.java
@@ -18,7 +18,6 @@ package org.apache.lucene.analysis.br;
 
 
 import java.io.IOException;
-import java.io.Reader;
 import java.io.StringReader;
 
 import org.apache.lucene.analysis.Analyzer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestHTMLStripCharFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestHTMLStripCharFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestHTMLStripCharFilterFactory.java
index 75b3e87..bb5eff3 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestHTMLStripCharFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestHTMLStripCharFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.charfilter;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKWidthFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKWidthFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKWidthFilterFactory.java
index d4882a9..a7e1422 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKWidthFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKWidthFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.cjk;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniAnalyzer.java
index 6231f3d..e8dd4cf 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniAnalyzer.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.Version;
 
 /**
  * Test the Sorani analyzer

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniNormalizationFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniNormalizationFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniNormalizationFilterFactory.java
index 510b83c..61ef7b4 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniNormalizationFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ckb/TestSoraniNormalizationFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.ckb;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/CommonGramsFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/CommonGramsFilterTest.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/CommonGramsFilterTest.java
index 409adf7..1171574 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/CommonGramsFilterTest.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/CommonGramsFilterTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.lucene.analysis.commongrams;
 
-import java.io.Reader;
 import java.io.StringReader;
 import java.util.Arrays;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java
index 7c826a9..776365e 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.analysis.commongrams;
 
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.core.TestStopFilter;
@@ -27,8 +26,6 @@ import org.apache.lucene.analysis.util.ClasspathResourceLoader;
 import org.apache.lucene.analysis.util.ResourceLoader;
 import org.apache.lucene.util.Version;
 
-import java.io.StringReader;
-
 /**
  * Tests pretty much copied from StopFilterFactoryTest We use the test files
  * used by the StopFilterFactoryTest TODO: consider creating separate test files

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java
index d45b1e3..eeff4d6 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java
@@ -32,7 +32,6 @@ import org.apache.lucene.index.PostingsEnum;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.MultiFields;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.RAMDirectory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
index 5c25471..bf02ccd 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
@@ -42,7 +42,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.IdentityHashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanLightStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanLightStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanLightStemFilterFactory.java
index 5bf6ed0..df71a95 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanLightStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanLightStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.de;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java
index 7bf8661..c0c522f 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java
@@ -25,7 +25,6 @@ import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.Analyzer.TokenStreamComponents;
 import org.apache.lucene.analysis.core.KeywordTokenizer;
 import org.apache.lucene.analysis.core.LowerCaseFilter;
 import org.apache.lucene.analysis.miscellaneous.SetKeywordMarkerFilter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekLowerCaseFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekLowerCaseFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekLowerCaseFilterFactory.java
index cedc9ab..d5c56fb 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekLowerCaseFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekLowerCaseFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.el;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekStemFilterFactory.java
index 13830e9..4a4f25f 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/el/TestGreekStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.el;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestEnglishMinimalStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestEnglishMinimalStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestEnglishMinimalStemFilterFactory.java
index e3dc81d..6c248b2 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestEnglishMinimalStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestEnglishMinimalStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.en;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemFilterFactory.java
index 79fa7cf..a4ad23c 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.en;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestPorterStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestPorterStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestPorterStemFilterFactory.java
index a7739b2..ccb2e76 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestPorterStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/en/TestPorterStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.en;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianAnalyzer.java
index 70f0a4f..7ecaca1 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianAnalyzer.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.fa;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.Version;
 
 /**
  * Test the Persian Analyzer

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianNormalizationFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianNormalizationFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianNormalizationFilterFactory.java
index 5bffb71..bb23571 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianNormalizationFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fa/TestPersianNormalizationFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.fa;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchLightStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchLightStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchLightStemFilterFactory.java
index 15a2b96..eaf3c3c 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchLightStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchLightStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.fr;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchMinimalStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchMinimalStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchMinimalStemFilterFactory.java
index 6cd399b..820b5d0 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchMinimalStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestFrenchMinimalStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.fr;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/ga/TestIrishLowerCaseFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ga/TestIrishLowerCaseFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ga/TestIrishLowerCaseFilterFactory.java
index 2014936..4a106ef 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ga/TestIrishLowerCaseFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ga/TestIrishLowerCaseFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.ga;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianMinimalStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianMinimalStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianMinimalStemFilterFactory.java
index ddc60f0..a396130 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianMinimalStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianMinimalStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.gl;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianStemFilterFactory.java
index e02fc5c..270151a 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/gl/TestGalicianStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.gl;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiAnalyzer.java
index 6fa1d7c..5b61686 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiAnalyzer.java
@@ -19,7 +19,6 @@ package org.apache.lucene.analysis.hi;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.Version;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiFilters.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiFilters.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiFilters.java
index 8caf700..7bf5f05 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiFilters.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiFilters.java
@@ -21,9 +21,7 @@ import java.io.Reader;
 import java.io.StringReader;
 
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
-import org.apache.lucene.analysis.util.TokenizerFactory;
 
 /**
  * Simple tests to ensure the Hindi filter Factories are working.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiNormalizer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiNormalizer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiNormalizer.java
index 0462911..f4c0ba6 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiNormalizer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hi/TestHindiNormalizer.java
@@ -18,12 +18,8 @@ package org.apache.lucene.analysis.hi;
 
 
 import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenFilter;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.core.KeywordTokenizer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hu/TestHungarianLightStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hu/TestHungarianLightStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hu/TestHungarianLightStemFilterFactory.java
index b595067..63f235b 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hu/TestHungarianLightStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hu/TestHungarianLightStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.hu;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/Test64kAffixes.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/Test64kAffixes.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/Test64kAffixes.java
index c72d033..8ee4c2f 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/Test64kAffixes.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/Test64kAffixes.java
@@ -25,10 +25,8 @@ import java.nio.file.Path;
 import java.util.List;
 
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 
 /** Tests that &gt; 64k affixes actually works and doesnt overflow some internal int */
 public class Test64kAffixes extends LuceneTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries.java
index e345e9d..c1a5e09 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries.java
@@ -23,7 +23,6 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;


[46/50] [abbrv] lucene-solr:apiv2: SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh

Posted by no...@apache.org.
SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5ee4e8a6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5ee4e8a6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5ee4e8a6

Branch: refs/heads/apiv2
Commit: 5ee4e8a6141b6d9ac0016e82b6561bca9587faf0
Parents: 2e101c4
Author: Noble Paul <no...@apache.org>
Authored: Tue Jun 14 19:47:18 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Jun 14 19:47:18 2016 +0530

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/util/SolrCLI.java | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5ee4e8a6/solr/core/src/java/org/apache/solr/util/SolrCLI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 5e6908a..474d1fc 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -104,6 +104,7 @@ import org.noggit.ObjectBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.solr.common.params.CommonParams.NAME;
 /**
  * Command-line utility for working with Solr.
@@ -164,8 +165,8 @@ public class SolrCLI {
 
         HttpClientUtil.addRequestInterceptor((httpRequest, httpContext) -> {
           String pair = ss.get(0) + ":" + ss.get(1);
-          byte[] encodedBytes = Base64.encodeBase64(pair.getBytes(StandardCharsets.UTF_8));
-          httpRequest.addHeader(new BasicHeader("Authorization", "Basic "+ new String(encodedBytes)));
+          byte[] encodedBytes = Base64.encodeBase64(pair.getBytes(UTF_8));
+          httpRequest.addHeader(new BasicHeader("Authorization", "Basic "+ new String(encodedBytes, UTF_8)));
         });
       }
     }
@@ -2344,7 +2345,7 @@ public class SolrCLI {
       
       echo("\nWelcome to the SolrCloud example!\n");
 
-      Scanner readInput = prompt ? new Scanner(userInput, StandardCharsets.UTF_8.name()) : null;
+      Scanner readInput = prompt ? new Scanner(userInput, UTF_8.name()) : null;
       if (prompt) {
         echo("This interactive session will help you launch a SolrCloud cluster on your local workstation.");
 


[48/50] [abbrv] lucene-solr:apiv2: Merge branch 'master' into apiv2

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/core/PluginBag.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 288c96c,063c3d4..529c695
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@@ -28,12 -25,14 +28,13 @@@ import java.util.Locale
  import java.util.Map;
  import java.util.Set;
  
 +import com.google.common.collect.ImmutableMap;
 +import com.google.common.collect.ImmutableSet;
  import org.apache.solr.cloud.ZkSolrResourceLoader;
  import org.apache.solr.common.SolrException;
 -import org.apache.solr.common.params.MapSolrParams;
 -import org.apache.solr.common.params.SolrParams;
+ import org.apache.solr.common.util.ContentStream;
  import org.apache.solr.common.util.SimpleOrderedMap;
  import org.apache.solr.common.util.StrUtils;
 -import org.apache.solr.common.util.Utils;
  import org.apache.solr.core.SolrCore;
  import org.apache.solr.request.SolrQueryRequest;
  import org.apache.solr.request.SolrRequestHandler;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index c0ca223,6d501a1..769db01
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@@ -33,9 -33,9 +33,10 @@@ import com.google.common.collect.Immuta
  import com.google.common.collect.ImmutableSet;
  import org.apache.commons.io.IOUtils;
  import org.apache.commons.lang.StringUtils;
 +import org.apache.solr.api.Api;
  import org.apache.solr.client.solrj.SolrResponse;
  import org.apache.solr.client.solrj.impl.HttpSolrClient;
+ import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
  import org.apache.solr.client.solrj.request.CoreAdminRequest;
  import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestSyncShard;
  import org.apache.solr.client.solrj.response.RequestStatusState;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index d969a0c46,49da174..b06bba1
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@@ -45,9 -44,9 +45,11 @@@ import org.apache.solr.core.CoreDescrip
  import org.apache.solr.handler.RequestHandlerBase;
  import org.apache.solr.request.SolrQueryRequest;
  import org.apache.solr.response.SolrQueryResponse;
+ import org.apache.solr.security.AuthorizationContext;
+ import org.apache.solr.security.PermissionNameProvider;
  import org.apache.solr.util.DefaultSolrThreadFactory;
 +import org.apache.solr.api.Api;
 +import org.apache.solr.api.ApiSupport;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  import org.slf4j.MDC;
@@@ -82,11 -82,10 +86,11 @@@ public class CoreAdminHandler extends R
      // should happen in the constructor...  
      this.coreContainer = null;
      HashMap<String, Map<String, TaskObject>> map = new HashMap<>(3, 1.0f);
-     map.put(RUNNING, Collections.synchronizedMap(new LinkedHashMap<>()));
-     map.put(COMPLETED, Collections.synchronizedMap(new LinkedHashMap<>()));
-     map.put(FAILED, Collections.synchronizedMap(new LinkedHashMap<>()));
+     map.put(RUNNING, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
+     map.put(COMPLETED, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
+     map.put(FAILED, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
      requestStatusMap = Collections.unmodifiableMap(map);
 +    coreAdminHandlerApi = new CoreAdminHandlerApi(this);
    }
  
  

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
index 330a3b9,ed5a05c..1b4ec13
--- a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
@@@ -24,17 -24,10 +24,17 @@@ import java.util.HashMap
  import java.util.HashSet;
  import java.util.List;
  import java.util.Map;
- import java.util.Objects;
  import java.util.Set;
+ import java.util.function.Function;
  
 +import com.google.common.collect.ImmutableSet;
 +import org.apache.solr.common.SolrException;
 +import org.apache.solr.common.params.CollectionParams;
 +import org.apache.solr.common.util.Map2;
 +import org.apache.solr.common.util.Utils;
  import org.apache.solr.util.CommandOperation;
 +import org.apache.solr.api.ApiBag;
 +import org.apache.solr.api.SpecProvider;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
index 12a6c41,9d7e7d9..9f613d9
--- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
@@@ -42,9 -42,8 +43,10 @@@ import java.util.Map
  import org.apache.commons.fileupload.FileItem;
  import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  import org.apache.commons.fileupload.servlet.ServletFileUpload;
+ import org.apache.commons.io.input.CloseShieldInputStream;
  import org.apache.lucene.util.IOUtils;
 +import org.apache.solr.api.ApiBag;
 +import org.apache.solr.api.V2HttpCall;
  import org.apache.solr.common.SolrException;
  import org.apache.solr.common.SolrException.ErrorCode;
  import org.apache.solr.common.params.CommonParams;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/java/org/apache/solr/util/CommandOperation.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/resources/ImplicitPlugins.json
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/core/src/test/org/apache/solr/security/TestRuleBasedAuthorizationPlugin.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
----------------------------------------------------------------------
diff --cc solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
index 19beed5,b47cf00..4968cf2
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
@@@ -105,10 -108,11 +108,14 @@@ public class Replica extends ZkNodeProp
    public String getCoreUrl() {
      return ZkCoreNodeProps.getCoreUrl(getStr(BASE_URL_PROP), getStr(CORE_NAME_PROP));
    }
 +  public String getBaseUrl(){
 +    return getStr(ZkStateReader.BASE_URL_PROP);
 +  }
  
+   public String getCoreName() {
+     return getStr(CORE_NAME_PROP);
+   }
+ 
    /** The name of the node this replica resides on */
    public String getNodeName() {
      return nodeName;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/solrj/src/java/org/apache/solr/common/util/StrUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/solrj/src/java/org/apache/solr/common/util/Utils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b48f4d69/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java
----------------------------------------------------------------------


[16/50] [abbrv] lucene-solr:apiv2: SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields

Posted by no...@apache.org.
SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/79d1b8c2
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/79d1b8c2
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/79d1b8c2

Branch: refs/heads/apiv2
Commit: 79d1b8c22768b6c902a4e880698733277796820c
Parents: 32c8dfa
Author: Erick Erickson <er...@apache.org>
Authored: Sat Jun 11 10:25:07 2016 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Sat Jun 11 17:33:25 2016 -0700

----------------------------------------------------------------------
 .../apache/solr/schema/BooleanFieldTest.java    | 78 ++++++++++++++++++++
 1 file changed, 78 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/79d1b8c2/solr/core/src/test/org/apache/solr/schema/BooleanFieldTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/BooleanFieldTest.java b/solr/core/src/test/org/apache/solr/schema/BooleanFieldTest.java
new file mode 100644
index 0000000..8f13204
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/schema/BooleanFieldTest.java
@@ -0,0 +1,78 @@
+package org.apache.solr.schema;
+
+/*
+ * 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.
+ */
+
+import org.apache.solr.SolrTestCaseJ4;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class BooleanFieldTest extends SolrTestCaseJ4 {
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    initCore("solrconfig-basic.xml", "schema15.xml");
+  }
+
+  // Note, docValues-based boolean tests are tested elsewhere refering to more appropriate schemas
+  @Test
+  public void testBoolField() {
+
+    // found an odd case when adding booleans to docValues and noticed that we didn't have any boolean
+    // specific tests. Only caught the odd case by accident so let's have a place for explicit tests
+    assertU(adoc("id", "0")); // missing
+    assertU(adoc("id", "1", "bind", "true", "bsto", "true", "bindsto", "true", "bindstom", "true", "bindstom", "false"));
+    assertU(adoc("id", "2", "bind", "false", "bsto", "false", "bindsto", "false", "bindstom", "false", "bindstom", "true"));
+    assertU(adoc("id", "3", "bind", "false"));
+    assertU(adoc("id", "4", "bsto", "false"));
+    assertU(adoc("id", "5", "bindsto", "true"));
+    assertU(adoc("id", "6", "bindstom", "true"));
+    assertU(commit());
+
+    assertQ(req("q", "*:*", "sort", "id asc", "fl", "id,bind,bsto,bindsto,bindstom")
+        ,"count(//result/doc[1]/bool[@name='bind'])=0"
+        ,"count(//result/doc[1]/bool[@name='bsto'])=0"
+        ,"count(//result/doc[1]/bool[@name='bindsto'])=0"
+        ,"count(//result/doc[2]/bool[@name='bind'])=0"
+        ,"count(//result/doc[3]/bool[@name='bind'])=0"
+        ,"//result/doc[2]/bool[@name='bsto'][.='true']"
+        ,"//result/doc[2]/bool[@name='bindsto'][.='true']"
+        ,"//result/doc[3]/bool[@name='bsto'][.='false']"
+        ,"//result/doc[3]/bool[@name='bindsto'][.='false']"
+        ,"//result/doc[2]/arr[@name='bindstom']/bool[1][.='true']"
+        ,"//result/doc[2]/arr[@name='bindstom']/bool[2][.='false']"
+        ,"//result/doc[3]/arr[@name='bindstom']/bool[1][.='false']"
+        ,"//result/doc[3]/arr[@name='bindstom']/bool[2][.='true']"
+
+    );
+    
+    // Make sure faceting is behaving.
+    assertQ(req("q", "*:*", "facet", "true", 
+        "facet.field", "bind", 
+        "facet.field", "bsto",
+        "facet.field", "bindsto",
+        "facet.field", "bindstom"),
+        "//lst[@name='bind']/int[@name='false'][.='2']",
+        "//lst[@name='bind']/int[@name='true'][.='1']",
+        "//lst[@name='bsto'][not(node())]",
+        "//lst[@name='bsto'][not(node())]",
+        "//lst[@name='bindsto']/int[@name='false'][.='1']",
+        "//lst[@name='bindsto']/int[@name='true'][.='2']",
+        "//lst[@name='bindstom']/int[@name='false'][.='2']",
+        "//lst[@name='bindstom']/int[@name='true'][.='3']");
+  }
+
+}


[37/50] [abbrv] lucene-solr:apiv2: SOLR-9204: Improve performance of getting directory size with hdfs.

Posted by no...@apache.org.
SOLR-9204: Improve performance of getting directory size with hdfs.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/08c14f13
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/08c14f13
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/08c14f13

Branch: refs/heads/apiv2
Commit: 08c14f135639beddc0c33c0c087962f8b5f88f33
Parents: 7291419
Author: markrmiller <ma...@apache.org>
Authored: Mon Jun 13 12:22:50 2016 -0400
Committer: markrmiller <ma...@apache.org>
Committed: Mon Jun 13 12:22:50 2016 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 ++
 .../solr/core/CachingDirectoryFactory.java      |  6 +++-
 .../org/apache/solr/core/DirectoryFactory.java  | 25 +++++++++++++++
 .../apache/solr/core/HdfsDirectoryFactory.java  | 33 ++++++++++++++++++++
 .../apache/solr/handler/ReplicationHandler.java |  2 +-
 .../solr/handler/admin/CoreAdminOperation.java  |  2 +-
 .../HdfsWriteToMultipleCollectionsTest.java     | 19 +++++++++++
 7 files changed, 86 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index c886fd0..82b8760 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -254,6 +254,8 @@ Optimizations
 
 * SOLR-8744: Overseer operations performed with fine grained mutual exclusion (noble, Scott Blum)
 
+* SOLR-9204: Improve performance of getting directory size with hdfs. (Mark Miller)
+
 Other Changes
 ----------------------
 * SOLR-8860: Remove back-compat handling of router format made in SOLR-4221 in 4.5.0. (shalin)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
index 11cf479..5b7ad1b 100644
--- a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
@@ -497,7 +497,7 @@ public abstract class CachingDirectoryFactory extends DirectoryFactory {
     }
     return livePaths;
   }
-
+  
   @Override
   protected boolean deleteOldIndexDirectory(String oldDirPath) throws IOException {
     Set<String> livePaths = getLivePaths();
@@ -508,4 +508,8 @@ public abstract class CachingDirectoryFactory extends DirectoryFactory {
 
     return super.deleteOldIndexDirectory(oldDirPath);
   }
+  
+  protected synchronized String getPath(Directory directory) {
+    return byDirectoryCache.get(directory).path;
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
index 8cc9e7d..f953913 100644
--- a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
@@ -146,6 +146,31 @@ public abstract class DirectoryFactory implements NamedListInitializedPlugin,
   public abstract void remove(String path) throws IOException;
   
   /**
+   * @param directory to calculate size of
+   * @return size in bytes
+   * @throws IOException on low level IO error
+   */
+  public long size(Directory directory) throws IOException {
+    return sizeOfDirectory(directory);
+  }
+  
+  /**
+   * @param path to calculate size of
+   * @return size in bytes
+   * @throws IOException on low level IO error
+   */
+  public long size(String path) throws IOException {
+    Directory dir = get(path, DirContext.DEFAULT, null);
+    long size;
+    try {
+      size = sizeOfDirectory(dir);
+    } finally {
+      release(dir); 
+    }
+    return size;
+  }
+  
+  /**
    * Override for more efficient moves.
    * 
    * Intended for use with replication - use

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
index 25f094e..ada4af3 100644
--- a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.FsStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.PathFilter;
 import org.apache.hadoop.security.UserGroupInformation;
@@ -410,6 +411,38 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory implements Sol
         + cd.getDataDir()));
   }
   
+  /**
+   * @param directory to calculate size of
+   * @return size in bytes
+   * @throws IOException on low level IO error
+   */
+  @Override
+  public long size(Directory directory) throws IOException {
+    String hdfsDirPath = getPath(directory);
+    return size(hdfsDirPath);
+  }
+  
+  /**
+   * @param path to calculate size of
+   * @return size in bytes
+   * @throws IOException on low level IO error
+   */
+  @Override
+  public long size(String path) throws IOException {
+    Path hdfsDirPath = new Path(path);
+    FileSystem fileSystem = null;
+    try {
+      fileSystem = FileSystem.newInstance(hdfsDirPath.toUri(), getConf());
+      long size = fileSystem.getContentSummary(hdfsDirPath).getLength();
+      return size;
+    } catch (IOException e) {
+      LOG.error("Error checking if hdfs path exists", e);
+      throw new SolrException(ErrorCode.SERVER_ERROR, "Error checking if hdfs path exists", e);
+    } finally {
+      IOUtils.closeQuietly(fileSystem);
+    }
+  }
+  
   public String getConfDir() {
     return confDir;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
index 3785db7..14898d7 100644
--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
@@ -761,7 +761,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
     try {
       dir = core.getDirectoryFactory().get(core.getIndexDir(), DirContext.DEFAULT, core.getSolrConfig().indexConfig.lockType);
       try {
-        size = DirectoryFactory.sizeOfDirectory(dir);
+        size = core.getDirectoryFactory().size(dir);
       } finally {
         core.getDirectoryFactory().release(dir);
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
index 51e776d..3fdf3ef 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
@@ -988,7 +988,7 @@ enum CoreAdminOperation {
       dir = core.getDirectoryFactory().get(core.getIndexDir(), DirectoryFactory.DirContext.DEFAULT, core.getSolrConfig().indexConfig.lockType);
 
       try {
-        size = DirectoryFactory.sizeOfDirectory(dir);
+        size = core.getDirectoryFactory().size(dir);
       } finally {
         core.getDirectoryFactory().release(dir);
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/08c14f13/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
index ddf6e51..043cdec 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
@@ -22,8 +22,13 @@ import java.util.Collection;
 import java.util.List;
 
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.NRTCachingDirectory;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase.Nightly;
@@ -130,6 +135,20 @@ public class HdfsWriteToMultipleCollectionsTest extends BasicDistributedZkTest {
         if (core.getCoreDescriptor().getCloudDescriptor().getCollectionName()
             .startsWith(ACOLLECTION)) {
           assertTrue(core.getDirectoryFactory() instanceof HdfsDirectoryFactory);
+          Directory dir = core.getDirectoryFactory().get(core.getDataDir(), null, null);
+          try {
+            long dataDirSize = core.getDirectoryFactory().size(dir);
+            FileSystem fileSystem = null;
+            
+            fileSystem = FileSystem.newInstance(
+                new Path(core.getDataDir()).toUri(), new Configuration());
+            long size = fileSystem.getContentSummary(
+                new Path(core.getDataDir())).getLength();
+            assertEquals(size, dataDirSize);
+          } finally {
+            core.getDirectoryFactory().release(dir);
+          }
+          
           RefCounted<IndexWriter> iwRef = core.getUpdateHandler()
               .getSolrCoreState().getIndexWriter(core);
           try {


[25/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
index 6bd7952..cced17e 100644
--- a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
@@ -33,7 +33,6 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.LocalSolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/mlt/MLTQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/mlt/MLTQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/mlt/MLTQParserPlugin.java
index 708ae61..3c1a0c1 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/MLTQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/MLTQParserPlugin.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.search.mlt;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.QParserPlugin;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
index 6452d91..e91bf06 100644
--- a/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
+++ b/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
@@ -20,7 +20,6 @@ import org.apache.lucene.misc.SweetSpotSimilarity;
 import org.apache.lucene.search.similarities.ClassicSimilarity; // jdoc
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.schema.SimilarityFactory;
 import org.apache.solr.common.SolrException;
 import static org.apache.solr.common.SolrException.ErrorCode.*;
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/stats/LRUStatsCache.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/stats/LRUStatsCache.java b/solr/core/src/java/org/apache/solr/search/stats/LRUStatsCache.java
index 2c7abbd..ffcc99d 100644
--- a/solr/core/src/java/org/apache/solr/search/stats/LRUStatsCache.java
+++ b/solr/core/src/java/org/apache/solr/search/stats/LRUStatsCache.java
@@ -19,7 +19,6 @@ package org.apache.solr.search.stats;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
@@ -28,12 +27,8 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.index.TermContext;
 import org.apache.lucene.search.CollectionStatistics;
 import org.apache.lucene.search.TermStatistics;
-import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.ShardParams;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.handler.component.ResponseBuilder;
-import org.apache.solr.handler.component.ShardRequest;
-import org.apache.solr.handler.component.ShardResponse;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.FastLRUCache;
 import org.apache.solr.search.SolrCache;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/security/AuthorizationContext.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/AuthorizationContext.java b/solr/core/src/java/org/apache/solr/security/AuthorizationContext.java
index 8f0fa57..65363a7 100644
--- a/solr/core/src/java/org/apache/solr/security/AuthorizationContext.java
+++ b/solr/core/src/java/org/apache/solr/security/AuthorizationContext.java
@@ -21,7 +21,6 @@ import java.util.Enumeration;
 import java.util.List;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.request.SolrRequestHandler;
 
 /**
  * Request context for Solr to be used by Authorization plugin.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java b/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java
index 9deae6d..f60b6dd 100644
--- a/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java
+++ b/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java
@@ -5,12 +5,10 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import org.apache.solr.util.CommandOperation;
 
-import static org.apache.solr.common.params.CommonParams.NAME;
 import static org.apache.solr.common.util.Utils.getDeepCopy;
 import static org.apache.solr.handler.admin.SecurityConfHandler.getListValue;
 import static org.apache.solr.handler.admin.SecurityConfHandler.getMapValue;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/security/KerberosPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/KerberosPlugin.java b/solr/core/src/java/org/apache/solr/security/KerberosPlugin.java
index 2ef7fb8..7a83ab5 100644
--- a/solr/core/src/java/org/apache/solr/security/KerberosPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/KerberosPlugin.java
@@ -43,7 +43,6 @@ import javax.servlet.SessionTrackingMode;
 import javax.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.commons.collections.iterators.IteratorEnumeration;
-import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder;
 import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder;
 import org.apache.solr.common.SolrException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
index 9f6d4b8..ed5a05c 100644
--- a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
@@ -24,7 +24,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 
@@ -33,7 +32,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static java.util.Arrays.asList;
-import static java.util.Collections.emptyIterator;
 import static java.util.Collections.unmodifiableMap;
 import static java.util.function.Function.identity;
 import static java.util.stream.Collectors.toMap;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/servlet/DirectSolrConnection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/DirectSolrConnection.java b/solr/core/src/java/org/apache/solr/servlet/DirectSolrConnection.java
index d72c4af..2d3d683 100644
--- a/solr/core/src/java/org/apache/solr/servlet/DirectSolrConnection.java
+++ b/solr/core/src/java/org/apache/solr/servlet/DirectSolrConnection.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.servlet;
 
-import java.io.File;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -28,17 +27,12 @@ import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.ContentStreamBase;
-import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.schema.IndexSchema;
 
 /**
  * DirectSolrConnection provides an interface to Solr that is similar to

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 57a4d7b..bc5edd5 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.servlet;
 
-import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -35,13 +34,10 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 
-import com.google.common.collect.ImmutableSet;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.input.CloseShieldInputStream;
 import org.apache.commons.io.output.CloseShieldOutputStream;
@@ -91,7 +87,6 @@ import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.QueryResponseWriterUtil;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.security.AuthenticationPlugin;
 import org.apache.solr.security.AuthorizationContext;
 import org.apache.solr.security.AuthorizationContext.CollectionRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java b/solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java
index 222ab92..41824a9 100644
--- a/solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java
+++ b/solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java
@@ -19,8 +19,6 @@ package org.apache.solr.servlet.cache;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.Collections;
-import java.util.Map;
-import java.util.WeakHashMap;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java b/solr/core/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
index 3d7392a..22da107 100644
--- a/solr/core/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
+++ b/solr/core/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
@@ -24,13 +24,11 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import org.apache.lucene.search.spell.SuggestMode;
 import org.apache.lucene.search.spell.SuggestWord;
 import org.apache.lucene.search.spell.SuggestWordFrequencyComparator;
 import org.apache.lucene.search.spell.SuggestWordQueue;
 
 import org.apache.lucene.analysis.Token;
-import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.spell.Dictionary;
@@ -40,12 +38,8 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FilterDirectory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.RAMDirectory;
-import org.apache.solr.common.params.ShardParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.SpellingParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.schema.FieldType;
 import org.apache.solr.search.SolrIndexSearcher;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/spelling/DirectSolrSpellChecker.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/spelling/DirectSolrSpellChecker.java b/solr/core/src/java/org/apache/solr/spelling/DirectSolrSpellChecker.java
index c38b266..bbde74a 100644
--- a/solr/core/src/java/org/apache/solr/spelling/DirectSolrSpellChecker.java
+++ b/solr/core/src/java/org/apache/solr/spelling/DirectSolrSpellChecker.java
@@ -23,20 +23,14 @@ import java.util.Comparator;
 import java.util.List;
 
 import org.apache.lucene.analysis.Token;
-import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.spell.DirectSpellChecker;
 import org.apache.lucene.search.spell.StringDistance;
-import org.apache.lucene.search.spell.SuggestMode;
 import org.apache.lucene.search.spell.SuggestWord;
 import org.apache.lucene.search.spell.SuggestWordFrequencyComparator;
 import org.apache.lucene.search.spell.SuggestWordQueue;
-import org.apache.solr.common.params.ShardParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.SpellingParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.schema.FieldType;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java b/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
index 88325ff..8b3fbcb 100644
--- a/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
+++ b/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
@@ -17,7 +17,6 @@
 package org.apache.solr.store.blockcache;
 
 import java.nio.ByteBuffer;
-import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import com.github.benmanes.caffeine.cache.Cache;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/store/blockcache/Metrics.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/store/blockcache/Metrics.java b/solr/core/src/java/org/apache/solr/store/blockcache/Metrics.java
index 75dc4ea..cfab89e 100644
--- a/solr/core/src/java/org/apache/solr/store/blockcache/Metrics.java
+++ b/solr/core/src/java/org/apache/solr/store/blockcache/Metrics.java
@@ -24,7 +24,6 @@ import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.search.SolrCacheBase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java b/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
index 778e4c6..330e767 100644
--- a/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
+++ b/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
@@ -31,7 +31,6 @@ import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Weight;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.uninverting.UninvertingReader;
-import org.apache.solr.uninverting.UninvertingReader;
 
 /** 
  * Allows access to uninverted docvalues by delete-by-queries.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/DeleteUpdateCommand.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/DeleteUpdateCommand.java b/solr/core/src/java/org/apache/solr/update/DeleteUpdateCommand.java
index bf41ab3..1c3c4f2 100644
--- a/solr/core/src/java/org/apache/solr/update/DeleteUpdateCommand.java
+++ b/solr/core/src/java/org/apache/solr/update/DeleteUpdateCommand.java
@@ -18,9 +18,7 @@ package org.apache.solr.update;
 
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
-import org.apache.solr.common.SolrInputField;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/AbstractDefaultValueUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/AbstractDefaultValueUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/AbstractDefaultValueUpdateProcessorFactory.java
index 51989e3..8a41160 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/AbstractDefaultValueUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/AbstractDefaultValueUpdateProcessorFactory.java
@@ -22,8 +22,6 @@ import org.apache.solr.common.SolrException;
 import static org.apache.solr.common.SolrException.ErrorCode.*;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.update.AddUpdateCommand;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java
index 26655d8..92aea48 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java
@@ -16,20 +16,10 @@
  */
 package org.apache.solr.update.processor;
 
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.FieldType;
-import org.apache.solr.schema.SchemaField;
-import org.apache.solr.schema.TextField;
-import org.apache.solr.schema.StrField;
-
 import org.apache.solr.common.SolrInputField;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 
-import org.apache.commons.lang.StringUtils;
-
 /**
  * <p>
  * Replaces any list of values for a field matching the specified 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/DefaultValueUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DefaultValueUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/DefaultValueUpdateProcessorFactory.java
index 225bf1c..281ec9b 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DefaultValueUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DefaultValueUpdateProcessorFactory.java
@@ -16,15 +16,11 @@
  */
 package org.apache.solr.update.processor;
 
-import java.io.IOException;
-
 import org.apache.solr.common.SolrException;
 import static org.apache.solr.common.SolrException.ErrorCode.*;
-import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.update.AddUpdateCommand;
 
 /**
  * <p>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/DistributingUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributingUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/DistributingUpdateProcessorFactory.java
index 1a2c8e0..8bbc088 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributingUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributingUpdateProcessorFactory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.update.processor;
 
-import org.apache.solr.common.SolrException;
-
 /**
  * A marker interface for denoting that a factory is responsible for handling
  * distributed communication of updates across a SolrCloud cluster.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java
index 26fe2d7..ba4cd8a 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java
@@ -17,7 +17,6 @@
 package org.apache.solr.update.processor;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/FieldValueSubsetUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/FieldValueSubsetUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/FieldValueSubsetUpdateProcessorFactory.java
index d468412..9a25308 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/FieldValueSubsetUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/FieldValueSubsetUpdateProcessorFactory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.update.processor;
 
-import org.apache.solr.core.SolrCore;
-
 import org.apache.solr.common.SolrInputField;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/FirstFieldValueUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/FirstFieldValueUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/FirstFieldValueUpdateProcessorFactory.java
index fef1f6a..f2cf0b8 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/FirstFieldValueUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/FirstFieldValueUpdateProcessorFactory.java
@@ -20,7 +20,6 @@ import org.apache.solr.core.SolrCore;
 
 import java.util.Collections;
 import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * Keeps only the first value of fields matching the specified 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/LastFieldValueUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/LastFieldValueUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/LastFieldValueUpdateProcessorFactory.java
index 371f4f2..576a9ef 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/LastFieldValueUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/LastFieldValueUpdateProcessorFactory.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.Collection;
 import java.util.List;
 import java.util.SortedSet;
-import java.util.Iterator;
 
 /**
  * Keeps only the last value of fields matching the specified 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/MD5Signature.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/MD5Signature.java b/solr/core/src/java/org/apache/solr/update/processor/MD5Signature.java
index 78baf10..7146fb7 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/MD5Signature.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/MD5Signature.java
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 package org.apache.solr.update.processor;
-import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/MaxFieldValueUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/MaxFieldValueUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/MaxFieldValueUpdateProcessorFactory.java
index 7315fd2..5b7d8c8 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/MaxFieldValueUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/MaxFieldValueUpdateProcessorFactory.java
@@ -24,7 +24,6 @@ import org.apache.solr.core.SolrCore;
 
 import java.util.Collections;
 import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * An update processor that keeps only the the maximum value from any selected 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/MinFieldValueUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/MinFieldValueUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/MinFieldValueUpdateProcessorFactory.java
index 380e4e2..9499e3b 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/MinFieldValueUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/MinFieldValueUpdateProcessorFactory.java
@@ -24,7 +24,6 @@ import org.apache.solr.core.SolrCore;
 
 import java.util.Collections;
 import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * An update processor that keeps only the the minimum value from any selected 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/NoOpDistributingUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/NoOpDistributingUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/NoOpDistributingUpdateProcessorFactory.java
index b2e8ba8..b68b58b 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/NoOpDistributingUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/NoOpDistributingUpdateProcessorFactory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.update.processor;
 
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/ParseDateFieldUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/ParseDateFieldUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/ParseDateFieldUpdateProcessorFactory.java
index a0aba58..c111917 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/ParseDateFieldUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/ParseDateFieldUpdateProcessorFactory.java
@@ -32,11 +32,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/RegexpBoostProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/RegexpBoostProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/RegexpBoostProcessor.java
index 8e5a8ca..3f41a94 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/RegexpBoostProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/RegexpBoostProcessor.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.lang.invoke.MethodHandles;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
index c301b17..6f59abc 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
@@ -18,7 +18,6 @@ package org.apache.solr.update.processor;
 
 import java.io.IOException;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.update.*;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.java
index 792ee20..2970d53 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.java
@@ -16,18 +16,11 @@
  */
 package org.apache.solr.update.processor;
 
-import java.io.IOException;
 import java.util.Date;
 
-import org.apache.solr.common.SolrException;
-import static org.apache.solr.common.SolrException.ErrorCode.*;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.update.AddUpdateCommand;
-
 import org.apache.solr.common.params.CommonParams; // javadoc
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
index bf629cc..9c1a565 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Set;
 import java.lang.invoke.MethodHandles;
 
@@ -31,12 +30,7 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.ToleratedUpdateError;
 import org.apache.solr.common.ToleratedUpdateError.CmdType;
-import org.apache.solr.common.cloud.DocCollection;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.params.ShardParams;
-import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessorFactory.java
index 8cd3500..b642d89 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessorFactory.java
@@ -22,7 +22,6 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.schema.SchemaField;
 import org.apache.solr.update.processor.DistributedUpdateProcessor.DistribPhase;
 import org.apache.solr.util.plugin.SolrCoreAware;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactory.java
index 67cead5..5238288 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactory.java
@@ -16,22 +16,13 @@
  */
 package org.apache.solr.update.processor;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.Map;
-
 import org.apache.solr.core.SolrCore;
 
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.update.AddUpdateCommand;
-
 /**
  * Removes duplicate values found in fields matching the specified conditions.  
  * The existing field values are iterated in order, and values are removed when 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java b/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
index 6c5567f..5efcb95 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
@@ -30,7 +30,6 @@ import org.apache.solr.core.SolrCore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/util/CommandOperation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/CommandOperation.java b/solr/core/src/java/org/apache/solr/util/CommandOperation.java
index b1fda00..6b8f14f 100644
--- a/solr/core/src/java/org/apache/solr/util/CommandOperation.java
+++ b/solr/core/src/java/org/apache/solr/util/CommandOperation.java
@@ -18,8 +18,6 @@ package org.apache.solr.util;
 
 import java.io.IOException;
 import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -27,7 +25,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.io.input.CharSequenceReader;
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.ContentStream;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/util/PivotListEntry.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/PivotListEntry.java b/solr/core/src/java/org/apache/solr/util/PivotListEntry.java
index f81e039..58684aa 100644
--- a/solr/core/src/java/org/apache/solr/util/PivotListEntry.java
+++ b/solr/core/src/java/org/apache/solr/util/PivotListEntry.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.util;
 
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.NamedList;
 
 import java.util.Locale;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/util/SolrCLI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 9bc986b..3916e4a 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -88,7 +88,6 @@ import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
-import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
index b30cc06..ecd48eb 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
@@ -49,7 +49,6 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.RequestParams;
 import org.apache.solr.handler.component.HighlightComponent;
 import org.apache.solr.handler.component.ResponseBuilder;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/util/xslt/TransformerProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/xslt/TransformerProvider.java b/solr/core/src/java/org/apache/solr/util/xslt/TransformerProvider.java
index d09610c..76b7285 100644
--- a/solr/core/src/java/org/apache/solr/util/xslt/TransformerProvider.java
+++ b/solr/core/src/java/org/apache/solr/util/xslt/TransformerProvider.java
@@ -17,7 +17,6 @@
 package org.apache.solr.util.xslt;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
 import java.util.concurrent.TimeUnit;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java b/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
index 8c0682b..d1cbed3 100644
--- a/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
+++ b/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr;
 
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.List;
 
 import org.apache.lucene.util.LuceneTestCase.Slow;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/SolrInfoMBeanTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/SolrInfoMBeanTest.java b/solr/core/src/test/org/apache/solr/SolrInfoMBeanTest.java
index 057ba50..bfe2316 100644
--- a/solr/core/src/test/org/apache/solr/SolrInfoMBeanTest.java
+++ b/solr/core/src/test/org/apache/solr/SolrInfoMBeanTest.java
@@ -20,7 +20,6 @@ import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.handler.StandardRequestHandler;
 import org.apache.solr.handler.admin.LukeRequestHandler;
 import org.apache.solr.handler.component.SearchComponent;
-import org.apache.solr.handler.component.SearchHandler;
 import org.apache.solr.highlight.DefaultSolrHighlighter;
 import org.apache.solr.search.LRUCache;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/TestSimpleTrackingShardHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestSimpleTrackingShardHandler.java b/solr/core/src/test/org/apache/solr/TestSimpleTrackingShardHandler.java
index 059ec6a..127b1bb 100644
--- a/solr/core/src/test/org/apache/solr/TestSimpleTrackingShardHandler.java
+++ b/solr/core/src/test/org/apache/solr/TestSimpleTrackingShardHandler.java
@@ -17,7 +17,6 @@
 package org.apache.solr;
 
 import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.handler.component.TrackingShardHandlerFactory;
 import org.apache.solr.handler.component.TrackingShardHandlerFactory.ShardRequestAndParams;
 import org.apache.solr.handler.component.TrackingShardHandlerFactory.RequestTrackingQueue;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/analysis/PathHierarchyTokenizerFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/analysis/PathHierarchyTokenizerFactoryTest.java b/solr/core/src/test/org/apache/solr/analysis/PathHierarchyTokenizerFactoryTest.java
index 1a8cef5..d079166 100644
--- a/solr/core/src/test/org/apache/solr/analysis/PathHierarchyTokenizerFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/analysis/PathHierarchyTokenizerFactoryTest.java
@@ -16,9 +16,6 @@
  */
 package org.apache.solr.analysis;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.solr.SolrTestCaseJ4;
 
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/AliasIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/AliasIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/AliasIntegrationTest.java
index fa3f861..18172e9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/AliasIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/AliasIntegrationTest.java
@@ -32,8 +32,6 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.CollectionParams.CollectionAction;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
index e262d25..c53532f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
@@ -29,7 +29,6 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
-import org.apache.http.params.CoreConnectionPNames;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrRequest;
@@ -49,7 +48,6 @@ import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CollectionParams;
 import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.StrUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java b/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java
index 875a7f8..704c877 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java
@@ -33,7 +33,6 @@ import org.easymock.EasyMock;
 import org.junit.Test;
 
 import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createStrictMock;
 
 public class ClusterStateTest extends SolrTestCaseJ4 {
   @Test

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java b/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java
index c8e30eb..e9ec533 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java
@@ -25,7 +25,6 @@ import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.util.TimeOut;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java b/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
index 7eec2c0..17d4c54 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
@@ -19,16 +19,11 @@ package org.apache.solr.cloud;
 import java.io.IOException;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.cloud.ConnectionManager;
 import org.apache.solr.common.cloud.DefaultConnectionStrategy;
-import org.apache.solr.common.cloud.OnReconnect;
 import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkClientConnectionStrategy;
-import org.apache.solr.common.cloud.ZkClientConnectionStrategy.ZkUpdate;
 import org.apache.solr.util.DefaultSolrThreadFactory;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java b/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
index 18a5f9c..1dd0275 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
@@ -28,7 +28,6 @@ import java.util.concurrent.TimeUnit;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/DeleteLastCustomShardedReplicaTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/DeleteLastCustomShardedReplicaTest.java b/solr/core/src/test/org/apache/solr/cloud/DeleteLastCustomShardedReplicaTest.java
index 5d3d604..8be64a4 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DeleteLastCustomShardedReplicaTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DeleteLastCustomShardedReplicaTest.java
@@ -24,7 +24,6 @@ import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.ImplicitDocRouter;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.params.SolrParams;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java b/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
index d9d64e5..0742ac7 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.cloud;
 
-import com.carrotsearch.randomizedtesting.annotations.Seed;
-
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.lucene.util.SentinelIntSet;
 import org.apache.lucene.util.TestUtil;
@@ -42,7 +40,6 @@ import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_PARAM;
 import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_NEXT;
 import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_START;
 
-import org.apache.solr.search.CursorMark; //jdoc
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
index 80a41dd..63dab3b 100644
--- a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
@@ -39,7 +39,6 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.ClusterState;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
index 8f4ee1e..239afa1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
@@ -46,7 +46,6 @@ import org.apache.solr.util.TimeOut;
 import org.apache.zookeeper.CreateMode;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
-import org.easymock.IAnswer;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
index 6562398..8c9daad 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
@@ -25,7 +25,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/RecoveryAfterSoftCommitTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/RecoveryAfterSoftCommitTest.java b/solr/core/src/test/org/apache/solr/cloud/RecoveryAfterSoftCommitTest.java
index cb9aea2..ba40758 100644
--- a/solr/core/src/test/org/apache/solr/cloud/RecoveryAfterSoftCommitTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/RecoveryAfterSoftCommitTest.java
@@ -19,7 +19,6 @@ package org.apache.solr.cloud;
 import java.io.File;
 import java.util.List;
 
-import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java b/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
index a4fbba1..9441e3f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
@@ -31,7 +31,6 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java b/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java
index eafc74a..8d4d024 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java
@@ -24,7 +24,6 @@ import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.embedded.JettyConfig;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.HttpClientUtil;
-import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/SimpleCollectionCreateDeleteTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/SimpleCollectionCreateDeleteTest.java b/solr/core/src/test/org/apache/solr/cloud/SimpleCollectionCreateDeleteTest.java
index 773559b..abc0819 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SimpleCollectionCreateDeleteTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SimpleCollectionCreateDeleteTest.java
@@ -17,9 +17,7 @@
 package org.apache.solr.cloud;
 
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java b/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java
index a844db3..9d415bc 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java
@@ -21,14 +21,12 @@ import java.io.FilenameFilter;
 import java.lang.invoke.MethodHandles;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java b/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
index beda3e9..e5ac96c 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
@@ -31,8 +31,6 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CollectionParams.CollectionAction;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
index aad2473..91d5581 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
@@ -16,19 +16,13 @@
  */
 package org.apache.solr.cloud;
 
-import java.io.File;
 import java.lang.invoke.MethodHandles;
 import java.net.URL;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
-
 import org.apache.solr.cloud.SolrCloudTestCase;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
@@ -47,7 +41,6 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.SimpleOrderedMap;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java
index c68bffd..6de9f2d 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.cloud;
 
-import java.lang.invoke.MethodHandles;
-
 import java.util.HashSet;
 import java.util.Set;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestCollectionAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCollectionAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestCollectionAPI.java
index dec2bf5..8905077 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCollectionAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCollectionAPI.java
@@ -44,7 +44,6 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.zookeeper.KeeperException;
 import org.junit.Test;
 
-import static org.apache.solr.cloud.OverseerCollectionMessageHandler.ROUTER;
 import static org.apache.solr.cloud.OverseerCollectionMessageHandler.SHARD_UNIQUE;
 
 public class TestCollectionAPI extends ReplicaPropertiesBase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
index c804329..d7c590d 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
@@ -31,7 +31,6 @@ import com.google.common.collect.ImmutableMap;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Delete;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
index c5a0bc5..d4a1177 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
@@ -25,7 +25,6 @@ import java.util.List;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Delete;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
index 458d68a..eaade28 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
@@ -36,7 +36,6 @@ import org.apache.jute.OutputArchive;
 import org.apache.jute.Record;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient.RemoteSolrException;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create;
 import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java b/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
index 72ebc5b..ccc04f1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
@@ -33,7 +33,6 @@ import org.apache.solr.core.TestDynamicLoading;
 import org.apache.solr.core.TestSolrConfigHandler;
 import org.apache.solr.handler.TestBlobHandler;
 import org.apache.solr.util.CryptoKeys;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.zookeeper.CreateMode;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java b/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java
index 7e4d9b7..3d9c059 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java
@@ -3,25 +3,18 @@ package org.apache.solr.cloud;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.google.common.collect.ImmutableSet;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.cloud.OverseerMessageHandler.Lock;
-import org.apache.solr.common.cloud.ClusterState;
-import org.apache.solr.common.cloud.DocCollection;
-import org.apache.solr.common.params.CollectionParams;
 import org.apache.solr.common.params.CollectionParams.CollectionAction;
 import org.apache.solr.common.util.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.solr.common.params.CollectionParams.CollectionAction.ADDREPLICAPROP;
 import static org.apache.solr.common.params.CollectionParams.CollectionAction.DELETEREPLICA;
 import static org.apache.solr.common.params.CollectionParams.CollectionAction.MODIFYCOLLECTION;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java
index e069cb8..4dc1d39 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java
@@ -46,7 +46,6 @@ import org.apache.http.config.RegistryBuilder;
 import org.apache.http.config.Registry;
 import org.apache.http.conn.socket.ConnectionSocketFactory;
 import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 
 import org.apache.lucene.util.Constants;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestSSLRandomization.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestSSLRandomization.java b/solr/core/src/test/org/apache/solr/cloud/TestSSLRandomization.java
index 0c20a49..e846f73 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestSSLRandomization.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestSSLRandomization.java
@@ -20,12 +20,10 @@ import java.lang.invoke.MethodHandles;
 import java.util.Arrays;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.util.SSLTestConfig;
 import org.apache.solr.util.RandomizeSSL;
 import org.apache.solr.util.RandomizeSSL.SSLRandomizer;
 
-import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java b/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
index 9e072ef..80bb98a 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.cloud;
 
-import java.io.File;
 import java.lang.invoke.MethodHandles;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -36,7 +35,6 @@ import java.util.Random;
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.cloud.SolrCloudTestCase;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -47,15 +45,11 @@ import org.apache.solr.client.solrj.request.schema.SchemaRequest.FieldType;
 import org.apache.solr.client.solrj.response.schema.SchemaResponse.FieldResponse;
 import org.apache.solr.client.solrj.response.schema.SchemaResponse.FieldTypeResponse;
 import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ExecutorUtil;
-import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.util.DefaultSolrThreadFactory;
 import org.apache.solr.util.TestInjection;
 import org.apache.lucene.util.LuceneTestCase.Slow;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
index 8a86ee2..1cd6819 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
@@ -17,8 +17,6 @@
 package org.apache.solr.cloud.hdfs;
 
 import java.io.IOException;
-import java.net.URI;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/BlobRepositoryCloudTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/BlobRepositoryCloudTest.java b/solr/core/src/test/org/apache/solr/core/BlobRepositoryCloudTest.java
index 2ef7083..d477c3a 100644
--- a/solr/core/src/test/org/apache/solr/core/BlobRepositoryCloudTest.java
+++ b/solr/core/src/test/org/apache/solr/core/BlobRepositoryCloudTest.java
@@ -6,21 +6,15 @@ import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.util.HashMap;
-import java.util.Set;
-
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.cloud.SolrCloudTestCase;
-import org.apache.solr.cloud.ZkTestServer;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.handler.TestBlobHandler;
-import org.apache.zookeeper.server.DataNode;
-import org.apache.zookeeper.server.DataTree;
-import org.apache.zookeeper.server.ZKDatabase;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/BlobRepositoryMockingTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/BlobRepositoryMockingTest.java b/solr/core/src/test/org/apache/solr/core/BlobRepositoryMockingTest.java
index e82915f..42454d9 100644
--- a/solr/core/src/test/org/apache/solr/core/BlobRepositoryMockingTest.java
+++ b/solr/core/src/test/org/apache/solr/core/BlobRepositoryMockingTest.java
@@ -3,10 +3,8 @@ package org.apache.solr.core;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
-import java.lang.reflect.Field;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import java.util.HashMap;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.io.IOUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java b/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
index 1d6c1b3..49315be 100644
--- a/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
@@ -16,10 +16,8 @@
  */
 package org.apache.solr.core;
 
-import java.io.IOException;
 import java.nio.file.Path;
 import java.text.SimpleDateFormat;
-import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -31,7 +29,6 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.LockFactory;
 import org.apache.lucene.store.NoLockFactory;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.cloud.hdfs.HdfsTestUtil;
@@ -41,9 +38,7 @@ import org.apache.solr.handler.SnapShooter;
 import org.apache.solr.store.hdfs.HdfsLocalityReporter;
 import org.apache.solr.util.BadHdfsThreadsFilter;
 import org.apache.solr.util.MockCoreContainer.MockCoreDescriptor;
-import org.junit.After;
 import org.junit.AfterClass;
-import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/MockInfoMBean.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/MockInfoMBean.java b/solr/core/src/test/org/apache/solr/core/MockInfoMBean.java
index b81e737..e0d566c 100644
--- a/solr/core/src/test/org/apache/solr/core/MockInfoMBean.java
+++ b/solr/core/src/test/org/apache/solr/core/MockInfoMBean.java
@@ -19,7 +19,6 @@ package org.apache.solr.core;
 import java.net.URL;
 
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrInfoMBean.Category;
 
 class MockInfoMBean implements SolrInfoMBean {
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java b/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
index f7832ef..bd20b1e 100644
--- a/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
+++ b/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
@@ -20,7 +20,6 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
 import org.apache.solr.handler.TestBlobHandler;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.solr.util.SimplePostTool;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java b/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java
index 9b65f8c..c448583 100644
--- a/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java
+++ b/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java
@@ -17,7 +17,6 @@
 package org.apache.solr.core;
 
 import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.util.PrintStreamInfoStream;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.update.LoggingInfoStream;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java b/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java
index 9f1e2ab..2cad6e8 100644
--- a/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java
+++ b/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java
@@ -17,7 +17,6 @@
 package org.apache.solr.core;
 
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.solr.util.AbstractSolrTestCase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrConfig.JmxConfiguration;
 import org.junit.After;
@@ -33,8 +32,6 @@ import javax.management.Query;
 import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
 import javax.management.remote.JMXServiceURL;
-import javax.management.remote.rmi.RMIConnectorServer;
-
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.net.ServerSocket;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
----------------------------------------------------------------------
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 f56b656..d2ef555 100644
--- a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
@@ -27,10 +27,7 @@ import org.apache.lucene.analysis.tokenattributes.FlagsAttribute;
 import org.apache.lucene.analysis.tokenattributes.FlagsAttributeImpl;
 import org.apache.lucene.analysis.util.TokenFilterFactory;
 import org.apache.lucene.analysis.util.TokenizerFactory;
-import org.apache.lucene.util.Attribute;
 import org.apache.lucene.util.AttributeFactory;
-import org.apache.lucene.util.AttributeImpl;
-import org.apache.lucene.util.AttributeReflector;
 import org.apache.solr.analysis.TokenizerChain;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.AnalysisParams;
@@ -40,7 +37,6 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.client.solrj.request.FieldAnalysisRequest;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.CustomAnalyzerStrField;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.TextField;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java b/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
index 65f2d3e..5ca51c8 100644
--- a/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
@@ -31,10 +31,6 @@ import org.apache.solr.update.processor.BufferingRequestProcessor;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.noggit.ObjectBuilder;
-import org.xml.sax.SAXException;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.util.List;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
index 45e0e00..82e8cde 100644
--- a/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
@@ -16,15 +16,7 @@
  */
 package org.apache.solr.handler;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.request.LocalSolrQueryRequest;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.search.QueryParsing;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.junit.BeforeClass;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
index bd7f314..896e4de 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
@@ -35,7 +35,6 @@ import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
-import org.apache.solr.core.ConfigOverlay;
 import org.apache.solr.util.RTimer;
 import org.apache.solr.util.SimplePostTool;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java b/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java
index 36adb14..2fde95a 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.handler;
 
-import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.common.params.CommonParams;


[21/50] [abbrv] lucene-solr:apiv2: SOLR-2199: DataImportHandler (DIH) JdbcDataSource supports multiple resultsets per query

Posted by no...@apache.org.
SOLR-2199: DataImportHandler (DIH) JdbcDataSource supports multiple resultsets per query


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/fce10ae1
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/fce10ae1
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/fce10ae1

Branch: refs/heads/apiv2
Commit: fce10ae1097fa7f764516f2b343365e86afc273d
Parents: 664e392
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Sun Jun 12 23:50:06 2016 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Mon Jun 13 00:11:27 2016 +0300

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 +
 .../solr/handler/dataimport/JdbcDataSource.java | 33 ++++++--
 .../handler/dataimport/TestJdbcDataSource.java  | 89 +++++++++++++++++++-
 3 files changed, 116 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fce10ae1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 659a1d7..2146539 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -315,6 +315,8 @@ Other Changes
 
 * SOLR-8445: fix line separator in log4j.properties files (Ahmet Arslan via Mikhail Khludnev)
 
+* SOLR-2199: DataImportHandler (DIH) JdbcDataSource supports multiple resultsets per query (Kristine Jetzke, Mark Waddle via Mikhail Khludnev)
+
 ==================  6.0.1 ==================
 
 Upgrade Notes

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fce10ae1/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
index e1eabeb..09ad775 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
@@ -342,7 +342,16 @@ public class JdbcDataSource extends
     }
 
     protected ResultSet executeStatement(Statement statement, String query) throws SQLException {
-      if (statement.execute(query)) {
+      boolean resultSetReturned = statement.execute(query);
+      return getNextResultSet(resultSetReturned, statement);
+    }
+
+    protected ResultSet getNextResultSet(final boolean initialResultSetAvailable, final Statement statement) throws SQLException {
+      boolean resultSetAvailable = initialResultSetAvailable;
+      while (!resultSetAvailable && statement.getUpdateCount() != -1) {
+        resultSetAvailable = statement.getMoreResults();
+      }
+      if (resultSetAvailable) {
         return statement.getResultSet();
       }
       return null;
@@ -441,8 +450,10 @@ public class JdbcDataSource extends
         if (getResultSet().next()) {
           return true;
         } else {
-          close();
-          return false;
+          closeResultSet();
+          setResultSet(getNextResultSet(getStatement().getMoreResults(), getStatement()));
+          setColNames(getResultSet());
+          return hasnext();
         }
       } catch (SQLException e) {
         close();
@@ -452,16 +463,26 @@ public class JdbcDataSource extends
     }
 
     protected void close() {
+      closeResultSet();
       try {
-        if (getResultSet() != null)
-          getResultSet().close();
         if (getStatement() != null)
           getStatement().close();
       } catch (Exception e) {
+        logError("Exception while closing statement", e);
+      } finally {
+        setStatement(null);
+      }
+    }
+
+    protected void closeResultSet() {
+      try {
+        if (getResultSet() != null) {
+          getResultSet().close();
+        }
+      } catch (Exception e) {
         logError("Exception while closing result set", e);
       } finally {
         setResultSet(null);
-        setStatement(null);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fce10ae1/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestJdbcDataSource.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestJdbcDataSource.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestJdbcDataSource.java
index 38ca83e..b6d05c4 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestJdbcDataSource.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestJdbcDataSource.java
@@ -19,7 +19,6 @@ package org.apache.solr.handler.dataimport;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
 import java.sql.Connection;
 import java.sql.Driver;
 import java.sql.DriverManager;
@@ -27,7 +26,12 @@ import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 
 import javax.sql.DataSource;
 
@@ -276,6 +280,7 @@ public class TestJdbcDataSource extends AbstractDataImportHandlerTestCase {
     statement.setFetchSize(500);
     statement.setMaxRows(0);
     EasyMock.expect(statement.execute("query")).andReturn(false);
+    EasyMock.expect(statement.getUpdateCount()).andReturn(-1);
     statement.close();
 
     mockControl.replay();
@@ -388,6 +393,7 @@ public class TestJdbcDataSource extends AbstractDataImportHandlerTestCase {
     statement.setFetchSize(500);
     statement.setMaxRows(0);
     EasyMock.expect(statement.execute("other query")).andReturn(false);
+    EasyMock.expect(statement.getUpdateCount()).andReturn(-1);
     statement.close();
 
     mockControl.replay();
@@ -399,6 +405,85 @@ public class TestJdbcDataSource extends AbstractDataImportHandlerTestCase {
   }
   
   @Test
+  public void testMultipleResultsSets_UpdateCountUpdateCountResultSet() throws Exception {
+    MockInitialContextFactory.bind("java:comp/env/jdbc/JndiDB", dataSource);
+    props.put(JdbcDataSource.JNDI_NAME, "java:comp/env/jdbc/JndiDB");
+    EasyMock.expect(dataSource.getConnection()).andReturn(connection);
+    jdbcDataSource.init(context, props);
+    connection.setAutoCommit(false);
+
+    Statement statement = mockControl.createMock(Statement.class);
+    EasyMock.expect(connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))
+        .andReturn(statement);
+    statement.setFetchSize(500);
+    statement.setMaxRows(0);
+    EasyMock.expect(statement.execute("query")).andReturn(false);
+    EasyMock.expect(statement.getUpdateCount()).andReturn(1);
+    EasyMock.expect(statement.getMoreResults()).andReturn(false);
+    EasyMock.expect(statement.getUpdateCount()).andReturn(1);
+    EasyMock.expect(statement.getMoreResults()).andReturn(true);
+    ResultSet resultSet = mockControl.createMock(ResultSet.class);
+    EasyMock.expect(statement.getResultSet()).andReturn(resultSet);
+    ResultSetMetaData metaData = mockControl.createMock(ResultSetMetaData.class);
+    EasyMock.expect(resultSet.getMetaData()).andReturn(metaData);
+    EasyMock.expect(metaData.getColumnCount()).andReturn(0);
+
+    mockControl.replay();
+
+    final ResultSetIterator resultSetIterator = jdbcDataSource.new ResultSetIterator("query");
+    assertSame(resultSet, resultSetIterator.getResultSet());
+
+    mockControl.verify();
+
+  }
+
+  @Test
+  public void testMultipleResultsSets_ResultSetResultSet() throws Exception {
+    MockInitialContextFactory.bind("java:comp/env/jdbc/JndiDB", dataSource);
+    props.put(JdbcDataSource.JNDI_NAME, "java:comp/env/jdbc/JndiDB");
+    EasyMock.expect(dataSource.getConnection()).andReturn(connection);
+    jdbcDataSource.init(context, props);
+    connection.setAutoCommit(false);
+
+    Statement statement = mockControl.createMock(Statement.class);
+    EasyMock.expect(connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))
+        .andReturn(statement);
+    statement.setFetchSize(500);
+    statement.setMaxRows(0);
+    EasyMock.expect(statement.execute("query")).andReturn(true);
+    ResultSet resultSet1 = mockControl.createMock(ResultSet.class);
+    EasyMock.expect(statement.getResultSet()).andReturn(resultSet1);
+    ResultSetMetaData metaData1 = mockControl.createMock(ResultSetMetaData.class);
+    EasyMock.expect(resultSet1.getMetaData()).andReturn(metaData1);
+    EasyMock.expect(metaData1.getColumnCount()).andReturn(0);
+    EasyMock.expect(resultSet1.next()).andReturn(false);
+    resultSet1.close();
+    EasyMock.expect(statement.getMoreResults()).andReturn(true);
+    ResultSet resultSet2 = mockControl.createMock(ResultSet.class);
+    EasyMock.expect(statement.getResultSet()).andReturn(resultSet2);
+    ResultSetMetaData metaData2 = mockControl.createMock(ResultSetMetaData.class);
+    EasyMock.expect(resultSet2.getMetaData()).andReturn(metaData2);
+    EasyMock.expect(metaData2.getColumnCount()).andReturn(0);
+    EasyMock.expect(resultSet2.next()).andReturn(true);
+    EasyMock.expect(resultSet2.next()).andReturn(false);
+    resultSet2.close();
+    EasyMock.expect(statement.getMoreResults()).andReturn(false);
+    EasyMock.expect(statement.getUpdateCount()).andReturn(-1);
+    statement.close();
+
+    mockControl.replay();
+
+    final ResultSetIterator resultSetIterator = jdbcDataSource.new ResultSetIterator("query");
+    assertSame(resultSet1, resultSetIterator.getResultSet());
+    assertTrue(resultSetIterator.hasnext());
+    assertSame(resultSet2, resultSetIterator.getResultSet());
+    assertFalse(resultSetIterator.hasnext());
+
+    mockControl.verify();
+
+  }
+  
+  @Test
   public void testRetrieveFromDriverManager() throws Exception {
     DriverManager.registerDriver(driver);
     try {


[14/50] [abbrv] lucene-solr:apiv2: LUCENE-6766: add changes

Posted by no...@apache.org.
LUCENE-6766: add changes


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8bd27977
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8bd27977
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8bd27977

Branch: refs/heads/apiv2
Commit: 8bd27977dd993d4443be359a6f7ec92c7f012247
Parents: cc7cede
Author: Mike McCandless <mi...@apache.org>
Authored: Sat Jun 11 11:50:47 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sat Jun 11 11:50:47 2016 -0400

----------------------------------------------------------------------
 lucene/CHANGES.txt | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8bd27977/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 501f2ee..f104ac6 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -25,6 +25,11 @@ Improvements
   sub-files' checkums and segment IDs, to catch hardware issues or
   filesytem bugs earlier (Robert Muir, Mike McCandless)
 
+* LUCENE-6766: Index time sorting has graduated from the misc module
+  to core, is much simpler to use, via
+  IndexWriter.setIndexSort, and now works with dimensional points.
+  (Adrien Grand, Mike McCandless)
+
 Other
 
 * LUCENE-4787: Fixed some highlighting javadocs. (Michael Dodsworth via Adrien


[11/50] [abbrv] lucene-solr:apiv2: LUCENE-7331: Remove GeoPointTestUtil from TestGeoPointQuery.

Posted by no...@apache.org.
LUCENE-7331: Remove GeoPointTestUtil from TestGeoPointQuery.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/f767855d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/f767855d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/f767855d

Branch: refs/heads/apiv2
Commit: f767855da30e8d8b070b7566cb6eebb29af63334
Parents: b33d717
Author: Nicholas Knize <nk...@gmail.com>
Authored: Fri Jun 10 12:30:46 2016 -0500
Committer: Nicholas Knize <nk...@gmail.com>
Committed: Fri Jun 10 12:49:52 2016 -0500

----------------------------------------------------------------------
 .../geopoint/search/TestGeoPointQuery.java      | 37 ++++++++++----------
 1 file changed, 19 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f767855d/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
index 1ac9ffe..a657fd0 100644
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
+++ b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
@@ -17,11 +17,14 @@
 package org.apache.lucene.spatial.geopoint.search;
 
 import org.apache.lucene.document.Document;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.geo.BaseGeoPointTestCase;
 import org.apache.lucene.geo.Polygon;
-import org.apache.lucene.geo.Rectangle;
 import org.apache.lucene.spatial.geopoint.document.GeoPointField;
+import org.apache.lucene.store.Directory;
 
 /**
  * random testing for GeoPoint query logic
@@ -60,25 +63,23 @@ public class TestGeoPointQuery extends BaseGeoPointTestCase {
     return new GeoPointInPolygonQuery(field, polygons);
   }
 
-  // TODO: remove these once we get tests passing!
+  /** explicit test failure for LUCENE-7325 */
+  public void testInvalidShift() throws Exception {
+    Directory dir = newDirectory();
+    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
 
-  @Override
-  protected double nextLongitude() {
-    return GeoPointTestUtil.nextLongitude();
-  }
-
-  @Override
-  protected double nextLatitude() {
-    return GeoPointTestUtil.nextLatitude();
-  }
+    // add a doc with a point
+    Document document = new Document();
+    addPointToDoc("field", document, 80, -65);
+    writer.addDocument(document);
 
-  @Override
-  protected Rectangle nextBox() {
-    return GeoPointTestUtil.nextBox();
-  }
+    // search and verify we found our doc
+    IndexReader reader = writer.getReader();
+    IndexSearcher searcher = newSearcher(reader);
+    assertEquals(0, searcher.count(newRectQuery("field", 90, 90, -180, 0)));
 
-  @Override
-  protected Polygon nextPolygon() {
-    return GeoPointTestUtil.nextPolygon();
+    reader.close();
+    writer.close();
+    dir.close();
   }
 }


[33/50] [abbrv] lucene-solr:apiv2: SOLR-9161: change SolrPluginUtils.invokeSetters implementation to accommodate setter variants

Posted by no...@apache.org.
SOLR-9161: change SolrPluginUtils.invokeSetters implementation to accommodate setter variants


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/038fe937
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/038fe937
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/038fe937

Branch: refs/heads/apiv2
Commit: 038fe9378dab18d0e16b34c26dc802c6560e77e7
Parents: 95c7e6d
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Jun 13 13:05:08 2016 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Jun 13 13:05:08 2016 +0100

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  3 +++
 .../org/apache/solr/util/SolrPluginUtils.java   | 25 +++++++++++++----
 .../apache/solr/util/SolrPluginUtilsTest.java   | 28 ++++++++++++++++++++
 3 files changed, 51 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/038fe937/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2146539..c886fd0 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -67,6 +67,9 @@ Bug Fixes
 
 * SOLR-9199: ZkController#publishAndWaitForDownStates logic is inefficient (Hrishikesh Gadre)
 
+* SOLR-9161: Change SolrPluginUtils.invokeSetters implementation to accommodate setter variants.
+  (Christine Poerschke, Steve Rowe, Uwe Schindler)
+
 ==================  6.1.0 ==================
 
 Upgrading from Solr any prior release

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/038fe937/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
index ecd48eb..1e5a183 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
@@ -16,6 +16,10 @@
  */
 package org.apache.solr.util;
 
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.MethodDescriptor;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.InvocationTargetException;
@@ -1065,8 +1069,8 @@ public class SolrPluginUtils {
       String key = entry.getKey();
       String setterName = "set" + String.valueOf(Character.toUpperCase(key.charAt(0))) + key.substring(1);
       try {
-        final Method method = findSetter(clazz, setterName, key);
         final Object val = entry.getValue();
+        final Method method = findSetter(clazz, setterName, key, val.getClass());
         method.invoke(bean, val);
       } catch (InvocationTargetException | IllegalAccessException e1) {
         throw new RuntimeException("Error invoking setter " + setterName + " on class : " + clazz.getName(), e1);
@@ -1074,10 +1078,21 @@ public class SolrPluginUtils {
     }
   }
 
-  private static Method findSetter(Class<?> clazz, String setterName, String key) {
-    for (Method m : clazz.getMethods()) {
-      if (m.getName().equals(setterName) && m.getParameterTypes().length == 1) {
-        return m;
+  private static Method findSetter(Class<?> clazz, String setterName, String key, Class<?> paramClazz) {
+    BeanInfo beanInfo;
+    try {
+      beanInfo = Introspector.getBeanInfo(clazz);
+    } catch (IntrospectionException ie) {
+      throw new RuntimeException("Error getting bean info for class : " + clazz.getName(), ie);
+    }
+    for (final boolean matchParamClazz: new boolean[]{true, false}) {
+      for (final MethodDescriptor desc : beanInfo.getMethodDescriptors()) {
+        final Method m = desc.getMethod();
+        final Class<?> p[] = m.getParameterTypes();
+        if (m.getName().equals(setterName) && p.length == 1 &&
+            (!matchParamClazz || paramClazz.equals(p[0]))) {
+          return m;
+        }
       }
     }
     throw new RuntimeException("No setter corrresponding to '" + key + "' in " + clazz.getName());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/038fe937/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
index 33e9291..fc50680 100644
--- a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
@@ -455,6 +455,34 @@ public class SolrPluginUtilsTest extends SolrTestCaseJ4 {
     assertEquals(3, q.build().getMinimumNumberShouldMatch());
   }
 
+  private class InvokeSettersTestClass {
+    private float aFloat = random().nextFloat();
+    public float getAFloat() {
+      return aFloat;
+    }
+    public void setAFloat(float aFloat) {
+      this.aFloat = aFloat;
+    }
+    public void setAFloat(String aFloat) {
+      this.aFloat = Float.parseFloat(aFloat);
+    }
+  }
+
+  @Test
+  public void testInvokeSetters() {
+    final Float theFloat = new Float(random().nextFloat());
+    implTestInvokeSetters(theFloat, theFloat);
+    implTestInvokeSetters(theFloat, theFloat.toString());
+  }
+
+  public void implTestInvokeSetters(final Float theFloat, final Object theFloatObject) {
+    final InvokeSettersTestClass bean = new InvokeSettersTestClass();
+    final Map<String,Object> initArgs = new HashMap<>();
+    initArgs.put("aFloat", theFloatObject);
+    SolrPluginUtils.invokeSetters(bean, initArgs.entrySet());
+    assertEquals(bean.getAFloat(), theFloat.floatValue(), 0.0);
+  }
+
   /** macro */
   public String pe(CharSequence s) {
     return SolrPluginUtils.partialEscape(s).toString();


[05/50] [abbrv] lucene-solr:apiv2: LUCENE-7286: Added support for highlighting SynonymQuery.

Posted by no...@apache.org.
LUCENE-7286: Added support for highlighting SynonymQuery.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e418bd0e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e418bd0e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e418bd0e

Branch: refs/heads/apiv2
Commit: e418bd0eb33eb058c0403dfcdaef8733bd6f4fc1
Parents: 3871439
Author: Adrien Grand <jp...@gmail.com>
Authored: Fri Jun 10 09:11:15 2016 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Fri Jun 10 09:11:15 2016 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |  2 ++
 .../highlight/WeightedSpanTermExtractor.java    |  3 ++-
 .../search/highlight/HighlighterTest.java       | 21 +++++++++++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e418bd0e/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 20df7b2..279fc4d 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -134,6 +134,8 @@ Bug Fixes
   other ranges had more than one clause matching (Ahmet Arslan,
   hossman, Mike McCandless)
 
+* LUCENE-7286: Added support for highlighting SynonymQuery. (Adrien Grand)
+
 Other
 
 * LUCENE-7295: TermAutomatonQuery.hashCode calculates Automaton.toDot().hash,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e418bd0e/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
----------------------------------------------------------------------
diff --git a/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java b/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
index 43f75cc..7507bdd 100644
--- a/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
+++ b/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
@@ -53,6 +53,7 @@ import org.apache.lucene.search.MultiPhraseQuery;
 import org.apache.lucene.search.MultiTermQuery;
 import org.apache.lucene.search.PhraseQuery;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.SynonymQuery;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.join.ToChildBlockJoinQuery;
 import org.apache.lucene.search.join.ToParentBlockJoinQuery;
@@ -138,7 +139,7 @@ public class WeightedSpanTermExtractor {
         SpanNearQuery sp = new SpanNearQuery(clauses, phraseQuery.getSlop() + positionGaps, inorder);
         extractWeightedSpanTerms(terms, sp, boost);
       }
-    } else if (query instanceof TermQuery) {
+    } else if (query instanceof TermQuery || query instanceof SynonymQuery) {
       extractWeightedTerms(terms, query, boost);
     } else if (query instanceof SpanQuery) {
       extractWeightedSpanTerms(terms, (SpanQuery) query, boost);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e418bd0e/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
----------------------------------------------------------------------
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java b/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
index 3c6f108..cf727d7 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
@@ -71,6 +71,7 @@ import org.apache.lucene.search.PhraseQuery.Builder;
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.RegexpQuery;
+import org.apache.lucene.search.SynonymQuery;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TermRangeQuery;
 import org.apache.lucene.search.TopDocs;
@@ -223,6 +224,24 @@ public class HighlighterTest extends BaseTokenStreamTestCase implements Formatte
     assertEquals("This piece of text refers to Kennedy at the beginning then has a longer piece of text that is <B>very</B>", fragment);
   }
 
+  public void testHighlightingSynonymQuery() throws Exception {
+    searcher = newSearcher(reader);
+    Query query = new SynonymQuery(new Term(FIELD_NAME, "jfk"), new Term(FIELD_NAME, "kennedy"));
+    QueryScorer scorer = new QueryScorer(query, FIELD_NAME);
+    Highlighter highlighter = new Highlighter(scorer);
+    TokenStream stream = getAnyTokenStream(FIELD_NAME, 2);
+    Fragmenter fragmenter = new SimpleSpanFragmenter(scorer);
+    highlighter.setTextFragmenter(fragmenter);
+    String storedField = searcher.doc(2).get(FIELD_NAME);
+    String fragment = highlighter.getBestFragment(stream, storedField);
+    assertEquals("<B>JFK</B> has been shot", fragment);
+
+    stream = getAnyTokenStream(FIELD_NAME, 3);
+    storedField = searcher.doc(3).get(FIELD_NAME);
+    fragment = highlighter.getBestFragment(stream, storedField);
+    assertEquals("John <B>Kennedy</B> has been shot", fragment);
+  }
+
   public void testHighlightUnknownQueryAfterRewrite() throws IOException, InvalidTokenOffsetsException {
     Query query = new Query() {
       
@@ -2093,7 +2112,7 @@ public class HighlighterTest extends BaseTokenStreamTestCase implements Formatte
     analyzer = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET);
     ramDir = newDirectory();
     fieldType = random().nextBoolean() ? FIELD_TYPE_TV : TextField.TYPE_STORED;
-    IndexWriter writer = new IndexWriter(ramDir, newIndexWriterConfig(analyzer));
+    IndexWriter writer = new IndexWriter(ramDir, newIndexWriterConfig(analyzer).setMergePolicy(newLogMergePolicy()));
 
     for (String text : texts) {
       writer.addDocument(doc(FIELD_NAME, text));


[38/50] [abbrv] lucene-solr:apiv2: LUCENE-7338: Fix javadocs package and overview description section anchor names to the Java8 style: s/*_description/*.description/

Posted by no...@apache.org.
LUCENE-7338: Fix javadocs package and overview description section anchor names to the Java8 style: s/*_description/*.description/


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a2a1bd2a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a2a1bd2a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a2a1bd2a

Branch: refs/heads/apiv2
Commit: a2a1bd2a4ae91e6b990a3b7f9df62802acddf40e
Parents: 08c14f1
Author: Steve Rowe <sa...@apache.org>
Authored: Mon Jun 13 16:10:49 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Mon Jun 13 16:10:49 2016 -0400

----------------------------------------------------------------------
 .../org/apache/lucene/index/memory/MemoryIndex.java   |  2 +-
 .../lucene/queryparser/classic/QueryParser.java       |  2 +-
 .../apache/lucene/queryparser/classic/QueryParser.jj  |  2 +-
 .../flexible/standard/StandardQueryParser.java        |  2 +-
 lucene/site/xsl/index.xsl                             | 14 +++++++-------
 5 files changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a2a1bd2a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
----------------------------------------------------------------------
diff --git a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java b/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
index e3aa4b1..cde20e5 100644
--- a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
+++ b/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
@@ -80,7 +80,7 @@ import org.apache.lucene.util.IntBlockPool.SliceWriter;
  * <a target="_blank" href="http://today.java.net/pub/a/today/2003/07/30/LuceneIntro.html">Lucene Analyzer Intro</a>.
  * <p>
  * Arbitrary Lucene queries can be run against this class - see <a target="_blank" 
- * href="{@docRoot}/../queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_description">
+ * href="{@docRoot}/../queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description">
  * Lucene Query Syntax</a>
  * as well as <a target="_blank" 
  * href="http://today.java.net/pub/a/today/2003/11/07/QueryParserRules.html">Query Parser Rules</a>.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a2a1bd2a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
index 8f8294a..08a477e 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java
@@ -42,7 +42,7 @@ import org.apache.lucene.search.TermRangeQuery;
  *
  * <p>
  * Examples of appropriately formatted queries can be found in the <a
- * href="{@docRoot}/org/apache/lucene/queryparser/classic/package-summary.html#package_description">query syntax
+ * href="{@docRoot}/org/apache/lucene/queryparser/classic/package-summary.html#package.description">query syntax
  * documentation</a>.
  * </p>
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a2a1bd2a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj
index c809f2c..9bf154d 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj
@@ -67,7 +67,7 @@ import org.apache.lucene.search.TermQuery;
  *
  * <p>
  * Examples of appropriately formatted queries can be found in the <a
- * href="{@docRoot}/org/apache/lucene/queryparser/classic/package-summary.html#package_description">query syntax
+ * href="{@docRoot}/org/apache/lucene/queryparser/classic/package-summary.html#package.description">query syntax
  * documentation</a>.
  * </p>
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a2a1bd2a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java
index 2774cf0..2cd8084 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java
@@ -84,7 +84,7 @@ import org.apache.lucene.search.Query;
  * 
  * <p>
  * Examples of appropriately formatted queries can be found in the <a
- * href="{@docRoot}/org/apache/lucene/queryparser/classic/package-summary.html#package_description">
+ * href="{@docRoot}/org/apache/lucene/queryparser/classic/package-summary.html#package.description">
  * query syntax documentation</a>.
  * </p>
  * <p>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a2a1bd2a/lucene/site/xsl/index.xsl
----------------------------------------------------------------------
diff --git a/lucene/site/xsl/index.xsl b/lucene/site/xsl/index.xsl
index db424bb..df3edfe 100644
--- a/lucene/site/xsl/index.xsl
+++ b/lucene/site/xsl/index.xsl
@@ -65,11 +65,11 @@
         development of Lucene. The goal is to help you "get started". It does not go into great depth
         on some of the conceptual or inner details of Lucene:</p>
         <ul>
-        <li><a href="demo/overview-summary.html#overview_description">Lucene demo, its usage, and sources</a>:
+        <li><a href="demo/overview-summary.html#overview.description">Lucene demo, its usage, and sources</a>:
         Tutorial and walk-through of the command-line Lucene demo.</li>
-        <li><a href="core/overview-summary.html#overview_description">Introduction to Lucene's APIs</a>:
+        <li><a href="core/overview-summary.html#overview.description">Introduction to Lucene's APIs</a>:
         High-level summary of the different Lucene packages. </li>
-        <li><a href="core/org/apache/lucene/analysis/package-summary.html#package_description">Analysis overview</a>:
+        <li><a href="core/org/apache/lucene/analysis/package-summary.html#package.description">Analysis overview</a>:
         Introduction to Lucene's analysis API.  See also the
         <a href="core/org/apache/lucene/analysis/TokenStream.html">TokenStream consumer workflow</a>.</li>
         </ul>
@@ -79,10 +79,10 @@
             <li><a href="SYSTEM_REQUIREMENTS.html">System Requirements</a>: Minimum and supported Java versions.</li>
             <li><a href="MIGRATE.html">Migration Guide</a>: What changed in Lucene 6; how to migrate code from Lucene 5.x.</li>
             <li><a href="JRE_VERSION_MIGRATION.html">JRE Version Migration</a>: Information about upgrading between major JRE versions.</li>
-            <li><a href="core/org/apache/lucene/codecs/{$defaultCodecPackage}/package-summary.html#package_description">File Formats</a>: Guide to the supported index format used by Lucene.  This can be customized by using <a href="core/org/apache/lucene/codecs/package-summary.html#package_description">an alternate codec</a>.</li>
-            <li><a href="core/org/apache/lucene/search/package-summary.html#package_description">Search and Scoring in Lucene</a>: Introduction to how Lucene scores documents.</li>
-            <li><a href="core/org/apache/lucene/search/similarities/TFIDFSimilarity.html">Classic Scoring Formula</a>: Formula of Lucene's classic <a href="http://en.wikipedia.org/wiki/Vector_Space_Model">Vector Space</a> implementation. (look <a href="core/org/apache/lucene/search/similarities/package-summary.html#package_description">here</a> for other models)</li>
-            <li><a href="queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_description">Classic QueryParser Syntax</a>: Overview of the Classic QueryParser's syntax and features.</li>
+            <li><a href="core/org/apache/lucene/codecs/{$defaultCodecPackage}/package-summary.html#package.description">File Formats</a>: Guide to the supported index format used by Lucene.  This can be customized by using <a href="core/org/apache/lucene/codecs/package-summary.html#package.description">an alternate codec</a>.</li>
+            <li><a href="core/org/apache/lucene/search/package-summary.html#package.description">Search and Scoring in Lucene</a>: Introduction to how Lucene scores documents.</li>
+            <li><a href="core/org/apache/lucene/search/similarities/TFIDFSimilarity.html">Classic Scoring Formula</a>: Formula of Lucene's classic <a href="http://en.wikipedia.org/wiki/Vector_Space_Model">Vector Space</a> implementation. (look <a href="core/org/apache/lucene/search/similarities/package-summary.html#package.description">here</a> for other models)</li>
+            <li><a href="queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description">Classic QueryParser Syntax</a>: Overview of the Classic QueryParser's syntax and features.</li>
           </ul>
         <h2>API Javadocs</h2>
         <xsl:call-template name="modules"/>


[24/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java b/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
index 832ee1f..1839881 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
@@ -42,7 +42,6 @@ import org.apache.solr.common.cloud.ZkConfigManager;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.core.SolrConfig;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/TestReqParamsAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestReqParamsAPI.java b/solr/core/src/test/org/apache/solr/handler/TestReqParamsAPI.java
index aca6227..d555a2d 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestReqParamsAPI.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestReqParamsAPI.java
@@ -31,7 +31,6 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.core.RequestParams;
 import org.apache.solr.core.TestSolrConfigHandler;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
index 8448ec7..ab2f467 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
@@ -37,7 +37,6 @@ import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.RequestParams;
 import org.apache.solr.core.TestSolrConfigHandler;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
index 003900c..3fdf78a 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
@@ -44,8 +44,6 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
-import org.apache.solr.core.ConfigOverlay;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.junit.Test;
 import org.noggit.JSONParser;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/ThrowErrorOnInitRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/ThrowErrorOnInitRequestHandler.java b/solr/core/src/test/org/apache/solr/handler/ThrowErrorOnInitRequestHandler.java
index f0748b1..594a3f1 100644
--- a/solr/core/src/test/org/apache/solr/handler/ThrowErrorOnInitRequestHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/ThrowErrorOnInitRequestHandler.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
index c6f9520..6f1a802 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
@@ -19,11 +19,8 @@ package org.apache.solr.handler.admin;
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.LockFactory;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.core.CoreContainer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
index 64f0e38..dd1d5c8 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
@@ -25,7 +25,6 @@ import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.params.MoreLikeThisParams;
 import org.apache.solr.common.util.NamedList;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java b/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
index cda4058..7d38d62 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
@@ -23,7 +23,6 @@ import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.io.IOException;
 import java.util.*;
 
 public class TestExpandComponent extends SolrTestCaseJ4 {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/handler/component/TestPivotHelperCode.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TestPivotHelperCode.java b/solr/core/src/test/org/apache/solr/handler/component/TestPivotHelperCode.java
index 8d9a2bd..0d33d11 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TestPivotHelperCode.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TestPivotHelperCode.java
@@ -18,14 +18,11 @@ package org.apache.solr.handler.component;
 
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.handler.component.PivotFacetField;
-
 import org.apache.lucene.util.TestUtil;
 
 import java.util.List;
 import java.util.Arrays;
 import java.util.ArrayList;
-import java.util.Collections;
 
 /**
  * A light weight test of various helper methods used in pivot faceting

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/highlight/HighlighterMaxOffsetTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/highlight/HighlighterMaxOffsetTest.java b/solr/core/src/test/org/apache/solr/highlight/HighlighterMaxOffsetTest.java
index 60c11f1..fb47f6e 100644
--- a/solr/core/src/test/org/apache/solr/highlight/HighlighterMaxOffsetTest.java
+++ b/solr/core/src/test/org/apache/solr/highlight/HighlighterMaxOffsetTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.highlight;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.request.SolrQueryRequest;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java b/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java
index a141efb..199717b 100644
--- a/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java
+++ b/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java
@@ -19,12 +19,9 @@ package org.apache.solr.internal.csv;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
-import java.util.Arrays;
 import java.util.Random;
 
-import junit.framework.Test;
 import junit.framework.TestCase;
-import junit.framework.TestSuite;
 
 /**
  * CSVPrinterTest

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/internal/csv/CSVStrategyTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/internal/csv/CSVStrategyTest.java b/solr/core/src/test/org/apache/solr/internal/csv/CSVStrategyTest.java
index 0a10d7f..3a69821 100644
--- a/solr/core/src/test/org/apache/solr/internal/csv/CSVStrategyTest.java
+++ b/solr/core/src/test/org/apache/solr/internal/csv/CSVStrategyTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.internal.csv;
 
-import java.io.StringReader;
-
 import junit.framework.TestCase;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/internal/csv/ExtendedBufferedReaderTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/internal/csv/ExtendedBufferedReaderTest.java b/solr/core/src/test/org/apache/solr/internal/csv/ExtendedBufferedReaderTest.java
index 8607e1c..804c36b 100644
--- a/solr/core/src/test/org/apache/solr/internal/csv/ExtendedBufferedReaderTest.java
+++ b/solr/core/src/test/org/apache/solr/internal/csv/ExtendedBufferedReaderTest.java
@@ -19,9 +19,7 @@ package org.apache.solr.internal.csv;
 import java.io.StringReader;
 import java.util.Arrays;
 
-import junit.framework.Test;
 import junit.framework.TestCase;
-import junit.framework.TestSuite;
 
 /**
  * ExtendedBufferedReaderTest

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/request/JSONWriterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/JSONWriterTest.java b/solr/core/src/test/org/apache/solr/request/JSONWriterTest.java
index 9c4e298..f989cf1 100644
--- a/solr/core/src/test/org/apache/solr/request/JSONWriterTest.java
+++ b/solr/core/src/test/org/apache/solr/request/JSONWriterTest.java
@@ -19,9 +19,6 @@ package org.apache.solr.request;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
-import java.util.HashSet;
-import java.util.Set;
-
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;
@@ -29,7 +26,6 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.search.ReturnFields;
 import org.apache.solr.response.JSONResponseWriter;
-import org.apache.solr.response.PHPSerializedResponseWriter;
 import org.apache.solr.response.PythonResponseWriter;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.RubyResponseWriter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/request/TestBinaryResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestBinaryResponseWriter.java b/solr/core/src/test/org/apache/solr/request/TestBinaryResponseWriter.java
index d16f3ea..41bd67e 100644
--- a/solr/core/src/test/org/apache/solr/request/TestBinaryResponseWriter.java
+++ b/solr/core/src/test/org/apache/solr/request/TestBinaryResponseWriter.java
@@ -30,7 +30,6 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.response.BinaryQueryResponseWriter;
 import org.apache.solr.response.BinaryResponseWriter.Resolver;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.search.ReturnFields;
 import org.apache.solr.search.SolrReturnFields;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/request/TestFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestFaceting.java b/solr/core/src/test/org/apache/solr/request/TestFaceting.java
index cee9f52..8fdac58 100644
--- a/solr/core/src/test/org/apache/solr/request/TestFaceting.java
+++ b/solr/core/src/test/org/apache/solr/request/TestFaceting.java
@@ -27,7 +27,6 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.util.BytesRef;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.FacetParams;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.uninverting.DocTermOrds;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java b/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
index b3698e1..68eac48 100644
--- a/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
+++ b/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
@@ -39,7 +39,6 @@ import org.slf4j.LoggerFactory;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Arrays;
-import java.util.Comparator;
 
 public class TestIntervalFaceting extends SolrTestCaseJ4 {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/response/TestPHPSerializedResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestPHPSerializedResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestPHPSerializedResponseWriter.java
index fda7629..5932d69 100644
--- a/solr/core/src/test/org/apache/solr/response/TestPHPSerializedResponseWriter.java
+++ b/solr/core/src/test/org/apache/solr/response/TestPHPSerializedResponseWriter.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.LinkedHashMap;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.response.PHPSerializedResponseWriter;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.QueryResponseWriter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/response/TestRawResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestRawResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestRawResponseWriter.java
index bf1d8f6..0f95f79 100644
--- a/solr/core/src/test/org/apache/solr/response/TestRawResponseWriter.java
+++ b/solr/core/src/test/org/apache/solr/response/TestRawResponseWriter.java
@@ -20,7 +20,6 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringWriter;
-import java.util.Collections;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.lucene.util.TestUtil;
@@ -28,10 +27,7 @@ import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.impl.BinaryResponseParser;
 import org.apache.solr.common.util.ContentStreamBase.ByteArrayStream;
 import org.apache.solr.common.util.ContentStreamBase.StringStream;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-
 import org.junit.BeforeClass;
 import org.junit.AfterClass;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/CurrencyFieldOpenExchangeTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/CurrencyFieldOpenExchangeTest.java b/solr/core/src/test/org/apache/solr/schema/CurrencyFieldOpenExchangeTest.java
index eb79e09..fed51eb 100644
--- a/solr/core/src/test/org/apache/solr/schema/CurrencyFieldOpenExchangeTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/CurrencyFieldOpenExchangeTest.java
@@ -15,16 +15,6 @@
  * limitations under the License.
  */
 package org.apache.solr.schema;
-import org.apache.lucene.index.IndexableField;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.core.SolrCore;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
 
 /**
  * Tests currency field type using OpenExchangeRatesOrgProvider.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/CurrencyFieldXmlFileTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/CurrencyFieldXmlFileTest.java b/solr/core/src/test/org/apache/solr/schema/CurrencyFieldXmlFileTest.java
index 7c27faa..f3872d0 100644
--- a/solr/core/src/test/org/apache/solr/schema/CurrencyFieldXmlFileTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/CurrencyFieldXmlFileTest.java
@@ -15,17 +15,8 @@
  * limitations under the License.
  */
 package org.apache.solr.schema;
-import org.apache.lucene.index.IndexableField;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.core.SolrCore;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-
 /**
  * Tests currency field type using FileExchangeRateProvider
  */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/EnumFieldTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/EnumFieldTest.java b/solr/core/src/test/org/apache/solr/schema/EnumFieldTest.java
index 8abbce7..aa5a8a9 100644
--- a/solr/core/src/test/org/apache/solr/schema/EnumFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/EnumFieldTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.schema;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.request.SolrQueryRequest;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java b/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
index ba59344..56eb7e0 100644
--- a/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
@@ -19,7 +19,6 @@ import java.util.List;
 
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.SolrTestCaseJ4;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java b/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java
index 24b073f..42e72ee 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java
@@ -35,7 +35,6 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
index d22f11b..e724da9 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
@@ -32,7 +32,6 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.util.BaseTestHarness;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.zookeeper.data.Stat;
 import org.eclipse.jetty.servlet.ServletHolder;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java b/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java
index e8a2f85..de774f7 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java
@@ -24,11 +24,9 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.util.BaseTestHarness;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.junit.After;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.restlet.ext.servlet.ServerServlet;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/schema/TestCollationField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/TestCollationField.java b/solr/core/src/test/org/apache/solr/schema/TestCollationField.java
index 8eb2bd9..6351b82 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestCollationField.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestCollationField.java
@@ -22,7 +22,6 @@ import java.text.Collator;
 import java.text.RuleBasedCollator;
 import java.util.Locale;
 
-import org.apache.lucene.util.TestUtil;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/AnalyticsQueryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/AnalyticsQueryTest.java b/solr/core/src/test/org/apache/solr/search/AnalyticsQueryTest.java
index f70dd7e..59bf95c 100644
--- a/solr/core/src/test/org/apache/solr/search/AnalyticsQueryTest.java
+++ b/solr/core/src/test/org/apache/solr/search/AnalyticsQueryTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.junit.Before;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/DelayingSearchComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/DelayingSearchComponent.java b/solr/core/src/test/org/apache/solr/search/DelayingSearchComponent.java
index 76b22d9..eb64063 100644
--- a/solr/core/src/test/org/apache/solr/search/DelayingSearchComponent.java
+++ b/solr/core/src/test/org/apache/solr/search/DelayingSearchComponent.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.search;
 
-import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.handler.component.SearchComponent;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java
index 45c6d4f..3c51a36 100644
--- a/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/QueryParsingTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/QueryParsingTest.java b/solr/core/src/test/org/apache/solr/search/QueryParsingTest.java
index 2a7362d..b703846 100644
--- a/solr/core/src/test/org/apache/solr/search/QueryParsingTest.java
+++ b/solr/core/src/test/org/apache/solr/search/QueryParsingTest.java
@@ -16,18 +16,10 @@
  */
 package org.apache.solr.search;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.SchemaField;
 import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.util.LinkedHashMap;
-import java.util.List;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/RankQueryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/RankQueryTest.java b/solr/core/src/test/org/apache/solr/search/RankQueryTest.java
index 9062070..af7ad4a 100644
--- a/solr/core/src/test/org/apache/solr/search/RankQueryTest.java
+++ b/solr/core/src/test/org/apache/solr/search/RankQueryTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.junit.Before;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/SortSpecParsingTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/SortSpecParsingTest.java b/solr/core/src/test/org/apache/solr/search/SortSpecParsingTest.java
index 3c15018..a7eb5ed 100644
--- a/solr/core/src/test/org/apache/solr/search/SortSpecParsingTest.java
+++ b/solr/core/src/test/org/apache/solr/search/SortSpecParsingTest.java
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 package org.apache.solr.search;
-import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
 import org.apache.solr.SolrTestCaseJ4;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
index e34f377..6eca623 100644
--- a/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.search;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Arrays;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
index 858800a..a4d0211 100644
--- a/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
@@ -17,21 +17,9 @@ package org.apache.solr.search;
  * limitations under the License.
  */
 
-import java.util.Collections;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.search.CollapsingQParserPlugin.GroupHeadSelector;
-import org.apache.solr.search.CollapsingQParserPlugin.GroupHeadSelectorType;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestHashQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestHashQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestHashQParserPlugin.java
index 8431588..46b7b60 100644
--- a/solr/core/src/test/org/apache/solr/search/TestHashQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestHashQParserPlugin.java
@@ -16,18 +16,13 @@
  */
 package org.apache.solr.search;
 
-import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.response.SolrQueryResponse;
-import org.apache.lucene.util.BytesRef;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.io.IOException;
 import java.util.*;
 import java.util.Random;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestLRUCache.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestLRUCache.java b/solr/core/src/test/org/apache/solr/search/TestLRUCache.java
index 8209e55..d2f74de 100644
--- a/solr/core/src/test/org/apache/solr/search/TestLRUCache.java
+++ b/solr/core/src/test/org/apache/solr/search/TestLRUCache.java
@@ -21,11 +21,6 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.Parser;
 import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.RamUsageEstimator;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestMissingGroups.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestMissingGroups.java b/solr/core/src/test/org/apache/solr/search/TestMissingGroups.java
index 808c21c..321296c 100644
--- a/solr/core/src/test/org/apache/solr/search/TestMissingGroups.java
+++ b/solr/core/src/test/org/apache/solr/search/TestMissingGroups.java
@@ -27,8 +27,6 @@ import java.util.Set;
 import java.util.HashSet;
 import java.util.List;
 import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
 
 
 /** Inspired by LUCENE-5790 */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestQueryUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestQueryUtils.java b/solr/core/src/test/org/apache/solr/search/TestQueryUtils.java
index d40292f..adc8058 100644
--- a/solr/core/src/test/org/apache/solr/search/TestQueryUtils.java
+++ b/solr/core/src/test/org/apache/solr/search/TestQueryUtils.java
@@ -21,12 +21,10 @@ import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.index.Term;
-import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.junit.BeforeClass;
 
 import java.util.Collection;
-import java.util.List;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
index 0edbaaa..f4dd449 100644
--- a/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
@@ -28,11 +28,8 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.ModifiableSolrParams;
 import static org.apache.solr.search.CollapsingQParserPlugin.NULL_IGNORE;
 import static org.apache.solr.search.CollapsingQParserPlugin.NULL_COLLAPSE;
 import static org.apache.solr.search.CollapsingQParserPlugin.NULL_EXPAND;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
index 9a77c13..e4d6a5b 100644
--- a/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
@@ -21,7 +21,6 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrInfoMBean;
-import org.apache.solr.util.RefCounted;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestRealTimeGet.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestRealTimeGet.java b/solr/core/src/test/org/apache/solr/search/TestRealTimeGet.java
index fe02108..51eaf34 100644
--- a/solr/core/src/test/org/apache/solr/search/TestRealTimeGet.java
+++ b/solr/core/src/test/org/apache/solr/search/TestRealTimeGet.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 
-import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.util.RefCounted;
 import org.noggit.ObjectBuilder;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java b/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java
index 7de7a2b..e7e60ec 100644
--- a/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java
+++ b/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java
@@ -39,7 +39,6 @@ import org.apache.hadoop.fs.FSDataInputStream;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.FsStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.solr.SolrTestCaseJ4;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestReload.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestReload.java b/solr/core/src/test/org/apache/solr/search/TestReload.java
index 895eca3..f721d41 100644
--- a/solr/core/src/test/org/apache/solr/search/TestReload.java
+++ b/solr/core/src/test/org/apache/solr/search/TestReload.java
@@ -18,8 +18,6 @@ package org.apache.solr.search;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.Ignore;
-
 import java.util.Random;
 
 public class TestReload extends TestRTGBase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestSearchPerf.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestSearchPerf.java b/solr/core/src/test/org/apache/solr/search/TestSearchPerf.java
index dd566e0..42d13ad 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSearchPerf.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSearchPerf.java
@@ -18,7 +18,6 @@ package org.apache.solr.search;
 
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.*;
-import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestSimpleQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestSimpleQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestSimpleQParserPlugin.java
index 795d8b2..c06c648 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSimpleQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSimpleQParserPlugin.java
@@ -16,9 +16,6 @@
  */
 package org.apache.solr.search;
 
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.PrefixQuery;
-import org.apache.lucene.search.Query;
 import org.apache.solr.SolrTestCaseJ4;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
index d7683bf..5ee1f7f 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
@@ -22,7 +22,6 @@ import org.apache.lucene.search.Query;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.transform.ScoreAugmenter;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/TestSort.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestSort.java b/solr/core/src/test/org/apache/solr/search/TestSort.java
index 8590b18..18597dc 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSort.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSort.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
index 8aaede1..93369be 100644
--- a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
+++ b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
@@ -20,7 +20,6 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -30,8 +29,6 @@ import com.tdunning.math.stats.AVLTreeDigest;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.util.hll.HLL;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.packed.GrowableWriter;
-import org.apache.lucene.util.packed.PackedInts;
 import org.apache.solr.JSONTestUtil;
 import org.apache.solr.SolrTestCaseHS;
 import org.apache.solr.common.SolrInputDocument;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java b/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
index 7582801..f94a9ee 100644
--- a/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
+++ b/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Random;
 
 import org.apache.lucene.index.FieldInvertState;
-import org.apache.lucene.search.similarities.ClassicSimilarity;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.search.similarities.TFIDFSimilarity;
 import org.apache.solr.SolrTestCaseJ4;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java b/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
index a9ed680..f725994 100644
--- a/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
+++ b/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
@@ -24,12 +24,8 @@ import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
-
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 
 @SuppressCodecs({"Memory", "SimpleText"}) // see TestSortedSetSelector
 public class TestMinMaxOnMultiValuedField extends SolrTestCaseJ4 {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/function/TestSortByMinMaxFunction.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/function/TestSortByMinMaxFunction.java b/solr/core/src/test/org/apache/solr/search/function/TestSortByMinMaxFunction.java
index 13ac8a3..5475b59 100644
--- a/solr/core/src/test/org/apache/solr/search/function/TestSortByMinMaxFunction.java
+++ b/solr/core/src/test/org/apache/solr/search/function/TestSortByMinMaxFunction.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.search.function;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
-import org.apache.solr.util.AbstractSolrTestCase;
-import org.junit.BeforeClass;
 
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/join/BJQParserTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/join/BJQParserTest.java b/solr/core/src/test/org/apache/solr/search/join/BJQParserTest.java
index deb8a8d..39fa791 100644
--- a/solr/core/src/test/org/apache/solr/search/join/BJQParserTest.java
+++ b/solr/core/src/test/org/apache/solr/search/join/BJQParserTest.java
@@ -33,7 +33,6 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.Locale;
 
-import javax.xml.namespace.QName;
 import javax.xml.xpath.XPathConstants;
 
 public class BJQParserTest extends SolrTestCaseJ4 {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java b/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
index a524388..6f3570f 100644
--- a/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
+++ b/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
@@ -16,13 +16,9 @@
  */
 package org.apache.solr.search.mlt;
 
-import java.util.ArrayList;
-
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.response.SolrQueryResponse;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/similarities/TestClassicSimilarityFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestClassicSimilarityFactory.java b/solr/core/src/test/org/apache/solr/search/similarities/TestClassicSimilarityFactory.java
index 6bd0c88..274bf06 100644
--- a/solr/core/src/test/org/apache/solr/search/similarities/TestClassicSimilarityFactory.java
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestClassicSimilarityFactory.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search.similarities;
 
 import org.apache.lucene.search.similarities.ClassicSimilarity;
-import org.apache.lucene.search.similarities.Similarity;
 import org.junit.BeforeClass;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java b/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
index 0dda891..1560c18 100644
--- a/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
@@ -18,7 +18,6 @@ package org.apache.solr.search.similarities;
 
 import org.apache.lucene.search.similarities.ClassicSimilarity;
 import org.apache.lucene.search.similarities.BM25Similarity;
-import org.apache.lucene.util.Version;
 import org.junit.After;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/similarities/TestPerFieldSimilarityWithDefaultOverride.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestPerFieldSimilarityWithDefaultOverride.java b/solr/core/src/test/org/apache/solr/search/similarities/TestPerFieldSimilarityWithDefaultOverride.java
index 27075fe..ad06663 100644
--- a/solr/core/src/test/org/apache/solr/search/similarities/TestPerFieldSimilarityWithDefaultOverride.java
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestPerFieldSimilarityWithDefaultOverride.java
@@ -17,8 +17,6 @@
 package org.apache.solr.search.similarities;
 
 import org.apache.lucene.misc.SweetSpotSimilarity;
-import org.apache.lucene.search.similarities.BM25Similarity;
-import org.apache.lucene.search.similarities.Similarity;
 import org.junit.BeforeClass;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/similarities/TestSweetSpotSimilarityFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestSweetSpotSimilarityFactory.java b/solr/core/src/test/org/apache/solr/search/similarities/TestSweetSpotSimilarityFactory.java
index 7acd05a..4b5503d 100644
--- a/solr/core/src/test/org/apache/solr/search/similarities/TestSweetSpotSimilarityFactory.java
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestSweetSpotSimilarityFactory.java
@@ -18,7 +18,6 @@ package org.apache.solr.search.similarities;
 
 import org.apache.lucene.misc.SweetSpotSimilarity;
 import org.apache.lucene.search.similarities.ClassicSimilarity;
-import org.apache.lucene.search.similarities.Similarity;
 import org.junit.BeforeClass;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/search/stats/TestDistribIDF.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/stats/TestDistribIDF.java b/solr/core/src/test/org/apache/solr/search/stats/TestDistribIDF.java
index 4c1c104..f7f7f30 100644
--- a/solr/core/src/test/org/apache/solr/search/stats/TestDistribIDF.java
+++ b/solr/core/src/test/org/apache/solr/search/stats/TestDistribIDF.java
@@ -26,7 +26,6 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.client.solrj.response.QueryResponse;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java b/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
index 2f102bf..1eb1d21 100644
--- a/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
+++ b/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
@@ -17,12 +17,8 @@
 package org.apache.solr.security;
 
 import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import java.io.IOException;
 import java.security.Principal;
 import java.security.PublicKey;
 import java.util.HashMap;
@@ -40,8 +36,6 @@ import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.util.CryptoKeys;
 import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-
 import static org.easymock.EasyMock.getCurrentArguments;
 
 public class TestPKIAuthenticationPlugin extends SolrTestCaseJ4 {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java b/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
index f851156..2ba3650 100644
--- a/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
@@ -27,7 +27,6 @@ import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.handler.component.SearchComponent;
-import org.apache.solr.response.SolrQueryResponse;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -35,9 +34,6 @@ import org.junit.Test;
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map.Entry;
 
 
 public class ResponseHeaderTest extends SolrJettyTestBase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java b/solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java
index 3182a28..f107024 100644
--- a/solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java
@@ -22,7 +22,6 @@ import java.util.Map;
 
 import org.apache.lucene.analysis.Token;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.LuceneTestCase.SuppressTempFileChecks;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.util.NamedList;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/spelling/SimpleQueryConverter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/SimpleQueryConverter.java b/solr/core/src/test/org/apache/solr/spelling/SimpleQueryConverter.java
index 60140f2..d2877d9 100644
--- a/solr/core/src/test/org/apache/solr/spelling/SimpleQueryConverter.java
+++ b/solr/core/src/test/org/apache/solr/spelling/SimpleQueryConverter.java
@@ -25,8 +25,6 @@ import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
-import org.apache.lucene.util.LuceneTestCase;
-
 import java.util.Collection;
 import java.util.HashSet;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java b/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java
index 1d312e0..65f3242 100644
--- a/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java
+++ b/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java
@@ -17,7 +17,6 @@
 package org.apache.solr.spelling;
 
 import java.io.IOException;
-import java.io.Reader;
 import java.util.Collection;
 import java.util.regex.Pattern;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/spelling/suggest/TestFreeTextSuggestions.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/suggest/TestFreeTextSuggestions.java b/solr/core/src/test/org/apache/solr/spelling/suggest/TestFreeTextSuggestions.java
index bd5d37c..a091235 100644
--- a/solr/core/src/test/org/apache/solr/spelling/suggest/TestFreeTextSuggestions.java
+++ b/solr/core/src/test/org/apache/solr/spelling/suggest/TestFreeTextSuggestions.java
@@ -17,7 +17,6 @@
 package org.apache.solr.spelling.suggest;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.params.SpellingParams;
 import org.junit.BeforeClass;
 
 public class TestFreeTextSuggestions extends SolrTestCaseJ4 {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/uninverting/TestFieldCache.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/uninverting/TestFieldCache.java b/solr/core/src/test/org/apache/solr/uninverting/TestFieldCache.java
index af9ea95..ee27f6e 100644
--- a/solr/core/src/test/org/apache/solr/uninverting/TestFieldCache.java
+++ b/solr/core/src/test/org/apache/solr/uninverting/TestFieldCache.java
@@ -16,9 +16,7 @@
  */
 package org.apache.solr.uninverting;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
@@ -31,14 +29,9 @@ import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.BinaryDocValuesField;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.DoublePoint;
-import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FloatPoint;
 import org.apache.lucene.document.IntPoint;
-import org.apache.lucene.document.LegacyDoubleField;
-import org.apache.lucene.document.LegacyFloatField;
-import org.apache.lucene.document.LegacyIntField;
-import org.apache.lucene.document.LegacyLongField;
 import org.apache.lucene.document.LongPoint;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
@@ -55,13 +48,10 @@ import org.apache.lucene.index.NumericDocValues;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.SortedDocValues;
 import org.apache.lucene.index.SortedSetDocValues;
-import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LegacyNumericUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.index.SlowCompositeReaderWrapper;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java b/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
index 557e6b2..9c791c2 100644
--- a/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
+++ b/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
@@ -29,7 +29,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -52,7 +51,6 @@ import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.JavaBinCodec;
 import org.apache.solr.handler.loader.XMLLoader;
-import org.apache.solr.search.QueryWrapperFilter;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.DefaultSolrThreadFactory;
 import org.apache.solr.util.RefCounted;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java b/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java
index dc5ab44..01e44fd 100644
--- a/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java
+++ b/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java
@@ -18,7 +18,6 @@ package org.apache.solr.update;
 import java.io.File;
 import java.io.FileFilter;
 
-import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/TestExceedMaxTermLength.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/TestExceedMaxTermLength.java b/solr/core/src/test/org/apache/solr/update/TestExceedMaxTermLength.java
index 0888121..9bf502b 100644
--- a/solr/core/src/test/org/apache/solr/update/TestExceedMaxTermLength.java
+++ b/solr/core/src/test/org/apache/solr/update/TestExceedMaxTermLength.java
@@ -18,7 +18,6 @@ package org.apache.solr.update;
 
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.util.TestUtil;
-import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.SolrTestCaseJ4;
 
 import java.util.Locale;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/VersionInfoTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/VersionInfoTest.java b/solr/core/src/test/org/apache/solr/update/VersionInfoTest.java
index b8039a8..6bccd95 100644
--- a/solr/core/src/test/org/apache/solr/update/VersionInfoTest.java
+++ b/solr/core/src/test/org/apache/solr/update/VersionInfoTest.java
@@ -21,8 +21,6 @@ import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.util.Hash;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.request.SolrQueryRequest;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class VersionInfoTest extends SolrTestCaseJ4 {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/CustomUpdateRequestProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/CustomUpdateRequestProcessor.java b/solr/core/src/test/org/apache/solr/update/processor/CustomUpdateRequestProcessor.java
index 36bf564..051614b 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/CustomUpdateRequestProcessor.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/CustomUpdateRequestProcessor.java
@@ -16,11 +16,7 @@
  */
 package org.apache.solr.update.processor;
 
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.update.processor.UpdateRequestProcessor;
-import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java
index 2f3c9c0..c90a727 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java
@@ -23,12 +23,9 @@ import java.io.IOException;
 
 import org.apache.solr.SolrTestCaseJ4;
 
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.SolrParams;
-
 import org.apache.solr.core.SolrCore;
 
 import org.apache.solr.request.SolrQueryRequest;
@@ -40,9 +37,7 @@ import org.apache.solr.update.AddUpdateCommand;
 import org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.apache.solr.update.processor.UpdateRequestProcessorChain;
 
-import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Test;
 
 public class DefaultValueUpdateProcessorTest extends SolrTestCaseJ4 {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactoryTest.java
index 281f486..1b22411 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactoryTest.java
@@ -18,7 +18,6 @@ package org.apache.solr.update.processor;
 
 import org.apache.solr.common.SolrInputDocument;
 
-import org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.apache.solr.update.processor.UpdateRequestProcessorChain;
 import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
 import org.apache.solr.update.UpdateCommand;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java
index 24a6976..9d0cb8b 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java
@@ -17,21 +17,16 @@
 package org.apache.solr.update.processor;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.SolrInputField;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.update.AddUpdateCommand;
 import org.apache.solr.update.CommitUpdateCommand;
 import org.junit.BeforeClass;
 
 import java.io.IOException;
-import java.util.Date;
-import java.util.UUID;
 
 public class IgnoreCommitOptimizeUpdateProcessorFactoryTest extends SolrTestCaseJ4 {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java b/solr/core/src/test/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
index 48d0596..a13fdaa 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
@@ -18,9 +18,6 @@ package org.apache.solr.update.processor;
 
 import java.io.IOException;
 
-import org.apache.solr.common.SolrException;
-import static org.apache.solr.common.SolrException.ErrorCode.*;
-
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.update.UpdateCommand;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactoryTest.java
index 4ef6041..99c41e9 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactoryTest.java
@@ -16,16 +16,11 @@
  */
 package org.apache.solr.update.processor;
 
-import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.UpdateParams;
 import org.apache.solr.common.SolrException;
 
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.util.RefCounted;
-
 import org.junit.Assume;
 import org.junit.BeforeClass;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/TestNamedUpdateProcessors.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/TestNamedUpdateProcessors.java b/solr/core/src/test/org/apache/solr/update/processor/TestNamedUpdateProcessors.java
index 7e540c9..3242c09 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/TestNamedUpdateProcessors.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/TestNamedUpdateProcessors.java
@@ -39,7 +39,6 @@ import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.core.TestDynamicLoading;
 import org.apache.solr.core.TestSolrConfigHandler;
 import org.apache.solr.handler.TestBlobHandler;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.solr.util.SimplePostTool;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/TestPartialUpdateDeduplication.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/TestPartialUpdateDeduplication.java b/solr/core/src/test/org/apache/solr/update/processor/TestPartialUpdateDeduplication.java
index f7e71c6..d494eb6 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/TestPartialUpdateDeduplication.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/TestPartialUpdateDeduplication.java
@@ -17,15 +17,12 @@
 package org.apache.solr.update.processor;
 
 import com.google.common.collect.Maps;
-import org.noggit.ObjectBuilder;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.core.SolrCore;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.List;
 import java.util.Map;
 
 import static org.apache.solr.update.processor.SignatureUpdateProcessorFactoryTest.addDoc;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java
index 9bbead8..7b077be 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java
@@ -31,8 +31,6 @@ import javax.xml.xpath.XPathExpressionException;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.ToleratedUpdateError;
-import org.apache.solr.common.ToleratedUpdateError.CmdType;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.SimpleOrderedMap;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactoryTest.java
index 5f25d97..6156ec9 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/UniqFieldsUpdateProcessorFactoryTest.java
@@ -28,7 +28,6 @@ import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.ContentStreamBase;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.UpdateRequestHandler;
-import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequestBase;
 import org.apache.solr.response.SolrQueryResponse;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/update/processor/UpdateProcessorTestBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/processor/UpdateProcessorTestBase.java b/solr/core/src/test/org/apache/solr/update/processor/UpdateProcessorTestBase.java
index eb9f212..24d818e 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/UpdateProcessorTestBase.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/UpdateProcessorTestBase.java
@@ -21,7 +21,6 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
-import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.request.LocalSolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/test/org/apache/solr/util/TestFastWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestFastWriter.java b/solr/core/src/test/org/apache/solr/util/TestFastWriter.java
index 81c8618..5857666 100644
--- a/solr/core/src/test/org/apache/solr/util/TestFastWriter.java
+++ b/solr/core/src/test/org/apache/solr/util/TestFastWriter.java
@@ -17,9 +17,6 @@
 package org.apache.solr.util;
 
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.solr.common.util.FastOutputStream;
-import org.apache.solr.update.MemOutputStream;
-
 import java.io.IOException;
 import java.util.LinkedList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
index 717b148..5f544cc 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
@@ -16,14 +16,10 @@
  */
 package org.apache.solr.client.solrj.impl;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.io.StringWriter;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.solr.client.solrj.ResponseParser;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Krb5HttpClientBuilder.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Krb5HttpClientBuilder.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Krb5HttpClientBuilder.java
index f9cf513..9d5a926 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Krb5HttpClientBuilder.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Krb5HttpClientBuilder.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.client.solrj.impl;
 
-import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.security.Principal;
 import java.util.Arrays;
@@ -29,8 +28,6 @@ import javax.security.auth.login.Configuration;
 
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
 import org.apache.http.HttpRequestInterceptor;
 import org.apache.http.auth.AuthSchemeProvider;
 import org.apache.http.auth.AuthScope;
@@ -43,10 +40,6 @@ import org.apache.http.cookie.CookieSpecProvider;
 import org.apache.http.entity.BufferedHttpEntity;
 import org.apache.http.impl.auth.SPNegoSchemeFactory;
 import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.protocol.HttpContext;
-import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder.AuthSchemeRegistryProvider;
-import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder.CookieSpecRegistryProvider;
-import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder.CredentialsProviderProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/HashKey.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/HashKey.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/HashKey.java
index 09fe30f..0eaca5c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/HashKey.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/HashKey.java
@@ -17,8 +17,6 @@
 package org.apache.solr.client.solrj.io.comp;
 import java.io.Serializable;
 
-import org.apache.solr.client.solrj.io.Tuple;
-
 public class HashKey implements Serializable {
 
   private static final long serialVersionUID = 1;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
index 1370540..c709f4d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
@@ -17,7 +17,6 @@
 package org.apache.solr.client.solrj.io.comp;
 
 import java.io.IOException;
-import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/BiJoinStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/BiJoinStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/BiJoinStream.java
index 29a4a78..b4279b6 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/BiJoinStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/BiJoinStream.java
@@ -17,17 +17,9 @@
 package org.apache.solr.client.solrj.io.stream;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.solr.client.solrj.io.Tuple;
-import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
 import org.apache.solr.client.solrj.io.comp.FieldComparator;
 import org.apache.solr.client.solrj.io.comp.MultipleFieldComparator;
 import org.apache.solr.client.solrj.io.comp.StreamComparator;
-import org.apache.solr.client.solrj.io.eq.Equalitor;
 import org.apache.solr.client.solrj.io.eq.FieldEqualitor;
 import org.apache.solr.client.solrj.io.eq.MultipleFieldEqualitor;
 import org.apache.solr.client.solrj.io.eq.StreamEqualitor;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LeftOuterJoinStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LeftOuterJoinStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LeftOuterJoinStream.java
index aee1495..1cd763d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LeftOuterJoinStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LeftOuterJoinStream.java
@@ -20,11 +20,7 @@ import java.io.IOException;
 import java.util.LinkedList;
 
 import org.apache.solr.client.solrj.io.Tuple;
-import org.apache.solr.client.solrj.io.comp.FieldComparator;
-import org.apache.solr.client.solrj.io.comp.MultipleFieldComparator;
 import org.apache.solr.client.solrj.io.comp.StreamComparator;
-import org.apache.solr.client.solrj.io.eq.FieldEqualitor;
-import org.apache.solr.client.solrj.io.eq.MultipleFieldEqualitor;
 import org.apache.solr.client.solrj.io.eq.StreamEqualitor;
 import org.apache.solr.client.solrj.io.stream.expr.Expressible;
 import org.apache.solr.client.solrj.io.stream.expr.StreamExpression;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StreamContext.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StreamContext.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StreamContext.java
index 87e3035..8ca808f 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StreamContext.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StreamContext.java
@@ -19,8 +19,6 @@ package org.apache.solr.client.solrj.io.stream;
 import java.io.Serializable;
 import java.util.Map;
 import java.util.HashMap;
-import java.util.concurrent.ConcurrentHashMap;
-
 import org.apache.solr.client.solrj.io.SolrClientCache;
 import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java
index fdf8749..ffb407a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java
@@ -17,10 +17,8 @@
 package org.apache.solr.client.solrj.io.stream.expr;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 
 /**
  * Explanation containing details about a stream expression

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/response/FacetField.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/FacetField.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/FacetField.java
index 342d835..2877354 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/FacetField.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/FacetField.java
@@ -19,7 +19,6 @@ package org.apache.solr.client.solrj.response;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 
 import org.apache.solr.client.solrj.util.ClientUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/client/solrj/response/PivotField.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/PivotField.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/PivotField.java
index 6b07392..f5216d6 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/PivotField.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/PivotField.java
@@ -21,8 +21,6 @@ import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.solr.common.util.NamedList;
-
 public class PivotField implements Serializable
 {
   final String  _field;


[31/50] [abbrv] lucene-solr:apiv2: LUCENE-7320: fail precommit on unusedImport

Posted by no...@apache.org.
LUCENE-7320: fail precommit on unusedImport


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c8911ccc
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c8911ccc
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c8911ccc

Branch: refs/heads/apiv2
Commit: c8911ccc772cae252c03099dc8711509a1bede34
Parents: 52f5c50
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Jun 13 10:44:30 2016 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Jun 13 10:44:30 2016 +0100

----------------------------------------------------------------------
 lucene/tools/javadoc/ecj.javadocs.prefs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c8911ccc/lucene/tools/javadoc/ecj.javadocs.prefs
----------------------------------------------------------------------
diff --git a/lucene/tools/javadoc/ecj.javadocs.prefs b/lucene/tools/javadoc/ecj.javadocs.prefs
index bd98c99..c81d8e3 100644
--- a/lucene/tools/javadoc/ecj.javadocs.prefs
+++ b/lucene/tools/javadoc/ecj.javadocs.prefs
@@ -82,7 +82,7 @@ org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
 org.eclipse.jdt.core.compiler.problem.unusedLabel=ignore
 org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
 org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore


[47/50] [abbrv] lucene-solr:apiv2: SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh

Posted by no...@apache.org.
SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5eabffc7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5eabffc7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5eabffc7

Branch: refs/heads/apiv2
Commit: 5eabffc79754f533654bcbc73ab6441e6059d45f
Parents: 5ee4e8a
Author: Noble Paul <no...@apache.org>
Authored: Tue Jun 14 20:08:08 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Jun 14 20:08:08 2016 +0530

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/util/SolrCLI.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5eabffc7/solr/core/src/java/org/apache/solr/util/SolrCLI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 474d1fc..34fda54 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -26,7 +26,6 @@ import java.net.ConnectException;
 import java.net.Socket;
 import java.net.SocketException;
 import java.net.URL;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;


[34/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: Remove more unused imports.

Posted by no...@apache.org.
LUCENE-7319: Remove more unused imports.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5e2677e0
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5e2677e0
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5e2677e0

Branch: refs/heads/apiv2
Commit: 5e2677e0fb357c89408005e49b9d55981f884f73
Parents: 038fe93
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jun 13 15:22:36 2016 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jun 13 15:24:10 2016 +0200

----------------------------------------------------------------------
 .../src/java/org/apache/solr/cloud/OverseerTaskProcessor.java     | 2 --
 solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java   | 1 -
 solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java | 2 --
 .../core/src/test/org/apache/solr/cloud/DistributedQueueTest.java | 1 -
 .../core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java | 1 -
 .../src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java     | 3 ---
 6 files changed, 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5e2677e0/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
index 9c739c1..e3bc1f3 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
@@ -19,7 +19,6 @@ package org.apache.solr.cloud;
 import java.io.Closeable;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -42,7 +41,6 @@ import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
-import org.apache.solr.handler.component.ShardHandlerFactory;
 import org.apache.solr.util.DefaultSolrThreadFactory;
 import org.apache.solr.util.stats.TimerContext;
 import org.apache.zookeeper.KeeperException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5e2677e0/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
index 5719aa9..8e0c49a 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
@@ -19,7 +19,6 @@ package org.apache.solr.cloud;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.Predicate;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5e2677e0/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java b/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
index ab7771a..2041d2f 100644
--- a/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
+++ b/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
@@ -28,8 +28,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.UUID;
-import java.util.stream.Collector;
-import java.util.stream.Collectors;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.solr.common.SolrException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5e2677e0/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java b/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
index 66a7ed8..cb904a7 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
@@ -23,7 +23,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
-import com.google.common.base.Predicates;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.util.ExecutorUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5e2677e0/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java b/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
index ec8a6c4..c0f29d2 100644
--- a/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
@@ -30,7 +30,6 @@ import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.client.solrj.response.RequestStatusState;
 import org.apache.solr.common.params.CollectionParams;
-import org.apache.solr.common.params.CommonAdminParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Utils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5e2677e0/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
index 6380aac..54b66a0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
@@ -16,12 +16,9 @@
  */
 package org.apache.solr.cloud;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
-import java.util.function.Predicate;
 
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.response.SolrResponseBase;


[15/50] [abbrv] lucene-solr:apiv2: LUCENE-7302: move CHANGES entry to the right place

Posted by no...@apache.org.
LUCENE-7302: move CHANGES entry to the right place


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/32c8dfaa
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/32c8dfaa
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/32c8dfaa

Branch: refs/heads/apiv2
Commit: 32c8dfaad5c6d8f79b7d0d7d917db0605f27a9ea
Parents: 8bd2797
Author: Mike McCandless <mi...@apache.org>
Authored: Sat Jun 11 15:39:14 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sat Jun 11 15:39:14 2016 -0400

----------------------------------------------------------------------
 lucene/CHANGES.txt | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/32c8dfaa/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index f104ac6..fb46c5f 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -15,6 +15,12 @@ Other
 
 ======================= Lucene 6.2.0 =======================
 
+New Features
+
+* LUCENE-7302: IndexWriter methods that change the index now return a
+  long "sequence number" indicating the effective equivalent
+  single-threaded execution order (Mike McCandless)
+
 Bug Fixes
 
 * LUCENE-6662: Fixed potential resource leaks. (Rishabh Patel via Adrien Grand)
@@ -55,10 +61,6 @@ New Features
   applicable and supported when copying files from another FSDirectory in 
   Directory#copyFrom. (Simon Willnauer)
 
-* LUCENE-7302: IndexWriter methods that change the index now return a
-  long "sequence number" indicating the effective equivalent
-  single-threaded execution order (Mike McCandless)
-
 API Changes
 
 * LUCENE-7184: Refactor LatLonPoint encoding methods to new GeoEncodingUtils


[26/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/overseer/SliceMutator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/SliceMutator.java b/solr/core/src/java/org/apache/solr/cloud/overseer/SliceMutator.java
index 836d014..0a9aaa7 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/SliceMutator.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/SliceMutator.java
@@ -34,14 +34,12 @@ import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.util.Utils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static org.apache.solr.cloud.OverseerCollectionMessageHandler.COLL_PROP_PREFIX;
 import static org.apache.solr.cloud.overseer.CollectionMutator.checkCollectionKeyExistence;
 import static org.apache.solr.common.util.Utils.makeMap;
-import static org.apache.solr.common.params.CommonParams.NAME;
 
 public class SliceMutator {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
index 02ed873..e313e36 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
@@ -18,9 +18,7 @@ package org.apache.solr.cloud.overseer;
 
 import java.lang.invoke.MethodHandles;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.solr.cloud.Overseer;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java b/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
index efd0648..eb881be 100644
--- a/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
+++ b/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
@@ -21,7 +21,6 @@ import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/BlobRepository.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/BlobRepository.java b/solr/core/src/java/org/apache/solr/core/BlobRepository.java
index 0f3d1c3..bbe7c62 100644
--- a/solr/core/src/java/org/apache/solr/core/BlobRepository.java
+++ b/solr/core/src/java/org/apache/solr/core/BlobRepository.java
@@ -19,8 +19,6 @@ package org.apache.solr.core;
 import static org.apache.solr.common.SolrException.ErrorCode.SERVICE_UNAVAILABLE;
 import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
 import java.nio.ByteBuffer;
@@ -38,7 +36,6 @@ import java.util.regex.Pattern;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpGet;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.DocCollection;
@@ -51,9 +48,6 @@ import org.apache.zookeeper.server.ByteBufferInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.solr.common.SolrException.ErrorCode.SERVICE_UNAVAILABLE;
-import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP;
-
 /**
  * The purpose of this class is to store the Jars loaded in memory and to keep only one copy of the Jar in a single node.
  */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/ConfigOverlay.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigOverlay.java b/solr/core/src/java/org/apache/solr/core/ConfigOverlay.java
index ae3e055..5d9bbdb 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigOverlay.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigOverlay.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.core;
 
-import java.io.IOException;
-import java.io.StringReader;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -29,9 +27,7 @@ import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.noggit.CharArr;
-import org.noggit.JSONParser;
 import org.noggit.JSONWriter;
-import org.noggit.ObjectBuilder;
 
 /**
  * This class encapsulates the config overlay json file. It is immutable

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index 3e5c8f9..3f47f46 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -22,7 +22,6 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Locale;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 
 import com.google.common.cache.Cache;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index ff776b5..e5e16cb 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -37,7 +37,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
index 77d7bd9..25f094e 100644
--- a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
@@ -25,7 +25,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Locale;
 import java.util.Set;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/SimpleFSDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SimpleFSDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/SimpleFSDirectoryFactory.java
index f2413c9..0784d21 100644
--- a/solr/core/src/java/org/apache/solr/core/SimpleFSDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/SimpleFSDirectoryFactory.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.LockFactory;
-import org.apache.lucene.store.NoLockFactory;
 import org.apache.lucene.store.SimpleFSDirectory;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index b793ee7..53af3d1 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -72,7 +72,6 @@ import org.apache.solr.core.DirectoryFactory.DirContext;
 import org.apache.solr.handler.IndexFetcher;
 import org.apache.solr.handler.ReplicationHandler;
 import org.apache.solr.handler.RequestHandlerBase;
-import org.apache.solr.handler.admin.ShowFileRequestHandler;
 import org.apache.solr.handler.component.HighlightComponent;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.logging.MDCLoggingContext;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/core/SolrCores.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index 8a4af9f..2bcea17 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -34,10 +34,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java
index 1837914..409b03f 100644
--- a/solr/core/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java
@@ -17,7 +17,6 @@
 package org.apache.solr.handler;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.UpdateParams;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.handler.loader.ContentStreamLoader;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/GraphHandler.java b/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
index a203a4f..657e6b3 100644
--- a/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.solr.client.solrj.io.SolrClientCache;
 import org.apache.solr.client.solrj.io.Tuple;
 import org.apache.solr.client.solrj.io.comp.StreamComparator;
 import org.apache.solr.client.solrj.io.graph.GatherNodesStream;
@@ -48,7 +47,6 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.CloseHook;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
index a4d9ea0..bbb6484 100644
--- a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
@@ -23,7 +23,6 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -48,7 +47,6 @@ import org.apache.solr.common.params.MoreLikeThisParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.handler.component.FacetComponent;
 import org.apache.solr.request.SimpleFacets;
 import org.apache.solr.request.SolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java b/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java
index fd30d9f..6c9b0a9 100644
--- a/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java
@@ -18,7 +18,6 @@ package org.apache.solr.handler;
 
 import org.apache.solr.handler.component.*;
 
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 98f6896..bb7df32 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -23,9 +23,7 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.SuppressForbidden;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.PluginBag;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrInfoMBean;
-import org.apache.solr.handler.component.SearchHandler;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
index 4db2950..ab2b172 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
@@ -24,7 +24,6 @@ import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.solr.client.solrj.SolrResponse;
-import org.apache.solr.cloud.Overseer;
 import org.apache.solr.cloud.OverseerSolrResponse;
 import org.apache.solr.cloud.OverseerTaskQueue.QueueEvent;
 import org.apache.solr.common.SolrException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index 6e295f7..49da174 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@ -33,10 +33,8 @@ import org.apache.solr.cloud.ZkController;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.params.CollectionParams;
 import org.apache.solr.common.params.CommonAdminParams;
 import org.apache.solr.common.params.CoreAdminParams;
-import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ExecutorUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
index b20ea26..ea08438 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
@@ -33,8 +33,6 @@ import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.RawResponseWriter;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.ManagedIndexSchema;
 import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
index 3525585..4d3c2b5 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
@@ -33,7 +33,6 @@ import java.io.StringReader;
 import java.net.URL;
 import java.text.NumberFormat;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
index e500c55..f63ae51 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
@@ -41,7 +41,6 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import java.io.IOException;
 import java.net.URL;
 import java.util.List;
-import java.util.Map;
 
 /**
  * TODO!

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
index aa08094..931d362 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
@@ -41,7 +41,6 @@ import org.apache.lucene.search.FieldComparator;
 import org.apache.lucene.search.LeafFieldComparator;
 import org.apache.lucene.search.MatchNoDocsQuery;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
@@ -59,7 +58,6 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.CursorMarkParams;
 import org.apache.solr.common.params.GroupParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.MoreLikeThisParams;
 import org.apache.solr.common.params.ShardParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
index 0908f00..1c42b03 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
@@ -27,7 +27,6 @@ import java.util.Map;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexableField;
-import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.MatchAllDocsQuery;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java b/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
index 37f6a1a..2e1bebe 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
@@ -53,7 +53,6 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.params.SpellingParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrEventListener;
 import org.apache.solr.core.SolrResourceLoader;
@@ -63,7 +62,6 @@ import org.apache.solr.search.DocSet;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.QParserPlugin;
 import org.apache.solr.search.SyntaxError;
-import org.apache.solr.search.SolrCache;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.spelling.AbstractLuceneSpellChecker;
 import org.apache.solr.spelling.ConjunctionSolrSpellChecker;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/SpellCheckMergeData.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SpellCheckMergeData.java b/solr/core/src/java/org/apache/solr/handler/component/SpellCheckMergeData.java
index 4b8310a..4a70101 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SpellCheckMergeData.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SpellCheckMergeData.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.handler.component;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java b/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
index c96a2eb..a2e4a4e 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
@@ -19,8 +19,6 @@ package org.apache.solr.handler.component;
 import java.io.IOException;
 import java.util.*;
 import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -33,7 +31,6 @@ import org.apache.solr.handler.component.StatsField.Stat;
 import org.apache.solr.schema.*;
 
 import com.tdunning.math.stats.AVLTreeDigest;
-import com.google.common.hash.Hashing;
 import com.google.common.hash.HashFunction;
 
 import org.apache.solr.util.hll.HLL;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
index 4a46e66..a949268 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
@@ -33,7 +33,6 @@ import org.apache.solr.client.solrj.response.TermsResponse;
 
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/highlight/PostingsSolrHighlighter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/PostingsSolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/PostingsSolrHighlighter.java
index a5816cd..d005f4e 100644
--- a/solr/core/src/java/org/apache/solr/highlight/PostingsSolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/PostingsSolrHighlighter.java
@@ -37,7 +37,6 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.PluginInfo;
-import org.apache.solr.core.SolrConfig;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java b/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
index fd18850..0502739 100644
--- a/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
+++ b/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
@@ -29,7 +29,6 @@ import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.FieldInfos;
 import org.apache.lucene.index.Fields;
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.LeafReader.CoreClosedListener;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiDocValues.MultiSortedDocValues;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/index/SortingMergePolicy.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/index/SortingMergePolicy.java b/solr/core/src/java/org/apache/solr/index/SortingMergePolicy.java
index 7b334b1..313b662 100644
--- a/solr/core/src/java/org/apache/solr/index/SortingMergePolicy.java
+++ b/solr/core/src/java/org/apache/solr/index/SortingMergePolicy.java
@@ -16,30 +16,9 @@
  */
 package org.apache.solr.index;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.MergePolicy;
 import org.apache.lucene.index.MergePolicyWrapper;
-import org.apache.lucene.index.MergeState;
-import org.apache.lucene.index.MergeTrigger;
-import org.apache.lucene.index.MultiReader;
-import org.apache.lucene.index.SegmentCommitInfo;
-import org.apache.lucene.index.SegmentInfo;
-import org.apache.lucene.index.SegmentInfos;
-import org.apache.lucene.index.SegmentReader;
 import org.apache.lucene.search.Sort;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.InfoStream;
-import org.apache.lucene.util.packed.PackedInts;
-import org.apache.lucene.util.packed.PackedLongValues;
-import org.apache.solr.index.SlowCompositeReaderWrapper;
 
 // TODO: remove this and add indexSort specification directly to solrconfig.xml?  But for BWC, also accept SortingMergePolicy specifiction?
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java b/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java
index 7bd918f..4ccb1af 100644
--- a/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java
+++ b/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java
@@ -18,8 +18,6 @@ package org.apache.solr.internal.csv;
 
 import java.io.IOException;
 import java.io.Reader;
-import java.io.InputStreamReader;
-import java.io.InputStream;
 import java.util.ArrayList;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java b/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java
index bf081b7..be260e0 100644
--- a/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java
+++ b/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java
@@ -17,8 +17,6 @@
 package org.apache.solr.internal.csv;
 
 import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
 import java.io.Writer;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/parser/QueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/parser/QueryParser.java b/solr/core/src/java/org/apache/solr/parser/QueryParser.java
index 9dd924c..b2ef500 100644
--- a/solr/core/src/java/org/apache/solr/parser/QueryParser.java
+++ b/solr/core/src/java/org/apache/solr/parser/QueryParser.java
@@ -4,14 +4,8 @@ package org.apache.solr.parser;
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Locale;
-
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.DateTools;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermRangeQuery;
-import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.util.Version;
 import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.QParser;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/parser/QueryParserTokenManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/parser/QueryParserTokenManager.java b/solr/core/src/java/org/apache/solr/parser/QueryParserTokenManager.java
index d9fddd5..6251ff4 100644
--- a/solr/core/src/java/org/apache/solr/parser/QueryParserTokenManager.java
+++ b/solr/core/src/java/org/apache/solr/parser/QueryParserTokenManager.java
@@ -1,18 +1,5 @@
 /* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
 package org.apache.solr.parser;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.DateTools;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermRangeQuery;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.util.Version;
-import org.apache.solr.search.SyntaxError;
-import org.apache.solr.search.QParser;
 
 /** Token Manager. */
 public class QueryParserTokenManager implements QueryParserConstants

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java b/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
index 81c0fd7..24a6f3e 100644
--- a/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
+++ b/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
@@ -39,7 +39,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.RegexpQuery;
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.util.QueryBuilder;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.util.Version;
 import org.apache.lucene.util.automaton.Automata;
 import org.apache.lucene.util.automaton.Automaton;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java b/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
index 237173a..ac45e31 100644
--- a/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
+++ b/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
@@ -27,7 +27,6 @@ import java.util.concurrent.atomic.AtomicReference;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.util.ExecutorUtil;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.util.TimeZoneUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/request/json/JSONUtil.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/json/JSONUtil.java b/solr/core/src/java/org/apache/solr/request/json/JSONUtil.java
index 6c07f4a..fc0cdfb 100644
--- a/solr/core/src/java/org/apache/solr/request/json/JSONUtil.java
+++ b/solr/core/src/java/org/apache/solr/request/json/JSONUtil.java
@@ -17,12 +17,6 @@
 package org.apache.solr.request.json;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.noggit.JSONParser;
 
 public class JSONUtil {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/request/json/ObjectUtil.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/json/ObjectUtil.java b/solr/core/src/java/org/apache/solr/request/json/ObjectUtil.java
index d29a266..fc67781 100644
--- a/solr/core/src/java/org/apache/solr/request/json/ObjectUtil.java
+++ b/solr/core/src/java/org/apache/solr/request/json/ObjectUtil.java
@@ -16,15 +16,12 @@
  */
 package org.apache.solr.request.json;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.noggit.JSONParser;
-
 public class ObjectUtil {
 
   public static class ConflictHandler {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java b/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
index 3802ffd..9634e63 100644
--- a/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
@@ -37,7 +37,6 @@ import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocList;
 import org.apache.solr.search.ReturnFields;
-import org.apache.solr.search.SolrIndexSearcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java b/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
index 896be92..43fd7b4 100644
--- a/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
@@ -30,7 +30,6 @@ import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.transform.GeoTransformerFactory;
 import org.apache.solr.response.transform.WriteableGeoJSON;
 import org.apache.solr.schema.AbstractSpatialFieldType;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java b/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java
index d257f57..cd8d07c 100644
--- a/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java
@@ -18,23 +18,18 @@ package org.apache.solr.response;
 
 import java.io.IOException;
 import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.lucene.index.IndexableField;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.ReturnFields;
-import org.apache.solr.search.SolrReturnFields;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java b/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
index 9737eb4..c660aae 100644
--- a/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
@@ -30,7 +30,6 @@ import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.ReturnFields;
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/response/ResultContext.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/ResultContext.java b/solr/core/src/java/org/apache/solr/response/ResultContext.java
index 56811a7..b36355f 100644
--- a/solr/core/src/java/org/apache/solr/response/ResultContext.java
+++ b/solr/core/src/java/org/apache/solr/response/ResultContext.java
@@ -20,7 +20,6 @@ import java.util.Iterator;
 
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.SolrDocument;
-import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.DocList;
 import org.apache.solr.search.ReturnFields;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java b/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
index cf23a80..2d670d7 100644
--- a/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
+++ b/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
@@ -18,8 +18,6 @@ package org.apache.solr.response.transform;
 
 import java.util.Set;
 
-import org.apache.lucene.document.Field;
-import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.handler.component.QueryElevationComponent;
 import org.apache.solr.request.SolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/rest/SolrSchemaRestApi.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/rest/SolrSchemaRestApi.java b/solr/core/src/java/org/apache/solr/rest/SolrSchemaRestApi.java
index 1310198..aa7826a 100644
--- a/solr/core/src/java/org/apache/solr/rest/SolrSchemaRestApi.java
+++ b/solr/core/src/java/org/apache/solr/rest/SolrSchemaRestApi.java
@@ -19,11 +19,9 @@ package org.apache.solr.rest;
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Locale;
 import java.util.Set;
 
 import org.apache.solr.request.SolrRequestInfo;
-import org.apache.solr.schema.IndexSchema;
 import org.restlet.Application;
 import org.restlet.Restlet;
 import org.restlet.routing.Router;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/rest/schema/analysis/ManagedWordSetResource.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/rest/schema/analysis/ManagedWordSetResource.java b/solr/core/src/java/org/apache/solr/rest/schema/analysis/ManagedWordSetResource.java
index d6b41e5..a5ff38b 100644
--- a/solr/core/src/java/org/apache/solr/rest/schema/analysis/ManagedWordSetResource.java
+++ b/solr/core/src/java/org/apache/solr/rest/schema/analysis/ManagedWordSetResource.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
-import java.util.Map;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java b/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java
index b58ac91..dd2c297 100644
--- a/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java
+++ b/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java
@@ -41,7 +41,6 @@ import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.AttributeSource.State;
 import org.apache.lucene.util.BytesRef;
 import org.noggit.JSONUtil;
-import org.noggit.JSONWriter;
 import org.noggit.ObjectBuilder;
 import org.apache.solr.common.util.Base64;
 import org.apache.solr.schema.PreAnalyzedField.ParseResult;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
index d5b0564..6140a0f 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
@@ -30,8 +30,6 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCmdExecutor;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.CloseHook;
-import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
index 0cb6682..b9d292e 100644
--- a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
@@ -55,7 +55,6 @@ import org.apache.lucene.util.LongValues;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.handler.component.QueryElevationComponent;
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.request.LocalSolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java
index f8bfecf..3945445 100644
--- a/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/DocSlice.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/DocSlice.java b/solr/core/src/java/org/apache/solr/search/DocSlice.java
index b5d2946..fd9553a 100644
--- a/solr/core/src/java/org/apache/solr/search/DocSlice.java
+++ b/solr/core/src/java/org/apache/solr/search/DocSlice.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.search;
 
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
index 67784f2..cc5a697 100644
--- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java
index 151647d..7b44245 100644
--- a/solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java
@@ -18,7 +18,6 @@ package org.apache.solr.search;
 
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/FunctionQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/FunctionQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/FunctionQParserPlugin.java
index 561c532..979823b 100644
--- a/solr/core/src/java/org/apache/solr/search/FunctionQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/FunctionQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java
index 8db8bbc..1b37a97 100644
--- a/solr/core/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java
@@ -21,7 +21,6 @@ import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.valuesource.QueryValueSource;
 import org.apache.lucene.search.*;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.function.*;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
index 1571652..2adec48 100644
--- a/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
@@ -45,7 +45,6 @@ import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.StringHelper;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/LRUCache.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/LRUCache.java b/solr/core/src/java/org/apache/solr/search/LRUCache.java
index 4b7fc78..8e030fd 100644
--- a/solr/core/src/java/org/apache/solr/search/LRUCache.java
+++ b/solr/core/src/java/org/apache/solr/search/LRUCache.java
@@ -31,7 +31,6 @@ import org.apache.lucene.util.RamUsageEstimator;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.util.NumberUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/LuceneQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/LuceneQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/LuceneQParserPlugin.java
index e92ce31..2aba02d 100644
--- a/solr/core/src/java/org/apache/solr/search/LuceneQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/LuceneQParserPlugin.java
@@ -17,10 +17,8 @@
 package org.apache.solr.search;
 
 import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Sort;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.request.SolrQueryRequest;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java
index a59f287..d2b583c 100644
--- a/solr/core/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java
index 8aa7446..8e52884 100644
--- a/solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java
@@ -16,11 +16,8 @@
  */
 package org.apache.solr.search;
 
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.SchemaField;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/QParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/QParser.java b/solr/core/src/java/org/apache/solr/search/QParser.java
index 85bd2f0..45b698e 100644
--- a/solr/core/src/java/org/apache/solr/search/QParser.java
+++ b/solr/core/src/java/org/apache/solr/search/QParser.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Sort;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/QueryContext.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/QueryContext.java b/solr/core/src/java/org/apache/solr/search/QueryContext.java
index e8e8eae..487feb4 100644
--- a/solr/core/src/java/org/apache/solr/search/QueryContext.java
+++ b/solr/core/src/java/org/apache/solr/search/QueryContext.java
@@ -23,7 +23,6 @@ import java.util.IdentityHashMap;
 
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrRequestInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/QueryParsing.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/QueryParsing.java b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
index 2f0a9c5..0595ca8 100644
--- a/solr/core/src/java/org/apache/solr/search/QueryParsing.java
+++ b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
@@ -30,7 +30,6 @@ import org.apache.lucene.search.TermRangeQuery;
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CharsRefBuilder;
-import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.parser.QueryParser;
@@ -39,9 +38,7 @@ import org.apache.solr.schema.IndexSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Collection of static utilities useful for query parsing.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java
index 5d93fb9..c3d2dd2 100644
--- a/solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java
@@ -20,7 +20,6 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
index f80cf34..06974f2 100644
--- a/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
@@ -46,7 +46,6 @@ import org.apache.lucene.util.BytesRef;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.handler.component.MergeStrategy;
 import org.apache.solr.handler.component.QueryElevationComponent;
 import org.apache.solr.request.SolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
index 3daaec2..2d4fee2 100644
--- a/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
@@ -27,7 +27,6 @@ import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SimpleParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.parser.QueryParser;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.FieldType;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java b/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
index 3f5d9e9..4c8c0c1 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
@@ -22,7 +22,6 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.JmxMonitoredMap.JmxAugmentedSolrInfoMBean;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.uninverting.UninvertingReader;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SolrQueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrQueryParser.java b/solr/core/src/java/org/apache/solr/search/SolrQueryParser.java
index 71d661d..49a492b 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrQueryParser.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrQueryParser.java
@@ -16,25 +16,7 @@
  */
 package org.apache.solr.search;
 
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lucene.analysis.util.TokenFilterFactory;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.*;
-import org.apache.lucene.util.ToStringUtils;
-import org.apache.lucene.util.automaton.Automata;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.solr.analysis.ReversedWildcardFilterFactory;
-import org.apache.solr.analysis.TokenizerChain;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.parser.ParseException;
 import org.apache.solr.parser.QueryParser;
-import org.apache.solr.schema.FieldType;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.SchemaField;
-import org.apache.solr.schema.TextField;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java b/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java
index a700d7b..6382f45 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java
@@ -22,7 +22,6 @@ import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.valuesource.QueryValueSource;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java
index 977acd7..d65e508 100644
--- a/solr/core/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 public class SpatialBoxQParserPlugin extends SpatialFilterQParserPlugin {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SpatialFilterQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SpatialFilterQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SpatialFilterQParserPlugin.java
index 2042dd0..cba3133 100644
--- a/solr/core/src/java/org/apache/solr/search/SpatialFilterQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SpatialFilterQParserPlugin.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.search;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
index 6c3ebe5..a90cb25 100644
--- a/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
@@ -19,7 +19,6 @@ package org.apache.solr.search;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 
 import java.lang.invoke.MethodHandles;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java
index 2520bf5..99ef4c4 100644
--- a/solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java
@@ -21,7 +21,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.FieldType;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
index e6051c7..728cc01 100644
--- a/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
@@ -33,7 +33,6 @@ import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.automaton.Automata;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.FieldType;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
index 566cfa6..cb6b45e 100755
--- a/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
@@ -25,7 +25,6 @@ import org.apache.lucene.search.Query;
 
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java b/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
index 6fecd3c..6457467 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
@@ -22,7 +22,6 @@ import java.util.Map;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
-import org.apache.solr.search.QueryContext;
 
 public abstract class AggValueSource extends ValueSource {
   protected String name;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/BlockJoin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/BlockJoin.java b/solr/core/src/java/org/apache/solr/search/facet/BlockJoin.java
index 377a370..5da7f6d 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/BlockJoin.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/BlockJoin.java
@@ -24,7 +24,6 @@ import org.apache.solr.search.BitDocSet;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocSet;
 import org.apache.solr.search.DocSetCollector;
-import org.apache.solr.search.DocSetUtil;
 import org.apache.solr.search.QueryContext;
 
 /** @lucene.experimental */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/FacetField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetField.java b/solr/core/src/java/org/apache/solr/search/facet/FacetField.java
index ce7f919..0e7e82a 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetField.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetField.java
@@ -41,7 +41,6 @@ import org.apache.lucene.util.PriorityQueue;
 import org.apache.lucene.util.StringHelper;
 import org.apache.lucene.util.UnicodeUtil;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java
index 1872ead..6ab4c26 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java
@@ -31,7 +31,6 @@ import org.apache.lucene.util.PriorityQueue;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocIterator;
-import org.apache.solr.search.DocSetCollector;
 
 class FacetFieldProcessorNumeric extends FacetFieldProcessor {
   static int MAXIMUM_STARTING_TABLE_SIZE=1024;  // must be a power of two, non-final to support setting by tests

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/FacetRequest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetRequest.java b/solr/core/src/java/org/apache/solr/search/facet/FacetRequest.java
index 5c5624f..4c14ab8 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetRequest.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetRequest.java
@@ -18,14 +18,12 @@ package org.apache.solr.search.facet;
 
 import java.util.EnumSet;
 import java.util.LinkedHashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.FacetParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java b/solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java
index a0457b6..cd37dc0 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java
@@ -21,8 +21,6 @@ import java.io.IOException;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.SortedDocValues;
 import org.apache.lucene.index.SortedSetDocValues;
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.util.BytesRef;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.QueryContext;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/HLLAgg.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/HLLAgg.java b/solr/core/src/java/org/apache/solr/search/facet/HLLAgg.java
index 4d766e3..09436c1 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/HLLAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/HLLAgg.java
@@ -17,11 +17,6 @@
 package org.apache.solr.search.facet;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.solr.util.hll.HLL;
 import org.apache.solr.util.hll.HLLType;
 import org.apache.lucene.index.DocValues;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java b/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
index bdc274c..9457d9c 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
@@ -30,7 +30,6 @@ import org.apache.solr.common.params.FacetParams;
 import org.apache.solr.common.params.RequiredSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.search.QueryParsing;
 import org.apache.solr.search.SolrReturnFields;
 import org.apache.solr.search.StrParser;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java b/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
index c9e3f58..661ec83 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
@@ -19,9 +19,6 @@ package org.apache.solr.search.facet;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
-import org.apache.solr.search.QueryContext;
-
-
 import java.io.IOException;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java b/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
index fd54901..37b9d9b 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
@@ -17,17 +17,9 @@
 package org.apache.solr.search.facet;
 
 import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.index.MultiDocValues;
-import org.apache.lucene.index.SortedDocValues;
-import org.apache.lucene.index.SortedSetDocValues;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.FixedBitSet;
-import org.apache.lucene.util.LongValues;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocSet;
 import org.apache.solr.search.SolrIndexSearcher;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/StrAggValueSource.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/StrAggValueSource.java b/solr/core/src/java/org/apache/solr/search/facet/StrAggValueSource.java
index 232188d..65a21f4 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/StrAggValueSource.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/StrAggValueSource.java
@@ -16,13 +16,6 @@
  */
 package org.apache.solr.search.facet;
 
-import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.queries.function.FunctionValues;
-import org.apache.solr.search.QueryContext;
-
-
-import java.io.IOException;
-
 public abstract class StrAggValueSource extends AggValueSource {
   protected String arg;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java b/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java
index b52b333..aa8f395 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java
@@ -35,7 +35,6 @@ import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CharsRefBuilder;
 import org.apache.lucene.util.FixedBitSet;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.index.SlowCompositeReaderWrapper;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.TrieField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java b/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
index 7999541..aa26ec8 100644
--- a/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
+++ b/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
@@ -22,7 +22,6 @@ import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.docvalues.FloatDocValues;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.handler.RequestHandlerUtils;
 import org.apache.solr.request.SolrQueryRequest;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/grouping/Command.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/Command.java b/solr/core/src/java/org/apache/solr/search/grouping/Command.java
index 1b3f1d1..d719218 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/Command.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/Command.java
@@ -18,8 +18,6 @@ package org.apache.solr.search.grouping;
 
 import org.apache.lucene.search.Collector;
 import org.apache.lucene.search.Sort;
-import org.apache.solr.schema.SchemaField;
-
 import java.io.IOException;
 import java.util.List;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
index 2dba2a3..213414a 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
@@ -19,8 +19,6 @@ package org.apache.solr.search.grouping.distributed.shardresultserializer;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.grouping.SearchGroup;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.CharsRef;
-import org.apache.lucene.util.UnicodeUtil;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/join/BlockJoinParentQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/BlockJoinParentQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/BlockJoinParentQParserPlugin.java
index b40233f..590a907 100644
--- a/solr/core/src/java/org/apache/solr/search/join/BlockJoinParentQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/join/BlockJoinParentQParserPlugin.java
@@ -18,7 +18,6 @@ package org.apache.solr.search.join;
 
 import org.apache.lucene.search.join.ScoreMode;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.QParserPlugin;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/join/GraphQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/GraphQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/GraphQParserPlugin.java
index 5a0e0b0..fa47ec0 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphQParserPlugin.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search.join;
 
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.QParserPlugin;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
index 9bac616..3fca05a 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
@@ -27,7 +27,6 @@ import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.queries.TermsQuery;
 import org.apache.lucene.search.AutomatonQuery;
-import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.DocIdSet;
@@ -36,7 +35,6 @@ import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.Weight;
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.util.BytesRef;
@@ -44,7 +42,6 @@ import org.apache.lucene.util.BytesRefHash;
 import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.DaciukMihovAutomatonBuilder;
-import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.search.BitDocSet;
 import org.apache.solr.search.DocSet;
 import org.apache.solr.search.Filter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/core/src/java/org/apache/solr/search/join/GraphQueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/GraphQueryParser.java b/solr/core/src/java/org/apache/solr/search/join/GraphQueryParser.java
index b6aae50..0ef9e6c 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphQueryParser.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphQueryParser.java
@@ -17,7 +17,6 @@
 package org.apache.solr.search.join;
 
 import org.apache.lucene.search.Query;
-import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;


[13/50] [abbrv] lucene-solr:apiv2: LUCENE-7333: Fix test bug where randomSimpleString() generated a filename that is a reserved device name on Windows

Posted by no...@apache.org.
LUCENE-7333: Fix test bug where randomSimpleString() generated a filename that is a reserved device name on Windows


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cc7cede7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cc7cede7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cc7cede7

Branch: refs/heads/apiv2
Commit: cc7cede7a58b4e1d0eaeb182998de69cad90c15a
Parents: c0f047a
Author: Uwe Schindler <us...@apache.org>
Authored: Sat Jun 11 11:31:12 2016 +0200
Committer: Uwe Schindler <us...@apache.org>
Committed: Sat Jun 11 11:31:12 2016 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                                            | 3 +++
 .../java/org/apache/lucene/store/BaseDirectoryTestCase.java   | 7 +++----
 2 files changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cc7cede7/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index fb5d93a..501f2ee 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -147,6 +147,9 @@ Bug Fixes
   dateline and indexed non-point shapes are much bigger than the heatmap region.
   (David Smiley)
 
+* LUCENE-7333: Fix test bug where randomSimpleString() generated a filename
+  that is a reserved device name on Windows.  (Uwe Schindler, Mike McCandless)
+
 Other
 
 * LUCENE-7295: TermAutomatonQuery.hashCode calculates Automaton.toDot().hash,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cc7cede7/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java
index 44c03ea..5ca8a86 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java
@@ -33,6 +33,7 @@ import java.util.Set;
 import java.util.zip.CRC32;
 
 import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexFileNames;
 import org.apache.lucene.index.IndexNotFoundException;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
@@ -1208,10 +1209,8 @@ public abstract class BaseDirectoryTestCase extends LuceneTestCase {
       // Keep trying until virus checker refuses to delete:
       final String fileName;
       while (true) {
-        String candidate = TestUtil.randomSimpleString(random());
-        if (candidate.length() == 0) {
-          continue;
-        }
+        // create a random filename (segment file name style), so it cannot hit windows problem with special filenames ("con", "com1",...):
+        String candidate = IndexFileNames.segmentFileName(TestUtil.randomSimpleString(random(), 1, 6), TestUtil.randomSimpleString(random()), "test");
         try (IndexOutput out = dir.createOutput(candidate, IOContext.DEFAULT)) {
           out.getFilePointer(); // just fake access to prevent compiler warning
         }


[42/50] [abbrv] lucene-solr:apiv2: LUCENE-6968 - MinHash filter, thanks to Andy Hind and Cao Manh Dat for patches

Posted by no...@apache.org.
LUCENE-6968 - MinHash filter, thanks to Andy Hind and Cao Manh Dat for patches


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/82a92441
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/82a92441
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/82a92441

Branch: refs/heads/apiv2
Commit: 82a9244193ba948142b834ec08e2de0d98cfba9f
Parents: bd7ddb8
Author: Tommaso Teofili <to...@apache.org>
Authored: Tue Jun 14 11:49:53 2016 +0200
Committer: Tommaso Teofili <to...@apache.org>
Committed: Tue Jun 14 11:49:53 2016 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |   2 +
 .../lucene/analysis/minhash/MinHashFilter.java  | 504 +++++++++++++++++++
 .../analysis/minhash/MinHashFilterFactory.java  |  57 +++
 .../lucene/analysis/minhash/package-info.java   |  21 +
 ...ache.lucene.analysis.util.TokenFilterFactory |   1 +
 .../analysis/minhash/MinHashFilterTest.java     | 330 ++++++++++++
 6 files changed, 915 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a92441/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 3c52440..5d97fdd 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -13,6 +13,8 @@ Other
 
 * LUCENE-7328: Remove LegacyNumericEncoding from GeoPointField. (Nick Knize)
 
+* LUCENE-6968: LSH Filter (Tommaso Teofili, Andy Hind, Cao Manh Dat)
+
 ======================= Lucene 6.2.0 =======================
 
 New Features

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a92441/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilter.java
new file mode 100644
index 0000000..60df1c0
--- /dev/null
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilter.java
@@ -0,0 +1,504 @@
+package org.apache.lucene.analysis.minhash;
+
+/*
+ * 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.
+ */
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeSet;
+
+import org.apache.lucene.analysis.TokenFilter;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
+import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
+import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
+import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
+
+/**
+ * Generate min hash tokens from an incoming stream of tokens. The incoming tokens would typically be 5 word shingles.
+ * 
+ * The number of hashes used and the number of minimum values for each hash can be set. You could have 1 hash and keep
+ * the 100 lowest values or 100 hashes and keep the lowest one for each. Hashes can also be bucketed in ranges over the
+ * 128-bit hash space,
+ * 
+ * A 128-bit hash is used internally. 5 word shingles from 10e5 words generate 10e25 combinations So a 64 bit hash would
+ * have collisions (1.8e19)
+ * 
+ * When using different hashes 32 bits are used for the hash position leaving scope for 8e28 unique hashes. A single
+ * hash will use all 128 bits.
+ *
+ */
+public class MinHashFilter extends TokenFilter {
+  private static final int HASH_CACHE_SIZE = 512;
+
+  private static final LongPair[] cachedIntHashes = new LongPair[HASH_CACHE_SIZE];
+
+  static final int DEFAULT_HASH_COUNT = 1;
+
+  static final int DEFAULT_HASH_SET_SIZE = 1;
+
+  static final int DEFAULT_BUCKET_COUNT = 512;
+
+  static final String MIN_HASH_TYPE = "MIN_HASH";
+
+  private final List<List<FixedSizeTreeSet<LongPair>>> minHashSets;
+
+  private int hashSetSize = DEFAULT_HASH_SET_SIZE;
+
+  private int bucketCount = DEFAULT_BUCKET_COUNT;
+
+  private int hashCount = DEFAULT_HASH_COUNT;
+
+  private boolean requiresInitialisation = true;
+
+  private State endState;
+
+  private int hashPosition = -1;
+
+  private int bucketPosition = -1;
+
+  private long bucketSize;
+  
+  private final boolean withRotation;
+  
+  private int endOffset;
+  
+  private boolean exhausted = false;
+
+  private final CharTermAttribute termAttribute = addAttribute(CharTermAttribute.class);
+  private final OffsetAttribute offsetAttribute = addAttribute(OffsetAttribute.class);
+  private final TypeAttribute typeAttribute = addAttribute(TypeAttribute.class);
+  private final PositionIncrementAttribute posIncAttribute = addAttribute(PositionIncrementAttribute.class);
+  private final PositionLengthAttribute posLenAttribute = addAttribute(PositionLengthAttribute.class);
+
+  static {
+    for (int i = 0; i < HASH_CACHE_SIZE; i++) {
+      cachedIntHashes[i] = new LongPair();
+      murmurhash3_x64_128(getBytes(i), 0, 4, 0, cachedIntHashes[i]);
+    }
+  }
+
+  static byte[] getBytes(int i) {
+    byte[] answer = new byte[4];
+    answer[3] = (byte) (i);
+    answer[2] = (byte) (i >> 8);
+    answer[1] = (byte) (i >> 16);
+    answer[0] = (byte) (i >> 24);
+    return answer;
+  }
+
+  /**
+   * create a MinHash filter
+   *
+   * @param input the token stream
+   * @param hashCount the no. of hashes
+   * @param bucketCount the no. of buckets for hashing
+   * @param hashSetSize the no. of min hashes to keep
+   * @param withRotation whether rotate or not hashes while incrementing tokens
+   */
+  MinHashFilter(TokenStream input, int hashCount, int bucketCount, int hashSetSize, boolean withRotation) {
+    super(input);
+    this.hashCount = hashCount;
+    this.bucketCount = bucketCount;
+    this.hashSetSize = hashSetSize;
+    this.withRotation = withRotation;
+    this.bucketSize = (1L << 32) / bucketCount;
+    if((1L << 32) % bucketCount != 0)
+    {
+      bucketSize++;
+    }
+    minHashSets = new ArrayList<>(this.hashCount);
+    for (int i = 0; i < this.hashCount; i++) {
+      ArrayList<FixedSizeTreeSet<LongPair>> buckets = new ArrayList<>(this.bucketCount);
+      minHashSets.add(buckets);
+      for (int j = 0; j < this.bucketCount; j++) {
+        FixedSizeTreeSet<LongPair> minSet = new FixedSizeTreeSet<>(this.hashSetSize);
+        buckets.add(minSet);
+      }
+    }
+    doRest();
+  }
+
+  @Override
+  public final boolean incrementToken() throws IOException {
+    // Pull the underlying stream of tokens
+    // Hash each token found
+    // Generate the required number of variants of this hash
+    // Keep the minimum hash value found so far of each variant
+
+    int positionIncrement = 0;
+    if (requiresInitialisation) {
+      requiresInitialisation = false;
+      boolean found = false;
+      // First time through so we pull and hash everything
+      while (input.incrementToken()) {
+        found = true;
+        String current = new String(termAttribute.buffer(), 0, termAttribute.length());
+
+        for (int i = 0; i < hashCount; i++) {
+          byte[] bytes = current.getBytes("UTF-16LE");
+          LongPair hash = new LongPair();
+          murmurhash3_x64_128(bytes, 0, bytes.length, 0, hash);
+          LongPair rehashed = combineOrdered(hash, getIntHash(i));
+          minHashSets.get(i).get((int) ((rehashed.val2 >>> 32) / bucketSize)).add(rehashed);
+        }
+        endOffset = offsetAttribute.endOffset();
+      }
+      exhausted = true;
+      input.end();
+      // We need the end state so an underlying shingle filter can have its state restored correctly.
+      endState = captureState();
+      if (!found) {
+        return false;
+      }
+      
+      positionIncrement = 1;
+      // fix up any wrap around bucket values. ...
+      if (withRotation && (hashSetSize == 1)) {
+        for (int hashLoop = 0; hashLoop < hashCount; hashLoop++) {
+          for (int bucketLoop = 0; bucketLoop < bucketCount; bucketLoop++) {
+            if (minHashSets.get(hashLoop).get(bucketLoop).size() == 0) {
+              for (int bucketOffset = 1; bucketOffset < bucketCount; bucketOffset++) {
+                if (minHashSets.get(hashLoop).get((bucketLoop + bucketOffset) % bucketCount).size() > 0) {
+                  LongPair replacementHash = minHashSets.get(hashLoop).get((bucketLoop + bucketOffset) % bucketCount)
+                      .first();
+                  minHashSets.get(hashLoop).get(bucketLoop).add(replacementHash);
+                  break;
+                }
+              }
+            }
+          }
+        }
+      }
+
+    }
+   
+    clearAttributes();
+
+    while (hashPosition < hashCount) {
+      if (hashPosition == -1) {
+        hashPosition++;
+      } else {
+        while (bucketPosition < bucketCount) {
+          if (bucketPosition == -1) {
+            bucketPosition++;
+          } else {
+            LongPair hash = minHashSets.get(hashPosition).get(bucketPosition).pollFirst();
+            if (hash != null) {
+              termAttribute.setEmpty();
+              if (hashCount > 1) {
+                termAttribute.append(int0(hashPosition));
+                termAttribute.append(int1(hashPosition));
+              }
+              long high = hash.val2;
+              termAttribute.append(long0(high));
+              termAttribute.append(long1(high));
+              termAttribute.append(long2(high));
+              termAttribute.append(long3(high));
+              long low = hash.val1;
+              termAttribute.append(long0(low));
+              termAttribute.append(long1(low));
+              if (hashCount == 1) {
+                termAttribute.append(long2(low));
+                termAttribute.append(long3(low));
+              }
+              posIncAttribute.setPositionIncrement(positionIncrement);
+              offsetAttribute.setOffset(0, endOffset);
+              typeAttribute.setType(MIN_HASH_TYPE);
+              posLenAttribute.setPositionLength(1);
+              return true;
+            } else {
+              bucketPosition++;
+            }
+          }
+
+        }
+        bucketPosition = -1;
+        hashPosition++;
+      }
+    }
+    return false;
+  }
+
+  private static LongPair getIntHash(int i) {
+    if (i < HASH_CACHE_SIZE) {
+      return cachedIntHashes[i];
+    } else {
+      LongPair answer = new LongPair();
+      murmurhash3_x64_128(getBytes(i), 0, 4, 0, answer);
+      return answer;
+    }
+  }
+
+  @Override
+  public void end() throws IOException {
+    if(!exhausted) {
+      input.end();
+    }
+      
+    restoreState(endState);
+  }
+
+  @Override
+  public void reset() throws IOException {
+    super.reset();
+    doRest();
+  }
+
+  private void doRest() {
+    for (int i = 0; i < hashCount; i++) {
+      for (int j = 0; j < bucketCount; j++) {
+        minHashSets.get(i).get(j).clear();
+      }
+    }
+    endState = null;
+    hashPosition = -1;
+    bucketPosition = -1;
+    requiresInitialisation = true;
+    exhausted = false;
+  }
+
+  private static char long0(long x) {
+    return (char) (x >> 48);
+  }
+
+  private static char long1(long x) {
+    return (char) (x >> 32);
+  }
+
+  private static char long2(long x) {
+    return (char) (x >> 16);
+  }
+
+  private static char long3(long x) {
+    return (char) (x);
+  }
+
+  private static char int0(int x) {
+    return (char) (x >> 16);
+  }
+
+  private static char int1(int x) {
+    return (char) (x);
+  }
+
+  static boolean isLessThanUnsigned(long n1, long n2) {
+    return (n1 < n2) ^ ((n1 < 0) != (n2 < 0));
+  }
+
+  static class FixedSizeTreeSet<E extends Comparable<E>> extends TreeSet<E> {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -8237117170340299630L;
+    private final int capacity;
+
+    FixedSizeTreeSet() {
+      this(20);
+    }
+
+    FixedSizeTreeSet(int capacity) {
+      super();
+      this.capacity = capacity;
+    }
+
+    @Override
+    public boolean add(final E toAdd) {
+      if (capacity <= size()) {
+        final E lastElm = last();
+        if (toAdd.compareTo(lastElm) > -1) {
+          return false;
+        } else {
+          pollLast();
+        }
+      }
+      return super.add(toAdd);
+    }
+  }
+
+  private static LongPair combineOrdered(LongPair... hashCodes) {
+    LongPair result = new LongPair();
+    for (LongPair hashCode : hashCodes) {
+      result.val1 = result.val1 * 37 + hashCode.val1;
+      result.val2 = result.val2 * 37 + hashCode.val2;
+
+    }
+    return result;
+  }
+
+  /** 128 bits of state */
+  static final class LongPair implements Comparable<LongPair> {
+    public long val1;
+    public long val2;
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Comparable#compareTo(java.lang.Object)
+     */
+    @Override
+    public int compareTo(LongPair other) {
+      if (isLessThanUnsigned(val2, other.val2)) {
+        return -1;
+      } else if (val2 == other.val2) {
+        if (isLessThanUnsigned(val1, other.val1)) {
+          return -1;
+        } else if (val1 == other.val1) {
+          return 0;
+        } else {
+          return 1;
+        }
+      } else {
+        return 1;
+      }
+    }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+
+      LongPair longPair = (LongPair) o;
+
+      return val1 == longPair.val1 && val2 == longPair.val2;
+
+    }
+
+    @Override
+    public int hashCode() {
+      int result = (int) (val1 ^ (val1 >>> 32));
+      result = 31 * result + (int) (val2 ^ (val2 >>> 32));
+      return result;
+    }
+  }
+
+  /** Gets a long from a byte buffer in little endian byte order. */
+  private static long getLongLittleEndian(byte[] buf, int offset) {
+    return ((long) buf[offset + 7] << 56) // no mask needed
+        | ((buf[offset + 6] & 0xffL) << 48)
+        | ((buf[offset + 5] & 0xffL) << 40)
+        | ((buf[offset + 4] & 0xffL) << 32)
+        | ((buf[offset + 3] & 0xffL) << 24)
+        | ((buf[offset + 2] & 0xffL) << 16)
+        | ((buf[offset + 1] & 0xffL) << 8)
+        | ((buf[offset] & 0xffL)); // no shift needed
+  }
+
+  /** Returns the MurmurHash3_x64_128 hash, placing the result in "out". */
+  static void murmurhash3_x64_128(byte[] key, int offset, int len, int seed, LongPair out) {
+    // The original algorithm does have a 32 bit unsigned seed.
+    // We have to mask to match the behavior of the unsigned types and prevent sign extension.
+    long h1 = seed & 0x00000000FFFFFFFFL;
+    long h2 = seed & 0x00000000FFFFFFFFL;
+
+    final long c1 = 0x87c37b91114253d5L;
+    final long c2 = 0x4cf5ad432745937fL;
+
+    int roundedEnd = offset + (len & 0xFFFFFFF0); // round down to 16 byte block
+    for (int i = offset; i < roundedEnd; i += 16) {
+      long k1 = getLongLittleEndian(key, i);
+      long k2 = getLongLittleEndian(key, i + 8);
+      k1 *= c1;
+      k1 = Long.rotateLeft(k1, 31);
+      k1 *= c2;
+      h1 ^= k1;
+      h1 = Long.rotateLeft(h1, 27);
+      h1 += h2;
+      h1 = h1 * 5 + 0x52dce729;
+      k2 *= c2;
+      k2 = Long.rotateLeft(k2, 33);
+      k2 *= c1;
+      h2 ^= k2;
+      h2 = Long.rotateLeft(h2, 31);
+      h2 += h1;
+      h2 = h2 * 5 + 0x38495ab5;
+    }
+
+    long k1 = 0;
+    long k2 = 0;
+
+    switch (len & 15) {
+      case 15:
+        k2 = (key[roundedEnd + 14] & 0xffL) << 48;
+      case 14:
+        k2 |= (key[roundedEnd + 13] & 0xffL) << 40;
+      case 13:
+        k2 |= (key[roundedEnd + 12] & 0xffL) << 32;
+      case 12:
+        k2 |= (key[roundedEnd + 11] & 0xffL) << 24;
+      case 11:
+        k2 |= (key[roundedEnd + 10] & 0xffL) << 16;
+      case 10:
+        k2 |= (key[roundedEnd + 9] & 0xffL) << 8;
+      case 9:
+        k2 |= (key[roundedEnd + 8] & 0xffL);
+        k2 *= c2;
+        k2 = Long.rotateLeft(k2, 33);
+        k2 *= c1;
+        h2 ^= k2;
+      case 8:
+        k1 = ((long) key[roundedEnd + 7]) << 56;
+      case 7:
+        k1 |= (key[roundedEnd + 6] & 0xffL) << 48;
+      case 6:
+        k1 |= (key[roundedEnd + 5] & 0xffL) << 40;
+      case 5:
+        k1 |= (key[roundedEnd + 4] & 0xffL) << 32;
+      case 4:
+        k1 |= (key[roundedEnd + 3] & 0xffL) << 24;
+      case 3:
+        k1 |= (key[roundedEnd + 2] & 0xffL) << 16;
+      case 2:
+        k1 |= (key[roundedEnd + 1] & 0xffL) << 8;
+      case 1:
+        k1 |= (key[roundedEnd] & 0xffL);
+        k1 *= c1;
+        k1 = Long.rotateLeft(k1, 31);
+        k1 *= c2;
+        h1 ^= k1;
+    }
+
+    // ----------
+    // finalization
+
+    h1 ^= len;
+    h2 ^= len;
+
+    h1 += h2;
+    h2 += h1;
+
+    h1 = fmix64(h1);
+    h2 = fmix64(h2);
+
+    h1 += h2;
+    h2 += h1;
+
+    out.val1 = h1;
+    out.val2 = h2;
+  }
+
+  private static long fmix64(long k) {
+    k ^= k >>> 33;
+    k *= 0xff51afd7ed558ccdL;
+    k ^= k >>> 33;
+    k *= 0xc4ceb9fe1a85ec53L;
+    k ^= k >>> 33;
+    return k;
+  }
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a92441/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilterFactory.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilterFactory.java
new file mode 100644
index 0000000..d951b9b
--- /dev/null
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/MinHashFilterFactory.java
@@ -0,0 +1,57 @@
+package org.apache.lucene.analysis.minhash;
+
+/*
+ * 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.
+ */
+import java.util.Map;
+
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.util.TokenFilterFactory;
+
+/**
+ * {@link TokenFilterFactory} for {@link MinHashFilter}.
+ */
+public class MinHashFilterFactory extends TokenFilterFactory {
+  private int hashCount = MinHashFilter.DEFAULT_HASH_COUNT;
+  
+  private int bucketCount = MinHashFilter.DEFAULT_BUCKET_COUNT;
+
+  private int hashSetSize = MinHashFilter.DEFAULT_HASH_SET_SIZE;
+  
+  private boolean withRotation;
+
+  /**
+   * Create a {@link MinHashFilterFactory}.
+   */
+  public MinHashFilterFactory(Map<String,String> args) {
+    super(args);
+    hashCount = getInt(args, "hashCount", MinHashFilter.DEFAULT_HASH_COUNT);
+    bucketCount = getInt(args, "bucketCount", MinHashFilter.DEFAULT_BUCKET_COUNT);
+    hashSetSize = getInt(args, "hashSetSize", MinHashFilter.DEFAULT_HASH_SET_SIZE);
+    withRotation = getBoolean(args, "withRotation", bucketCount > 1);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.lucene.analysis.util.TokenFilterFactory#create(org.apache.lucene.analysis.TokenStream)
+   */
+  @Override
+  public TokenStream create(TokenStream input) {
+    return new MinHashFilter(input, hashCount, bucketCount, hashSetSize, withRotation);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a92441/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/package-info.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/package-info.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/package-info.java
new file mode 100644
index 0000000..b476347
--- /dev/null
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/minhash/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+/**
+ * MinHash filtering (for LSH).
+ */
+package org.apache.lucene.analysis.minhash;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a92441/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory b/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory
index 8b19cdf..70120c5 100644
--- a/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory
+++ b/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory
@@ -58,6 +58,7 @@ org.apache.lucene.analysis.id.IndonesianStemFilterFactory
 org.apache.lucene.analysis.in.IndicNormalizationFilterFactory
 org.apache.lucene.analysis.it.ItalianLightStemFilterFactory
 org.apache.lucene.analysis.lv.LatvianStemFilterFactory
+org.apache.lucene.analysis.minhash.MinHashFilterFactory
 org.apache.lucene.analysis.miscellaneous.ASCIIFoldingFilterFactory
 org.apache.lucene.analysis.miscellaneous.CapitalizationFilterFactory
 org.apache.lucene.analysis.miscellaneous.CodepointCountFilterFactory

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a92441/lucene/analysis/common/src/test/org/apache/lucene/analysis/minhash/MinHashFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/minhash/MinHashFilterTest.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/minhash/MinHashFilterTest.java
new file mode 100644
index 0000000..7c02d3b
--- /dev/null
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/minhash/MinHashFilterTest.java
@@ -0,0 +1,330 @@
+package org.apache.lucene.analysis.minhash;
+
+/*
+ * 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.
+ */
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import org.apache.lucene.analysis.BaseTokenStreamTestCase;
+import org.apache.lucene.analysis.MockTokenizer;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.Tokenizer;
+import org.apache.lucene.analysis.minhash.MinHashFilter.FixedSizeTreeSet;
+import org.apache.lucene.analysis.minhash.MinHashFilter.LongPair;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.util.automaton.CharacterRunAutomaton;
+import org.apache.lucene.util.automaton.RegExp;
+import org.junit.Test;
+
+/**
+ * Tests for {@link MinHashFilter}
+ */
+public class MinHashFilterTest extends BaseTokenStreamTestCase {
+
+  @Test
+  public void testIntHash() {
+    LongPair hash = new LongPair();
+    MinHashFilter.murmurhash3_x64_128(MinHashFilter.getBytes(0), 0, 4, 0, hash);
+    assertEquals(-3485513579396041028L, hash.val1);
+    assertEquals(6383328099726337777L, hash.val2);
+  }
+
+  @Test
+  public void testStringHash() throws UnsupportedEncodingException {
+    LongPair hash = new LongPair();
+    byte[] bytes = "woof woof woof woof woof".getBytes("UTF-16LE");
+    MinHashFilter.murmurhash3_x64_128(bytes, 0, bytes.length, 0, hash);
+    assertEquals(7638079586852243959L, hash.val1);
+    assertEquals(4378804943379391304L, hash.val2);
+  }
+
+  @Test
+  public void testSimpleOrder() throws UnsupportedEncodingException {
+    LongPair hash1 = new LongPair();
+    hash1.val1 = 1;
+    hash1.val2 = 2;
+    LongPair hash2 = new LongPair();
+    hash2.val1 = 2;
+    hash2.val2 = 1;
+    assert (hash1.compareTo(hash2) > 0);
+  }
+
+  @Test
+  public void testHashOrder() {
+    assertTrue(!MinHashFilter.isLessThanUnsigned(0L, 0L));
+    assertTrue(MinHashFilter.isLessThanUnsigned(0L, -1L));
+    assertTrue(MinHashFilter.isLessThanUnsigned(1L, -1L));
+    assertTrue(MinHashFilter.isLessThanUnsigned(-2L, -1L));
+    assertTrue(MinHashFilter.isLessThanUnsigned(1L, 2L));
+    assertTrue(MinHashFilter.isLessThanUnsigned(Long.MAX_VALUE, Long.MIN_VALUE));
+
+    FixedSizeTreeSet<LongPair> minSet = new FixedSizeTreeSet<LongPair>(500);
+    HashSet<LongPair> unadded = new HashSet<LongPair>();
+    for (int i = 0; i < 100; i++) {
+      LongPair hash = new LongPair();
+      MinHashFilter.murmurhash3_x64_128(MinHashFilter.getBytes(i), 0, 4, 0, hash);
+      LongPair peek = null;
+      if (minSet.size() > 0) {
+        peek = minSet.last();
+      }
+
+      if (!minSet.add(hash)) {
+        unadded.add(hash);
+      } else {
+        if (peek != null) {
+          if ((minSet.size() == 500) && !peek.equals(minSet.last())) {
+            unadded.add(peek);
+          }
+        }
+      }
+    }
+    assertEquals(100, minSet.size());
+    assertEquals(0, unadded.size());
+
+    HashSet<LongPair> collisionDetection = new HashSet<LongPair>();
+    unadded = new HashSet<LongPair>();
+    minSet = new FixedSizeTreeSet<LongPair>(500);
+    for (int i = 0; i < 1000000; i++) {
+      LongPair hash = new LongPair();
+      MinHashFilter.murmurhash3_x64_128(MinHashFilter.getBytes(i), 0, 4, 0, hash);
+      collisionDetection.add(hash);
+      LongPair peek = null;
+      if (minSet.size() > 0) {
+        peek = minSet.last();
+      }
+
+      if (!minSet.add(hash)) {
+        unadded.add(hash);
+      } else {
+        if (peek != null) {
+          if ((minSet.size() == 500) && !peek.equals(minSet.last())) {
+            unadded.add(peek);
+          }
+        }
+      }
+    }
+    assertEquals(1000000, collisionDetection.size());
+    assertEquals(500, minSet.size());
+    assertEquals(999500, unadded.size());
+
+    LongPair last = null;
+    LongPair current = null;
+    while ((current = minSet.pollLast()) != null) {
+      if (last != null) {
+        assertTrue(isLessThan(current, last));
+      }
+      last = current;
+    }
+  }
+
+  @Test
+  public void testHashNotRepeated() {
+    FixedSizeTreeSet<LongPair> minSet = new FixedSizeTreeSet<LongPair>(500);
+    HashSet<LongPair> unadded = new HashSet<LongPair>();
+    for (int i = 0; i < 10000; i++) {
+      LongPair hash = new LongPair();
+      MinHashFilter.murmurhash3_x64_128(MinHashFilter.getBytes(i), 0, 4, 0, hash);
+      LongPair peek = null;
+      if (minSet.size() > 0) {
+        peek = minSet.last();
+      }
+      if (!minSet.add(hash)) {
+        unadded.add(hash);
+      } else {
+        if (peek != null) {
+          if ((minSet.size() == 500) && !peek.equals(minSet.last())) {
+            unadded.add(peek);
+          }
+        }
+      }
+    }
+    assertEquals(500, minSet.size());
+
+    LongPair last = null;
+    LongPair current = null;
+    while ((current = minSet.pollLast()) != null) {
+      if (last != null) {
+        assertTrue(isLessThan(current, last));
+      }
+      last = current;
+    }
+  }
+
+  @Test
+  public void testMockShingleTokenizer() throws IOException {
+    Tokenizer mockShingleTokenizer = createMockShingleTokenizer(5,
+        "woof woof woof woof woof" + " " + "woof woof woof woof puff");
+    assertTokenStreamContents(mockShingleTokenizer,
+        new String[]{"woof woof woof woof woof", "woof woof woof woof puff"});
+  }
+
+  @Test
+  public void testTokenStreamSingleInput() throws IOException {
+    String[] hashes = new String[]{"\u2101\ud33d\ufa85\u8059\u219d\ua1c1\ud671\u676f"};
+    TokenStream ts = createTokenStream(5, "woof woof woof woof woof", 1, 1, 100, false);
+    assertTokenStreamContents(ts, hashes, new int[]{0},
+        new int[]{24}, new String[]{MinHashFilter.MIN_HASH_TYPE}, new int[]{1}, new int[]{1}, 24, 0, null,
+        true);
+
+    ts = createTokenStream(5, "woof woof woof woof woof", 2, 1, 1, false);
+    assertTokenStreamContents(ts, new String[]{new String(new char[]{0, 0, 8449, 54077, 64133, 32857, 8605, 41409}),
+            new String(new char[]{0, 1, 16887, 58164, 39536, 14926, 6529, 17276})}, new int[]{0, 0},
+        new int[]{24, 24}, new String[]{MinHashFilter.MIN_HASH_TYPE, MinHashFilter.MIN_HASH_TYPE}, new int[]{1, 0},
+        new int[]{1, 1}, 24, 0, null,
+        true);
+  }
+
+  @Test
+  public void testTokenStream1() throws IOException {
+    String[] hashes = new String[]{"\u2101\ud33d\ufa85\u8059\u219d\ua1c1\ud671\u676f",
+        new String(new char[]{36347, 63457, 43013, 56843, 52284, 34231, 57934, 42302})}; // String is degenerate as
+    // characters!
+
+    TokenStream ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 1, 1, 100,
+        false);
+    assertTokenStreamContents(ts, hashes, new int[]{0, 0},
+        new int[]{49, 49}, new String[]{MinHashFilter.MIN_HASH_TYPE, MinHashFilter.MIN_HASH_TYPE}, new int[]{1, 0},
+        new int[]{1, 1}, 49, 0, null, true);
+  }
+
+  private ArrayList<String> getTokens(TokenStream ts) throws IOException {
+    ArrayList<String> tokens = new ArrayList<>();
+    ts.reset();
+    while (ts.incrementToken()) {
+      CharTermAttribute termAttribute = ts.getAttribute(CharTermAttribute.class);
+      String token = new String(termAttribute.buffer(), 0, termAttribute.length());
+      tokens.add(token);
+    }
+    ts.end();
+    ts.close();
+
+    return tokens;
+  }
+
+  @Test
+  public void testTokenStream2() throws IOException {
+    TokenStream ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 100, 1, 1,
+        false);
+    ArrayList<String> tokens = getTokens(ts);
+    ts.close();
+
+    assertEquals(100, tokens.size());
+  }
+
+  @Test
+  public void testTokenStream3() throws IOException {
+    TokenStream ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 10, 1, 10,
+        false);
+    ArrayList<String> tokens = getTokens(ts);
+    ts.close();
+
+    assertEquals(20, tokens.size());
+  }
+
+  @Test
+  public void testTokenStream4() throws IOException {
+    TokenStream ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 10, 10, 1,
+        false);
+    ArrayList<String> tokens = getTokens(ts);
+    ts.close();
+
+    assertEquals(20, tokens.size());
+
+    ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 10, 10, 1, true);
+    tokens = getTokens(ts);
+    ts.close();
+
+    assertEquals(100, tokens.size());
+
+  }
+
+  @Test
+  public void testTokenStream5() throws IOException {
+    TokenStream ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 1, 100, 1,
+        false);
+    ArrayList<String> tokens = getTokens(ts);
+    ts.close();
+
+    assertEquals(2, tokens.size());
+
+    ts = createTokenStream(5, "woof woof woof woof woof" + " " + "woof woof woof woof puff", 1, 100, 1, true);
+    tokens = getTokens(ts);
+    ts.close();
+
+    assertEquals(100, tokens.size());
+    HashSet<String> set = new HashSet<>(tokens);
+    assertEquals(2, set.size());
+
+    boolean rolled = false;
+    String first = null;
+    String last = null;
+    for (String current : tokens) {
+      if (first == null) {
+        first = current;
+      }
+      if (last != null) {
+        if (!rolled) {
+          if (current.compareTo(last) >= 0) {
+            // fine
+          } else if (current.equals(first)) {
+            rolled = true;
+          } else {
+            fail("Incorrect hash order");
+          }
+        } else {
+          if (!current.equals(first)) {
+            fail("Incorrect hash order");
+          }
+        }
+      }
+      last = current;
+    }
+
+  }
+
+  public static TokenStream createTokenStream(int shingleSize, String shingles, int hashCount, int bucketCount,
+                                              int hashSetSize, boolean withRotation) {
+    Tokenizer tokenizer = createMockShingleTokenizer(shingleSize, shingles);
+    HashMap<String, String> lshffargs = new HashMap<>();
+    lshffargs.put("hashCount", "" + hashCount);
+    lshffargs.put("bucketCount", "" + bucketCount);
+    lshffargs.put("hashSetSize", "" + hashSetSize);
+    lshffargs.put("withRotation", "" + withRotation);
+    MinHashFilterFactory lshff = new MinHashFilterFactory(lshffargs);
+    return lshff.create(tokenizer);
+  }
+
+  private static Tokenizer createMockShingleTokenizer(int shingleSize, String shingles) {
+    MockTokenizer tokenizer = new MockTokenizer(
+        new CharacterRunAutomaton(new RegExp("[^ \t\r\n]+([ \t\r\n]+[^ \t\r\n]+){" + (shingleSize - 1) + "}").toAutomaton()),
+        true);
+    tokenizer.setEnableChecks(true);
+    if (shingles != null) {
+      tokenizer.setReader(new StringReader(shingles));
+    }
+    return tokenizer;
+  }
+
+  private boolean isLessThan(LongPair hash1, LongPair hash2) {
+    return MinHashFilter.isLessThanUnsigned(hash1.val2, hash2.val2) || hash1.val2 == hash2.val2 && (MinHashFilter.isLessThanUnsigned(hash1.val1, hash2.val1));
+  }
+}


[22/50] [abbrv] lucene-solr:apiv2: don't use MockDirectoryWrapper here: it can cause testThreadSafety thread starvation so test times out after 2 hours

Posted by no...@apache.org.
don't use MockDirectoryWrapper here: it can cause testThreadSafety thread starvation so test times out after 2 hours


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b9ded922
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b9ded922
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b9ded922

Branch: refs/heads/apiv2
Commit: b9ded922953c19a8c80a93b8082214a9feff8ead
Parents: fce10ae
Author: Mike McCandless <mi...@apache.org>
Authored: Mon Jun 13 04:42:11 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Mon Jun 13 04:42:11 2016 -0400

----------------------------------------------------------------------
 .../apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9ded922/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java b/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java
index 388b2f0..953dc59 100644
--- a/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java
+++ b/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java
@@ -30,7 +30,12 @@ public class TestHardLinkCopyDirectoryWrapper extends BaseDirectoryTestCase {
 
   @Override
   protected Directory getDirectory(Path file) throws IOException {
-    Directory open = random().nextBoolean() ? newFSDirectory(file) : newDirectory();
+    Directory open;
+    if (random().nextBoolean()) {
+      open = new RAMDirectory();
+    } else {
+      open = FSDirectory.open(file);
+    }
     return new HardlinkCopyDirectoryWrapper(open);
   }
 


[02/50] [abbrv] lucene-solr:apiv2: SOLR-9199: ZkController#publishAndWaitForDownStates logic is inefficient

Posted by no...@apache.org.
SOLR-9199: ZkController#publishAndWaitForDownStates logic is inefficient


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/d55cc8f2
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/d55cc8f2
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/d55cc8f2

Branch: refs/heads/apiv2
Commit: d55cc8f293aec4ccc882b1a92ed450c9ec3877dc
Parents: 067fb25
Author: Gregory Chanan <gc...@cloudera.com>
Authored: Wed Jun 8 17:31:47 2016 -0700
Committer: Gregory Chanan <gc...@cloudera.com>
Committed: Thu Jun 9 13:24:29 2016 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                         |  2 ++
 .../src/java/org/apache/solr/cloud/ZkController.java     | 11 ++++-------
 2 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d55cc8f2/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index c8e7c1f..ceb7a4a 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -52,6 +52,8 @@ Bug Fixes
 
 * SOLR-9191: OverseerTaskQueue.peekTopN() fatally flawed (Scott Blum, Noble Paul)
 
+* SOLR-9199: ZkController#publishAndWaitForDownStates logic is inefficient (Hrishikesh Gadre)
+
 ==================  6.1.0 ==================
 
 Upgrading from Solr any prior release

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d55cc8f2/solr/core/src/java/org/apache/solr/cloud/ZkController.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index b36e766..1388ee5 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -686,9 +686,9 @@ public final class ZkController {
     // now wait till the updates are in our state
     long now = System.nanoTime();
     long timeout = now + TimeUnit.NANOSECONDS.convert(WAIT_DOWN_STATES_TIMEOUT_SECONDS, TimeUnit.SECONDS);
-    boolean foundStates = true;
 
     while (System.nanoTime() < timeout) {
+      boolean foundStates = true;
       ClusterState clusterState = zkStateReader.getClusterState();
       Map<String, DocCollection> collections = clusterState.getCollectionsMap();
       for (Map.Entry<String, DocCollection> entry : collections.entrySet()) {
@@ -704,16 +704,13 @@ public final class ZkController {
         }
       }
 
+      Thread.sleep(1000);
       if (foundStates) {
-        Thread.sleep(1000);
-        break;
+        return;
       }
-      Thread.sleep(1000);
-    }
-    if (!foundStates) {
-      log.warn("Timed out waiting to see all nodes published as DOWN in our cluster state.");
     }
 
+    log.warn("Timed out waiting to see all nodes published as DOWN in our cluster state.");
   }
 
   /**


[09/50] [abbrv] lucene-solr:apiv2: LUCENE-7328: Remove LegacyNumericEncoding from GeoPointField

Posted by no...@apache.org.
LUCENE-7328: Remove LegacyNumericEncoding from GeoPointField


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e4db256d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e4db256d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e4db256d

Branch: refs/heads/apiv2
Commit: e4db256d3f2723f6d56a9734d4c820f70455f52b
Parents: 816fae9
Author: Nicholas Knize <nk...@gmail.com>
Authored: Fri Jun 10 09:50:18 2016 -0500
Committer: Nicholas Knize <nk...@gmail.com>
Committed: Fri Jun 10 11:41:06 2016 -0500

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |   9 +-
 .../geopoint/document/GeoPointField.java        | 122 ++--------
 .../geopoint/document/GeoPointTokenStream.java  |  17 +-
 .../geopoint/search/GeoPointDistanceQuery.java  |  22 +-
 .../search/GeoPointDistanceQueryImpl.java       |   5 +-
 .../geopoint/search/GeoPointInBBoxQuery.java    |  27 +--
 .../search/GeoPointInBBoxQueryImpl.java         |   5 +-
 .../geopoint/search/GeoPointInPolygonQuery.java |  38 +--
 .../search/GeoPointInPolygonQueryImpl.java      |   5 +-
 .../geopoint/search/GeoPointMultiTermQuery.java |   7 +-
 .../search/GeoPointNumericTermsEnum.java        | 162 -------------
 .../search/GeoPointPrefixTermsEnum.java         | 235 -------------------
 .../geopoint/search/GeoPointTermsEnum.java      | 227 ++++++++++++++----
 .../geopoint/search/TestGeoPointQuery.java      |   9 +-
 .../search/TestLegacyGeoPointQuery.java         | 103 --------
 15 files changed, 239 insertions(+), 754 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 279fc4d..b4ec596 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -4,7 +4,14 @@ For more information on past and future Lucene versions, please see:
 http://s.apache.org/luceneversions
 
 ======================= Lucene 7.0.0 =======================
-(No Changes)
+
+Bug Fixes
+
+Improvements
+
+Other
+
+* LUCENE-7328: Remove LegacyNumericEncoding from GeoPointField. (Nick Knize)
 
 ======================= Lucene 6.2.0 =======================
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointField.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointField.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointField.java
index c20ad85..9bc2408 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointField.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointField.java
@@ -46,9 +46,6 @@ import static org.apache.lucene.geo.GeoUtils.MIN_LON_INCL;
  * see {@link org.apache.lucene.spatial.geopoint.search.GeoPointInBBoxQuery}, {@link org.apache.lucene.spatial.geopoint.search.GeoPointInPolygonQuery},
  * or {@link org.apache.lucene.spatial.geopoint.search.GeoPointDistanceQuery}
  *
- * NOTE: This indexes only high precision encoded terms which may result in visiting a high number
- * of terms for large queries. See LUCENE-6481 for a future improvement.
- *
  * @lucene.experimental
  */
 public final class GeoPointField extends Field {
@@ -69,80 +66,30 @@ public final class GeoPointField extends Field {
   private static final int BUF_SIZE_LONG = 28/8 + 1;
 
   /**
-   * <b>Expert:</b> Optional flag to select term encoding for GeoPointField types
-   */
-  public enum TermEncoding {
-    /**
-     * encodes prefix terms only resulting in a small index and faster queries - use with
-     * {@code GeoPointTokenStream}
-     */
-    PREFIX,
-    /**
-     * @deprecated encodes prefix and full resolution terms - use with
-     * {@link org.apache.lucene.analysis.LegacyNumericTokenStream}
-     */
-    @Deprecated
-    NUMERIC
-  }
-
-  /**
-   * @deprecated Type for a GeoPointField that is not stored:
-   * normalization factors, frequencies, and positions are omitted.
-   */
-  @Deprecated
-  public static final FieldType NUMERIC_TYPE_NOT_STORED = new FieldType();
-  static {
-    NUMERIC_TYPE_NOT_STORED.setTokenized(false);
-    NUMERIC_TYPE_NOT_STORED.setOmitNorms(true);
-    NUMERIC_TYPE_NOT_STORED.setIndexOptions(IndexOptions.DOCS);
-    NUMERIC_TYPE_NOT_STORED.setDocValuesType(DocValuesType.SORTED_NUMERIC);
-    NUMERIC_TYPE_NOT_STORED.setNumericType(FieldType.LegacyNumericType.LONG);
-    NUMERIC_TYPE_NOT_STORED.setNumericPrecisionStep(PRECISION_STEP);
-    NUMERIC_TYPE_NOT_STORED.freeze();
-  }
-
-  /**
-   * @deprecated Type for a stored GeoPointField:
-   * normalization factors, frequencies, and positions are omitted.
-   */
-  @Deprecated
-  public static final FieldType NUMERIC_TYPE_STORED = new FieldType();
-  static {
-    NUMERIC_TYPE_STORED.setTokenized(false);
-    NUMERIC_TYPE_STORED.setOmitNorms(true);
-    NUMERIC_TYPE_STORED.setIndexOptions(IndexOptions.DOCS);
-    NUMERIC_TYPE_STORED.setDocValuesType(DocValuesType.SORTED_NUMERIC);
-    NUMERIC_TYPE_STORED.setNumericType(FieldType.LegacyNumericType.LONG);
-    NUMERIC_TYPE_STORED.setNumericPrecisionStep(PRECISION_STEP);
-    NUMERIC_TYPE_STORED.setStored(true);
-    NUMERIC_TYPE_STORED.freeze();
-  }
-
-  /**
    * Type for a GeoPointField that is not stored:
    * normalization factors, frequencies, and positions are omitted.
    */
-  public static final FieldType PREFIX_TYPE_NOT_STORED = new FieldType();
+  public static final FieldType TYPE_NOT_STORED = new FieldType();
   static {
-    PREFIX_TYPE_NOT_STORED.setTokenized(false);
-    PREFIX_TYPE_NOT_STORED.setOmitNorms(true);
-    PREFIX_TYPE_NOT_STORED.setIndexOptions(IndexOptions.DOCS);
-    PREFIX_TYPE_NOT_STORED.setDocValuesType(DocValuesType.SORTED_NUMERIC);
-    PREFIX_TYPE_NOT_STORED.freeze();
+    TYPE_NOT_STORED.setTokenized(false);
+    TYPE_NOT_STORED.setOmitNorms(true);
+    TYPE_NOT_STORED.setIndexOptions(IndexOptions.DOCS);
+    TYPE_NOT_STORED.setDocValuesType(DocValuesType.SORTED_NUMERIC);
+    TYPE_NOT_STORED.freeze();
   }
 
   /**
    * Type for a stored GeoPointField:
    * normalization factors, frequencies, and positions are omitted.
    */
-  public static final FieldType PREFIX_TYPE_STORED = new FieldType();
+  public static final FieldType TYPE_STORED = new FieldType();
   static {
-    PREFIX_TYPE_STORED.setTokenized(false);
-    PREFIX_TYPE_STORED.setOmitNorms(true);
-    PREFIX_TYPE_STORED.setIndexOptions(IndexOptions.DOCS);
-    PREFIX_TYPE_STORED.setDocValuesType(DocValuesType.SORTED_NUMERIC);
-    PREFIX_TYPE_STORED.setStored(true);
-    PREFIX_TYPE_STORED.freeze();
+    TYPE_STORED.setTokenized(false);
+    TYPE_STORED.setOmitNorms(true);
+    TYPE_STORED.setIndexOptions(IndexOptions.DOCS);
+    TYPE_STORED.setDocValuesType(DocValuesType.SORTED_NUMERIC);
+    TYPE_STORED.setStored(true);
+    TYPE_STORED.freeze();
   }
 
   /** Creates a stored or un-stored GeoPointField
@@ -156,28 +103,13 @@ public final class GeoPointField extends Field {
     this(name, latitude, longitude, getFieldType(stored));
   }
 
-  /** Creates a stored or un-stored GeoPointField using the specified {@link TermEncoding} method
-   *  @param name field name
-   *  @param latitude latitude double value [-90.0 : 90.0]
-   *  @param longitude longitude double value [-180.0 : 180.0]
-   *  @param termEncoding encoding type to use ({@link TermEncoding#NUMERIC} Terms, or {@link TermEncoding#PREFIX} only Terms)
-   *  @param stored Store.YES if the content should also be stored
-   *  @throws IllegalArgumentException if the field name is null.
-   */
-  @Deprecated
-  public GeoPointField(String name, double latitude, double longitude, TermEncoding termEncoding, Store stored) {
-    this(name, latitude, longitude, getFieldType(termEncoding, stored));
-  }
-
   /** Expert: allows you to customize the {@link
    *  FieldType}.
    *  @param name field name
    *  @param latitude latitude double value [-90.0 : 90.0]
    *  @param longitude longitude double value [-180.0 : 180.0]
-   *  @param type customized field type: must have {@link FieldType#numericType()}
-   *         of {@link org.apache.lucene.document.FieldType.LegacyNumericType#LONG}.
-   *  @throws IllegalArgumentException if the field name or type is null, or
-   *          if the field type does not have a LONG numericType()
+   *  @param type customized field type
+   *  @throws IllegalArgumentException if the field name or type is null
    */
   public GeoPointField(String name, double latitude, double longitude, FieldType type) {
     super(name, type);
@@ -193,12 +125,6 @@ public final class GeoPointField extends Field {
       if (type.docValuesType() != DocValuesType.SORTED_NUMERIC) {
         throw new IllegalArgumentException("type.docValuesType() must be SORTED_NUMERIC but got " + type.docValuesType());
       }
-      if (type.numericType() != null) {
-        // make sure numericType is a LONG
-        if (type.numericType() != FieldType.LegacyNumericType.LONG) {
-          throw new IllegalArgumentException("type.numericType() must be LONG but got " + type.numericType());
-        }
-      }
     } else {
       throw new IllegalArgumentException("type.indexOptions() must be one of NONE or DOCS but got " + type.indexOptions());
     }
@@ -207,20 +133,14 @@ public final class GeoPointField extends Field {
     fieldsData = encodeLatLon(latitude, longitude);
   }
 
-  private static FieldType getFieldType(Store stored) {
-    return getFieldType(TermEncoding.PREFIX, stored);
-  }
-
   /**
-   * @deprecated
    * Static helper method for returning a valid FieldType based on termEncoding and stored options
    */
-  @Deprecated
-  private static FieldType getFieldType(TermEncoding termEncoding, Store stored) {
+  private static FieldType getFieldType(Store stored) {
     if (stored == Store.YES) {
-      return termEncoding == TermEncoding.PREFIX ? PREFIX_TYPE_STORED : NUMERIC_TYPE_STORED;
+      return TYPE_STORED;
     } else if (stored == Store.NO) {
-      return termEncoding == TermEncoding.PREFIX ? PREFIX_TYPE_NOT_STORED : NUMERIC_TYPE_NOT_STORED;
+      return TYPE_NOT_STORED;
     } else {
       throw new IllegalArgumentException("stored option must be NO or YES but got " + stored);
     }
@@ -233,12 +153,6 @@ public final class GeoPointField extends Field {
       return null;
     }
 
-    // if numericType is set
-    if (type.numericType() != null) {
-      // return numeric encoding
-      return super.tokenStream(analyzer, reuse);
-    }
-
     if (reuse instanceof GeoPointTokenStream == false) {
       reuse = new GeoPointTokenStream();
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointTokenStream.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointTokenStream.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointTokenStream.java
index cc5d8f2..b25b3ec 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointTokenStream.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/document/GeoPointTokenStream.java
@@ -35,28 +35,17 @@ import static org.apache.lucene.spatial.geopoint.document.GeoPointField.PRECISIO
 
 /**
  * <b>Expert:</b> This class provides a {@link TokenStream} used by {@link GeoPointField}
- * for encoding {@link GeoPointField.TermEncoding#PREFIX} only GeoPointTerms.
+ * for encoding GeoPoint terms.
  *
- * <p><i>NOTE: This is used as the default encoding unless
- * {@code GeoPointField.setNumericType(FieldType.LegacyNumericType.LONG)} is set</i></p>
- *
- * This class is similar to {@link org.apache.lucene.analysis.LegacyNumericTokenStream} but encodes terms up to a
- * a maximum of {@link #MAX_SHIFT} using a fixed precision step defined by
+ * This class encodes terms up to a maximum of {@link #MAX_SHIFT} using a fixed precision step defined by
  * {@link GeoPointField#PRECISION_STEP}. This yields a total of 4 terms per GeoPoint
  * each consisting of 5 bytes (4 prefix bytes + 1 precision byte).
  *
- * <p>For best performance use the provided {@link GeoPointField#PREFIX_TYPE_NOT_STORED} or
- * {@link GeoPointField#PREFIX_TYPE_STORED}</p>
- *
- * <p>If prefix terms are used then the default GeoPoint query constructors may be used, but if
- * {@link org.apache.lucene.analysis.LegacyNumericTokenStream} is used, then be sure to pass
- * {@link GeoPointField.TermEncoding#NUMERIC} to all GeoPointQuery constructors</p>
- *
  * Here's an example usage:
  *
  * <pre class="prettyprint">
  *   // using prefix terms
- *   GeoPointField geoPointField = new GeoPointField(fieldName1, lat, lon, GeoPointField.PREFIX_TYPE_NOT_STORED);
+ *   GeoPointField geoPointField = new GeoPointField(fieldName1, lat, lon, GeoPointField.TYPE_NOT_STORED);
  *   document.add(geoPointField);
  *
  *   // query by bounding box (default uses TermEncoding.PREFIX)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQuery.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQuery.java
index a6cf35c..3875ebf 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQuery.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQuery.java
@@ -20,7 +20,6 @@ import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.geo.Rectangle;
 import org.apache.lucene.geo.GeoUtils;
 
@@ -70,21 +69,12 @@ public class GeoPointDistanceQuery extends GeoPointInBBoxQuery {
    * distance (in meters) from a given point
    **/
   public GeoPointDistanceQuery(final String field, final double centerLat, final double centerLon, final double radiusMeters) {
-    this(field, TermEncoding.PREFIX, checkLatitude(centerLat), checkLongitude(centerLon), checkRadius(radiusMeters));
+    this(field, Rectangle.fromPointDistance(centerLat, centerLon, checkRadius(radiusMeters)), centerLat, centerLon, radiusMeters);
   }
 
-  /**
-   * Constructs a Query for all {@link org.apache.lucene.spatial.geopoint.document.GeoPointField} types within a
-   * distance (in meters) from a given point. Accepts optional
-   * {@link org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding} parameter
-   **/
-  public GeoPointDistanceQuery(final String field, final TermEncoding termEncoding, final double centerLat, final double centerLon, final double radiusMeters) {
-    this(field, termEncoding, Rectangle.fromPointDistance(centerLat, centerLon, checkRadius(radiusMeters)), centerLat, centerLon, radiusMeters);
-  }
-
-  private GeoPointDistanceQuery(final String field, final TermEncoding termEncoding, final Rectangle bbox,
+  private GeoPointDistanceQuery(final String field, final Rectangle bbox,
                                  final double centerLat, final double centerLon, final double radiusMeters) {
-    super(field, termEncoding, bbox.minLat, bbox.maxLat, bbox.minLon, bbox.maxLon);
+    super(field, bbox.minLat, bbox.maxLat, bbox.minLon, bbox.maxLon);
 
     this.centerLat = centerLat;
     this.centerLon = centerLon;
@@ -103,7 +93,7 @@ public class GeoPointDistanceQuery extends GeoPointInBBoxQuery {
         // unwrap left
         unwrappedLon += -360.0D;
       }
-      GeoPointDistanceQueryImpl left = new GeoPointDistanceQueryImpl(field, termEncoding, this, unwrappedLon,
+      GeoPointDistanceQueryImpl left = new GeoPointDistanceQueryImpl(field, this, unwrappedLon,
                                                                      new Rectangle(minLat, maxLat, GeoUtils.MIN_LON_INCL, maxLon));
       bqb.add(new BooleanClause(left, BooleanClause.Occur.SHOULD));
 
@@ -111,13 +101,13 @@ public class GeoPointDistanceQuery extends GeoPointInBBoxQuery {
         // unwrap right
         unwrappedLon += 360.0D;
       }
-      GeoPointDistanceQueryImpl right = new GeoPointDistanceQueryImpl(field, termEncoding, this, unwrappedLon,
+      GeoPointDistanceQueryImpl right = new GeoPointDistanceQueryImpl(field, this, unwrappedLon,
                                                                       new Rectangle(minLat, maxLat, minLon, GeoUtils.MAX_LON_INCL));
       bqb.add(new BooleanClause(right, BooleanClause.Occur.SHOULD));
 
       return bqb.build();
     }
-    return new GeoPointDistanceQueryImpl(field, termEncoding, this, centerLon,
+    return new GeoPointDistanceQueryImpl(field, this, centerLon,
                                          new Rectangle(this.minLat, this.maxLat, this.minLon, this.maxLon));
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQueryImpl.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQueryImpl.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQueryImpl.java
index a360fdb..83e87c5 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQueryImpl.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointDistanceQueryImpl.java
@@ -18,7 +18,6 @@ package org.apache.lucene.spatial.geopoint.search;
 
 import org.apache.lucene.geo.Rectangle;
 import org.apache.lucene.search.MultiTermQuery;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.util.SloppyMath;
 
 /** Package private implementation for the public facing GeoPointDistanceQuery delegate class.
@@ -35,9 +34,9 @@ final class GeoPointDistanceQueryImpl extends GeoPointInBBoxQueryImpl {
   // optimization, used for detecting axis cross
   final double axisLat;
   
-  GeoPointDistanceQueryImpl(final String field, final TermEncoding termEncoding, final GeoPointDistanceQuery q,
+  GeoPointDistanceQueryImpl(final String field, final GeoPointDistanceQuery q,
                             final double centerLonUnwrapped, final Rectangle bbox) {
-    super(field, termEncoding, bbox.minLat, bbox.maxLat, bbox.minLon, bbox.maxLon);
+    super(field, bbox.minLat, bbox.maxLat, bbox.minLon, bbox.maxLon);
     distanceQuery = q;
     centerLon = centerLonUnwrapped;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQuery.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQuery.java
index 8d66e95..5bc5861 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQuery.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQuery.java
@@ -20,13 +20,10 @@ import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.FieldValueQuery;
-import org.apache.lucene.search.LegacyNumericRangeQuery;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.geo.GeoUtils;
 
-/** Implements a simple bounding box query on a GeoPoint field. This is inspired by
- * {@link LegacyNumericRangeQuery} and is implemented using a
+/** Implements a simple bounding box query on a GeoPoint field. This is implemented using a
  * two phase approach. First, candidate terms are queried using a numeric
  * range based on the morton codes of the min and max lat/lon pairs. Terms
  * passing this initial filter are passed to a final check that verifies whether
@@ -53,28 +50,15 @@ public class GeoPointInBBoxQuery extends Query {
   protected final double maxLat;
   /** maximum longitude value (in degrees) */
   protected final double maxLon;
-  /** term encoding enum to define how the points are encoded (PREFIX or NUMERIC) */
-  protected final TermEncoding termEncoding;
 
   /**
    * Constructs a query for all {@link org.apache.lucene.spatial.geopoint.document.GeoPointField} types that fall within a
-   * defined bounding box
+   * defined bounding box.
    */
   public GeoPointInBBoxQuery(final String field, final double minLat, final double maxLat, final double minLon, final double maxLon) {
-    this(field, TermEncoding.PREFIX, minLat, maxLat, minLon, maxLon);
-  }
-
-  /**
-   * Constructs a query for all {@link org.apache.lucene.spatial.geopoint.document.GeoPointField} types that fall within a
-   * defined bounding box. Accepts optional {@link org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding} parameter
-   */
-  public GeoPointInBBoxQuery(final String field, final TermEncoding termEncoding, final double minLat, final double maxLat, final double minLon, final double maxLon) {
     if (field == null) {
       throw new IllegalArgumentException("field must not be null");
     }
-    if (termEncoding == null) {
-      throw new IllegalArgumentException("termEncoding must not be null");
-    }
     GeoUtils.checkLatitude(minLat);
     GeoUtils.checkLatitude(maxLat);
     GeoUtils.checkLongitude(minLon);
@@ -84,7 +68,6 @@ public class GeoPointInBBoxQuery extends Query {
     this.maxLat = maxLat;
     this.minLon = minLon;
     this.maxLon = maxLon;
-    this.termEncoding = termEncoding;
   }
 
   @Override
@@ -99,13 +82,13 @@ public class GeoPointInBBoxQuery extends Query {
     if (maxLon < minLon) {
       BooleanQuery.Builder bqb = new BooleanQuery.Builder();
 
-      GeoPointInBBoxQueryImpl left = new GeoPointInBBoxQueryImpl(field, termEncoding, minLat, maxLat, -180.0D, maxLon);
+      GeoPointInBBoxQueryImpl left = new GeoPointInBBoxQueryImpl(field, minLat, maxLat, -180.0D, maxLon);
       bqb.add(new BooleanClause(left, BooleanClause.Occur.SHOULD));
-      GeoPointInBBoxQueryImpl right = new GeoPointInBBoxQueryImpl(field, termEncoding, minLat, maxLat, minLon, 180.0D);
+      GeoPointInBBoxQueryImpl right = new GeoPointInBBoxQueryImpl(field, minLat, maxLat, minLon, 180.0D);
       bqb.add(new BooleanClause(right, BooleanClause.Occur.SHOULD));
       return bqb.build();
     }
-    return new GeoPointInBBoxQueryImpl(field, termEncoding, minLat, maxLat, minLon, maxLon);
+    return new GeoPointInBBoxQueryImpl(field, minLat, maxLat, minLon, maxLon);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQueryImpl.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQueryImpl.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQueryImpl.java
index c19e6d2..fcae635 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQueryImpl.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInBBoxQueryImpl.java
@@ -19,7 +19,6 @@ package org.apache.lucene.spatial.geopoint.search;
 import org.apache.lucene.search.MultiTermQuery;
 import org.apache.lucene.util.SloppyMath;
 import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.spatial.util.GeoRelationUtils;
 
 /** Package private implementation for the public facing GeoPointInBBoxQuery delegate class.
@@ -36,8 +35,8 @@ class GeoPointInBBoxQueryImpl extends GeoPointMultiTermQuery {
    * @param maxLon upper longitude (x) value of the bounding box
    * @param maxLat upper latitude (y) value of the bounding box
    */
-  GeoPointInBBoxQueryImpl(final String field, final TermEncoding termEncoding, final double minLat, final double maxLat, final double minLon, final double maxLon) {
-    super(field, termEncoding, minLat, maxLat, minLon, maxLon);
+  GeoPointInBBoxQueryImpl(final String field, final double minLat, final double maxLat, final double minLon, final double maxLon) {
+    super(field, minLat, maxLat, minLon, maxLon);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQuery.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQuery.java
index 7a0a9e9..ca61f02 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQuery.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQuery.java
@@ -20,8 +20,6 @@ import java.util.Arrays;
 
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.geo.Rectangle;
 import org.apache.lucene.geo.Polygon;
 
@@ -46,47 +44,19 @@ public final class GeoPointInPolygonQuery extends GeoPointInBBoxQuery {
    * that fall within or on the boundary of the polygons defined by the input parameters. 
    */
   public GeoPointInPolygonQuery(String field, Polygon... polygons) {
-    this(field, TermEncoding.PREFIX, polygons);
-  }
-
-  /**
-   * Constructs a new GeoPolygonQuery that will match encoded {@link org.apache.lucene.spatial.geopoint.document.GeoPointField} terms
-   * that fall within or on the boundary of the polygon defined by the input parameters.
-   * @deprecated Use {@link #GeoPointInPolygonQuery(String, Polygon[])}.
-   */
-  @Deprecated
-  public GeoPointInPolygonQuery(final String field, final double[] polyLats, final double[] polyLons) {
-    this(field, TermEncoding.PREFIX, polyLats, polyLons);
-  }
-
-  /**
-   * Constructs a new GeoPolygonQuery that will match encoded {@link org.apache.lucene.spatial.geopoint.document.GeoPointField} terms
-   * that fall within or on the boundary of the polygon defined by the input parameters.
-   * @deprecated Use {@link #GeoPointInPolygonQuery(String, GeoPointField.TermEncoding, Polygon[])} instead.
-   */
-  @Deprecated
-  public GeoPointInPolygonQuery(final String field, final TermEncoding termEncoding, final double[] polyLats, final double[] polyLons) {
-    this(field, termEncoding, new Polygon(polyLats, polyLons));
-  }
-
-  /** 
-   * Constructs a new GeoPolygonQuery that will match encoded {@link org.apache.lucene.spatial.geopoint.document.GeoPointField} terms
-   * that fall within or on the boundary of the polygons defined by the input parameters. 
-   */
-  public GeoPointInPolygonQuery(String field, TermEncoding termEncoding, Polygon... polygons) {
-    this(field, termEncoding, Rectangle.fromPolygon(polygons), polygons);
+    this(field, Rectangle.fromPolygon(polygons), polygons);
   }
   
   // internal constructor
-  private GeoPointInPolygonQuery(String field, TermEncoding termEncoding, Rectangle boundingBox, Polygon... polygons) {
-    super(field, termEncoding, boundingBox.minLat, boundingBox.maxLat, boundingBox.minLon, boundingBox.maxLon);
+  private GeoPointInPolygonQuery(String field, Rectangle boundingBox, Polygon... polygons) {
+    super(field, boundingBox.minLat, boundingBox.maxLat, boundingBox.minLon, boundingBox.maxLon);
     this.polygons = polygons.clone();
   }
 
   /** throw exception if trying to change rewrite method */
   @Override
   public Query rewrite(IndexReader reader) {
-    return new GeoPointInPolygonQueryImpl(field, termEncoding, this, this.minLat, this.maxLat, this.minLon, this.maxLon);
+    return new GeoPointInPolygonQueryImpl(field, this, this.minLat, this.maxLat, this.minLon, this.maxLon);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQueryImpl.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQueryImpl.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQueryImpl.java
index 047bf27..c931b58 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQueryImpl.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointInPolygonQueryImpl.java
@@ -19,7 +19,6 @@ package org.apache.lucene.spatial.geopoint.search;
 import java.util.Objects;
 
 import org.apache.lucene.search.MultiTermQuery;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.geo.Polygon2D;
 import org.apache.lucene.index.PointValues.Relation;
 
@@ -31,9 +30,9 @@ final class GeoPointInPolygonQueryImpl extends GeoPointInBBoxQueryImpl {
   private final GeoPointInPolygonQuery polygonQuery;
   private final Polygon2D polygons;
 
-  GeoPointInPolygonQueryImpl(final String field, final TermEncoding termEncoding, final GeoPointInPolygonQuery q,
+  GeoPointInPolygonQueryImpl(final String field, final GeoPointInPolygonQuery q,
                              final double minLat, final double maxLat, final double minLon, final double maxLon) {
-    super(field, termEncoding, minLat, maxLat, minLon, maxLon);
+    super(field, minLat, maxLat, minLon, maxLon);
     this.polygonQuery = Objects.requireNonNull(q);
     this.polygons = Polygon2D.create(q.polygons);
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointMultiTermQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointMultiTermQuery.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointMultiTermQuery.java
index 20026a1..4037237 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointMultiTermQuery.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointMultiTermQuery.java
@@ -26,7 +26,6 @@ import org.apache.lucene.search.MultiTermQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 import org.apache.lucene.spatial.util.GeoRelationUtils;
 import org.apache.lucene.geo.GeoUtils;
 import org.apache.lucene.util.SloppyMath;
@@ -45,14 +44,13 @@ abstract class GeoPointMultiTermQuery extends MultiTermQuery {
   protected final double maxLat;
 
   protected final short maxShift;
-  protected final TermEncoding termEncoding;
   protected final CellComparator cellComparator;
 
   /**
    * Constructs a query matching terms that cannot be represented with a single
    * Term.
    */
-  public GeoPointMultiTermQuery(String field, final TermEncoding termEncoding, final double minLat, final double maxLat, final double minLon, final double maxLon) {
+  public GeoPointMultiTermQuery(String field, final double minLat, final double maxLat, final double minLon, final double maxLon) {
     super(field);
 
     GeoUtils.checkLatitude(minLat);
@@ -66,7 +64,6 @@ abstract class GeoPointMultiTermQuery extends MultiTermQuery {
     this.maxLon = maxLon;
 
     this.maxShift = computeMaxShift();
-    this.termEncoding = termEncoding;
     this.cellComparator = newCellComparator();
 
     this.rewriteMethod = GEO_CONSTANT_SCORE_REWRITE;
@@ -81,7 +78,7 @@ abstract class GeoPointMultiTermQuery extends MultiTermQuery {
 
   @Override @SuppressWarnings("unchecked")
   protected TermsEnum getTermsEnum(final Terms terms, AttributeSource atts) throws IOException {
-    return GeoPointTermsEnum.newInstance(terms.iterator(), this);
+    return new GeoPointTermsEnum(terms.iterator(), this);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointNumericTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointNumericTermsEnum.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointNumericTermsEnum.java
deleted file mode 100644
index 06dfec7..0000000
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointNumericTermsEnum.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package org.apache.lucene.spatial.geopoint.search;
-
-/*
- * 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.
- */
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.util.LegacyNumericUtils;
-
-import static org.apache.lucene.spatial.geopoint.document.GeoPointField.BITS;
-
-/**
- * Decomposes a given {@link GeoPointMultiTermQuery} into a set of terms that represent the query criteria using
- * {@link org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding#NUMERIC} method defined by
- * {@link org.apache.lucene.analysis.LegacyNumericTokenStream}. The terms are then enumerated by the
- * {@link GeoPointTermQueryConstantScoreWrapper} and all docs whose GeoPoint fields match the prefix terms or
- * pass the {@link GeoPointMultiTermQuery.CellComparator#postFilter} criteria are returned in the resulting DocIdSet.
- *
- *  @lucene.experimental
- */
-@Deprecated
-final class GeoPointNumericTermsEnum extends GeoPointTermsEnum {
-  private final List<Range> rangeBounds = new LinkedList<>();
-
-  // detail level should be a factor of PRECISION_STEP limiting the depth of recursion (and number of ranges)
-  private final short DETAIL_LEVEL;
-
-  GeoPointNumericTermsEnum(final TermsEnum tenum, final GeoPointMultiTermQuery query) {
-    super(tenum, query);
-    DETAIL_LEVEL = (short)(((BITS<<1)-this.maxShift)/2);
-    computeRange(0L, (short) (((BITS) << 1) - 1));
-    assert rangeBounds.isEmpty() == false;
-    Collections.sort(rangeBounds);
-  }
-
-  /**
-   * entry point for recursively computing ranges
-   */
-  private final void computeRange(long term, final short shift) {
-    final long split = term | (0x1L<<shift);
-    assert shift < 64;
-    final long upperMax;
-    if (shift < 63) {
-      upperMax = term | ((1L << (shift+1))-1);
-    } else {
-      upperMax = 0xffffffffffffffffL;
-    }
-    final long lowerMax = split-1;
-
-    relateAndRecurse(term, lowerMax, shift);
-    relateAndRecurse(split, upperMax, shift);
-  }
-
-  /**
-   * recurse to higher level precision cells to find ranges along the space-filling curve that fall within the
-   * query box
-   *
-   * @param start starting value on the space-filling curve for a cell at a given res
-   * @param end ending value on the space-filling curve for a cell at a given res
-   * @param res spatial res represented as a bit shift (MSB is lower res)
-   */
-  private void relateAndRecurse(final long start, final long end, final short res) {
-    final double minLon = GeoPointField.decodeLongitude(start);
-    final double minLat = GeoPointField.decodeLatitude(start);
-    final double maxLon = GeoPointField.decodeLongitude(end);
-    final double maxLat = GeoPointField.decodeLatitude(end);
-
-    final short level = (short)((BITS<<1)-res>>>1);
-
-    // if cell is within and a factor of the precision step, or it crosses the edge of the shape add the range
-    final boolean within = res % GeoPointField.PRECISION_STEP == 0 && relationImpl.cellWithin(minLat, maxLat, minLon, maxLon);
-    if (within || (level == DETAIL_LEVEL && relationImpl.cellIntersectsShape(minLat, maxLat, minLon, maxLon))) {
-      final short nextRes = (short)(res-1);
-      if (nextRes % GeoPointField.PRECISION_STEP == 0) {
-        rangeBounds.add(new Range(start, nextRes, !within));
-        rangeBounds.add(new Range(start|(1L<<nextRes), nextRes, !within));
-      } else {
-        rangeBounds.add(new Range(start, res, !within));
-      }
-    } else if (level < DETAIL_LEVEL && relationImpl.cellIntersectsMBR(minLat, maxLat, minLon, maxLon)) {
-      computeRange(start, (short) (res - 1));
-    }
-  }
-
-  @Override
-  protected final BytesRef peek() {
-    rangeBounds.get(0).fillBytesRef(this.nextSubRangeBRB);
-    return nextSubRangeBRB.get();
-  }
-
-  @Override
-  protected void nextRange() {
-    currentRange = rangeBounds.remove(0);
-    super.nextRange();
-  }
-
-  @Override
-  protected final BytesRef nextSeekTerm(BytesRef term) {
-    while (hasNext()) {
-      if (currentRange == null) {
-        nextRange();
-      }
-      // if the new upper bound is before the term parameter, the sub-range is never a hit
-      if (term != null && term.compareTo(currentCell) > 0) {
-        nextRange();
-        if (!rangeBounds.isEmpty()) {
-          continue;
-        }
-      }
-      // never seek backwards, so use current term if lower bound is smaller
-      return (term != null && term.compareTo(currentCell) > 0) ? term : currentCell;
-    }
-
-    // no more sub-range enums available
-    assert rangeBounds.isEmpty();
-    return null;
-  }
-
-  @Override
-  protected final boolean hasNext() {
-    return rangeBounds.isEmpty() == false;
-  }
-
-  /**
-   * Internal class to represent a range along the space filling curve
-   */
-  protected final class Range extends BaseRange {
-    Range(final long lower, final short shift, boolean boundary) {
-      super(lower, shift, boundary);
-    }
-
-    /**
-     * Encode as a BytesRef using a reusable object. This allows us to lazily create the BytesRef (which is
-     * quite expensive), only when we need it.
-     */
-    @Override
-    protected void fillBytesRef(BytesRefBuilder result) {
-      assert result != null;
-      LegacyNumericUtils.longToPrefixCoded(start, shift, result);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java
deleted file mode 100644
index 6429b92..0000000
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package org.apache.lucene.spatial.geopoint.search;
-
-/*
- * 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.
- */
-
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-
-import static org.apache.lucene.spatial.geopoint.document.GeoPointField.geoCodedToPrefixCoded;
-import static org.apache.lucene.spatial.geopoint.document.GeoPointField.prefixCodedToGeoCoded;
-import static org.apache.lucene.spatial.geopoint.document.GeoPointField.getPrefixCodedShift;
-
-/**
- * Decomposes a given {@link GeoPointMultiTermQuery} into a set of terms that represent the query criteria using
- * {@link org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding#PREFIX} method defined by
- * {@link GeoPointField}. The terms are then enumerated by the
- * {@link GeoPointTermQueryConstantScoreWrapper} and all docs whose GeoPoint fields match the prefix terms or pass
- * the {@link GeoPointMultiTermQuery.CellComparator#postFilter} criteria are returned in the
- * resulting DocIdSet.
- *
- *  @lucene.experimental
- */
-final class GeoPointPrefixTermsEnum extends GeoPointTermsEnum {
-  private final long start;
-
-  private short shift;
-
-  // current range as long
-  private long currStart;
-  private long currEnd;
-
-  private final Range nextRange = new Range(-1, shift, true);
-
-  private boolean hasNext = false;
-
-  private boolean withinOnly = false;
-  private long lastWithin;
-
-  public GeoPointPrefixTermsEnum(final TermsEnum tenum, final GeoPointMultiTermQuery query) {
-    super(tenum, query);
-    this.start = GeoPointField.encodeLatLon(query.minLat, query.minLon);
-    this.currentRange = new Range(0, shift, true);
-    // start shift at maxShift value (from computeMaxShift)
-    this.shift = maxShift;
-    final long mask = (1L << shift) - 1;
-    this.currStart = start & ~mask;
-    this.currEnd = currStart | mask;
-  }
-
-  private boolean within(final double minLat, final double maxLat, final double minLon, final double maxLon) {
-    return relationImpl.cellWithin(minLat, maxLat, minLon, maxLon);
-  }
-
-  private boolean boundary(final double minLat, final double maxLat, final double minLon, final double maxLon) {
-    return shift == maxShift && relationImpl.cellIntersectsShape(minLat, maxLat, minLon, maxLon);
-  }
-
-  private boolean nextWithin() {
-    if (withinOnly == false) {
-      return false;
-    }
-    currStart += (1L << shift);
-    setNextRange(false);
-    currentRange.set(nextRange);
-    hasNext = true;
-
-    withinOnly = lastWithin != currStart;
-    if (withinOnly == false) advanceVariables();
-    return true;
-  }
-
-  private void nextRelation() {
-    double minLon = GeoPointField.decodeLongitude(currStart);
-    double minLat = GeoPointField.decodeLatitude(currStart);
-    double maxLon;
-    double maxLat;
-    boolean isWithin;
-    do {
-      maxLon = GeoPointField.decodeLongitude(currEnd);
-      maxLat = GeoPointField.decodeLatitude(currEnd);
-
-      isWithin = false;
-      // within or a boundary
-      if (boundary(minLat, maxLat, minLon, maxLon) == true) {
-        isWithin = within(minLat, maxLat, minLon, maxLon);
-        final int m;
-        if (isWithin == false || (m = shift % GeoPointField.PRECISION_STEP) == 0) {
-          setNextRange(isWithin == false);
-          advanceVariables();
-          break;
-        } else if (shift < 54) {
-          withinOnly = true;
-          shift = (short)(shift - m);
-          lastWithin = currEnd & ~((1L << shift) - 1);
-          setNextRange(false);
-          break;
-        }
-      }
-
-      // within cell but not at a depth factor of PRECISION_STEP
-      if (isWithin == true || (relationImpl.cellIntersectsMBR(minLat, maxLat, minLon, maxLon) == true && shift != maxShift)) {
-        // descend: currStart need not change since shift handles end of range
-        currEnd = currStart | (1L<<--shift) - 1;
-      } else {
-        advanceVariables();
-        minLon = GeoPointField.decodeLongitude(currStart);
-        minLat = GeoPointField.decodeLatitude(currStart);
-      }
-    } while(shift < 63);
-  }
-
-  private void setNextRange(final boolean boundary) {
-    nextRange.start = currStart;
-    nextRange.shift = shift;
-    nextRange.boundary = boundary;
-  }
-
-  private void advanceVariables() {
-    /** set next variables */
-    long shiftMask = 1L << shift;
-    // pop-up if shift bit is set
-    while ( (currStart & shiftMask) == shiftMask) {
-      shiftMask = 1L << ++shift;
-    }
-    final long shiftMOne = shiftMask - 1;
-    currStart = currStart & ~shiftMOne | shiftMask;
-    currEnd = currStart | shiftMOne;
-  }
-
-  @Override
-  protected final BytesRef peek() {
-    nextRange.fillBytesRef(nextSubRangeBRB);
-    return super.peek();
-  }
-
-  protected void seek(long term, short res) {
-    if (term < currStart && res < maxShift) {
-      throw new IllegalArgumentException("trying to seek backwards");
-    } else if (term == currStart) {
-      return;
-    }
-    shift = res;
-    currStart = term;
-    currEnd = currStart | ((1L<<shift)-1);
-    withinOnly = false;
-  }
-
-  @Override
-  protected void nextRange() {
-    hasNext = false;
-    super.nextRange();
-  }
-
-  @Override
-  protected final boolean hasNext() {
-    if (hasNext == true || nextWithin()) {
-      return true;
-    }
-    nextRelation();
-    if (currentRange.compareTo(nextRange) != 0) {
-      currentRange.set(nextRange);
-      return (hasNext = true);
-    }
-    return false;
-  }
-
-  @Override
-  protected final BytesRef nextSeekTerm(BytesRef term) {
-    while (hasNext()) {
-      nextRange();
-      if (term == null) {
-        return currentCell;
-      }
-
-      final int comparison = term.compareTo(currentCell);
-      if (comparison > 0) {
-        seek(prefixCodedToGeoCoded(term), (short)(64 - getPrefixCodedShift(term)));
-        continue;
-      }
-      return currentCell;
-    }
-
-    // no more sub-range enums available
-    return null;
-  }
-
-  @Override
-  protected AcceptStatus accept(BytesRef term) {
-    // range < term or range is null
-    while (currentCell == null || term.compareTo(currentCell) > 0) {
-      // no more ranges, be gone
-      if (hasNext() == false) {
-        return AcceptStatus.END;
-      }
-
-      // peek next range, if the range > term then seek
-      final int peekCompare = term.compareTo(peek());
-      if (peekCompare < 0) {
-        return AcceptStatus.NO_AND_SEEK;
-      } else if (peekCompare > 0) {
-        seek(prefixCodedToGeoCoded(term), (short)(64 - getPrefixCodedShift(term)));
-      }
-      nextRange();
-    }
-    return AcceptStatus.YES;
-  }
-
-  protected final class Range extends BaseRange {
-    public Range(final long start, final short res, final boolean boundary) {
-      super(start, res, boundary);
-    }
-
-    @Override
-    protected void fillBytesRef(BytesRefBuilder result) {
-      assert result != null;
-      geoCodedToPrefixCoded(start, shift, result);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointTermsEnum.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointTermsEnum.java
index d82b340..1a3ed4b 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointTermsEnum.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointTermsEnum.java
@@ -1,3 +1,5 @@
+package org.apache.lucene.spatial.geopoint.search;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -14,64 +16,189 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.spatial.geopoint.search;
 
 import org.apache.lucene.index.FilteredTermsEnum;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
-import org.apache.lucene.spatial.geopoint.search.GeoPointMultiTermQuery.CellComparator;
+import org.apache.lucene.spatial.geopoint.document.GeoPointField;
+
+import static org.apache.lucene.spatial.geopoint.document.GeoPointField.geoCodedToPrefixCoded;
+import static org.apache.lucene.spatial.geopoint.document.GeoPointField.prefixCodedToGeoCoded;
+import static org.apache.lucene.spatial.geopoint.document.GeoPointField.getPrefixCodedShift;
 
 /**
- * Base class for {@link GeoPointNumericTermsEnum} and {@link GeoPointPrefixTermsEnum} which compares
- * candidate GeoPointField encoded terms against terms matching the defined query criteria.
+ * Decomposes a given {@link GeoPointMultiTermQuery} into a set of terms that represent the query criteria. The terms
+ * are then enumerated by the {@link GeoPointTermQueryConstantScoreWrapper} and all docs whose GeoPoint fields match
+ * the prefix terms or pass the {@link GeoPointMultiTermQuery.CellComparator#postFilter} criteria are returned in the
+ * resulting DocIdSet.
  *
  *  @lucene.experimental
  */
-abstract class GeoPointTermsEnum extends FilteredTermsEnum {
-  protected final short maxShift;
+final class GeoPointTermsEnum extends FilteredTermsEnum {
+  private final short maxShift;
+  private final BytesRefBuilder currentCellBRB = new BytesRefBuilder();
+  private final BytesRefBuilder nextSubRangeBRB = new BytesRefBuilder();
+  private final GeoPointMultiTermQuery.CellComparator relationImpl;
 
-  protected BaseRange currentRange;
-  protected BytesRef currentCell;
-  protected final BytesRefBuilder currentCellBRB = new BytesRefBuilder();
-  protected final BytesRefBuilder nextSubRangeBRB = new BytesRefBuilder();
+  private short shift;    // shift mask
+  private long currStart; // range start as encoded long
+  private long currEnd;   // range end as encoded long
 
-  protected final CellComparator relationImpl;
+  private final Range currentRange = new Range(-1, shift, true);;
+  private final Range nextRange = new Range(-1, shift, true);
+  private BytesRef currentCell;
 
-  GeoPointTermsEnum(final TermsEnum tenum, final GeoPointMultiTermQuery query) {
+  private boolean hasNext = false;
+  private boolean withinOnly = false;
+  private long lastWithin;
+
+  public GeoPointTermsEnum(final TermsEnum tenum, final GeoPointMultiTermQuery query) {
     super(tenum);
     this.maxShift = query.maxShift;
     this.relationImpl = query.cellComparator;
+    // start shift at maxShift value (from computeMaxShift)
+    this.shift = maxShift;
+    final long mask = (1L << shift) - 1;
+    this.currStart = GeoPointField.encodeLatLon(query.minLat, query.minLon) & ~mask;
+    this.currEnd = currStart | mask;
+  }
+
+  private boolean within(final double minLat, final double maxLat, final double minLon, final double maxLon) {
+    return relationImpl.cellWithin(minLat, maxLat, minLon, maxLon);
   }
 
-  static GeoPointTermsEnum newInstance(final TermsEnum terms, final GeoPointMultiTermQuery query) {
-    if (query.termEncoding == TermEncoding.PREFIX) {
-      return new GeoPointPrefixTermsEnum(terms, query);
-    } else if (query.termEncoding == TermEncoding.NUMERIC) {
-      return new GeoPointNumericTermsEnum(terms, query);
+  private boolean boundary(final double minLat, final double maxLat, final double minLon, final double maxLon) {
+    return shift == maxShift && relationImpl.cellIntersectsShape(minLat, maxLat, minLon, maxLon);
+  }
+
+  private boolean nextWithin() {
+    if (withinOnly == false) {
+      return false;
     }
-    throw new IllegalArgumentException("Invalid GeoPoint TermEncoding " + query.termEncoding);
+    currStart += (1L << shift);
+    setNextRange(false);
+    currentRange.set(nextRange);
+    hasNext = true;
+
+    withinOnly = lastWithin != currStart;
+    if (withinOnly == false) advanceVariables();
+    return true;
   }
 
-  public boolean boundaryTerm() {
-    if (currentCell == null) {
-      throw new IllegalStateException("GeoPointTermsEnum empty or not initialized");
+  private void nextRelation() {
+    double minLon = GeoPointField.decodeLongitude(currStart);
+    double minLat = GeoPointField.decodeLatitude(currStart);
+    double maxLon;
+    double maxLat;
+    boolean isWithin;
+    do {
+      maxLon = GeoPointField.decodeLongitude(currEnd);
+      maxLat = GeoPointField.decodeLatitude(currEnd);
+
+      isWithin = false;
+      // within or a boundary
+      if (boundary(minLat, maxLat, minLon, maxLon) == true) {
+        isWithin = within(minLat, maxLat, minLon, maxLon);
+        final int m;
+        if (isWithin == false || (m = shift % GeoPointField.PRECISION_STEP) == 0) {
+          setNextRange(isWithin == false);
+          advanceVariables();
+          break;
+        } else if (shift < 54) {
+          withinOnly = true;
+          shift = (short)(shift - m);
+          lastWithin = currEnd & ~((1L << shift) - 1);
+          setNextRange(false);
+          break;
+        }
+      }
+
+      // within cell but not at a depth factor of PRECISION_STEP
+      if (isWithin == true || (relationImpl.cellIntersectsMBR(minLat, maxLat, minLon, maxLon) == true && shift != maxShift)) {
+        // descend: currStart need not change since shift handles end of range
+        currEnd = currStart | (1L<<--shift) - 1;
+      } else {
+        advanceVariables();
+        minLon = GeoPointField.decodeLongitude(currStart);
+        minLat = GeoPointField.decodeLatitude(currStart);
+      }
+    } while(shift < 63);
+  }
+
+  private void setNextRange(final boolean boundary) {
+    nextRange.start = currStart;
+    nextRange.shift = shift;
+    nextRange.boundary = boundary;
+  }
+
+  private void advanceVariables() {
+    /** set next variables */
+    long shiftMask = 1L << shift;
+    // pop-up if shift bit is set
+    while ( (currStart & shiftMask) == shiftMask) {
+      shiftMask = 1L << ++shift;
     }
-    return currentRange.boundary;
+    final long shiftMOne = shiftMask - 1;
+    currStart = currStart & ~shiftMOne | shiftMask;
+    currEnd = currStart | shiftMOne;
   }
 
-  protected BytesRef peek() {
+  protected final BytesRef peek() {
+    nextRange.fillBytesRef(nextSubRangeBRB);
     return nextSubRangeBRB.get();
   }
 
-  abstract protected boolean hasNext();
+  protected void seek(long term, short res) {
+    if (term < currStart && res < maxShift) {
+      throw new IllegalArgumentException("trying to seek backwards");
+    } else if (term == currStart) {
+      return;
+    }
+    shift = res;
+    currStart = term;
+    currEnd = currStart | ((1L<<shift)-1);
+    withinOnly = false;
+  }
 
   protected void nextRange() {
+    hasNext = false;
     currentRange.fillBytesRef(currentCellBRB);
     currentCell = currentCellBRB.get();
   }
 
+  protected final boolean hasNext() {
+    if (hasNext == true || nextWithin()) {
+      return true;
+    }
+    nextRelation();
+    if (currentRange.compareTo(nextRange) != 0) {
+      currentRange.set(nextRange);
+      return (hasNext = true);
+    }
+    return false;
+  }
+
+  @Override
+  protected final BytesRef nextSeekTerm(BytesRef term) {
+    while (hasNext()) {
+      nextRange();
+      if (term == null) {
+        return currentCell;
+      }
+
+      final int comparison = term.compareTo(currentCell);
+      if (comparison > 0) {
+        seek(prefixCodedToGeoCoded(term), (short)(64 - getPrefixCodedShift(term)));
+        continue;
+      }
+      return currentCell;
+    }
+
+    // no more sub-range enums available
+    return null;
+  }
+
   /**
    * The two-phase query approach. {@link #nextSeekTerm} is called to obtain the next term that matches a numeric
    * range of the bounding box. Those terms that pass the initial range filter are then compared against the
@@ -82,48 +209,60 @@ abstract class GeoPointTermsEnum extends FilteredTermsEnum {
    */
   @Override
   protected AcceptStatus accept(BytesRef term) {
-    // validate value is in range
+    // range < term or range is null
     while (currentCell == null || term.compareTo(currentCell) > 0) {
+      // no more ranges, be gone
       if (hasNext() == false) {
         return AcceptStatus.END;
       }
-      // peek next sub-range, only seek if the current term is smaller than next lower bound
-      if (term.compareTo(peek()) < 0) {
+
+      // peek next range, if the range > term then seek
+      final int peekCompare = term.compareTo(peek());
+      if (peekCompare < 0) {
         return AcceptStatus.NO_AND_SEEK;
+      } else if (peekCompare > 0) {
+        seek(prefixCodedToGeoCoded(term), (short)(64 - getPrefixCodedShift(term)));
       }
-      // step forward to next range without seeking, as next range is less or equal current term
       nextRange();
     }
-
     return AcceptStatus.YES;
   }
 
+  /**
+   * Returns true if the current range term is a boundary of the query shape
+   */
+  public boolean boundaryTerm() {
+    if (currentCell == null) {
+      throw new IllegalStateException("GeoPointTermsEnum empty or not initialized");
+    }
+    return currentRange.boundary;
+  }
+
   protected boolean postFilter(final double lat, final double lon) {
     return relationImpl.postFilter(lat, lon);
   }
 
-  /**
-   * Internal class to represent a range along the space filling curve
-   */
-  abstract class BaseRange implements Comparable<BaseRange> {
-    protected short shift;
-    protected long start;
-    protected boolean boundary;
+  protected final class Range implements Comparable<Range> {
+    private short shift;
+    private long start;
+    private boolean boundary;
 
-    BaseRange(final long lower, final short shift, boolean boundary) {
+    public Range(final long start, final short shift, final boolean boundary) {
       this.boundary = boundary;
-      this.start = lower;
-      this.shift = shift;
-    }
+      this.start = start;
+      this.shift = shift;    }
 
     /**
      * Encode as a BytesRef using a reusable object. This allows us to lazily create the BytesRef (which is
      * quite expensive), only when we need it.
      */
-    abstract protected void fillBytesRef(BytesRefBuilder result);
+    protected void fillBytesRef(BytesRefBuilder result) {
+      assert result != null;
+      geoCodedToPrefixCoded(start, shift, result);
+    }
 
     @Override
-    public int compareTo(BaseRange other) {
+    public int compareTo(Range other) {
       final int result = Short.compare(this.shift, other.shift);
       if (result == 0) {
         return Long.compare(this.start, other.start);
@@ -131,7 +270,7 @@ abstract class GeoPointTermsEnum extends FilteredTermsEnum {
       return result;
     }
 
-    protected void set(BaseRange other) {
+    protected void set(Range other) {
       this.start = other.start;
       this.shift = other.shift;
       this.boundary = other.boundary;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
index cfd6630..1ac9ffe 100644
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
+++ b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java
@@ -22,7 +22,6 @@ import org.apache.lucene.geo.BaseGeoPointTestCase;
 import org.apache.lucene.geo.Polygon;
 import org.apache.lucene.geo.Rectangle;
 import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
 
 /**
  * random testing for GeoPoint query logic
@@ -43,22 +42,22 @@ public class TestGeoPointQuery extends BaseGeoPointTestCase {
 
   @Override
   protected void addPointToDoc(String field, Document doc, double lat, double lon) {
-    doc.add(new GeoPointField(field, lat, lon, GeoPointField.PREFIX_TYPE_NOT_STORED));
+    doc.add(new GeoPointField(field, lat, lon, GeoPointField.TYPE_NOT_STORED));
   }
 
   @Override
   protected Query newRectQuery(String field, double minLat, double maxLat, double minLon, double maxLon) {
-    return new GeoPointInBBoxQuery(field, TermEncoding.PREFIX, minLat, maxLat, minLon, maxLon);
+    return new GeoPointInBBoxQuery(field, minLat, maxLat, minLon, maxLon);
   }
 
   @Override
   protected Query newDistanceQuery(String field, double centerLat, double centerLon, double radiusMeters) {
-    return new GeoPointDistanceQuery(field, TermEncoding.PREFIX, centerLat, centerLon, radiusMeters);
+    return new GeoPointDistanceQuery(field, centerLat, centerLon, radiusMeters);
   }
 
   @Override
   protected Query newPolygonQuery(String field, Polygon... polygons) {
-    return new GeoPointInPolygonQuery(field, TermEncoding.PREFIX, polygons);
+    return new GeoPointInPolygonQuery(field, polygons);
   }
 
   // TODO: remove these once we get tests passing!

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e4db256d/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestLegacyGeoPointQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestLegacyGeoPointQuery.java b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestLegacyGeoPointQuery.java
deleted file mode 100644
index c2f05ea..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestLegacyGeoPointQuery.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.spatial.geopoint.search;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.geo.BaseGeoPointTestCase;
-import org.apache.lucene.geo.Polygon;
-import org.apache.lucene.geo.Rectangle;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField;
-import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding;
-import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
-
-/**
- * random testing for GeoPoint query logic (with deprecated numeric encoding)
- * @deprecated remove this when TermEncoding.NUMERIC is removed
- */
-@Deprecated
-@SuppressCodecs("Direct") // can easily create too many postings and blow direct sky high
-public class TestLegacyGeoPointQuery extends BaseGeoPointTestCase {
-  
-  @Override
-  protected double quantizeLat(double lat) {
-    return GeoPointField.decodeLatitude(GeoPointField.encodeLatLon(lat, 0));
-  }
-  
-  @Override
-  protected double quantizeLon(double lon) {
-    return GeoPointField.decodeLongitude(GeoPointField.encodeLatLon(0, lon));
-  }
-
-  @Override
-  protected void addPointToDoc(String field, Document doc, double lat, double lon) {
-    doc.add(new GeoPointField(field, lat, lon, GeoPointField.NUMERIC_TYPE_NOT_STORED));
-  }
-
-  @Override
-  protected Query newRectQuery(String field, double minLat, double maxLat, double minLon, double maxLon) {
-    return new GeoPointInBBoxQuery(field, TermEncoding.NUMERIC, minLat, maxLat, minLon, maxLon);
-  }
-
-  @Override
-  protected Query newDistanceQuery(String field, double centerLat, double centerLon, double radiusMeters) {
-    return new GeoPointDistanceQuery(field, TermEncoding.NUMERIC, centerLat, centerLon, radiusMeters);
-  }
-
-  @Override
-  protected Query newPolygonQuery(String field, Polygon... polygons) {
-    return new GeoPointInPolygonQuery(field, TermEncoding.NUMERIC, polygons);
-  }
-
-  // legacy encoding is too slow somehow for this random test, its not up to the task.
-  @Override
-  public void testRandomDistance() throws Exception {
-    assumeTrue("legacy encoding is too slow/hangs on this test", false);
-  }
-
-  @Override
-  public void testRandomDistanceHuge() throws Exception {
-    assumeTrue("legacy encoding is too slow/hangs on this test", false);
-  }
-
-  @Override
-  public void testSamePointManyTimes() throws Exception {
-    assumeTrue("legacy encoding goes OOM on this test", false);
-  }
-  
-  // TODO: remove these once we get tests passing!
-
-  @Override
-  protected double nextLongitude() {
-    return GeoPointTestUtil.nextLongitude();
-  }
-
-  @Override
-  protected double nextLatitude() {
-    return GeoPointTestUtil.nextLatitude();
-  }
-
-  @Override
-  protected Rectangle nextBox() {
-    return GeoPointTestUtil.nextBox();
-  }
-
-  @Override
-  protected Polygon nextPolygon() {
-    return GeoPointTestUtil.nextPolygon();
-  }
-}


[29/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries2.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries2.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries2.java
index c1729bc..a3ecd45 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries2.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestAllDictionaries2.java
@@ -23,7 +23,6 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
index 4f04407..5e32afe 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
@@ -25,7 +25,6 @@ import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.IntsRef;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilter.java
index c0e706d..5f39926 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilter.java
@@ -30,7 +30,6 @@ import org.apache.lucene.analysis.core.KeywordTokenizer;
 import org.apache.lucene.analysis.miscellaneous.SetKeywordMarkerFilter;
 import org.apache.lucene.analysis.util.CharArraySet;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.IOUtils;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/it/TestItalianLightStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/it/TestItalianLightStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/it/TestItalianLightStemFilterFactory.java
index a9d763f..f6bce8b 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/it/TestItalianLightStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/it/TestItalianLightStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.it;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeywordMarkerFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeywordMarkerFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeywordMarkerFilter.java
index 9e6f6f2..c5b2481 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeywordMarkerFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeywordMarkerFilter.java
@@ -17,12 +17,10 @@
 package org.apache.lucene.analysis.miscellaneous;
 
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.Locale;
 import java.util.regex.Pattern;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenFilter;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.KeywordAttribute;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestTrimFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestTrimFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestTrimFilterFactory.java
index e52e61a..054a16a 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestTrimFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestTrimFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.miscellaneous;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/no/TestNorwegianLightStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/no/TestNorwegianLightStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/no/TestNorwegianLightStemFilterFactory.java
index cd2bc2f..a8948d1 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/no/TestNorwegianLightStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/no/TestNorwegianLightStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.no;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceCharFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceCharFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceCharFilterFactory.java
index 624de9e..74733d6 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceCharFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceCharFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.pattern;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceFilterFactory.java
index 80ced7a..2f77ead 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/pattern/TestPatternReplaceFilterFactory.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.analysis.pattern;
 
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterTest.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterTest.java
index f31da3a..2528ec3 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterTest.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterTest.java
@@ -17,14 +17,10 @@
 package org.apache.lucene.analysis.payloads;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.LuceneTestCase;
-
-import java.io.StringReader;
 import java.nio.charset.StandardCharsets;
 
 public class DelimitedPayloadTokenFilterTest extends BaseTokenStreamTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/pt/TestPortugueseStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/pt/TestPortugueseStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/pt/TestPortugueseStemFilterFactory.java
index d07d794..fcd0f4b 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/pt/TestPortugueseStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/pt/TestPortugueseStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.pt;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/reverse/TestReverseStringFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/reverse/TestReverseStringFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/reverse/TestReverseStringFilterFactory.java
index 874095c..306c0cd 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/reverse/TestReverseStringFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/reverse/TestReverseStringFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.reverse;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/ru/TestRussianLightStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ru/TestRussianLightStemFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ru/TestRussianLightStemFilterFactory.java
index 244c6fd..946fa22 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/ru/TestRussianLightStemFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/ru/TestRussianLightStemFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.ru;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java
index 801e5e6..192de38 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java
@@ -18,7 +18,6 @@ package org.apache.lucene.analysis.shingle;
 
 
 import java.io.IOException;
-import java.io.Reader;
 import java.io.StringReader;
 import java.util.Random;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/TestShingleFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/TestShingleFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/TestShingleFilterFactory.java
index 2c894ed..389d524 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/TestShingleFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/TestShingleFilterFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.shingle;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestStandardFactories.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestStandardFactories.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestStandardFactories.java
index 0079678..85c7760 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestStandardFactories.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestStandardFactories.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.standard;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
index ceaedf8..37983de 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
@@ -23,7 +23,6 @@ import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.core.StopAnalyzer;
 import org.apache.lucene.analysis.tokenattributes.FlagsAttribute;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.Version;
 
 /**
  * Test case for ThaiAnalyzer, modified from TestFrenchAnalyzer

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyAnalyzer.java b/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyAnalyzer.java
index 67b64bb..4388969 100644
--- a/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyAnalyzer.java
+++ b/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyAnalyzer.java
@@ -22,9 +22,6 @@ import com.ibm.icu.text.Collator;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.core.KeywordTokenizer;
 import org.apache.lucene.collation.CollationKeyAnalyzer; // javadocs
-import org.apache.lucene.util.Version;
-
-import java.io.Reader;
 
 /**
  * <p>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUFoldingFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUFoldingFilterFactory.java b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUFoldingFilterFactory.java
index 4c1d4ac..3782216 100644
--- a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUFoldingFilterFactory.java
+++ b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUFoldingFilterFactory.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.MockTokenizer;
 
 /** basic tests for {@link ICUFoldingFilterFactory} */
 public class TestICUFoldingFilterFactory extends BaseTokenStreamTestCase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUNormalizer2FilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUNormalizer2FilterFactory.java b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUNormalizer2FilterFactory.java
index 5533215..8e8de80 100644
--- a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUNormalizer2FilterFactory.java
+++ b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUNormalizer2FilterFactory.java
@@ -22,7 +22,6 @@ import java.io.StringReader;
 import java.util.HashMap;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 
 /** basic tests for {@link ICUNormalizer2FilterFactory} */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUTransformFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUTransformFilterFactory.java b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUTransformFilterFactory.java
index a478217..10b9593 100644
--- a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUTransformFilterFactory.java
+++ b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUTransformFilterFactory.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 
 /** basic tests for {@link ICUTransformFilterFactory} */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation/TestICUTokenizerFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation/TestICUTokenizerFactory.java b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation/TestICUTokenizerFactory.java
index f44e745..a9efb3b 100644
--- a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation/TestICUTokenizerFactory.java
+++ b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation/TestICUTokenizerFactory.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.util.ClasspathResourceLoader;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCosts.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCosts.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCosts.java
index 96cf1b5..30ebd14 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCosts.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/ConnectionCosts.java
@@ -24,7 +24,6 @@ import java.io.InputStream;
 import org.apache.lucene.codecs.CodecUtil;
 import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.InputStreamDataInput;
-import org.apache.lucene.util.BitUtil;
 import org.apache.lucene.util.IOUtils;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
index c8ab8d7..bf2ef57 100644
--- a/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
+++ b/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
@@ -28,7 +28,6 @@ import java.util.Map;
 import java.util.TreeMap;
 
 import org.apache.lucene.analysis.ja.util.CSVUtil;
-import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.fst.Builder;
 import org.apache.lucene.util.fst.FST;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestDoubleMetaphoneFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestDoubleMetaphoneFilterFactory.java b/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestDoubleMetaphoneFilterFactory.java
index 6f70742..aaf30d6 100644
--- a/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestDoubleMetaphoneFilterFactory.java
+++ b/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestDoubleMetaphoneFilterFactory.java
@@ -17,15 +17,12 @@
 package org.apache.lucene.analysis.phonetic;
 
 
-import java.io.StringReader;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.phonetic.DoubleMetaphoneFilter;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 
 public class TestDoubleMetaphoneFilterFactory extends BaseTokenStreamTestCase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java b/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java
index 7199755..94c5c93 100644
--- a/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java
+++ b/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java
@@ -22,7 +22,6 @@ import java.io.StringReader;
 import java.util.HashMap;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.analysis.TokenStream;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMAAnnotationsTokenizerFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMAAnnotationsTokenizerFactory.java b/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMAAnnotationsTokenizerFactory.java
index 54e71d7..58ce024 100644
--- a/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMAAnnotationsTokenizerFactory.java
+++ b/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMAAnnotationsTokenizerFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.uima;
 import org.apache.lucene.analysis.util.TokenizerFactory;
 import org.apache.lucene.util.AttributeFactory;
 
-import java.io.Reader;
 import java.util.HashMap;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMABaseAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMABaseAnalyzer.java b/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMABaseAnalyzer.java
index 5cb4a01..07e5e2a 100644
--- a/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMABaseAnalyzer.java
+++ b/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMABaseAnalyzer.java
@@ -19,7 +19,6 @@ package org.apache.lucene.analysis.uima;
 
 import org.apache.lucene.analysis.Analyzer;
 
-import java.io.Reader;
 import java.util.Map;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMATypeAwareAnnotationsTokenizerFactory.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMATypeAwareAnnotationsTokenizerFactory.java b/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMATypeAwareAnnotationsTokenizerFactory.java
index b1a6d20..f77f7d9 100644
--- a/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMATypeAwareAnnotationsTokenizerFactory.java
+++ b/lucene/analysis/uima/src/java/org/apache/lucene/analysis/uima/UIMATypeAwareAnnotationsTokenizerFactory.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.uima;
 import org.apache.lucene.analysis.util.TokenizerFactory;
 import org.apache.lucene.util.AttributeFactory;
 
-import java.io.Reader;
 import java.util.HashMap;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/analysis/uima/src/test/org/apache/lucene/analysis/uima/UIMATypeAwareAnalyzerTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/uima/src/test/org/apache/lucene/analysis/uima/UIMATypeAwareAnalyzerTest.java b/lucene/analysis/uima/src/test/org/apache/lucene/analysis/uima/UIMATypeAwareAnalyzerTest.java
index 1ba717b..020c640 100644
--- a/lucene/analysis/uima/src/test/org/apache/lucene/analysis/uima/UIMATypeAwareAnalyzerTest.java
+++ b/lucene/analysis/uima/src/test/org/apache/lucene/analysis/uima/UIMATypeAwareAnalyzerTest.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.uima;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
index 9c5453f..5d615ec 100644
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
+++ b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
@@ -26,14 +26,10 @@ import org.apache.lucene.codecs.CodecUtil;
 import org.apache.lucene.codecs.SegmentInfoFormat;
 import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.IndexWriter; // javadocs
 import org.apache.lucene.index.SegmentInfo; // javadocs
-import org.apache.lucene.index.SegmentInfos; // javadocs
 import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.DataOutput; // javadocs
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
-import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.util.Version;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
index 0a373b1..41c817a 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
@@ -23,14 +23,10 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.SegmentInfoFormat;
 import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.IndexWriter; // javadocs
 import org.apache.lucene.index.SegmentInfo; // javadocs
-import org.apache.lucene.index.SegmentInfos; // javadocs
 import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.DataOutput; // javadocs
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexOutput;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/AddIndexesTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/AddIndexesTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/AddIndexesTask.java
index 8e89c91..1cf3f2d 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/AddIndexesTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/AddIndexesTask.java
@@ -18,13 +18,10 @@ package org.apache.lucene.benchmark.byTask.tasks;
 
 
 import java.nio.file.Paths;
-import java.util.List;
-
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.CodecReader;
 import org.apache.lucene.index.SlowCodecReaderWrapper;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NearRealtimeReaderTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NearRealtimeReaderTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NearRealtimeReaderTask.java
index cbc7db7..fe7f5cb 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NearRealtimeReaderTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NearRealtimeReaderTask.java
@@ -19,7 +19,6 @@ package org.apache.lucene.benchmark.byTask.tasks;
 
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.util.ArrayUtil;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenReaderTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenReaderTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenReaderTask.java
index 19cb97b..b6d3905 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenReaderTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenReaderTask.java
@@ -24,7 +24,6 @@ import java.util.Map;
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexCommit;
-import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.store.Directory;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java
index a60859d..59ee9f9 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java
@@ -34,7 +34,6 @@ import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.MultiFields;
 import org.apache.lucene.search.Collector;
 import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.search.MultiTermQuery;
 import org.apache.lucene.search.TopFieldCollector;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TopScoreDocCollector;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java
index 6add27c..fcc91ea 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexReader;
 
 /**
 * Reopens IndexReader and closes old IndexReader.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/RollbackIndexTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/RollbackIndexTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/RollbackIndexTask.java
index 53a1ac5..7bc4255 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/RollbackIndexTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/RollbackIndexTask.java
@@ -18,8 +18,6 @@ package org.apache.lucene.benchmark.byTask.tasks;
 
 
 import java.io.IOException;
-import java.io.PrintStream;
-
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.util.InfoStream;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTask.java
index 01b549e..371efbf 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTask.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.benchmark.byTask.tasks;
 
 import java.io.BufferedWriter;
-import java.io.File;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SimpleQQParser.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SimpleQQParser.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SimpleQQParser.java
index 4c6f6b9..10a793e 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SimpleQQParser.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SimpleQQParser.java
@@ -25,7 +25,6 @@ import org.apache.lucene.queryparser.classic.QueryParserBase;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.util.Version;
 
 /**
  * Simplistic quality query parser. A Lucene query is created by passing 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTaskTest.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTaskTest.java b/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTaskTest.java
index d2bcd08..117ed3a 100644
--- a/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTaskTest.java
+++ b/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/WriteEnwikiLineDocTaskTest.java
@@ -18,10 +18,6 @@ package org.apache.lucene.benchmark.byTask.tasks;
 
 
 import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/classification/src/java/org/apache/lucene/classification/Classifier.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/java/org/apache/lucene/classification/Classifier.java b/lucene/classification/src/java/org/apache/lucene/classification/Classifier.java
index b87440d..b358504 100644
--- a/lucene/classification/src/java/org/apache/lucene/classification/Classifier.java
+++ b/lucene/classification/src/java/org/apache/lucene/classification/Classifier.java
@@ -19,10 +19,6 @@ package org.apache.lucene.classification;
 import java.io.IOException;
 import java.util.List;
 
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.index.LeafReader;
-import org.apache.lucene.search.Query;
-
 /**
  * A classifier, see <code>http://en.wikipedia.org/wiki/Classifier_(mathematics)</code>, which assign classes of type
  * <code>T</code>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/classification/src/java/org/apache/lucene/classification/document/SimpleNaiveBayesDocumentClassifier.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/java/org/apache/lucene/classification/document/SimpleNaiveBayesDocumentClassifier.java b/lucene/classification/src/java/org/apache/lucene/classification/document/SimpleNaiveBayesDocumentClassifier.java
index 2c5a493..3fbe556 100644
--- a/lucene/classification/src/java/org/apache/lucene/classification/document/SimpleNaiveBayesDocumentClassifier.java
+++ b/lucene/classification/src/java/org/apache/lucene/classification/document/SimpleNaiveBayesDocumentClassifier.java
@@ -32,7 +32,6 @@ import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.classification.ClassificationResult;
 import org.apache.lucene.classification.SimpleNaiveBayesClassifier;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.MultiFields;
@@ -44,7 +43,6 @@ import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TotalHitCountCollector;
-import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.util.BytesRef;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/classification/src/java/org/apache/lucene/classification/utils/DatasetSplitter.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/java/org/apache/lucene/classification/utils/DatasetSplitter.java b/lucene/classification/src/java/org/apache/lucene/classification/utils/DatasetSplitter.java
index fbc57b9..9523950 100644
--- a/lucene/classification/src/java/org/apache/lucene/classification/utils/DatasetSplitter.java
+++ b/lucene/classification/src/java/org/apache/lucene/classification/utils/DatasetSplitter.java
@@ -18,8 +18,6 @@ package org.apache.lucene.classification.utils;
 
 
 import java.io.IOException;
-import java.util.HashMap;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java b/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
index ab1204f..830ce2c 100644
--- a/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
+++ b/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
@@ -30,7 +30,6 @@ import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.util.BytesRef;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/classification/src/test/org/apache/lucene/classification/utils/DocToDoubleVectorUtilsTest.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/test/org/apache/lucene/classification/utils/DocToDoubleVectorUtilsTest.java b/lucene/classification/src/test/org/apache/lucene/classification/utils/DocToDoubleVectorUtilsTest.java
index 41b09c6..a90d1a5 100644
--- a/lucene/classification/src/test/org/apache/lucene/classification/utils/DocToDoubleVectorUtilsTest.java
+++ b/lucene/classification/src/test/org/apache/lucene/classification/utils/DocToDoubleVectorUtilsTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.lucene.classification.utils;
 
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
index f363cd3..b8d23bd 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
@@ -43,7 +43,6 @@ import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.Accountables;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.RamUsageEstimator;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java b/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java
index cd0e246..9e508bf 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java
@@ -21,12 +21,10 @@ import java.io.IOException;
 
 import org.apache.lucene.codecs.blocktreeords.FSTOrdsOutputs.Output;
 import org.apache.lucene.index.PostingsEnum;
-import org.apache.lucene.index.IndexOptions;
 import org.apache.lucene.index.TermState;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.RamUsageEstimator;
 import org.apache.lucene.util.StringHelper;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java b/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java
index 92ca176..9a9d871 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java
@@ -26,13 +26,11 @@ import java.io.PrintStream;
 import org.apache.lucene.codecs.BlockTermState;
 import org.apache.lucene.codecs.blocktreeords.FSTOrdsOutputs.Output;
 import org.apache.lucene.index.PostingsEnum;
-import org.apache.lucene.index.IndexOptions;
 import org.apache.lucene.index.TermState;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.store.ByteArrayDataInput;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.IntsRef;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTOrdTermsReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTOrdTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTOrdTermsReader.java
index dd45f76..5967505 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTOrdTermsReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTOrdTermsReader.java
@@ -48,7 +48,6 @@ import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.Accountables;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.IOUtils;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
index 2a61854..faab788 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
@@ -40,7 +40,6 @@ import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.Accountables;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.CharsRef;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java
index 22f7687..8f01ebf 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java
@@ -32,12 +32,10 @@ import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.MutableBits;
 import org.apache.lucene.util.StringHelper;
-import org.apache.lucene.util.UnicodeUtil;
 
 /**
  * reads/writes plaintext live docs

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
index 4a468e9..c1808bf 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
@@ -38,7 +38,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.CharsRef;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/analysis/Token.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/analysis/Token.java b/lucene/core/src/java/org/apache/lucene/analysis/Token.java
index f2323a6..77ab85e 100644
--- a/lucene/core/src/java/org/apache/lucene/analysis/Token.java
+++ b/lucene/core/src/java/org/apache/lucene/analysis/Token.java
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis;
 import org.apache.lucene.analysis.tokenattributes.FlagsAttribute;
 import org.apache.lucene.analysis.tokenattributes.PackedTokenAttributeImpl;
 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
-import org.apache.lucene.index.PostingsEnum;
 import org.apache.lucene.util.Attribute;
 import org.apache.lucene.util.AttributeFactory;
 import org.apache.lucene.util.AttributeImpl;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java b/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
index 39d3902..40f44ab 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
@@ -29,8 +29,6 @@ import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.MergeState;
 import org.apache.lucene.index.NumericDocValues;
 import org.apache.lucene.index.SegmentWriteState;
-import org.apache.lucene.util.Bits;
-
 import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
 
 /** 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
index 26652aa..1e91271 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
@@ -33,7 +33,6 @@ import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.IndexableFieldType;
 import org.apache.lucene.index.MergeState;
 import org.apache.lucene.index.StoredFieldVisitor;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 
 import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
index 5756d5b..50cfca8 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
@@ -32,7 +32,6 @@ import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.DataInput;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsFormat.java
index 4c4331c..3b0d5c2 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsFormat.java
@@ -30,7 +30,6 @@ import org.apache.lucene.codecs.PostingsReaderBase;
 import org.apache.lucene.codecs.PostingsWriterBase;
 import org.apache.lucene.codecs.blocktree.BlockTreeTermsReader;
 import org.apache.lucene.codecs.blocktree.BlockTreeTermsWriter;
-import org.apache.lucene.index.PostingsEnum;
 import org.apache.lucene.index.IndexOptions;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.index.SegmentWriteState;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/codecs/lucene62/Lucene62SegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene62/Lucene62SegmentInfoFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene62/Lucene62SegmentInfoFormat.java
index fe78572..1ee5258 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene62/Lucene62SegmentInfoFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene62/Lucene62SegmentInfoFormat.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.codecs.lucene62;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java b/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
index 07c9e72..0fb0e3b 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
@@ -17,11 +17,9 @@
 
 package org.apache.lucene.index;
 
-import java.io.IOException;
 import java.util.List;
 
 import org.apache.lucene.search.DocIdSetIterator; // javadocs
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.PriorityQueue;
 
 import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
index 87310fb..3802805 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
@@ -17,8 +17,6 @@
 package org.apache.lucene.index;
 
 import org.apache.lucene.util.ThreadInterruptedException;
-import org.apache.lucene.util.ThreadInterruptedException;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.locks.ReentrantLock;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
index e2957d7..50d2482 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
@@ -22,7 +22,6 @@ import java.util.EnumSet;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.index.DocumentsWriterPerThread.IndexingChain;
 import org.apache.lucene.index.IndexWriter.IndexReaderWarmer;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java b/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
index 166878d..adadc40 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
@@ -21,8 +21,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.lucene.index.MultiPostingsEnum.EnumWithSlice;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java b/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
index c42b052..dbf37df 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
@@ -19,14 +19,12 @@ package org.apache.lucene.index;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.MergeInfo;
 import org.apache.lucene.store.RateLimiter;
-import org.apache.lucene.util.FixedBitSet;
 
 /**
  * <p>Expert: a MergePolicy determines the sequence of

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/MergeState.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MergeState.java b/lucene/core/src/java/org/apache/lucene/index/MergeState.java
index 3723f19..fcaad51 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MergeState.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MergeState.java
@@ -19,7 +19,6 @@ package org.apache.lucene.index;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java b/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
index 8f5be86..51cabab 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
@@ -23,7 +23,6 @@ import java.util.List;
 
 import org.apache.lucene.index.MergeState.DocMap;
 import org.apache.lucene.index.MergeState;
-import org.apache.lucene.search.LeafFieldComparator;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.Bits;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java b/lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java
index f69817a..232fe70 100644
--- a/lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java
+++ b/lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java
@@ -22,7 +22,6 @@ import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
 import org.apache.lucene.codecs.TermVectorsWriter;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.RamUsageEstimator;
 
 final class TermVectorsConsumerPerField extends TermsHashPerField {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/index/TermsHashPerField.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/TermsHashPerField.java b/lucene/core/src/java/org/apache/lucene/index/TermsHashPerField.java
index 3496589..d360adb 100644
--- a/lucene/core/src/java/org/apache/lucene/index/TermsHashPerField.java
+++ b/lucene/core/src/java/org/apache/lucene/index/TermsHashPerField.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 
 import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
 import org.apache.lucene.util.ByteBlockPool;
-import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefHash;
 import org.apache.lucene.util.Counter;
 import org.apache.lucene.util.IntBlockPool;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java b/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java
index ca9459f..82aea6d 100644
--- a/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java
@@ -28,7 +28,6 @@ import org.apache.lucene.index.TermContext;
 import org.apache.lucene.index.TermState;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.InPlaceMergeSorter;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/search/EarlyTerminatingSortingCollector.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/EarlyTerminatingSortingCollector.java b/lucene/core/src/java/org/apache/lucene/search/EarlyTerminatingSortingCollector.java
index 1af1b9f..8ddd82f 100644
--- a/lucene/core/src/java/org/apache/lucene/search/EarlyTerminatingSortingCollector.java
+++ b/lucene/core/src/java/org/apache/lucene/search/EarlyTerminatingSortingCollector.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.CollectionTerminatedException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java b/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
index 8331d0f..e79dbf2 100644
--- a/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
+++ b/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
@@ -19,7 +19,6 @@ package org.apache.lucene.search;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.List;
 
 import org.apache.lucene.index.PostingsEnum;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/search/Multiset.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/Multiset.java b/lucene/core/src/java/org/apache/lucene/search/Multiset.java
index 0755edd..549ec7b 100644
--- a/lucene/core/src/java/org/apache/lucene/search/Multiset.java
+++ b/lucene/core/src/java/org/apache/lucene/search/Multiset.java
@@ -18,8 +18,6 @@ package org.apache.lucene.search;
 
 
 import java.util.AbstractCollection;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java b/lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java
index e1a2c18..8569114 100644
--- a/lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java
@@ -18,15 +18,10 @@ package org.apache.lucene.search;
 
 import java.io.IOException;
 import java.util.AbstractCollection;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
-import java.util.List;
 import java.util.NoSuchElementException;
-import java.util.Set;
-
 import org.apache.lucene.document.IntPoint;
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.LeafReader;
@@ -36,7 +31,6 @@ import org.apache.lucene.index.PointValues.Relation;
 import org.apache.lucene.index.PointValues;
 import org.apache.lucene.index.PrefixCodedTerms.TermIterator;
 import org.apache.lucene.index.PrefixCodedTerms;
-import org.apache.lucene.index.Term;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 import org.apache.lucene.util.BytesRefIterator;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java b/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
index dffde73..b3c8ad2 100644
--- a/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
@@ -18,7 +18,6 @@ package org.apache.lucene.search;
 
 
 import org.apache.lucene.index.Term;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.AutomatonProvider;
 import org.apache.lucene.util.automaton.Operations;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/store/ByteArrayIndexInput.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/store/ByteArrayIndexInput.java b/lucene/core/src/java/org/apache/lucene/store/ByteArrayIndexInput.java
index 6363ed1..80f5647 100644
--- a/lucene/core/src/java/org/apache/lucene/store/ByteArrayIndexInput.java
+++ b/lucene/core/src/java/org/apache/lucene/store/ByteArrayIndexInput.java
@@ -19,8 +19,6 @@ package org.apache.lucene.store;
 
 import java.io.IOException;
 
-import org.apache.lucene.util.BytesRef;
-
 /** 
  * DataInput backed by a byte array.
  * <b>WARNING:</b> This class omits all low-level checks.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/util/CharsRefBuilder.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/CharsRefBuilder.java b/lucene/core/src/java/org/apache/lucene/util/CharsRefBuilder.java
index 0dc0e7a..09830e6 100644
--- a/lucene/core/src/java/org/apache/lucene/util/CharsRefBuilder.java
+++ b/lucene/core/src/java/org/apache/lucene/util/CharsRefBuilder.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.util;
 
 
-import java.io.IOException;
 import java.util.Arrays;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/util/automaton/DaciukMihovAutomatonBuilder.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/automaton/DaciukMihovAutomatonBuilder.java b/lucene/core/src/java/org/apache/lucene/util/automaton/DaciukMihovAutomatonBuilder.java
index 0ac2867..704a6c4 100644
--- a/lucene/core/src/java/org/apache/lucene/util/automaton/DaciukMihovAutomatonBuilder.java
+++ b/lucene/core/src/java/org/apache/lucene/util/automaton/DaciukMihovAutomatonBuilder.java
@@ -22,7 +22,6 @@ import java.util.*;
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CharsRef;
-import org.apache.lucene.util.RamUsageEstimator;
 import org.apache.lucene.util.UnicodeUtil;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/util/mutable/MutableValueStr.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/mutable/MutableValueStr.java b/lucene/core/src/java/org/apache/lucene/util/mutable/MutableValueStr.java
index cace988..f6921b3 100644
--- a/lucene/core/src/java/org/apache/lucene/util/mutable/MutableValueStr.java
+++ b/lucene/core/src/java/org/apache/lucene/util/mutable/MutableValueStr.java
@@ -16,7 +16,6 @@
  */
 package org.apache.lucene.util.mutable;
 
-import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicBlockPackedWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicBlockPackedWriter.java b/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicBlockPackedWriter.java
index 8652f25..6b42ffb 100644
--- a/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicBlockPackedWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicBlockPackedWriter.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.util.packed;
 
 
-import static org.apache.lucene.util.BitUtil.zigZagEncode;
 import static org.apache.lucene.util.packed.MonotonicBlockPackedReader.expected;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicLongValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicLongValues.java b/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicLongValues.java
index 6d396a2..09b3ecd 100644
--- a/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicLongValues.java
+++ b/lucene/core/src/java/org/apache/lucene/util/packed/MonotonicLongValues.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import static org.apache.lucene.util.packed.MonotonicBlockPackedReader.expected;
 
 import org.apache.lucene.util.RamUsageEstimator;
-import org.apache.lucene.util.packed.DeltaPackedLongValues.Builder;
 import org.apache.lucene.util.packed.PackedInts.Reader;
 
 class MonotonicLongValues extends DeltaPackedLongValues {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java b/lucene/core/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
index b6f178d..58d980e 100644
--- a/lucene/core/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
+++ b/lucene/core/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
 
-import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.DocValuesFormat;
@@ -55,7 +54,6 @@ import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.NumericDocValues;
 import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.SegmentReader;
 import org.apache.lucene.index.SerialMergeScheduler;
 import org.apache.lucene.index.SortedDocValues;
 import org.apache.lucene.index.SortedNumericDocValues;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/document/TestFieldType.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/document/TestFieldType.java b/lucene/core/src/test/org/apache/lucene/document/TestFieldType.java
index c49d4e0..da76f40 100644
--- a/lucene/core/src/test/org/apache/lucene/document/TestFieldType.java
+++ b/lucene/core/src/test/org/apache/lucene/document/TestFieldType.java
@@ -18,8 +18,6 @@ package org.apache.lucene.document;
 
 
 import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
 import org.apache.lucene.document.FieldType.LegacyNumericType;
 import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexOptions;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/Test2BPoints.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/Test2BPoints.java b/lucene/core/src/test/org/apache/lucene/index/Test2BPoints.java
index da8dbac..892ab6c 100644
--- a/lucene/core/src/test/org/apache/lucene/index/Test2BPoints.java
+++ b/lucene/core/src/test/org/apache/lucene/index/Test2BPoints.java
@@ -16,14 +16,8 @@
  */
 package org.apache.lucene.index;
 
-import java.io.IOException;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.FilterCodec;
-import org.apache.lucene.codecs.PointsFormat;
-import org.apache.lucene.codecs.PointsReader;
-import org.apache.lucene.codecs.PointsWriter;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.LongPoint;
 import org.apache.lucene.search.IndexSearcher;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
index 8dc8a3c..c6cf1c3 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
@@ -36,13 +36,11 @@ import org.apache.lucene.document.SortedDocValuesField;
 import org.apache.lucene.document.SortedSetDocValuesField;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.store.NRTCachingDirectory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.lucene.util.TestUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java b/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
index bd1e9b6..79783b5 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.index;
 
 
-import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -33,11 +32,7 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.InfoStream;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
index 8e62094..8c7090e 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
@@ -19,7 +19,6 @@ package org.apache.lucene.index;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.util.Collection;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java b/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
index 003db9e..d957646 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
@@ -17,10 +17,8 @@
 package org.apache.lucene.index;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java b/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
index 2ef5824..cc1f2be 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
@@ -27,7 +27,6 @@ import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java b/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
index 30ac6c6..48d69ec 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
@@ -32,7 +32,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FilterDirectory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
index ecebb18..0191e25 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
@@ -18,8 +18,6 @@ package org.apache.lucene.index;
 
 
 import java.io.*;
-import java.net.URI;
-import java.nio.file.FileSystem;
 import java.nio.file.Path;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -29,8 +27,6 @@ import org.apache.lucene.codecs.simpletext.SimpleTextCodec;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.mockfile.FilterPath;
-import org.apache.lucene.mockfile.VirusCheckingFS;
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java
index d5e5d92..2b4f764 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java
@@ -19,16 +19,12 @@ package org.apache.lucene.index;
 
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.store.BufferedIndexInput;
 import org.apache.lucene.store.ByteArrayDataInput;
 import org.apache.lucene.store.ByteArrayDataOutput;
 import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.RAMDirectory;
-
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 


[04/50] [abbrv] lucene-solr:apiv2: SOLR-8812: edismax: turn off mm processing if no explicit mm spec is provided and there are explicit operators (except for AND) - addresses problems caused by SOLR-2649

Posted by no...@apache.org.
SOLR-8812: edismax: turn off mm processing if no explicit mm spec is provided and there are explicit operators (except for AND) - addresses problems caused by SOLR-2649


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/38714399
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/38714399
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/38714399

Branch: refs/heads/apiv2
Commit: 38714399760889d2d7b188a87341aade6139ffef
Parents: 9632069
Author: Steve Rowe <sa...@apache.org>
Authored: Fri Jun 10 02:29:26 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Fri Jun 10 02:29:26 2016 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   4 +
 .../solr/search/ExtendedDismaxQParser.java      |  37 ++++-
 .../solr/search/TestExtendedDismaxParser.java   | 155 +++++++++++++++++++
 3 files changed, 191 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38714399/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index ceb7a4a..73a60f2 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -203,6 +203,10 @@ Bug Fixes
 
 * SOLR-9198: config APIs unable to add multiple values with same name (noble)
 
+* SOLR-8812: edismax: turn off mm processing if no explicit mm spec is provided
+  and there are explicit operators (except for AND) - addresses problems caused by SOLR-2649.
+  (Greg Pendlebury, Jan H�ydahl, Erick Erickson, Steve Rowe)
+
 Optimizations
 ----------------------
 * SOLR-8722: Don't force a full ZkStateReader refresh on every Overseer operation.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38714399/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
index 8401f3e..c6e5116 100644
--- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
@@ -337,11 +337,17 @@ public class ExtendedDismaxQParser extends QParser {
     if(query == null) {
       return null;
     }
-
-    // For correct lucene queries, turn off mm processing if there
-    // were explicit operators (except for AND).
+    // For correct lucene queries, turn off mm processing if no explicit mm spec was provided
+    // and there were explicit operators (except for AND).
     if (query instanceof BooleanQuery) {
-      query = SolrPluginUtils.setMinShouldMatch((BooleanQuery)query, config.minShouldMatch, config.mmAutoRelax);
+      // config.minShouldMatch holds the value of mm which MIGHT have come from the user,
+      // but could also have been derived from q.op.
+      String mmSpec = config.minShouldMatch;
+
+      if (foundOperators(clauses, config.lowercaseOperators)) {
+        mmSpec = params.get(DisMaxParams.MM, "0%"); // Use provided mm spec if present, otherwise turn off mm processing
+      }
+      query = SolrPluginUtils.setMinShouldMatch((BooleanQuery)query, mmSpec, config.mmAutoRelax);
     }
     return query;
   }
@@ -391,7 +397,28 @@ public class ExtendedDismaxQParser extends QParser {
     }
     return sb.toString();
   }
-  
+
+  /**
+   * Returns true if at least one of the clauses is/has an explicit operator (except for AND)
+   */
+  private boolean foundOperators(List<Clause> clauses, boolean lowercaseOperators) {
+    for (Clause clause : clauses) {
+      if (clause.must == '+') return true;
+      if (clause.must == '-') return true;
+      if (clause.isBareWord()) {
+        String s = clause.val;
+        if ("OR".equals(s)) {
+          return true;
+        } else if ("NOT".equals(s)) {
+          return true;
+        } else if (lowercaseOperators && "or".equals(s)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
   /**
    * Generates a query string from the raw clauses, uppercasing 
    * 'and' and 'or' as needed.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38714399/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
index 019c54d..9b305f2 100644
--- a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
@@ -81,6 +81,13 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
     assertU(adoc("id", "63", "text_sw", "gold stocks"));
     assertU(adoc("id", "64", "text_sw", "stocks gold stockade"));
     assertU(adoc("id", "65", "text_sw", "snake oil"));
+    // SOLR-8812 user query example
+    assertU(adoc("id", "66", "text_sw", "hair ties barbie"));
+    assertU(adoc("id", "67", "text_sw", "hair ties"));
+    assertU(adoc("id", "68", "text_sw", "hair barbie"));
+    assertU(adoc("id", "69", "text_sw", "ties barbie"));
+    assertU(adoc("id", "70", "text_sw", "hair"));
+    assertU(adoc("id", "71", "text_sw", "ties"));
     assertU(commit());
   }
 
@@ -1145,6 +1152,154 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
             "mm", "100%",
             "defType", "edismax")
         , "*[count(//doc)=0]");
+
+    // SOLR-9174
+    assertQ("test minShouldMatch=1<-1 with explicit OR, one impossible clause, and no explicit q.op",
+        req("q", "barbie OR (hair AND nonexistentword)",
+            "qf", "text_sw",
+            "mm", "1<-1",
+            "defType", "edismax")
+        , "*[count(//doc)=3]");
+  }
+
+  /* SOLR-8812 */
+  @Test
+  public void testDefaultMM() throws Exception {
+    // Ensure MM is off when explicit operators (+/-/OR/NOT) are used and no explicit mm spec is specified.
+    assertQ("Explicit OR in query with no explicit mm and q.op=AND => mm = 0%",
+        req("q", "oil OR stocks",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=4]");
+    assertQ("Explicit 'or' in query with lowercaseOperators=true, no explicit mm and q.op=AND => mm = 0%",
+        req("q", "oil or stocks",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "lowercaseOperators", "true",
+            "defType", "edismax")
+        , "*[count(//doc)=4]");
+    assertQ("Explicit OR in query with no explicit mm and no explicit q.op => mm = 0%",
+        req("q", "oil OR stocks",
+            "qf", "text_sw",
+            "defType", "edismax")
+        , "*[count(//doc)=4]");
+    assertQ("No operator in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "oil stocks",
+            "qf", "text_sw",
+            "defType", "edismax")
+        , "*[count(//doc)=4]");
+    assertQ("No operator in query with no explicit mm and q.op=AND => mm = 100%",
+        req("q", "oil stocks",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
+    assertQ("No operator in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "oil stocks",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=4]");
+
+    assertQ("Explicit '-' operator in query with no explicit mm and no explicit q.op => mm = 0%",
+        req("q", "hair ties -barbie",
+            "qf", "text_sw",
+            "defType", "edismax")
+        , "*[count(//doc)=3]");
+    assertQ("Explicit NOT in query with no explicit mm and no explicit q.op => mm = 0%",
+        req("q", "hair ties NOT barbie",
+            "qf", "text_sw",
+            "defType", "edismax")
+        , "*[count(//doc)=3]");
+
+    assertQ("Explicit '-' operator in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "hair ties -barbie",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=3]");
+    assertQ("Explicit NOT in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "hair ties NOT barbie",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=3]");
+
+    assertQ("Explicit '-' operator in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "hair AND ties -barbie",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
+    assertQ("Explicit NOT in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "hair AND ties -barbie",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
+
+    assertQ("No explicit non-AND operator in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "hair AND ties barbie",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=2]");
+    assertQ("No explicit non-AND operator in query with no explicit mm and q.op=AND => mm = 100%",
+        req("q", "hair AND ties barbie",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
+    assertQ("No explicit non-AND operator in query with no explicit mm and no explicit q.op => mm = 0%",
+        req("q", "hair AND ties barbie",
+            "qf", "text_sw",
+            "defType", "edismax")
+        , "*[count(//doc)=2]");
+    assertQ("No explicit non-AND operator in query with no explicit mm and no explicit q.op => mm = 0%",
+        req("q", "hair and ties barbie",
+            "qf", "text_sw",
+            "lowercaseOperators", "true",
+            "defType", "edismax")
+        , "*[count(//doc)=2]");
+
+    assertQ("Explicit '-' operator in query with no explicit mm and q.op=AND => mm = 100%",
+        req("q", "hair ties -barbie",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
+    assertQ("Explicit NOT in query with no explicit mm and q.op=AND => mm = 100%",
+        req("q", "hair ties NOT barbie",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
+
+    assertQ("Explicit OR in query with no explicit mm and q.op=AND => mm = 0%",
+        req("q", "hair OR ties barbie",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=3]");
+    assertQ("Explicit OR in query with no explicit mm and q.op=OR => mm = 0%",
+        req("q", "hair OR ties barbie",
+            "qf", "text_sw",
+            "q.op", "OR",
+            "defType", "edismax")
+        , "*[count(//doc)=6]");
+    assertQ("Explicit OR in query with no explicit mm and no explicit q.op => mm = 0%",
+        req("q", "hair OR ties barbie",
+            "qf", "text_sw",
+            "defType", "edismax")
+        , "*[count(//doc)=6]");
+
+    assertQ("Explicit '+' operator in query with no explicit mm and q.op=AND => mm = 0%",
+        req("q", "hair ties +barbie",
+            "qf", "text_sw",
+            "q.op", "AND",
+            "defType", "edismax")
+        , "*[count(//doc)=1]");
   }
 
   public void testEdismaxSimpleExtension() throws SyntaxError {


[23/50] [abbrv] lucene-solr:apiv2: LUCENE-7319: remove unused imports

Posted by no...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java
index a568245..10ff5e1 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java
@@ -20,9 +20,7 @@ import java.lang.invoke.MethodHandles;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.solr.common.SolrException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
index 5851a00..8193cae 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
@@ -54,7 +54,6 @@ import java.lang.invoke.MethodHandles;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
index eb87c34..2385772 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
@@ -30,7 +30,6 @@ import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
index 5c493e3..6085a08 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
@@ -16,10 +16,8 @@
  */
 package org.apache.solr.client.solrj;
 
-import java.io.File;
 import java.util.Arrays;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.solr.SolrJettyTestBase;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java b/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
index 9c633b1..1f16415 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
@@ -25,7 +25,6 @@ import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.SolrCore;
 import org.junit.BeforeClass;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
index 443e59e..d81667b 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
@@ -39,7 +39,6 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
-import java.util.Set;
 
 public class SolrSchemalessExampleTest extends SolrExampleTestsBase {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/beans/TestDocumentObjectBinder.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/beans/TestDocumentObjectBinder.java b/solr/solrj/src/test/org/apache/solr/client/solrj/beans/TestDocumentObjectBinder.java
index 6390ddc..ee55521 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/beans/TestDocumentObjectBinder.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/beans/TestDocumentObjectBinder.java
@@ -20,7 +20,6 @@ import org.apache.lucene.util.LuceneTestCase;
 
 import org.apache.solr.client.solrj.impl.XMLResponseParser;
 import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
@@ -31,7 +30,6 @@ import org.junit.Test;
 import java.io.StringReader;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java
index 2b2b6b6..67ea49c 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.client.solrj.embedded;
 
 import org.apache.solr.client.solrj.LargeVolumeTestBase;
-import org.apache.solr.util.ExternalPaths;
 import org.junit.BeforeClass;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java
index f26f0c2..52c68a2 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.client.solrj.embedded;
 
 import org.apache.solr.client.solrj.LargeVolumeTestBase;
-import org.apache.solr.util.ExternalPaths;
 import org.junit.BeforeClass;
 
 public class LargeVolumeEmbeddedTest extends LargeVolumeTestBase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java
index 7b5459f..d627f2b 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.client.solrj.embedded;
 
 import org.apache.solr.client.solrj.LargeVolumeTestBase;
-import org.apache.solr.util.ExternalPaths;
 import org.junit.BeforeClass;
 
 public class LargeVolumeJettyTest extends LargeVolumeTestBase {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java
index 7ce5aa0..b4d89d4 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java
@@ -17,7 +17,6 @@
 package org.apache.solr.client.solrj.embedded;
 
 import org.apache.solr.client.solrj.SolrExampleTests;
-import org.apache.solr.util.ExternalPaths;
 import org.junit.BeforeClass;
 
 /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphTest.java
index b9b6ed5..b098be0 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphTest.java
@@ -19,10 +19,8 @@ package org.apache.solr.client.solrj.io.graph;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 import org.apache.lucene.util.LuceneTestCase;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcDriverTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcDriverTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcDriverTest.java
index e9e262c..2d6e37b 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcDriverTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcDriverTest.java
@@ -20,7 +20,6 @@ import java.net.URI;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Properties;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/RecordCountStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/RecordCountStream.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/RecordCountStream.java
index 722a493..fb93d86 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/RecordCountStream.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/RecordCountStream.java
@@ -28,7 +28,6 @@ import org.apache.solr.client.solrj.io.stream.expr.Explanation;
 import org.apache.solr.client.solrj.io.stream.expr.Expressible;
 import org.apache.solr.client.solrj.io.stream.expr.StreamExplanation;
 import org.apache.solr.client.solrj.io.stream.expr.StreamExpression;
-import org.apache.solr.client.solrj.io.stream.expr.StreamExpressionParameter;
 import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;
 import org.apache.solr.client.solrj.io.stream.expr.Explanation.ExpressionType;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExplanationTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExplanationTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExplanationTest.java
index 88898d8..f8765c9 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExplanationTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExplanationTest.java
@@ -28,7 +28,6 @@ import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;
 import org.apache.solr.client.solrj.io.stream.metrics.CountMetric;
 import org.apache.solr.client.solrj.io.stream.metrics.MaxMetric;
 import org.apache.solr.client.solrj.io.stream.metrics.MeanMetric;
-import org.apache.solr.client.solrj.io.stream.metrics.Metric;
 import org.apache.solr.client.solrj.io.stream.metrics.MinMetric;
 import org.apache.solr.client.solrj.io.stream.metrics.SumMetric;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
index 838c4cd..77c5b1f 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
@@ -24,7 +24,6 @@ import org.apache.commons.collections.map.HashedMap;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.client.solrj.io.Tuple;
 import org.apache.solr.client.solrj.io.ops.ConcatOperation;
-import org.apache.solr.client.solrj.io.ops.ReplaceOperation;
 import org.apache.solr.client.solrj.io.ops.StreamOperation;
 import org.apache.solr.client.solrj.io.stream.expr.StreamExpressionParser;
 import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestUpdateRequestCodec.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestUpdateRequestCodec.java b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestUpdateRequestCodec.java
index 5a126d3..53ad2eb 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestUpdateRequestCodec.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestUpdateRequestCodec.java
@@ -18,9 +18,7 @@ package org.apache.solr.client.solrj.request;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.InputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/common/cloud/TestZkConfigManager.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/common/cloud/TestZkConfigManager.java b/solr/solrj/src/test/org/apache/solr/common/cloud/TestZkConfigManager.java
index 4727bcc..e9b5913 100644
--- a/solr/solrj/src/test/org/apache/solr/common/cloud/TestZkConfigManager.java
+++ b/solr/solrj/src/test/org/apache/solr/common/cloud/TestZkConfigManager.java
@@ -19,7 +19,6 @@ package org.apache.solr.common.cloud;
 import com.google.common.base.Charsets;
 import com.google.common.base.Throwables;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.cloud.ZkCLI;
 import org.apache.solr.cloud.ZkTestServer;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.ZooDefs;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java b/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
index 9da3bd5..b94808c 100644
--- a/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
+++ b/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
@@ -17,7 +17,6 @@
 package org.apache.solr.common.util;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.handler.loader.JsonLoader;
 import org.apache.solr.util.RecordingJSONParser;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java b/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java
index df5a453..d6b2050 100644
--- a/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java
+++ b/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.analysis;
 
-import java.io.Reader;
 import java.util.Arrays;
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
index 93a670e..a803824 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
@@ -20,7 +20,6 @@ import java.lang.invoke.MethodHandles;
 
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/cloud/MockSolrZkClient.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/MockSolrZkClient.java b/solr/test-framework/src/java/org/apache/solr/cloud/MockSolrZkClient.java
index 9ce21bb..28996a3 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/MockSolrZkClient.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/MockSolrZkClient.java
@@ -17,7 +17,6 @@
 package org.apache.solr.cloud;
 
 import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.data.Stat;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java b/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
index eae9e54..a84d6d1 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 package org.apache.solr.util;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.XML;
 import org.w3c.dom.Document;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/util/ExternalPaths.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/ExternalPaths.java b/solr/test-framework/src/java/org/apache/solr/util/ExternalPaths.java
index 0cf958d..3e91d81 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/ExternalPaths.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/ExternalPaths.java
@@ -17,11 +17,7 @@
 package org.apache.solr.util;
 
 import java.io.File;
-import java.io.FileOutputStream;
-import java.util.Properties;
 
-import org.apache.commons.io.*;
-import org.apache.lucene.util.LuceneTestCase;
 
 /**
  * Some tests need to reach outside the classpath to get certain resources (e.g. the example configuration).

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java b/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
index dac12ce..b556fce 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
@@ -16,17 +16,9 @@
  */
 package org.apache.solr.util;
 
-import java.io.IOException;
 import java.lang.invoke.MethodHandles;
-import java.util.Map;
-
-import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.MergePolicy;
-import org.apache.lucene.index.MergePolicy.MergeSpecification;
 import org.apache.lucene.index.MergePolicyWrapper;
-import org.apache.lucene.index.MergeTrigger;
-import org.apache.lucene.index.SegmentCommitInfo;
-import org.apache.lucene.index.SegmentInfos;
 import org.apache.lucene.util.LuceneTestCase;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/52f5c502/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
index 1f880a8..7dc0275 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
@@ -31,8 +31,6 @@ import java.net.MalformedURLException;
 
 import org.apache.http.config.Registry;
 import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
 import org.apache.http.conn.socket.ConnectionSocketFactory;
 import org.apache.http.conn.socket.PlainConnectionSocketFactory;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
@@ -43,8 +41,6 @@ import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
 import org.apache.solr.client.solrj.embedded.SSLConfig;
 import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.client.solrj.impl.HttpClientUtil.SchemaRegistryProvider;
-import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder;
-
 import org.eclipse.jetty.util.resource.Resource;
 import org.eclipse.jetty.util.security.CertificateUtils;
 import org.eclipse.jetty.util.ssl.SslContextFactory;


[45/50] [abbrv] lucene-solr:apiv2: SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh

Posted by no...@apache.org.
SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2e101c42
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2e101c42
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2e101c42

Branch: refs/heads/apiv2
Commit: 2e101c42ca6c6a4e03cf3a1ab1010f5995dccd88
Parents: ccf2070
Author: Noble Paul <no...@apache.org>
Authored: Tue Jun 14 19:43:48 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Jun 14 19:43:48 2016 +0530

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/util/SolrCLI.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e101c42/solr/core/src/java/org/apache/solr/util/SolrCLI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 02f8d5a..5e6908a 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -164,7 +164,7 @@ public class SolrCLI {
 
         HttpClientUtil.addRequestInterceptor((httpRequest, httpContext) -> {
           String pair = ss.get(0) + ":" + ss.get(1);
-          byte[] encodedBytes = Base64.encodeBase64(pair.getBytes());
+          byte[] encodedBytes = Base64.encodeBase64(pair.getBytes(StandardCharsets.UTF_8));
           httpRequest.addHeader(new BasicHeader("Authorization", "Basic "+ new String(encodedBytes)));
         });
       }


[43/50] [abbrv] lucene-solr:apiv2: SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh

Posted by no...@apache.org.
SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/97e696dd
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/97e696dd
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/97e696dd

Branch: refs/heads/apiv2
Commit: 97e696dd506aa01142c8456452c6f66451dd5430
Parents: b9ded92
Author: Noble Paul <no...@apache.org>
Authored: Tue Jun 14 19:37:45 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Jun 14 19:37:45 2016 +0530

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  4 +-
 .../src/java/org/apache/solr/util/SolrCLI.java  | 25 +++++-
 .../solr/security/BasicAuthIntegrationTest.java | 85 +++++++++++---------
 3 files changed, 70 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/97e696dd/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2146539..bd7f19c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -57,7 +57,9 @@ Detailed Change List
 New Features
 ----------------------
 
-* SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields
+* SOLR-9187: Support dates and booleans in /export handler, support boolean DocValues fields (Erick Erickson)
+
+* SOLR-8048: bin/solr script should support basic auth credentials provided in solr.in.sh (noble)
 
 
 Bug Fixes

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/97e696dd/solr/core/src/java/org/apache/solr/util/SolrCLI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 9bc986b..02f8d5a 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -16,8 +16,6 @@
  */
 package org.apache.solr.util;
 
-import static org.apache.solr.common.params.CommonParams.NAME;
-
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -56,6 +54,7 @@ import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.exec.DefaultExecuteResultHandler;
 import org.apache.commons.exec.DefaultExecutor;
 import org.apache.commons.exec.Executor;
@@ -74,6 +73,7 @@ import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.http.conn.ConnectTimeoutException;
 import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.message.BasicHeader;
 import org.apache.http.util.EntityUtils;
 import org.apache.lucene.util.Version;
 import org.apache.solr.client.solrj.SolrClient;
@@ -88,7 +88,6 @@ import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
-import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
@@ -97,6 +96,7 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.ContentStreamBase;
 import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.StrUtils;
 import org.noggit.CharArr;
 import org.noggit.JSONParser;
 import org.noggit.JSONWriter;
@@ -104,11 +104,12 @@ import org.noggit.ObjectBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.solr.common.params.CommonParams.NAME;
 /**
  * Command-line utility for working with Solr.
  */
 public class SolrCLI {
-   
+
   /**
    * Defines the interface to a Solr tool that can be run from this command-line app.
    */
@@ -139,6 +140,7 @@ public class SolrCLI {
 
       int toolExitStatus = 0;
       try {
+        setBasicAuth(cli);
         runImpl(cli);
       } catch (Exception exc) {
         // since this is a CLI, spare the user the stacktrace
@@ -153,6 +155,21 @@ public class SolrCLI {
       return toolExitStatus;
     }
 
+    private void setBasicAuth(CommandLine cli) throws Exception {
+      String basicauth = System.getProperty("basicauth", null);
+      if (basicauth != null) {
+        List<String> ss = StrUtils.splitSmart(basicauth, ':');
+        if (ss.size() != 2)
+          throw new Exception("Please provide 'basicauth' in the 'user:password' format");
+
+        HttpClientUtil.addRequestInterceptor((httpRequest, httpContext) -> {
+          String pair = ss.get(0) + ":" + ss.get(1);
+          byte[] encodedBytes = Base64.encodeBase64(pair.getBytes());
+          httpRequest.addHeader(new BasicHeader("Authorization", "Basic "+ new String(encodedBytes)));
+        });
+      }
+    }
+
     protected abstract void runImpl(CommandLine cli) throws Exception;
 
     // It's a little awkward putting this in ToolBase, but to re-use it in upconfig and create, _and_ have access

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/97e696dd/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java b/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java
index 33565dd..00a43d7 100644
--- a/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java
@@ -16,7 +16,12 @@
  */
 package org.apache.solr.security;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
 import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -55,6 +60,7 @@ import org.apache.solr.common.util.ContentStreamBase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
+import org.apache.solr.util.SolrCLI;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -129,39 +135,20 @@ public class BasicAuthIntegrationTest extends TestMiniSolrCloudClusterBase {
         "'set-user-role': {'harry':'admin'}\n" +
         "}";
 
-    httpPost = new HttpPost(baseUrl + authzPrefix);
-    setBasicAuthHeader(httpPost, "solr", "SolrRocks");
-    httpPost.setEntity(new ByteArrayEntity(command.getBytes(UTF_8)));
-    httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
-    r = cl.execute(httpPost);
-    assertEquals(200, r.getStatusLine().getStatusCode());
-    Utils.consumeFully(r.getEntity());
+    executeCommand(baseUrl + authzPrefix, cl,command, "solr", "SolrRocks");
 
     baseUrl = getRandomReplica(zkStateReader.getClusterState().getCollection(defaultCollName), random()).getStr(BASE_URL_PROP);
     verifySecurityStatus(cl, baseUrl + authzPrefix, "authorization/user-role/harry", NOT_NULL_PREDICATE, 20);
 
-
-    httpPost = new HttpPost(baseUrl + authzPrefix);
-    setBasicAuthHeader(httpPost, "harry", "HarryIsUberCool");
-    httpPost.setEntity(new ByteArrayEntity(Utils.toJSON(singletonMap("set-permission", Utils.makeMap
+    executeCommand(baseUrl + authzPrefix, cl, Utils.toJSONString(singletonMap("set-permission", Utils.makeMap
         ("collection", "x",
             "path", "/update/*",
-            "role", "dev")))));
-
-    httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
-    verifySecurityStatus(cl, baseUrl + authzPrefix, "authorization/user-role/harry", NOT_NULL_PREDICATE, 20);
-    r = cl.execute(httpPost);
-    assertEquals(200, r.getStatusLine().getStatusCode());
-    Utils.consumeFully(r.getEntity());
+            "role", "dev"))), "harry", "HarryIsUberCool" );
 
     verifySecurityStatus(cl, baseUrl + authzPrefix, "authorization/permissions[1]/collection", "x", 20);
 
-    httpPost = new HttpPost(baseUrl + authzPrefix);
-    setBasicAuthHeader(httpPost, "harry", "HarryIsUberCool");
-    httpPost.setEntity(new ByteArrayEntity(Utils.toJSON(singletonMap("set-permission", Utils.makeMap
-        ("name","collection-admin-edit", "role", "admin" )))));
-    r = cl.execute(httpPost);
-    Utils.consumeFully(r.getEntity());
+    executeCommand(baseUrl + authzPrefix, cl,Utils.toJSONString(singletonMap("set-permission", Utils.makeMap
+        ("name", "collection-admin-edit", "role", "admin"))), "harry", "HarryIsUberCool"  );
     verifySecurityStatus(cl, baseUrl + authzPrefix, "authorization/permissions[2]/name", "collection-admin-edit", 20);
 
     CollectionAdminRequest.Reload reload = new CollectionAdminRequest.Reload();
@@ -196,14 +183,7 @@ public class BasicAuthIntegrationTest extends TestMiniSolrCloudClusterBase {
     }
 
     cloudSolrClient.setDefaultCollection(old);
-
-    httpPost = new HttpPost(baseUrl + authzPrefix);
-    setBasicAuthHeader(httpPost, "harry", "HarryIsUberCool");
-    httpPost.setEntity(new ByteArrayEntity("{set-permission : { name : update , role : admin}}".getBytes(UTF_8)));
-    httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
-    r = cl.execute(httpPost);
-    assertEquals(200,r.getStatusLine().getStatusCode());
-    Utils.consumeFully(r.getEntity());
+    executeCommand(baseUrl + authzPrefix, cl,"{set-permission : { name : update , role : admin}}", "harry", "HarryIsUberCool");
 
     SolrInputDocument doc = new SolrInputDocument();
     doc.setField("id","4");
@@ -212,10 +192,42 @@ public class BasicAuthIntegrationTest extends TestMiniSolrCloudClusterBase {
     update.add(doc);
     update.setCommitWithin(100);
     cloudSolrClient.request(update);
-    
+
+
+    executeCommand(baseUrl + authzPrefix, cl, "{set-property : { blockUnknown: true}}", "harry", "HarryIsUberCool");
+    String[] toolArgs = new String[]{
+        "status", "-solr", baseUrl};
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    PrintStream stdoutSim = new PrintStream(baos, true, StandardCharsets.UTF_8.name());
+    SolrCLI.StatusTool tool = new SolrCLI.StatusTool(stdoutSim);
+    try {
+      System.setProperty("basicauth", "harry:HarryIsUberCool");
+      tool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(tool.getOptions()), toolArgs));
+      Map obj = (Map) Utils.fromJSON(new ByteArrayInputStream(baos.toByteArray()));
+      assertTrue(obj.containsKey("version"));
+      assertTrue(obj.containsKey("startTime"));
+      assertTrue(obj.containsKey("uptime"));
+      assertTrue(obj.containsKey("memory"));
+    } catch (Exception e) {
+      log.error("RunExampleTool failed due to: " + e +
+          "; stdout from tool prior to failure: " + baos.toString(StandardCharsets.UTF_8.name()));
+    }
+    executeCommand(baseUrl + authzPrefix, cl, "{set-property : { blockUnknown: false}}", "harry", "HarryIsUberCool");
     HttpClientUtil.close(cl);
   }
 
+  public static void executeCommand(String url, HttpClient cl, String payload, String user, String pwd) throws IOException {
+    HttpPost httpPost;
+    HttpResponse r;
+    httpPost = new HttpPost(url);
+    setBasicAuthHeader(httpPost, user, pwd);
+    httpPost.setEntity(new ByteArrayEntity(payload.getBytes(UTF_8)));
+    httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
+    r = cl.execute(httpPost);
+    assertEquals(200, r.getStatusLine().getStatusCode());
+    Utils.consumeFully(r.getEntity());
+  }
+
   public static void verifySecurityStatus(HttpClient cl, String url, String objPath, Object expected, int count) throws Exception {
     boolean success = false;
     String s = null;
@@ -262,12 +274,7 @@ public class BasicAuthIntegrationTest extends TestMiniSolrCloudClusterBase {
     return l.isEmpty() ? null : l.get(0);
   }
 
-  static final Predicate NOT_NULL_PREDICATE = new Predicate() {
-    @Override
-    public boolean test(Object o) {
-      return o != null;
-    }
-  };
+  static final Predicate NOT_NULL_PREDICATE = o -> o != null;
 
   //the password is 'SolrRocks'
   //this could be generated everytime. But , then we will not know if there is any regression


[40/50] [abbrv] lucene-solr:apiv2: LUCENE-7302: ensure IW.getMaxCompletedSequenceNumber only reflects a change after NRT reader refresh would also see it

Posted by no...@apache.org.
LUCENE-7302: ensure IW.getMaxCompletedSequenceNumber only reflects a change after NRT reader refresh would also see it


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5a032168
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5a032168
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5a032168

Branch: refs/heads/apiv2
Commit: 5a0321680fe5e57a17470b824024d5b56a4cbaa4
Parents: 843adfb
Author: Mike McCandless <mi...@apache.org>
Authored: Tue Jun 14 04:09:27 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Tue Jun 14 04:09:27 2016 -0400

----------------------------------------------------------------------
 .../apache/lucene/index/DocumentsWriter.java    | 40 +++++++++++++++-----
 .../index/DocumentsWriterPerThreadPool.java     |  3 ++
 .../org/apache/lucene/index/IndexWriter.java    | 10 ++---
 .../search/ControlledRealTimeReopenThread.java  |  3 +-
 .../TestControlledRealTimeReopenThread.java     | 20 +++++-----
 5 files changed, 49 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5a032168/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
index 13800a8..a33d640 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
@@ -122,7 +122,7 @@ final class DocumentsWriter implements Closeable, Accountable {
   final DocumentsWriterFlushControl flushControl;
   private final IndexWriter writer;
   private final Queue<Event> events;
-
+  private long lastSeqNo;
   
   DocumentsWriter(IndexWriter writer, LiveIndexWriterConfig config, Directory directoryOrig, Directory directory) {
     this.directoryOrig = directoryOrig;
@@ -144,6 +144,7 @@ final class DocumentsWriter implements Closeable, Accountable {
     if (applyAllDeletes(deleteQueue)) {
       seqNo = -seqNo;
     }
+    lastSeqNo = Math.max(lastSeqNo, seqNo);
     return seqNo;
   }
 
@@ -158,6 +159,7 @@ final class DocumentsWriter implements Closeable, Accountable {
     if (applyAllDeletes(deleteQueue)) {
       seqNo = -seqNo;
     }
+    lastSeqNo = Math.max(lastSeqNo, seqNo);
     return seqNo;
   }
 
@@ -168,7 +170,7 @@ final class DocumentsWriter implements Closeable, Accountable {
     if (applyAllDeletes(deleteQueue)) {
       seqNo = -seqNo;
     }
-
+    lastSeqNo = Math.max(lastSeqNo, seqNo);
     return seqNo;
   }
   
@@ -317,6 +319,17 @@ final class DocumentsWriter implements Closeable, Accountable {
     }
   }
 
+  /** returns the maximum sequence number for all previously completed operations */
+  public long getMaxCompletedSequenceNumber() {
+    long value = lastSeqNo;
+    int limit = perThreadPool.getMaxThreadStates();
+    for(int i = 0; i < limit; i++) {
+      ThreadState perThread = perThreadPool.getThreadState(i);
+      value = Math.max(value, perThread.lastSeqNo);
+    }
+    return value;
+  }
+
   boolean anyChanges() {
     /*
      * changes are either in a DWPT or in the deleteQueue.
@@ -413,7 +426,7 @@ final class DocumentsWriter implements Closeable, Accountable {
 
     final ThreadState perThread = flushControl.obtainAndLock();
     final DocumentsWriterPerThread flushingDWPT;
-    final long seqNo;
+    long seqNo;
 
     try {
       // This must happen after we've pulled the ThreadState because IW.close
@@ -437,15 +450,18 @@ final class DocumentsWriter implements Closeable, Accountable {
       }
       final boolean isUpdate = delTerm != null;
       flushingDWPT = flushControl.doAfterDocument(perThread, isUpdate);
+
+      assert seqNo > perThread.lastSeqNo: "seqNo=" + seqNo + " lastSeqNo=" + perThread.lastSeqNo;
+      perThread.lastSeqNo = seqNo;
+
     } finally {
       perThreadPool.release(perThread);
     }
 
     if (postUpdate(flushingDWPT, hasEvents)) {
-      return -seqNo;
-    } else {
-      return seqNo;
+      seqNo = -seqNo;
     }
+    return seqNo;
   }
 
   long updateDocument(final Iterable<? extends IndexableField> doc, final Analyzer analyzer,
@@ -456,7 +472,7 @@ final class DocumentsWriter implements Closeable, Accountable {
     final ThreadState perThread = flushControl.obtainAndLock();
 
     final DocumentsWriterPerThread flushingDWPT;
-    final long seqNo;
+    long seqNo;
     try {
       // This must happen after we've pulled the ThreadState because IW.close
       // waits for all ThreadStates to be released:
@@ -479,15 +495,19 @@ final class DocumentsWriter implements Closeable, Accountable {
       }
       final boolean isUpdate = delTerm != null;
       flushingDWPT = flushControl.doAfterDocument(perThread, isUpdate);
+
+      assert seqNo > perThread.lastSeqNo: "seqNo=" + seqNo + " lastSeqNo=" + perThread.lastSeqNo;
+      perThread.lastSeqNo = seqNo;
+
     } finally {
       perThreadPool.release(perThread);
     }
 
     if (postUpdate(flushingDWPT, hasEvents)) {
-      return -seqNo;
-    } else {
-      return seqNo;
+      seqNo = -seqNo;
     }
+    
+    return seqNo;
   }
 
   private boolean doFlush(DocumentsWriterPerThread flushingDWPT) throws IOException, AbortingException {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5a032168/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
index 3802805..cc72342 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
@@ -59,6 +59,9 @@ final class DocumentsWriterPerThreadPool {
     // write access guarded by DocumentsWriterFlushControl
     long bytesUsed = 0;
 
+    // set by DocumentsWriter after each indexing op finishes
+    volatile long lastSeqNo;
+
     ThreadState(DocumentsWriterPerThread dpwt) {
       this.dwpt = dpwt;
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5a032168/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index b5e0c22..5fe1648 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -1457,7 +1457,6 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
             changed();
           }
           //System.out.println("  yes " + info.info.name + " " + docID);
-
           return docWriter.deleteQueue.getNextSequenceNumber();
         }
       } else {
@@ -5049,12 +5048,13 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
     };
   }
 
-  /** Returns the last <a href="#sequence_number">sequence number</a>, or 0
-   *  if no index-changing operations have completed yet.
+  /** Returns the highest <a href="#sequence_number">sequence number</a> across
+   *  all completed operations, or 0 if no operations have finished yet.  Still
+   *  in-flight operations (in other threads) are not counted until they finish.
    *
    * @lucene.experimental */
-  public long getLastSequenceNumber() {
+  public long getMaxCompletedSequenceNumber() {
     ensureOpen();
-    return docWriter.deleteQueue.getLastSequenceNumber();
+    return docWriter.getMaxCompletedSequenceNumber();
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5a032168/lucene/core/src/java/org/apache/lucene/search/ControlledRealTimeReopenThread.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/ControlledRealTimeReopenThread.java b/lucene/core/src/java/org/apache/lucene/search/ControlledRealTimeReopenThread.java
index 466d793..a98a30d 100644
--- a/lucene/core/src/java/org/apache/lucene/search/ControlledRealTimeReopenThread.java
+++ b/lucene/core/src/java/org/apache/lucene/search/ControlledRealTimeReopenThread.java
@@ -150,7 +150,6 @@ public class ControlledRealTimeReopenThread<T> extends Thread implements Closeab
    *         or false if maxMS wait time was exceeded
    */
   public synchronized boolean waitForGeneration(long targetGen, int maxMS) throws InterruptedException {
-    final long curGen = writer.getLastSequenceNumber();
     if (targetGen > searchingGen) {
       // Notify the reopen thread that the waitingGen has
       // changed, so it may wake up and realize it should
@@ -232,7 +231,7 @@ public class ControlledRealTimeReopenThread<T> extends Thread implements Closeab
       // Save the gen as of when we started the reopen; the
       // listener (HandleRefresh above) copies this to
       // searchingGen once the reopen completes:
-      refreshStartGen = writer.getLastSequenceNumber();
+      refreshStartGen = writer.getMaxCompletedSequenceNumber();
       try {
         manager.maybeRefreshBlocking();
       } catch (IOException ioe) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5a032168/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java b/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
index 69822a6..779c1f2 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
@@ -98,13 +98,13 @@ public class TestControlledRealTimeReopenThread extends ThreadedIndexingAndSearc
     // Randomly verify the update "took":
     if (random().nextInt(20) == 2) {
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: verify " + id);
+        System.out.println(Thread.currentThread().getName() + ": nrt: verify updateDocuments " + id + " gen=" + gen);
       }
       nrtDeletesThread.waitForGeneration(gen);
       assertTrue(gen <= nrtDeletesThread.getSearchingGen());
       final IndexSearcher s = nrtDeletes.acquire();
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: got searcher=" + s);
+        System.out.println(Thread.currentThread().getName() + ": nrt: got deletes searcher=" + s);
       }
       try {
         assertEquals(docs.size(), s.search(new TermQuery(id), 10).totalHits);
@@ -122,13 +122,13 @@ public class TestControlledRealTimeReopenThread extends ThreadedIndexingAndSearc
     // Randomly verify the add "took":
     if (random().nextInt(20) == 2) {
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: verify " + id);
+        System.out.println(Thread.currentThread().getName() + ": nrt: verify addDocuments " + id + " gen=" + gen);
       }
       nrtNoDeletesThread.waitForGeneration(gen);
       assertTrue(gen <= nrtNoDeletesThread.getSearchingGen());
       final IndexSearcher s = nrtNoDeletes.acquire();
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: got searcher=" + s);
+        System.out.println(Thread.currentThread().getName() + ": nrt: got noDeletes searcher=" + s);
       }
       try {
         assertEquals(docs.size(), s.search(new TermQuery(id), 10).totalHits);
@@ -146,13 +146,13 @@ public class TestControlledRealTimeReopenThread extends ThreadedIndexingAndSearc
     // Randomly verify the add "took":
     if (random().nextInt(20) == 2) {
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: verify " + id);
+        System.out.println(Thread.currentThread().getName() + ": nrt: verify addDocument " + id + " gen=" + gen);
       }
       nrtNoDeletesThread.waitForGeneration(gen);
       assertTrue(gen <= nrtNoDeletesThread.getSearchingGen());
       final IndexSearcher s = nrtNoDeletes.acquire();
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: got searcher=" + s);
+        System.out.println(Thread.currentThread().getName() + ": nrt: got noDeletes searcher=" + s);
       }
       try {
         assertEquals(1, s.search(new TermQuery(id), 10).totalHits);
@@ -169,13 +169,13 @@ public class TestControlledRealTimeReopenThread extends ThreadedIndexingAndSearc
     // Randomly verify the udpate "took":
     if (random().nextInt(20) == 2) {
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: verify " + id);
+        System.out.println(Thread.currentThread().getName() + ": nrt: verify updateDocument " + id + " gen=" + gen);
       }
       nrtDeletesThread.waitForGeneration(gen);
       assertTrue(gen <= nrtDeletesThread.getSearchingGen());
       final IndexSearcher s = nrtDeletes.acquire();
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: got searcher=" + s);
+        System.out.println(Thread.currentThread().getName() + ": nrt: got deletes searcher=" + s);
       }
       try {
         assertEquals(1, s.search(new TermQuery(id), 10).totalHits);
@@ -192,13 +192,13 @@ public class TestControlledRealTimeReopenThread extends ThreadedIndexingAndSearc
     // randomly verify the delete "took":
     if (random().nextInt(20) == 7) {
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: verify del " + id);
+        System.out.println(Thread.currentThread().getName() + ": nrt: verify deleteDocuments " + id + " gen=" + gen);
       }
       nrtDeletesThread.waitForGeneration(gen);
       assertTrue(gen <= nrtDeletesThread.getSearchingGen());
       final IndexSearcher s = nrtDeletes.acquire();
       if (VERBOSE) {
-        System.out.println(Thread.currentThread().getName() + ": nrt: got searcher=" + s);
+        System.out.println(Thread.currentThread().getName() + ": nrt: got deletes searcher=" + s);
       }
       try {
         assertEquals(0, s.search(new TermQuery(id), 10).totalHits);


[18/50] [abbrv] lucene-solr git commit: SOLR-8744: Minimize the impact on ZK when there are a lot of blocked tasks

Posted by no...@apache.org.
SOLR-8744:�Minimize the impact on ZK when there are a lot of blocked tasks


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/232b44e2
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/232b44e2
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/232b44e2

Branch: refs/heads/apiv2
Commit: 232b44e283dfd01f9ec01b4e68b09b3755a1b17a
Parents: 844ca4a
Author: Noble Paul <no...@apache.org>
Authored: Sun Jun 12 13:11:07 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Sun Jun 12 13:11:07 2016 +0530

----------------------------------------------------------------------
 .../cloud/OverseerCollectionMessageHandler.java |  4 ++
 .../solr/cloud/OverseerTaskProcessor.java       | 70 ++++++++++++++++++--
 .../apache/solr/cloud/OverseerTaskQueue.java    |  5 +-
 .../apache/solr/cloud/MultiThreadedOCPTest.java | 62 +++++++++++++++--
 ...verseerCollectionConfigSetProcessorTest.java |  3 +-
 .../solr/cloud/OverseerTaskQueueTest.java       |  4 +-
 .../cloud/AbstractFullDistribZkTestBase.java    | 10 ++-
 7 files changed, 139 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
index 54c0697..2cd09d1 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
@@ -82,6 +82,7 @@ import org.apache.solr.common.params.ShardParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
+import org.apache.solr.common.util.SuppressForbidden;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.handler.component.ShardHandler;
 import org.apache.solr.handler.component.ShardHandlerFactory;
@@ -210,6 +211,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
   }
 
   @Override
+  @SuppressForbidden(reason = "Needs currentTimeMillis for mock requests")
   @SuppressWarnings("unchecked")
   public SolrResponse processMessage(ZkNodeProps message, String operation) {
     log.info("OverseerCollectionMessageHandler.processMessage : "+ operation + " , "+ message.toString());
@@ -289,6 +291,8 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
         case MOCK_REPLICA_TASK: {
           //only for test purposes
           Thread.sleep(message.getInt("sleep", 1));
+          log.info("MOCK_TASK_EXECUTED time {} data {}",System.currentTimeMillis(), Utils.toJSONString(message));
+          results.add("MOCK_FINISHED", System.currentTimeMillis());
           break;
         }
         default:

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
index 092ed97..9c739c1 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
@@ -19,15 +19,19 @@ package org.apache.solr.cloud;
 import java.io.Closeable;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
 
+import com.google.common.collect.ImmutableSet;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.cloud.OverseerTaskQueue.QueueEvent;
 import org.apache.solr.cloud.Overseer.LeaderStatus;
@@ -36,6 +40,7 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.ExecutorUtil;
+import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.handler.component.ShardHandlerFactory;
 import org.apache.solr.util.DefaultSolrThreadFactory;
@@ -63,6 +68,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
    * executed concurrently
    */
   public static final int MAX_PARALLEL_TASKS = 100;
+  public static final int MAX_BLOCKED_TASKS = 1000;
 
   public ExecutorService tpe;
 
@@ -74,7 +80,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
   private DistributedMap failureMap;
 
   // Set that maintains a list of all the tasks that are running. This is keyed on zk id of the task.
-  final private Set runningTasks;
+  final private Set<String> runningTasks;
 
   // List of completed tasks. This is used to clean up workQueue in zk.
   final private HashMap<String, QueueEvent> completedTasks;
@@ -91,6 +97,24 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
   // It may contain tasks that have completed execution, have been entered into the completed/failed map in zk but not
   // deleted from the work-queue as that is a batched operation.
   final private Set<String> runningZKTasks;
+  // This map may contain tasks which are read from work queue but could not
+  // be executed because they are blocked or the execution queue is full
+  // This is an optimization to ensure that we do not read the same tasks
+  // again and again from ZK.
+  final private Map<String, QueueEvent> blockedTasks = new LinkedHashMap<>();
+  final private Predicate<String> excludedTasks = new Predicate<String>() {
+    @Override
+    public boolean test(String s) {
+      return runningTasks.contains(s) || blockedTasks.containsKey(s);
+    }
+
+    @Override
+    public String toString() {
+      return StrUtils.join(ImmutableSet.of(runningTasks, blockedTasks.keySet()), ',');
+    }
+
+  };
+
   private final Object waitLock = new Object();
 
   private OverseerMessageHandlerSelector selector;
@@ -115,7 +139,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
     this.completedMap = completedMap;
     this.failureMap = failureMap;
     this.runningZKTasks = new HashSet<>();
-    this.runningTasks = new HashSet();
+    this.runningTasks = new HashSet<>();
     this.completedTasks = new HashMap<>();
   }
 
@@ -189,17 +213,46 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
           if (waited)
             cleanUpWorkQueue();
 
-          List<QueueEvent> heads = workQueue.peekTopN(MAX_PARALLEL_TASKS, runningZKTasks, 2000L);
+
+          ArrayList<QueueEvent> heads = new ArrayList<>(blockedTasks.size() + MAX_PARALLEL_TASKS);
+          heads.addAll(blockedTasks.values());
+
+          //If we have enough items in the blocked tasks already, it makes
+          // no sense to read more items from the work queue. it makes sense
+          // to clear out at least a few items in the queue before we read more items
+          if (heads.size() < MAX_BLOCKED_TASKS) {
+            //instead of reading MAX_PARALLEL_TASKS items always, we should only fetch as much as we can execute
+            int toFetch = Math.min(MAX_BLOCKED_TASKS - heads.size(), MAX_PARALLEL_TASKS - runningTasks.size());
+            List<QueueEvent> newTasks = workQueue.peekTopN(toFetch, excludedTasks, 2000L);
+            log.debug("Got {} tasks from work-queue : [{}]", newTasks.size(), newTasks);
+            heads.addAll(newTasks);
+          } else {
+            // Prevent free-spinning this loop.
+            Thread.sleep(1000);
+          }
+
+          if (isClosed) break;
+
           if (heads.isEmpty()) {
             continue;
           }
 
-          log.debug("Got {} tasks from work-queue : [{}]", heads.size(), heads.toString());
-
-          if (isClosed) break;
+          blockedTasks.clear(); // clear it now; may get refilled below.
 
           taskBatch.batchId++;
+          boolean tooManyTasks = false;
           for (QueueEvent head : heads) {
+            if (!tooManyTasks) {
+              synchronized (runningTasks) {
+                tooManyTasks = runningTasks.size() >= MAX_PARALLEL_TASKS;
+              }
+            }
+            if (tooManyTasks) {
+              // Too many tasks are running, just shove the rest into the "blocked" queue.
+              if(blockedTasks.size() < MAX_BLOCKED_TASKS)
+                blockedTasks.put(head.getId(), head);
+              continue;
+            }
             if (runningZKTasks.contains(head.getId())) continue;
             final ZkNodeProps message = ZkNodeProps.load(head.getBytes());
             OverseerMessageHandler messageHandler = selector.selectOverseerMessageHandler(message);
@@ -217,6 +270,9 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
             OverseerMessageHandler.Lock lock = messageHandler.lockTask(message, taskBatch);
             if (lock == null) {
               log.debug("Exclusivity check failed for [{}]", message.toString());
+              //we may end crossing the size of the MAX_BLOCKED_TASKS. They are fine
+              if (blockedTasks.size() < MAX_BLOCKED_TASKS)
+                blockedTasks.put(head.getId(), head);
               continue;
             }
             try {
@@ -370,7 +426,6 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
       runningTasks.add(head.getId());
     }
 
-//    messageHandler.markExclusiveTask(taskKey, message);
 
     if (asyncId != null)
       runningMap.put(asyncId, null);
@@ -512,6 +567,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
       synchronized (runningTasks) {
         log.debug("RunningTasks: {}", runningTasks.toString());
       }
+      log.debug("BlockedTasks: {}", blockedTasks.keySet().toString());
       synchronized (completedTasks) {
         log.debug("CompletedTasks: {}", completedTasks.keySet().toString());
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
index aae7df2..5719aa9 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.function.Predicate;
 
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -222,7 +223,7 @@ public class OverseerTaskQueue extends DistributedQueue {
   }
 
 
-  public List<QueueEvent> peekTopN(int n, Set<String> excludeSet, long waitMillis)
+  public List<QueueEvent> peekTopN(int n, Predicate<String> excludeSet, long waitMillis)
       throws KeeperException, InterruptedException {
     ArrayList<QueueEvent> topN = new ArrayList<>();
 
@@ -232,7 +233,7 @@ public class OverseerTaskQueue extends DistributedQueue {
     else time = stats.time(dir + "_peekTopN_wait" + waitMillis);
 
     try {
-      for (Pair<String, byte[]> element : peekElements(n, waitMillis, child -> !excludeSet.contains(dir + "/" + child))) {
+      for (Pair<String, byte[]> element : peekElements(n, waitMillis, child -> !excludeSet.test(dir + "/" + child))) {
         topN.add(new QueueEvent(dir + "/" + element.first(),
             element.second(), null));
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java b/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
index c18b330..ec8a6c4 100644
--- a/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
@@ -38,6 +38,11 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
+import static org.apache.solr.cloud.OverseerTaskProcessor.MAX_PARALLEL_TASKS;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.MOCK_COLL_TASK;
+import static org.apache.solr.common.params.CommonAdminParams.ASYNC;
+
 /**
  * Tests the Multi threaded Collections API.
  */
@@ -55,11 +60,58 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
   @Test
   @ShardsFixed(num = 4)
   public void test() throws Exception {
-
     testParallelCollectionAPICalls();
     testTaskExclusivity();
     testDeduplicationOfSubmittedTasks();
     testLongAndShortRunningParallelApiCalls();
+    testFillWorkQueue();
+  }
+
+  private void testFillWorkQueue() throws Exception {
+    try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+      DistributedQueue distributedQueue = new DistributedQueue(cloudClient.getZkStateReader().getZkClient(),
+          "/overseer/collection-queue-work", new Overseer.Stats());
+      //fill the work queue with blocked tasks by adding more than the no:of parallel tasks
+      for (int i = 0; i < MAX_PARALLEL_TASKS+5; i++) {
+        distributedQueue.offer(Utils.toJSON(Utils.makeMap(
+            "collection", "A_COLL",
+            QUEUE_OPERATION, MOCK_COLL_TASK.toLower(),
+            ASYNC, String.valueOf(i),
+
+            "sleep", (i == 0 ? "1000" : "1") //first task waits for 1 second, and thus blocking
+            // all other tasks. Subsequent tasks only wait for 1ms
+        )));
+        log.info("MOCK task added {}", i);
+
+      }
+      Thread.sleep(10);//wait and post the next message
+
+      //this is not going to be blocked because it operates on another collection
+      distributedQueue.offer(Utils.toJSON(Utils.makeMap(
+          "collection", "B_COLL",
+          QUEUE_OPERATION, MOCK_COLL_TASK.toLower(),
+          ASYNC, "200",
+          "sleep", "1"
+      )));
+
+
+      Long acoll = null, bcoll = null;
+      for (int i = 0; i < 100; i++) {
+        if (bcoll == null) {
+          CollectionAdminResponse statusResponse = getStatusResponse("200", client);
+          bcoll = (Long) statusResponse.getResponse().get("MOCK_FINISHED");
+        }
+        if (acoll == null) {
+          CollectionAdminResponse statusResponse = getStatusResponse("2", client);
+          acoll = (Long) statusResponse.getResponse().get("MOCK_FINISHED");
+        }
+        if (acoll != null && bcoll != null) break;
+        Thread.sleep(100);
+      }
+      assertTrue(acoll != null && bcoll != null);
+      assertTrue(acoll > bcoll);
+    }
+
   }
 
   private void testParallelCollectionAPICalls() throws IOException, SolrServerException {
@@ -116,14 +168,14 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
 
       distributedQueue.offer(Utils.toJSON(Utils.makeMap(
           "collection", "ocptest_shardsplit",
-          Overseer.QUEUE_OPERATION, CollectionParams.CollectionAction.MOCK_COLL_TASK.toLower(),
-          CommonAdminParams.ASYNC, "1001",
+          QUEUE_OPERATION, MOCK_COLL_TASK.toLower(),
+          ASYNC, "1001",
           "sleep", "100"
       )));
       distributedQueue.offer(Utils.toJSON(Utils.makeMap(
           "collection", "ocptest_shardsplit",
-          Overseer.QUEUE_OPERATION, CollectionParams.CollectionAction.MOCK_COLL_TASK.toLower(),
-          CommonAdminParams.ASYNC, "1002",
+          QUEUE_OPERATION, MOCK_COLL_TASK.toLower(),
+          ASYNC, "1002",
           "sleep", "100"
       )));
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
index 4658367..8f4ee1e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
@@ -21,6 +21,7 @@ import java.util.*;
 import java.util.Map.Entry;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
 
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrResponse;
@@ -163,7 +164,7 @@ public class OverseerCollectionConfigSetProcessorTest extends SolrTestCaseJ4 {
       log.info("SHARDHANDLER");
       return shardHandlerMock;
     }).anyTimes();
-    workQueueMock.peekTopN(EasyMock.anyInt(), anyObject(Set.class), EasyMock.anyLong());
+    workQueueMock.peekTopN(EasyMock.anyInt(), anyObject(Predicate.class), EasyMock.anyLong());
     expectLastCall().andAnswer(() -> {
       Object result;
       int count = 0;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
index 95cdd40..6380aac 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerTaskQueueTest.java
@@ -20,6 +20,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.response.SolrResponseBase;
@@ -75,7 +77,7 @@ public class OverseerTaskQueueTest extends DistributedQueueTest {
     tq.createRequestNode(Utils.toJSON(props), watchID);
 
     // Set a SolrResponse as the response node by removing the QueueEvent, as done in OverseerTaskProcessor
-    List<OverseerTaskQueue.QueueEvent> queueEvents = tq.peekTopN(2, Collections.emptySet(), 1000);
+    List<OverseerTaskQueue.QueueEvent> queueEvents = tq.peekTopN(2, s -> false, 1000);
     OverseerTaskQueue.QueueEvent requestId2Event = null;
     for (OverseerTaskQueue.QueueEvent queueEvent : queueEvents) {
       Map<String, Object> eventProps = (Map<String, Object>) Utils.fromJSON(queueEvent.getBytes());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/232b44e2/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
index 5439841..4b0f7ab 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
@@ -1988,12 +1988,16 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
   }
 
   static RequestStatusState getRequestState(String requestId, SolrClient client) throws IOException, SolrServerException {
-    CollectionAdminRequest.RequestStatus requestStatusRequest = new CollectionAdminRequest.RequestStatus();
-    requestStatusRequest.setRequestId(requestId);
-    CollectionAdminResponse response = requestStatusRequest.process(client);
+    CollectionAdminResponse response = getStatusResponse(requestId, client);
 
     NamedList innerResponse = (NamedList) response.getResponse().get("status");
     return RequestStatusState.fromKey((String) innerResponse.get("state"));
   }
 
+  static CollectionAdminResponse getStatusResponse(String requestId, SolrClient client) throws SolrServerException, IOException {
+    CollectionAdminRequest.RequestStatus requestStatusRequest = new CollectionAdminRequest.RequestStatus();
+    requestStatusRequest.setRequestId(requestId);
+    return requestStatusRequest.process(client);
+  }
+
 }


[35/50] [abbrv] lucene-solr:apiv2: LUCENE-7329: Simplify CharacterUtils.

Posted by no...@apache.org.
LUCENE-7329: Simplify CharacterUtils.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/af2ae05d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/af2ae05d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/af2ae05d

Branch: refs/heads/apiv2
Commit: af2ae05d6ec158a962731b77478d9cf451d9e00a
Parents: 5e2677e
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jun 13 15:23:08 2016 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jun 13 15:24:22 2016 +0200

----------------------------------------------------------------------
 .../lucene/analysis/core/LowerCaseFilter.java   |   3 +-
 .../lucene/analysis/core/UpperCaseFilter.java   |   3 +-
 .../analysis/el/GreekLowerCaseFilter.java       |   4 +-
 .../analysis/ngram/EdgeNGramTokenFilter.java    |   7 +-
 .../lucene/analysis/ngram/NGramTokenFilter.java |  13 +-
 .../lucene/analysis/ngram/NGramTokenizer.java   |   8 +-
 .../lucene/analysis/util/CharArrayMap.java      |  17 +-
 .../lucene/analysis/util/CharTokenizer.java     |   5 +-
 .../lucene/analysis/util/CharacterUtils.java    | 229 ++++---------------
 .../TestStemmerOverrideFilter.java              |   4 +-
 .../analysis/util/TestCharacterUtils.java       | 155 ++-----------
 .../analysis/morfologik/MorfologikFilter.java   |   4 +-
 12 files changed, 86 insertions(+), 366 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/LowerCaseFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/LowerCaseFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/LowerCaseFilter.java
index d1198a6..ade6a58 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/LowerCaseFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/LowerCaseFilter.java
@@ -28,7 +28,6 @@ import org.apache.lucene.analysis.util.CharacterUtils;
  * Normalizes token text to lower case.
  */
 public final class LowerCaseFilter extends TokenFilter {
-  private final CharacterUtils charUtils = CharacterUtils.getInstance();
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
   
   /**
@@ -43,7 +42,7 @@ public final class LowerCaseFilter extends TokenFilter {
   @Override
   public final boolean incrementToken() throws IOException {
     if (input.incrementToken()) {
-      charUtils.toLowerCase(termAtt.buffer(), 0, termAtt.length());
+      CharacterUtils.toLowerCase(termAtt.buffer(), 0, termAtt.length());
       return true;
     } else
       return false;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/UpperCaseFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/UpperCaseFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/UpperCaseFilter.java
index 9c2c283..6d3f6bb 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/UpperCaseFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/UpperCaseFilter.java
@@ -33,7 +33,6 @@ import org.apache.lucene.analysis.util.CharacterUtils;
  * general search matching
  */
 public final class UpperCaseFilter extends TokenFilter {
-  private final CharacterUtils charUtils = CharacterUtils.getInstance();
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
   
   /**
@@ -48,7 +47,7 @@ public final class UpperCaseFilter extends TokenFilter {
   @Override
   public final boolean incrementToken() throws IOException {
     if (input.incrementToken()) {
-      charUtils.toUpperCase(termAtt.buffer(), 0, termAtt.length());
+      CharacterUtils.toUpperCase(termAtt.buffer(), 0, termAtt.length());
       return true;
     } else
       return false;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/el/GreekLowerCaseFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/el/GreekLowerCaseFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/el/GreekLowerCaseFilter.java
index e4aecf3..3185b2d 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/el/GreekLowerCaseFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/el/GreekLowerCaseFilter.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import org.apache.lucene.analysis.TokenFilter;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-import org.apache.lucene.analysis.util.CharacterUtils;
 
 /**
  * Normalizes token text to lower case, removes some Greek diacritics,
@@ -29,7 +28,6 @@ import org.apache.lucene.analysis.util.CharacterUtils;
  */
 public final class GreekLowerCaseFilter extends TokenFilter {
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
-  private final CharacterUtils charUtils = CharacterUtils.getInstance();
 
   /**
    * Create a GreekLowerCaseFilter that normalizes Greek token text.
@@ -47,7 +45,7 @@ public final class GreekLowerCaseFilter extends TokenFilter {
       int chLen = termAtt.length();
       for (int i = 0; i < chLen;) {
         i += Character.toChars(
-            lowerCase(charUtils.codePointAt(chArray, i, chLen)), chArray, i);
+            lowerCase(Character.codePointAt(chArray, i, chLen)), chArray, i);
        }
       return true;
     } else {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java
index 2c10778..827e26f 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java
@@ -25,7 +25,6 @@ import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
-import org.apache.lucene.analysis.util.CharacterUtils;
 
 /**
  * Tokenizes the given token into n-grams of given size(s).
@@ -38,7 +37,6 @@ public final class EdgeNGramTokenFilter extends TokenFilter {
   public static final int DEFAULT_MAX_GRAM_SIZE = 1;
   public static final int DEFAULT_MIN_GRAM_SIZE = 1;
 
-  private final CharacterUtils charUtils;
   private final int minGram;
   private final int maxGram;
   private char[] curTermBuffer;
@@ -73,7 +71,6 @@ public final class EdgeNGramTokenFilter extends TokenFilter {
       throw new IllegalArgumentException("minGram must not be greater than maxGram");
     }
 
-    this.charUtils = CharacterUtils.getInstance();
     this.minGram = minGram;
     this.maxGram = maxGram;
   }
@@ -87,7 +84,7 @@ public final class EdgeNGramTokenFilter extends TokenFilter {
         } else {
           curTermBuffer = termAtt.buffer().clone();
           curTermLength = termAtt.length();
-          curCodePointCount = charUtils.codePointCount(termAtt);
+          curCodePointCount = Character.codePointCount(termAtt, 0, termAtt.length());
           curGramSize = minGram;
           tokStart = offsetAtt.startOffset();
           tokEnd = offsetAtt.endOffset();
@@ -108,7 +105,7 @@ public final class EdgeNGramTokenFilter extends TokenFilter {
             posIncrAtt.setPositionIncrement(0);
           }
           posLenAtt.setPositionLength(savePosLen);
-          final int charLength = charUtils.offsetByCodePoints(curTermBuffer, 0, curTermLength, 0, curGramSize);
+          final int charLength = Character.offsetByCodePoints(curTermBuffer, 0, curTermLength, 0, curGramSize);
           termAtt.copyBuffer(curTermBuffer, 0, charLength);
           curGramSize++;
           return true;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java
index 5a84bff..e275cfa 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java
@@ -26,7 +26,6 @@ import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
-import org.apache.lucene.analysis.util.CharacterUtils;
 
 /**
  * Tokenizes the input into n-grams of the given size(s).
@@ -56,9 +55,7 @@ public final class NGramTokenFilter extends TokenFilter {
   private int curPosInc, curPosLen;
   private int tokStart;
   private int tokEnd;
-  private boolean hasIllegalOffsets; // only if the length changed before this filter
 
-  private final CharacterUtils charUtils;
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
   private final PositionIncrementAttribute posIncAtt;
   private final PositionLengthAttribute posLenAtt;
@@ -72,7 +69,6 @@ public final class NGramTokenFilter extends TokenFilter {
    */
   public NGramTokenFilter(TokenStream input, int minGram, int maxGram) {
     super(new CodepointCountFilter(input, minGram, Integer.MAX_VALUE));
-    this.charUtils = CharacterUtils.getInstance();
     if (minGram < 1) {
       throw new IllegalArgumentException("minGram must be greater than zero");
     }
@@ -104,16 +100,13 @@ public final class NGramTokenFilter extends TokenFilter {
         } else {
           curTermBuffer = termAtt.buffer().clone();
           curTermLength = termAtt.length();
-          curCodePointCount = charUtils.codePointCount(termAtt);
+          curCodePointCount = Character.codePointCount(termAtt, 0, termAtt.length());
           curGramSize = minGram;
           curPos = 0;
           curPosInc = posIncAtt.getPositionIncrement();
           curPosLen = posLenAtt.getPositionLength();
           tokStart = offsetAtt.startOffset();
           tokEnd = offsetAtt.endOffset();
-          // if length by start + end offsets doesn't match the term text then assume
-          // this is a synonym and don't adjust the offsets.
-          hasIllegalOffsets = (tokStart + curTermLength) != tokEnd;
         }
       }
 
@@ -123,8 +116,8 @@ public final class NGramTokenFilter extends TokenFilter {
       }
       if ((curPos + curGramSize) <= curCodePointCount) {
         clearAttributes();
-        final int start = charUtils.offsetByCodePoints(curTermBuffer, 0, curTermLength, 0, curPos);
-        final int end = charUtils.offsetByCodePoints(curTermBuffer, 0, curTermLength, start, curGramSize);
+        final int start = Character.offsetByCodePoints(curTermBuffer, 0, curTermLength, 0, curPos);
+        final int end = Character.offsetByCodePoints(curTermBuffer, 0, curTermLength, start, curGramSize);
         termAtt.copyBuffer(curTermBuffer, start, end - start);
         posIncAtt.setPositionIncrement(curPosInc);
         curPosInc = 0;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java
index 1c8aa7c..da104c9 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/NGramTokenizer.java
@@ -57,7 +57,6 @@ public class NGramTokenizer extends Tokenizer {
   public static final int DEFAULT_MIN_NGRAM_SIZE = 1;
   public static final int DEFAULT_MAX_NGRAM_SIZE = 2;
 
-  private CharacterUtils charUtils;
   private CharacterUtils.CharacterBuffer charBuffer;
   private int[] buffer; // like charBuffer, but converted to code points
   private int bufferStart, bufferEnd; // remaining slice in buffer
@@ -110,7 +109,6 @@ public class NGramTokenizer extends Tokenizer {
   }
 
   private void init(int minGram, int maxGram, boolean edgesOnly) {
-    charUtils = CharacterUtils.getInstance();
     if (minGram < 1) {
       throw new IllegalArgumentException("minGram must be greater than zero");
     }
@@ -142,9 +140,9 @@ public class NGramTokenizer extends Tokenizer {
         bufferStart = 0;
 
         // fill in remaining space
-        exhausted = !charUtils.fill(charBuffer, input, buffer.length - bufferEnd);
+        exhausted = !CharacterUtils.fill(charBuffer, input, buffer.length - bufferEnd);
         // convert to code points
-        bufferEnd += charUtils.toCodePoints(charBuffer.getBuffer(), 0, charBuffer.getLength(), buffer, bufferEnd);
+        bufferEnd += CharacterUtils.toCodePoints(charBuffer.getBuffer(), 0, charBuffer.getLength(), buffer, bufferEnd);
       }
 
       // should we go to the next offset?
@@ -168,7 +166,7 @@ public class NGramTokenizer extends Tokenizer {
         continue;
       }
 
-      final int length = charUtils.toChars(buffer, bufferStart, gramSize, termAtt.buffer(), 0);
+      final int length = CharacterUtils.toChars(buffer, bufferStart, gramSize, termAtt.buffer(), 0);
       termAtt.setLength(length);
       posIncAtt.setPositionIncrement(1);
       posLenAtt.setPositionLength(1);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharArrayMap.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharArrayMap.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharArrayMap.java
index 289ee08..e414366 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharArrayMap.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharArrayMap.java
@@ -40,7 +40,6 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
   private static final CharArrayMap<?> EMPTY_MAP = new EmptyCharArrayMap<>();
 
   private final static int INIT_SIZE = 8;
-  private final CharacterUtils charUtils;
   private boolean ignoreCase;  
   private int count;
   char[][] keys; // package private because used in CharArraySet's non Set-conform CharArraySetIterator
@@ -63,7 +62,6 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
       size <<= 1;
     keys = new char[size][];
     values = (V[]) new Object[size];
-    this.charUtils = CharacterUtils.getInstance();
   }
 
   /**
@@ -86,7 +84,6 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
     this.values = toCopy.values;
     this.ignoreCase = toCopy.ignoreCase;
     this.count = toCopy.count;
-    this.charUtils = toCopy.charUtils;
   }
   
   /** Clears all entries in this map. This method is supported for reusing, but not {@link Map#remove}. */
@@ -192,7 +189,7 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
    */
   public V put(char[] text, V value) {
     if (ignoreCase) {
-      charUtils.toLowerCase(text, 0, text.length);
+      CharacterUtils.toLowerCase(text, 0, text.length);
     }
     int slot = getSlot(text, 0, text.length);
     if (keys[slot] != null) {
@@ -237,8 +234,8 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
     final int limit = off+len;
     if (ignoreCase) {
       for(int i=0;i<len;) {
-        final int codePointAt = charUtils.codePointAt(text1, off+i, limit);
-        if (Character.toLowerCase(codePointAt) != charUtils.codePointAt(text2, i, text2.length))
+        final int codePointAt = Character.codePointAt(text1, off+i, limit);
+        if (Character.toLowerCase(codePointAt) != Character.codePointAt(text2, i, text2.length))
           return false;
         i += Character.charCount(codePointAt); 
       }
@@ -257,8 +254,8 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
       return false;
     if (ignoreCase) {
       for(int i=0;i<len;) {
-        final int codePointAt = charUtils.codePointAt(text1, i);
-        if (Character.toLowerCase(codePointAt) != charUtils.codePointAt(text2, i, text2.length))
+        final int codePointAt = Character.codePointAt(text1, i);
+        if (Character.toLowerCase(codePointAt) != Character.codePointAt(text2, i, text2.length))
           return false;
         i += Character.charCount(codePointAt);
       }
@@ -278,7 +275,7 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
     final int stop = offset + len;
     if (ignoreCase) {
       for (int i=offset; i<stop;) {
-        final int codePointAt = charUtils.codePointAt(text, i, stop);
+        final int codePointAt = Character.codePointAt(text, i, stop);
         code = code*31 + Character.toLowerCase(codePointAt);
         i += Character.charCount(codePointAt);
       }
@@ -297,7 +294,7 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
     int len = text.length();
     if (ignoreCase) {
       for (int i=0; i<len;) {
-        int codePointAt = charUtils.codePointAt(text, i);
+        int codePointAt = Character.codePointAt(text, i);
         code = code*31 + Character.toLowerCase(codePointAt);
         i += Character.charCount(codePointAt);
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharTokenizer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharTokenizer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharTokenizer.java
index 7683239..4952f99 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharTokenizer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharTokenizer.java
@@ -199,7 +199,6 @@ public abstract class CharTokenizer extends Tokenizer {
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
   private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
   
-  private final CharacterUtils charUtils = CharacterUtils.getInstance();
   private final CharacterBuffer ioBuffer = CharacterUtils.newCharacterBuffer(IO_BUFFER_SIZE);
   
   /**
@@ -229,7 +228,7 @@ public abstract class CharTokenizer extends Tokenizer {
     while (true) {
       if (bufferIndex >= dataLen) {
         offset += dataLen;
-        charUtils.fill(ioBuffer, input); // read supplementary char aware with CharacterUtils
+        CharacterUtils.fill(ioBuffer, input); // read supplementary char aware with CharacterUtils
         if (ioBuffer.getLength() == 0) {
           dataLen = 0; // so next offset += dataLen won't decrement offset
           if (length > 0) {
@@ -243,7 +242,7 @@ public abstract class CharTokenizer extends Tokenizer {
         bufferIndex = 0;
       }
       // use CharacterUtils here to support < 3.1 UTF-16 code unit behavior if the char based methods are gone
-      final int c = charUtils.codePointAt(ioBuffer.getBuffer(), bufferIndex, ioBuffer.getLength());
+      final int c = Character.codePointAt(ioBuffer.getBuffer(), bufferIndex, ioBuffer.getLength());
       final int charCount = Character.charCount(c);
       bufferIndex += charCount;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharacterUtils.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharacterUtils.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharacterUtils.java
index f14b1f7..b728523 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharacterUtils.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharacterUtils.java
@@ -20,76 +20,13 @@ package org.apache.lucene.analysis.util;
 import java.io.IOException;
 import java.io.Reader;
 
-import org.apache.lucene.util.Version;
-
 /**
- * {@link CharacterUtils} provides a unified interface to Character-related
- * operations to implement backwards compatible character operations based on a
- * {@link Version} instance.
- * 
+ * Utility class to write tokenizers or token filters.
  * @lucene.internal
  */
-public abstract class CharacterUtils {
-  private static final Java4CharacterUtils JAVA_4 = new Java4CharacterUtils();
-  private static final Java5CharacterUtils JAVA_5 = new Java5CharacterUtils();
-
-  /**
-   * Returns a {@link CharacterUtils} implementation.
-   * @return a {@link CharacterUtils} implementation according to the given
-   *         {@link Version} instance.
-   */
-  public static CharacterUtils getInstance() {
-    return JAVA_5;
-  }
-  
-  /** 
-   * explicitly returns a version matching java 4 semantics 
-   * @deprecated Only for n-gram backwards compat
-   */
-  @Deprecated
-  public static CharacterUtils getJava4Instance() {
-    return JAVA_4;
-  }
-
-  /**
-   * Returns the code point at the given index of the {@link CharSequence}.
-   * 
-   * @param seq
-   *          a character sequence
-   * @param offset
-   *          the offset to the char values in the chars array to be converted
-   * 
-   * @return the Unicode code point at the given index
-   * @throws NullPointerException
-   *           - if the sequence is null.
-   * @throws IndexOutOfBoundsException
-   *           - if the value offset is negative or not less than the length of
-   *           the character sequence.
-   */
-  public abstract int codePointAt(final CharSequence seq, final int offset);
-  
-  /**
-   * Returns the code point at the given index of the char array where only elements
-   * with index less than the limit are used.
-   * 
-   * @param chars
-   *          a character array
-   * @param offset
-   *          the offset to the char values in the chars array to be converted
-   * @param limit the index afer the last element that should be used to calculate
-   *        codepoint.  
-   * 
-   * @return the Unicode code point at the given index
-   * @throws NullPointerException
-   *           - if the array is null.
-   * @throws IndexOutOfBoundsException
-   *           - if the value offset is negative or not less than the length of
-   *           the char array.
-   */
-  public abstract int codePointAt(final char[] chars, final int offset, final int limit);
+public final class CharacterUtils {
 
-  /** Return the number of characters in <code>seq</code>. */
-  public abstract int codePointCount(CharSequence seq);
+  private CharacterUtils() {} // no instantiation
 
   /**
    * Creates a new {@link CharacterBuffer} and allocates a <code>char[]</code>
@@ -114,13 +51,13 @@ public abstract class CharacterUtils {
    * @param offset the offset to start at
    * @param limit the max char in the buffer to lower case
    */
-  public final void toLowerCase(final char[] buffer, final int offset, final int limit) {
+  public static void toLowerCase(final char[] buffer, final int offset, final int limit) {
     assert buffer.length >= limit;
     assert offset <=0 && offset <= buffer.length;
     for (int i = offset; i < limit;) {
       i += Character.toChars(
               Character.toLowerCase(
-                  codePointAt(buffer, i, limit)), buffer, i);
+                  Character.codePointAt(buffer, i, limit)), buffer, i);
      }
   }
 
@@ -131,25 +68,25 @@ public abstract class CharacterUtils {
    * @param offset the offset to start at
    * @param limit the max char in the buffer to lower case
    */
-  public final void toUpperCase(final char[] buffer, final int offset, final int limit) {
+  public static void toUpperCase(final char[] buffer, final int offset, final int limit) {
     assert buffer.length >= limit;
     assert offset <=0 && offset <= buffer.length;
     for (int i = offset; i < limit;) {
       i += Character.toChars(
               Character.toUpperCase(
-                  codePointAt(buffer, i, limit)), buffer, i);
+                  Character.codePointAt(buffer, i, limit)), buffer, i);
      }
   }
 
   /** Converts a sequence of Java characters to a sequence of unicode code points.
    *  @return the number of code points written to the destination buffer */
-  public final int toCodePoints(char[] src, int srcOff, int srcLen, int[] dest, int destOff) {
+  public static int toCodePoints(char[] src, int srcOff, int srcLen, int[] dest, int destOff) {
     if (srcLen < 0) {
       throw new IllegalArgumentException("srcLen must be >= 0");
     }
     int codePointCount = 0;
     for (int i = 0; i < srcLen; ) {
-      final int cp = codePointAt(src, srcOff + i, srcOff + srcLen);
+      final int cp = Character.codePointAt(src, srcOff + i, srcOff + srcLen);
       final int charCount = Character.charCount(cp);
       dest[destOff + codePointCount++] = cp;
       i += charCount;
@@ -159,7 +96,7 @@ public abstract class CharacterUtils {
 
   /** Converts a sequence of unicode code points to a sequence of Java characters.
    *  @return the number of chars written to the destination buffer */
-  public final int toChars(int[] src, int srcOff, int srcLen, char[] dest, int destOff) {
+  public static int toChars(int[] src, int srcOff, int srcLen, char[] dest, int destOff) {
     if (srcLen < 0) {
       throw new IllegalArgumentException("srcLen must be >= 0");
     }
@@ -202,17 +139,45 @@ public abstract class CharacterUtils {
    * @throws IOException
    *           if the reader throws an {@link IOException}.
    */
-  public abstract boolean fill(CharacterBuffer buffer, Reader reader, int numChars) throws IOException;
+  public static boolean fill(CharacterBuffer buffer, Reader reader, int numChars) throws IOException {
+    assert buffer.buffer.length >= 2;
+    if (numChars < 2 || numChars > buffer.buffer.length) {
+      throw new IllegalArgumentException("numChars must be >= 2 and <= the buffer size");
+    }
+    final char[] charBuffer = buffer.buffer;
+    buffer.offset = 0;
+    final int offset;
+
+    // Install the previously saved ending high surrogate:
+    if (buffer.lastTrailingHighSurrogate != 0) {
+      charBuffer[0] = buffer.lastTrailingHighSurrogate;
+      buffer.lastTrailingHighSurrogate = 0;
+      offset = 1;
+    } else {
+      offset = 0;
+    }
+
+    final int read = readFully(reader, charBuffer, offset, numChars - offset);
+
+    buffer.length = offset + read;
+    final boolean result = buffer.length == numChars;
+    if (buffer.length < numChars) {
+      // We failed to fill the buffer. Even if the last char is a high
+      // surrogate, there is nothing we can do
+      return result;
+    }
+
+    if (Character.isHighSurrogate(charBuffer[buffer.length - 1])) {
+      buffer.lastTrailingHighSurrogate = charBuffer[--buffer.length];
+    }
+    return result;
+  }
 
   /** Convenience method which calls <code>fill(buffer, reader, buffer.buffer.length)</code>. */
-  public final boolean fill(CharacterBuffer buffer, Reader reader) throws IOException {
+  public static boolean fill(CharacterBuffer buffer, Reader reader) throws IOException {
     return fill(buffer, reader, buffer.buffer.length);
   }
 
-  /** Return the index within <code>buf[start:start+count]</code> which is by <code>offset</code>
-   *  code points from <code>index</code>. */
-  public abstract int offsetByCodePoints(char[] buf, int start, int count, int index, int offset);
-
   static int readFully(Reader reader, char[] dest, int offset, int len) throws IOException {
     int read = 0;
     while (read < len) {
@@ -225,112 +190,6 @@ public abstract class CharacterUtils {
     return read;
   }
 
-  private static final class Java5CharacterUtils extends CharacterUtils {
-    Java5CharacterUtils() {
-    }
-
-    @Override
-    public int codePointAt(final CharSequence seq, final int offset) {
-      return Character.codePointAt(seq, offset);
-    }
-
-    @Override
-    public int codePointAt(final char[] chars, final int offset, final int limit) {
-     return Character.codePointAt(chars, offset, limit);
-    }
-
-    @Override
-    public boolean fill(final CharacterBuffer buffer, final Reader reader, int numChars) throws IOException {
-      assert buffer.buffer.length >= 2;
-      if (numChars < 2 || numChars > buffer.buffer.length) {
-        throw new IllegalArgumentException("numChars must be >= 2 and <= the buffer size");
-      }
-      final char[] charBuffer = buffer.buffer;
-      buffer.offset = 0;
-      final int offset;
-
-      // Install the previously saved ending high surrogate:
-      if (buffer.lastTrailingHighSurrogate != 0) {
-        charBuffer[0] = buffer.lastTrailingHighSurrogate;
-        buffer.lastTrailingHighSurrogate = 0;
-        offset = 1;
-      } else {
-        offset = 0;
-      }
-
-      final int read = readFully(reader, charBuffer, offset, numChars - offset);
-
-      buffer.length = offset + read;
-      final boolean result = buffer.length == numChars;
-      if (buffer.length < numChars) {
-        // We failed to fill the buffer. Even if the last char is a high
-        // surrogate, there is nothing we can do
-        return result;
-      }
-
-      if (Character.isHighSurrogate(charBuffer[buffer.length - 1])) {
-        buffer.lastTrailingHighSurrogate = charBuffer[--buffer.length];
-      }
-      return result;
-    }
-
-    @Override
-    public int codePointCount(CharSequence seq) {
-      return Character.codePointCount(seq, 0, seq.length());
-    }
-
-    @Override
-    public int offsetByCodePoints(char[] buf, int start, int count, int index, int offset) {
-      return Character.offsetByCodePoints(buf, start, count, index, offset);
-    }
-  }
-
-  private static final class Java4CharacterUtils extends CharacterUtils {
-    Java4CharacterUtils() {
-    }
-
-    @Override
-    public int codePointAt(final CharSequence seq, final int offset) {
-      return seq.charAt(offset);
-    }
-
-    @Override
-    public int codePointAt(final char[] chars, final int offset, final int limit) {
-      if(offset >= limit)
-        throw new IndexOutOfBoundsException("offset must be less than limit");
-      return chars[offset];
-    }
-
-    @Override
-    public boolean fill(CharacterBuffer buffer, Reader reader, int numChars)
-        throws IOException {
-      assert buffer.buffer.length >= 1;
-      if (numChars < 1 || numChars > buffer.buffer.length) {
-        throw new IllegalArgumentException("numChars must be >= 1 and <= the buffer size");
-      }
-      buffer.offset = 0;
-      final int read = readFully(reader, buffer.buffer, 0, numChars);
-      buffer.length = read;
-      buffer.lastTrailingHighSurrogate = 0;
-      return read == numChars;
-    }
-
-    @Override
-    public int codePointCount(CharSequence seq) {
-      return seq.length();
-    }
-
-    @Override
-    public int offsetByCodePoints(char[] buf, int start, int count, int index, int offset) {
-      final int result = index + offset;
-      if (result < 0 || result > count) {
-        throw new IndexOutOfBoundsException();
-      }
-      return result;
-    }
-
-  }
-  
   /**
    * A simple IO buffer to use with
    * {@link CharacterUtils#fill(CharacterBuffer, Reader)}.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestStemmerOverrideFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestStemmerOverrideFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestStemmerOverrideFilter.java
index d8b2fca..ef4856c 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestStemmerOverrideFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestStemmerOverrideFilter.java
@@ -85,8 +85,6 @@ public class TestStemmerOverrideFilter extends BaseTokenStreamTestCase {
     int numTerms = atLeast(50);
     boolean ignoreCase = random().nextBoolean();
 
-    CharacterUtils charUtils = CharacterUtils.getInstance();
-
     for (int i = 0; i < numTerms; i++) {
       String randomRealisticUnicodeString = TestUtil
           .randomRealisticUnicodeString(random());
@@ -107,7 +105,7 @@ public class TestStemmerOverrideFilter extends BaseTokenStreamTestCase {
         if (ignoreCase) {
           // TODO: can we simply use inputValue.toLowerCase(Locale.ROOT)???
           char[] buffer = inputValue.toCharArray();
-          charUtils.toLowerCase(buffer, 0, buffer.length);
+          CharacterUtils.toLowerCase(buffer, 0, buffer.length);
           seenInputValue = buffer.toString();
         } else {
           seenInputValue = inputValue;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharacterUtils.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharacterUtils.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharacterUtils.java
index 2faeec7..04e96ea 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharacterUtils.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharacterUtils.java
@@ -32,102 +32,15 @@ import org.junit.Test;
  */
 public class TestCharacterUtils extends LuceneTestCase {
 
-  @Test
-  public void testCodePointAtCharSequenceInt() {
-    CharacterUtils java4 = CharacterUtils.getJava4Instance();
-    String cpAt3 = "Abc\ud801\udc1c";
-    String highSurrogateAt3 = "Abc\ud801";
-    assertEquals((int) 'A', java4.codePointAt(cpAt3, 0));
-    assertEquals((int) '\ud801', java4.codePointAt(cpAt3, 3));
-    assertEquals((int) '\ud801', java4.codePointAt(highSurrogateAt3, 3));
-    expectThrows(IndexOutOfBoundsException.class, () -> {
-      java4.codePointAt(highSurrogateAt3, 4);
-    });
-
-    CharacterUtils java5 = CharacterUtils.getInstance();
-    assertEquals((int) 'A', java5.codePointAt(cpAt3, 0));
-    assertEquals(Character.toCodePoint('\ud801', '\udc1c'), java5.codePointAt(
-        cpAt3, 3));
-    assertEquals((int) '\ud801', java5.codePointAt(highSurrogateAt3, 3));
-    expectThrows(IndexOutOfBoundsException.class, () -> {
-      java5.codePointAt(highSurrogateAt3, 4);
-    });
-  }
-
-  @Test
-  public void testCodePointAtCharArrayIntInt() {
-    CharacterUtils java4 = CharacterUtils.getJava4Instance();
-    char[] cpAt3 = "Abc\ud801\udc1c".toCharArray();
-    char[] highSurrogateAt3 = "Abc\ud801".toCharArray();
-    assertEquals((int) 'A', java4.codePointAt(cpAt3, 0, 2));
-    assertEquals((int) '\ud801', java4.codePointAt(cpAt3, 3, 5));
-    assertEquals((int) '\ud801', java4.codePointAt(highSurrogateAt3, 3, 4));
-
-    CharacterUtils java5 = CharacterUtils.getInstance();
-    assertEquals((int) 'A', java5.codePointAt(cpAt3, 0, 2));
-    assertEquals(Character.toCodePoint('\ud801', '\udc1c'), java5.codePointAt(
-        cpAt3, 3, 5));
-    assertEquals((int) '\ud801', java5.codePointAt(highSurrogateAt3, 3, 4));
-  }
-
-  @Test
-  public void testCodePointCount() {
-    CharacterUtils java4 = CharacterUtils.getJava4Instance();
-    CharacterUtils java5 = CharacterUtils.getInstance();
-    final String s = TestUtil.randomUnicodeString(random());
-    assertEquals(s.length(), java4.codePointCount(s));
-    assertEquals(Character.codePointCount(s, 0, s.length()), java5.codePointCount(s));
-  }
-
-  @Test
-  public void testOffsetByCodePoint() {
-    CharacterUtils java4 = CharacterUtils.getJava4Instance();
-    CharacterUtils java5 = CharacterUtils.getInstance();
-    for (int i = 0; i < 10; ++i) {
-      final char[] s = TestUtil.randomUnicodeString(random()).toCharArray();
-      final int index = TestUtil.nextInt(random(), 0, s.length);
-      final int offset = random().nextInt(7) - 3;
-      try {
-        final int o = java4.offsetByCodePoints(s, 0, s.length, index, offset);
-        assertEquals(o, index + offset);
-      } catch (IndexOutOfBoundsException e) {
-        assertTrue((index + offset) < 0 || (index + offset) > s.length);
-      }
-  
-      int o;
-      try {
-        o = java5.offsetByCodePoints(s, 0, s.length, index, offset);
-      } catch (IndexOutOfBoundsException e) {
-        try {
-          Character.offsetByCodePoints(s, 0, s.length, index, offset);
-          fail();
-        } catch (IndexOutOfBoundsException e2) {
-          // OK
-        }
-        o = -1;
-      }
-      if (o >= 0) {
-        assertEquals(Character.offsetByCodePoints(s, 0, s.length, index, offset), o);
-      }
-    }
-  }
-
   public void testConversions() {
-    CharacterUtils java4 = CharacterUtils.getJava4Instance();
-    CharacterUtils java5 = CharacterUtils.getInstance();
-    testConversions(java4);
-    testConversions(java5);
-  }
-
-  private void testConversions(CharacterUtils charUtils) {
     final char[] orig = TestUtil.randomUnicodeString(random(), 100).toCharArray();
     final int[] buf = new int[orig.length];
     final char[] restored = new char[buf.length];
     final int o1 = TestUtil.nextInt(random(), 0, Math.min(5, orig.length));
     final int o2 = TestUtil.nextInt(random(), 0, o1);
     final int o3 = TestUtil.nextInt(random(), 0, o1);
-    final int codePointCount = charUtils.toCodePoints(orig, o1, orig.length - o1, buf, o2);
-    final int charCount = charUtils.toChars(buf, o2, codePointCount, restored, o3);
+    final int codePointCount = CharacterUtils.toCodePoints(orig, o1, orig.length - o1, buf, o2);
+    final int charCount = CharacterUtils.toChars(buf, o2, codePointCount, restored, o3);
     assertEquals(orig.length - o1, charCount);
     assertArrayEquals(Arrays.copyOfRange(orig, o1, o1 + charCount), Arrays.copyOfRange(restored, o3, o3 + charCount));
   }
@@ -152,71 +65,43 @@ public class TestCharacterUtils extends LuceneTestCase {
 
   @Test
   public void testFillNoHighSurrogate() throws IOException {
-    CharacterUtils versions[] = new CharacterUtils[] { 
-        CharacterUtils.getInstance(), 
-        CharacterUtils.getJava4Instance() };
-    for (CharacterUtils instance : versions) {
-      Reader reader = new StringReader("helloworld");
-      CharacterBuffer buffer = CharacterUtils.newCharacterBuffer(6);
-      assertTrue(instance.fill(buffer,reader));
-      assertEquals(0, buffer.getOffset());
-      assertEquals(6, buffer.getLength());
-      assertEquals("hellow", new String(buffer.getBuffer()));
-      assertFalse(instance.fill(buffer,reader));
-      assertEquals(4, buffer.getLength());
-      assertEquals(0, buffer.getOffset());
+    Reader reader = new StringReader("helloworld");
+    CharacterBuffer buffer = CharacterUtils.newCharacterBuffer(6);
+    assertTrue(CharacterUtils.fill(buffer,reader));
+    assertEquals(0, buffer.getOffset());
+    assertEquals(6, buffer.getLength());
+    assertEquals("hellow", new String(buffer.getBuffer()));
+    assertFalse(CharacterUtils.fill(buffer,reader));
+    assertEquals(4, buffer.getLength());
+    assertEquals(0, buffer.getOffset());
 
-      assertEquals("orld", new String(buffer.getBuffer(), buffer.getOffset(),
-          buffer.getLength()));
-      assertFalse(instance.fill(buffer,reader));
-    }
+    assertEquals("orld", new String(buffer.getBuffer(), buffer.getOffset(),
+        buffer.getLength()));
+    assertFalse(CharacterUtils.fill(buffer,reader));
   }
 
   @Test
-  public void testFillJava15() throws IOException {
+  public void testFill() throws IOException {
     String input = "1234\ud801\udc1c789123\ud801\ud801\udc1c\ud801";
-    CharacterUtils instance = CharacterUtils.getInstance();
     Reader reader = new StringReader(input);
     CharacterBuffer buffer = CharacterUtils.newCharacterBuffer(5);
-    assertTrue(instance.fill(buffer, reader));
+    assertTrue(CharacterUtils.fill(buffer, reader));
     assertEquals(4, buffer.getLength());
     assertEquals("1234", new String(buffer.getBuffer(), buffer.getOffset(),
         buffer.getLength()));
-    assertTrue(instance.fill(buffer, reader));
+    assertTrue(CharacterUtils.fill(buffer, reader));
     assertEquals(5, buffer.getLength());
     assertEquals("\ud801\udc1c789", new String(buffer.getBuffer()));
-    assertTrue(instance.fill(buffer, reader));
+    assertTrue(CharacterUtils.fill(buffer, reader));
     assertEquals(4, buffer.getLength());
     assertEquals("123\ud801", new String(buffer.getBuffer(),
         buffer.getOffset(), buffer.getLength()));
-    assertFalse(instance.fill(buffer, reader));
+    assertFalse(CharacterUtils.fill(buffer, reader));
     assertEquals(3, buffer.getLength());
     assertEquals("\ud801\udc1c\ud801", new String(buffer.getBuffer(), buffer
         .getOffset(), buffer.getLength()));
-    assertFalse(instance.fill(buffer, reader));
+    assertFalse(CharacterUtils.fill(buffer, reader));
     assertEquals(0, buffer.getLength());
   }
 
-  @Test
-  public void testFillJava14() throws IOException {
-    String input = "1234\ud801\udc1c789123\ud801\ud801\udc1c\ud801";
-    CharacterUtils instance = CharacterUtils.getJava4Instance();
-    Reader reader = new StringReader(input);
-    CharacterBuffer buffer = CharacterUtils.newCharacterBuffer(5);
-    assertTrue(instance.fill(buffer, reader));
-    assertEquals(5, buffer.getLength());
-    assertEquals("1234\ud801", new String(buffer.getBuffer(), buffer
-        .getOffset(), buffer.getLength()));
-    assertTrue(instance.fill(buffer, reader));
-    assertEquals(5, buffer.getLength());
-    assertEquals("\udc1c7891", new String(buffer.getBuffer()));
-    buffer = CharacterUtils.newCharacterBuffer(6);
-    assertTrue(instance.fill(buffer, reader));
-    assertEquals(6, buffer.getLength());
-    assertEquals("23\ud801\ud801\udc1c\ud801", new String(buffer.getBuffer(), buffer
-        .getOffset(), buffer.getLength()));
-    assertFalse(instance.fill(buffer, reader));
-
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/af2ae05d/lucene/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java b/lucene/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java
index ff36dbe..3429d86 100644
--- a/lucene/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java
+++ b/lucene/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java
@@ -34,7 +34,6 @@ import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.KeywordAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.analysis.util.CharacterUtils;
 import org.apache.lucene.util.CharsRefBuilder;
 
 /**
@@ -54,7 +53,6 @@ public class MorfologikFilter extends TokenFilter {
   private final KeywordAttribute keywordAttr = addAttribute(KeywordAttribute.class);
 
   private final CharsRefBuilder scratch = new CharsRefBuilder();
-  private final CharacterUtils charUtils = CharacterUtils.getInstance();
 
   private State current;
   private final TokenStream input;
@@ -154,7 +152,7 @@ public class MorfologikFilter extends TokenFilter {
     char buffer[] = scratch.chars();
     for (int i = 0; i < length;) {
       i += Character.toChars(
-          Character.toLowerCase(charUtils.codePointAt(chs, i)), buffer, i);      
+          Character.toLowerCase(Character.codePointAt(chs, i)), buffer, i);      
     }
 
     return scratch.get();


[36/50] [abbrv] lucene-solr:apiv2: LUCENE-7330: Speed up conjunctions.

Posted by no...@apache.org.
LUCENE-7330: Speed up conjunctions.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/72914198
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/72914198
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/72914198

Branch: refs/heads/apiv2
Commit: 72914198e60dcaa2008f6945e53e36e1c0053078
Parents: af2ae05
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jun 13 17:27:44 2016 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jun 13 17:27:44 2016 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |   4 +
 .../apache/lucene/search/ConjunctionDISI.java   | 188 ++++++++-----------
 .../apache/lucene/search/ConjunctionScorer.java |   4 +-
 .../apache/lucene/search/ExactPhraseScorer.java |   3 +-
 .../lucene/search/SloppyPhraseScorer.java       |   3 +-
 .../apache/lucene/search/TwoPhaseIterator.java  |  79 +++++---
 .../lucene/search/TestConjunctionDISI.java      |  12 +-
 7 files changed, 145 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 5a83c31..3c52440 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -40,6 +40,10 @@ Improvements
   IndexReader after (illegally) removing the old index and
   reindexing (Vitaly Funstein, Robert Muir, Mike McCandless)
 
+Optimizations
+
+* LUCENE-7330: Speed up conjunction queries. (Adrien Grand)
+
 Other
 
 * LUCENE-4787: Fixed some highlighting javadocs. (Michael Dodsworth via Adrien

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/core/src/java/org/apache/lucene/search/ConjunctionDISI.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/ConjunctionDISI.java b/lucene/core/src/java/org/apache/lucene/search/ConjunctionDISI.java
index 53e3753..205a349 100644
--- a/lucene/core/src/java/org/apache/lucene/search/ConjunctionDISI.java
+++ b/lucene/core/src/java/org/apache/lucene/search/ConjunctionDISI.java
@@ -31,11 +31,13 @@ import org.apache.lucene.util.CollectionUtil;
  * <br>Public only for use in {@link org.apache.lucene.search.spans}.
  * @lucene.internal
  */
-public class ConjunctionDISI extends DocIdSetIterator {
+public final class ConjunctionDISI extends DocIdSetIterator {
 
-  /** Create a conjunction over the provided {@link Scorer}s, taking advantage
-   *  of {@link TwoPhaseIterator}. */
-  public static ConjunctionDISI intersectScorers(List<Scorer> scorers) {
+  /** Create a conjunction over the provided {@link Scorer}s. Note that the
+   * returned {@link DocIdSetIterator} might leverage two-phase iteration in
+   * which case it is possible to retrieve the {@link TwoPhaseIterator} using
+   * {@link TwoPhaseIterator#unwrap}. */
+  public static DocIdSetIterator intersectScorers(List<Scorer> scorers) {
     if (scorers.size() < 2) {
       throw new IllegalArgumentException("Cannot make a ConjunctionDISI of less than 2 iterators");
     }
@@ -45,15 +47,18 @@ public class ConjunctionDISI extends DocIdSetIterator {
       addScorer(scorer, allIterators, twoPhaseIterators);
     }
 
-    if (twoPhaseIterators.isEmpty()) {
-      return new ConjunctionDISI(allIterators);
-    } else {
-      return new TwoPhase(allIterators, twoPhaseIterators);
+    DocIdSetIterator iterator = new ConjunctionDISI(allIterators);
+    if (twoPhaseIterators.isEmpty() == false) {
+      iterator = TwoPhaseIterator.asDocIdSetIterator(new ConjunctionTwoPhaseIterator(iterator, twoPhaseIterators));
     }
+    return iterator;
   }
 
-  /** Create a conjunction over the provided DocIdSetIterators. */
-  public static ConjunctionDISI intersectIterators(List<DocIdSetIterator> iterators) {
+  /** Create a conjunction over the provided DocIdSetIterators. Note that the
+   * returned {@link DocIdSetIterator} might leverage two-phase iteration in
+   * which case it is possible to retrieve the {@link TwoPhaseIterator} using
+   * {@link TwoPhaseIterator#unwrap}. */
+  public static DocIdSetIterator intersectIterators(List<DocIdSetIterator> iterators) {
     if (iterators.size() < 2) {
       throw new IllegalArgumentException("Cannot make a ConjunctionDISI of less than 2 iterators");
     }
@@ -63,16 +68,18 @@ public class ConjunctionDISI extends DocIdSetIterator {
       addIterator(iterator, allIterators, twoPhaseIterators);
     }
 
-    if (twoPhaseIterators.isEmpty()) {
-      return new ConjunctionDISI(allIterators);
-    } else {
-      return new TwoPhase(allIterators, twoPhaseIterators);
+    DocIdSetIterator iterator = new ConjunctionDISI(allIterators);
+    if (twoPhaseIterators.isEmpty() == false) {
+      iterator = TwoPhaseIterator.asDocIdSetIterator(new ConjunctionTwoPhaseIterator(iterator, twoPhaseIterators));
     }
+    return iterator;
   }
 
-  /** Create a conjunction over the provided {@link Scorer}s, taking advantage
-   *  of {@link TwoPhaseIterator}. */
-  public static ConjunctionDISI intersectSpans(List<Spans> spanList) {
+  /** Create a conjunction over the provided {@link Spans}. Note that the
+   * returned {@link DocIdSetIterator} might leverage two-phase iteration in
+   * which case it is possible to retrieve the {@link TwoPhaseIterator} using
+   * {@link TwoPhaseIterator#unwrap}. */
+  public static DocIdSetIterator intersectSpans(List<Spans> spanList) {
     if (spanList.size() < 2) {
       throw new IllegalArgumentException("Cannot make a ConjunctionDISI of less than 2 iterators");
     }
@@ -82,11 +89,11 @@ public class ConjunctionDISI extends DocIdSetIterator {
       addSpans(spans, allIterators, twoPhaseIterators);
     }
 
-    if (twoPhaseIterators.isEmpty()) {
-      return new ConjunctionDISI(allIterators);
-    } else {
-      return new TwoPhase(allIterators, twoPhaseIterators);
+    DocIdSetIterator iterator = new ConjunctionDISI(allIterators);
+    if (twoPhaseIterators.isEmpty() == false) {
+      iterator = TwoPhaseIterator.asDocIdSetIterator(new ConjunctionTwoPhaseIterator(iterator, twoPhaseIterators));
     }
+    return iterator;
   }
 
   /** Adds the scorer, possibly splitting up into two phases or collapsing if it is another conjunction */
@@ -110,17 +117,16 @@ public class ConjunctionDISI extends DocIdSetIterator {
   }
 
   private static void addIterator(DocIdSetIterator disi, List<DocIdSetIterator> allIterators, List<TwoPhaseIterator> twoPhaseIterators) {
-    // Check for exactly this class for collapsing. Subclasses can do their own optimizations.
-    if (disi.getClass() == ConjunctionDISI.class || disi.getClass() == TwoPhase.class) {
+    TwoPhaseIterator twoPhase = TwoPhaseIterator.unwrap(disi);
+    if (twoPhase != null) {
+      addTwoPhaseIterator(twoPhase, allIterators, twoPhaseIterators);
+    } else if (disi.getClass() == ConjunctionDISI.class) { // Check for exactly this class for collapsing
       ConjunctionDISI conjunction = (ConjunctionDISI) disi;
       // subconjuctions have already split themselves into two phase iterators and others, so we can take those
       // iterators as they are and move them up to this conjunction
-      allIterators.add(conjunction.lead);
+      allIterators.add(conjunction.lead1);
+      allIterators.add(conjunction.lead2);
       Collections.addAll(allIterators, conjunction.others);
-      if (conjunction.getClass() == TwoPhase.class) {
-        TwoPhase twoPhase = (TwoPhase) conjunction;
-        Collections.addAll(twoPhaseIterators, twoPhase.twoPhaseView.twoPhaseIterators);
-      }
     } else {
       allIterators.add(disi);
     }
@@ -128,13 +134,17 @@ public class ConjunctionDISI extends DocIdSetIterator {
 
   private static void addTwoPhaseIterator(TwoPhaseIterator twoPhaseIter, List<DocIdSetIterator> allIterators, List<TwoPhaseIterator> twoPhaseIterators) {
     addIterator(twoPhaseIter.approximation(), allIterators, twoPhaseIterators);
-    twoPhaseIterators.add(twoPhaseIter);
+    if (twoPhaseIter.getClass() == ConjunctionTwoPhaseIterator.class) { // Check for exactly this class for collapsing
+      Collections.addAll(twoPhaseIterators, ((ConjunctionTwoPhaseIterator) twoPhaseIter).twoPhaseIterators);
+    } else {
+      twoPhaseIterators.add(twoPhaseIter);
+    }
   }
 
-  final DocIdSetIterator lead;
+  final DocIdSetIterator lead1, lead2;
   final DocIdSetIterator[] others;
 
-  ConjunctionDISI(List<? extends DocIdSetIterator> iterators) {
+  private ConjunctionDISI(List<? extends DocIdSetIterator> iterators) {
     assert iterators.size() >= 2;
     // Sort the array the first time to allow the least frequent DocsEnum to
     // lead the matching.
@@ -144,84 +154,77 @@ public class ConjunctionDISI extends DocIdSetIterator {
         return Long.compare(o1.cost(), o2.cost());
       }
     });
-    lead = iterators.get(0);
-    others = iterators.subList(1, iterators.size()).toArray(new DocIdSetIterator[0]);
-  }
-
-  protected boolean matches() throws IOException {
-    return true;
-  }
-
-  TwoPhaseIterator asTwoPhaseIterator() {
-    return null;
+    lead1 = iterators.get(0);
+    lead2 = iterators.get(1);
+    others = iterators.subList(2, iterators.size()).toArray(new DocIdSetIterator[0]);
   }
 
   private int doNext(int doc) throws IOException {
-    for(;;) {
-
-      if (doc == NO_MORE_DOCS) {
-        // we need this check because it is only ok to call #matches when positioned
-        return NO_MORE_DOCS;
+    advanceHead: for(;;) {
+      assert doc == lead1.docID();
+
+      // find agreement between the two iterators with the lower costs
+      // we special case them because they do not need the
+      // 'other.docID() < doc' check that the 'others' iterators need
+      final int next2 = lead2.advance(doc);
+      if (next2 != doc) {
+        doc = lead1.advance(next2);
+        if (next2 != doc) {
+          continue;
+        }
       }
 
-      advanceHead: for(;;) {
-        for (DocIdSetIterator other : others) {
-          // invariant: docsAndFreqs[i].doc <= doc at this point.
-
-          // docsAndFreqs[i].doc may already be equal to doc if we "broke advanceHead"
-          // on the previous iteration and the advance on the lead scorer exactly matched.
-          if (other.docID() < doc) {
-            final int next = other.advance(doc);
-
-            if (next > doc) {
-              // DocsEnum beyond the current doc - break and advance lead to the new highest doc.
-              doc = lead.advance(next);
-              break advanceHead;
-            }
+      // then find agreement with other iterators
+      for (DocIdSetIterator other : others) {
+        // other.doc may already be equal to doc if we "continued advanceHead"
+        // on the previous iteration and the advance on the lead scorer exactly matched.
+        if (other.docID() < doc) {
+          final int next = other.advance(doc);
+
+          if (next > doc) {
+            // iterator beyond the current doc - advance lead and continue to the new highest doc.
+            doc = lead1.advance(next);
+            continue advanceHead;
           }
         }
-
-        if (matches()) {
-          // success - all DocsEnums are on the same doc
-          return doc;
-        } else {
-          doc = lead.nextDoc();
-          break advanceHead;
-        }
       }
+
+      // success - all iterators are on the same doc
+      return doc;
     }
   }
 
   @Override
   public int advance(int target) throws IOException {
-    return doNext(lead.advance(target));
+    return doNext(lead1.advance(target));
   }
 
   @Override
   public int docID() {
-    return lead.docID();
+    return lead1.docID();
   }
 
   @Override
   public int nextDoc() throws IOException {
-    return doNext(lead.nextDoc());
+    return doNext(lead1.nextDoc());
   }
 
   @Override
   public long cost() {
-    return lead.cost(); // overestimate
+    return lead1.cost(); // overestimate
   }
 
   /**
-   * {@link TwoPhaseIterator} view of a {@link TwoPhase} conjunction.
+   * {@link TwoPhaseIterator} implementing a conjunction.
    */
-  private static class TwoPhaseConjunctionDISI extends TwoPhaseIterator {
+  private static final class ConjunctionTwoPhaseIterator extends TwoPhaseIterator {
 
     private final TwoPhaseIterator[] twoPhaseIterators;
     private final float matchCost;
 
-    private TwoPhaseConjunctionDISI(List<? extends DocIdSetIterator> iterators, List<TwoPhaseIterator> twoPhaseIterators) {
-      super(new ConjunctionDISI(iterators));
+    private ConjunctionTwoPhaseIterator(DocIdSetIterator approximation,
+        List<? extends TwoPhaseIterator> twoPhaseIterators) {
+      super(approximation);
       assert twoPhaseIterators.size() > 0;
 
       CollectionUtil.timSort(twoPhaseIterators, new Comparator<TwoPhaseIterator>() {
@@ -259,37 +262,4 @@ public class ConjunctionDISI extends DocIdSetIterator {
 
   }
 
-  /**
-   * A conjunction DISI built on top of approximations. This implementation
-   * verifies that documents actually match by consulting the provided
-   * {@link TwoPhaseIterator}s.
-   *
-   * Another important difference with {@link ConjunctionDISI} is that this
-   * implementation supports approximations too: the approximation of this
-   * impl is the conjunction of the approximations of the wrapped iterators.
-   * This allows eg. {@code +"A B" +C} to be approximated as
-   * {@code +(+A +B) +C}.
-   */
-  // NOTE: this is essentially the same as TwoPhaseDocIdSetIterator.asDocIdSetIterator
-  // but is its own impl in order to be able to expose a two-phase view
-  private static class TwoPhase extends ConjunctionDISI {
-
-    final TwoPhaseConjunctionDISI twoPhaseView;
-
-    private TwoPhase(List<? extends DocIdSetIterator> iterators, List<TwoPhaseIterator> twoPhaseIterators) {
-      super(iterators);
-      twoPhaseView = new TwoPhaseConjunctionDISI(iterators, twoPhaseIterators);
-    }
-
-    @Override
-    public TwoPhaseConjunctionDISI asTwoPhaseIterator() {
-      return twoPhaseView;
-    }
-
-    @Override
-    protected boolean matches() throws IOException {
-      return twoPhaseView.matches();
-    }
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java b/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
index 066f07c..ab1de92 100644
--- a/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
@@ -25,7 +25,7 @@ import java.util.List;
 /** Scorer for conjunctions, sets of queries, all of which are required. */
 class ConjunctionScorer extends Scorer {
 
-  final ConjunctionDISI disi;
+  final DocIdSetIterator disi;
   final Scorer[] scorers;
   final float coord;
 
@@ -44,7 +44,7 @@ class ConjunctionScorer extends Scorer {
 
   @Override
   public TwoPhaseIterator twoPhaseIterator() {
-    return disi.asTwoPhaseIterator();
+    return TwoPhaseIterator.unwrap(disi);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java b/lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java
index c3c8b71..f5ccc7c 100644
--- a/lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java
@@ -37,7 +37,7 @@ final class ExactPhraseScorer extends Scorer {
     }
   }
 
-  private final ConjunctionDISI conjunction;
+  private final DocIdSetIterator conjunction;
   private final PostingsAndPosition[] postings;
 
   private int freq;
@@ -60,6 +60,7 @@ final class ExactPhraseScorer extends Scorer {
       postingsAndPositions.add(new PostingsAndPosition(posting.postings, posting.position));
     }
     conjunction = ConjunctionDISI.intersectIterators(iterators);
+    assert TwoPhaseIterator.unwrap(conjunction) == null;
     this.postings = postingsAndPositions.toArray(new PostingsAndPosition[postingsAndPositions.size()]);
     this.matchCost = matchCost;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java b/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
index 2ee3e70..acc8282 100644
--- a/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
@@ -31,7 +31,7 @@ import org.apache.lucene.util.FixedBitSet;
 
 final class SloppyPhraseScorer extends Scorer {
 
-  private final ConjunctionDISI conjunction;
+  private final DocIdSetIterator conjunction;
   private final PhrasePositions[] phrasePositions;
 
   private float sloppyFreq; //phrase frequency in current doc as computed by phraseFreq().
@@ -70,6 +70,7 @@ final class SloppyPhraseScorer extends Scorer {
       phrasePositions[i] = new PhrasePositions(postings[i].postings, postings[i].position, i, postings[i].terms);
     }
     conjunction = ConjunctionDISI.intersectIterators(Arrays.asList(iterators));
+    assert TwoPhaseIterator.unwrap(conjunction) == null;
     this.matchCost = matchCost;
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/core/src/java/org/apache/lucene/search/TwoPhaseIterator.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/TwoPhaseIterator.java b/lucene/core/src/java/org/apache/lucene/search/TwoPhaseIterator.java
index 38176bf..ff472e7 100644
--- a/lucene/core/src/java/org/apache/lucene/search/TwoPhaseIterator.java
+++ b/lucene/core/src/java/org/apache/lucene/search/TwoPhaseIterator.java
@@ -41,40 +41,61 @@ public abstract class TwoPhaseIterator {
   /** Return a {@link DocIdSetIterator} view of the provided
    *  {@link TwoPhaseIterator}. */
   public static DocIdSetIterator asDocIdSetIterator(TwoPhaseIterator twoPhaseIterator) {
-    final DocIdSetIterator approximation = twoPhaseIterator.approximation();
-    return new DocIdSetIterator() {
-
-      @Override
-      public int docID() {
-        return approximation.docID();
-      }
-
-      @Override
-      public int nextDoc() throws IOException {
-        return doNext(approximation.nextDoc());
-      }
+    return new TwoPhaseIteratorAsDocIdSetIterator(twoPhaseIterator);
+  }
 
-      @Override
-      public int advance(int target) throws IOException {
-        return doNext(approximation.advance(target));
-      }
+  /**
+   * If the given {@link DocIdSetIterator} has been created with
+   * {@link #asDocIdSetIterator}, then this will return the wrapped
+   * {@link TwoPhaseIterator}. Otherwise this returns {@code null}.
+   */
+  public static TwoPhaseIterator unwrap(DocIdSetIterator iterator) {
+    if (iterator instanceof TwoPhaseIteratorAsDocIdSetIterator) {
+      return ((TwoPhaseIteratorAsDocIdSetIterator) iterator).twoPhaseIterator;
+    } else {
+      return null;
+    }
+  }
 
-      private int doNext(int doc) throws IOException {
-        for (;; doc = approximation.nextDoc()) {
-          if (doc == NO_MORE_DOCS) {
-            return NO_MORE_DOCS;
-          } else if (twoPhaseIterator.matches()) {
-            return doc;
-          }
+  private static class TwoPhaseIteratorAsDocIdSetIterator extends DocIdSetIterator {
+
+    final TwoPhaseIterator twoPhaseIterator;
+    final DocIdSetIterator approximation;
+
+    TwoPhaseIteratorAsDocIdSetIterator(TwoPhaseIterator twoPhaseIterator) {
+      this.twoPhaseIterator = twoPhaseIterator;
+      this.approximation = twoPhaseIterator.approximation;
+    }
+
+    @Override
+    public int docID() {
+      return approximation.docID();
+    }
+
+    @Override
+    public int nextDoc() throws IOException {
+      return doNext(approximation.nextDoc());
+    }
+
+    @Override
+    public int advance(int target) throws IOException {
+      return doNext(approximation.advance(target));
+    }
+
+    private int doNext(int doc) throws IOException {
+      for (;; doc = approximation.nextDoc()) {
+        if (doc == NO_MORE_DOCS) {
+          return NO_MORE_DOCS;
+        } else if (twoPhaseIterator.matches()) {
+          return doc;
         }
       }
+    }
 
-      @Override
-      public long cost() {
-        return approximation.cost();
-      }
-
-    };
+    @Override
+    public long cost() {
+      return approximation.cost();
+    }
   }
 
   /** Return an approximation. The returned {@link DocIdSetIterator} is a

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/72914198/lucene/core/src/test/org/apache/lucene/search/TestConjunctionDISI.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestConjunctionDISI.java b/lucene/core/src/test/org/apache/lucene/search/TestConjunctionDISI.java
index 269990d..dcb6664 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestConjunctionDISI.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestConjunctionDISI.java
@@ -181,7 +181,7 @@ public class TestConjunctionDISI extends LuceneTestCase {
         }
       }
 
-      final ConjunctionDISI conjunction = ConjunctionDISI.intersectScorers(Arrays.asList(iterators));
+      final DocIdSetIterator conjunction = ConjunctionDISI.intersectScorers(Arrays.asList(iterators));
       assertEquals(intersect(sets), toBitSet(maxDoc, conjunction));
     }
   }
@@ -211,8 +211,8 @@ public class TestConjunctionDISI extends LuceneTestCase {
         }
       }
 
-      final ConjunctionDISI conjunction = ConjunctionDISI.intersectScorers(Arrays.asList(iterators));
-      TwoPhaseIterator twoPhaseIterator = conjunction.asTwoPhaseIterator();
+      final DocIdSetIterator conjunction = ConjunctionDISI.intersectScorers(Arrays.asList(iterators));
+      TwoPhaseIterator twoPhaseIterator = TwoPhaseIterator.unwrap(conjunction);
       assertEquals(hasApproximation, twoPhaseIterator != null);
       if (hasApproximation) {
         assertEquals(intersect(sets), toBitSet(maxDoc, TwoPhaseIterator.asDocIdSetIterator(twoPhaseIterator)));
@@ -248,8 +248,8 @@ public class TestConjunctionDISI extends LuceneTestCase {
         if (conjunction == null) {
           conjunction = newIterator;
         } else {
-          final ConjunctionDISI conj = ConjunctionDISI.intersectScorers(Arrays.asList(conjunction, newIterator));
-          conjunction = scorer(conj, conj.asTwoPhaseIterator());
+          final DocIdSetIterator conj = ConjunctionDISI.intersectScorers(Arrays.asList(conjunction, newIterator));
+          conjunction = scorer(conj, TwoPhaseIterator.unwrap(conj));
         }
       }
 
@@ -309,7 +309,7 @@ public class TestConjunctionDISI extends LuceneTestCase {
       }
 
 
-      final ConjunctionDISI conjunction = ConjunctionDISI.intersectScorers(scorers);
+      final DocIdSetIterator conjunction = ConjunctionDISI.intersectScorers(scorers);
       assertEquals(intersect(sets), toBitSet(maxDoc, conjunction));
     }
   }