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/09/03 18:11:38 UTC

[2/2] lucene-solr:apiv2: Merge remote-tracking branch 'origin/apiv2' into apiv2

Merge remote-tracking branch 'origin/apiv2' into apiv2

Conflicts:
	solr/core/src/java/org/apache/solr/api/SpecProvider.java
	solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
	solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
	solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
	solr/solrj/src/java/org/apache/solr/common/util/PredicateWithErrMsg.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/92411981
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/92411981
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/92411981

Branch: refs/heads/apiv2
Commit: 92411981a82256d2add58e45e13f1065dad27ab4
Parents: baec970 327aaff
Author: Noble Paul <no...@apache.org>
Authored: Sat Sep 3 23:35:58 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Sat Sep 3 23:35:58 2016 +0530

----------------------------------------------------------------------
 build.xml                                       |   39 +-
 .../dot.settings/org.eclipse.jdt.core.prefs     |    3 +
 .../idea/.idea/copyright/profiles_settings.xml  |    1 -
 .../test-framework/lucene-test-framework.iml    |    1 +
 .../lucene/analysis/common/pom.xml.template     |   13 +
 dev-tools/maven/pom.xml.template                |    4 +-
 .../contrib/analysis-extras/pom.xml.template    |    7 +
 dev-tools/maven/solr/pom.xml.template           |    6 +-
 .../maven/solr/test-framework/pom.xml.template  |    5 +-
 dev-tools/scripts/addBackcompatIndexes.py       |   30 +-
 dev-tools/scripts/addVersion.py                 |   19 +-
 dev-tools/scripts/releasedJirasRegex.py         |   93 +
 dev-tools/scripts/scriptutil.py                 |    7 +-
 lucene/CHANGES.txt                              |  182 +-
 lucene/MIGRATE.txt                              |  103 +-
 lucene/analysis/common/build.xml                |   39 +-
 .../lucene/analysis/ar/ArabicAnalyzer.java      |   20 +-
 .../lucene/analysis/bg/BulgarianAnalyzer.java   |   17 +-
 .../lucene/analysis/br/BrazilianAnalyzer.java   |   17 +-
 .../lucene/analysis/ca/CatalanAnalyzer.java     |   18 +-
 .../charfilter/HTMLStripCharFilter.java         |    5 +-
 .../charfilter/HTMLStripCharFilter.jflex        |    1 +
 .../apache/lucene/analysis/cjk/CJKAnalyzer.java |   15 +-
 .../lucene/analysis/ckb/SoraniAnalyzer.java     |   23 +-
 .../analysis/commongrams/CommonGramsFilter.java |    4 +-
 .../commongrams/CommonGramsFilterFactory.java   |    3 +-
 .../compound/CompoundWordTokenFilterBase.java   |    8 +-
 .../DictionaryCompoundWordTokenFilter.java      |    2 +-
 ...ictionaryCompoundWordTokenFilterFactory.java |    8 +-
 .../HyphenationCompoundWordTokenFilter.java     |    7 +-
 ...phenationCompoundWordTokenFilterFactory.java |   11 +-
 .../lucene/analysis/core/LowerCaseFilter.java   |   50 -
 .../analysis/core/LowerCaseFilterFactory.java   |    2 +-
 .../lucene/analysis/core/SimpleAnalyzer.java    |    7 +
 .../lucene/analysis/core/StopAnalyzer.java      |   31 +-
 .../apache/lucene/analysis/core/StopFilter.java |  111 -
 .../lucene/analysis/core/StopFilterFactory.java |   11 +-
 .../lucene/analysis/core/TypeTokenFilter.java   |    2 +-
 .../lucene/analysis/core/UpperCaseFilter.java   |    3 +-
 .../lucene/analysis/custom/CustomAnalyzer.java  |   28 +-
 .../lucene/analysis/cz/CzechAnalyzer.java       |   25 +-
 .../lucene/analysis/da/DanishAnalyzer.java      |   19 +-
 .../lucene/analysis/de/GermanAnalyzer.java      |   20 +-
 .../lucene/analysis/el/GreekAnalyzer.java       |   13 +-
 .../apache/lucene/analysis/el/GreekStemmer.java |    2 +-
 .../lucene/analysis/en/EnglishAnalyzer.java     |   15 +-
 .../org/apache/lucene/analysis/en/KStemmer.java |    2 +-
 .../lucene/analysis/es/SpanishAnalyzer.java     |   19 +-
 .../lucene/analysis/eu/BasqueAnalyzer.java      |   17 +-
 .../lucene/analysis/fa/PersianAnalyzer.java     |   22 +-
 .../lucene/analysis/fi/FinnishAnalyzer.java     |   19 +-
 .../lucene/analysis/fr/FrenchAnalyzer.java      |   32 +-
 .../lucene/analysis/ga/IrishAnalyzer.java       |   16 +-
 .../lucene/analysis/gl/GalicianAnalyzer.java    |   19 +-
 .../lucene/analysis/hi/HindiAnalyzer.java       |   23 +-
 .../lucene/analysis/hu/HungarianAnalyzer.java   |   19 +-
 .../lucene/analysis/hunspell/Stemmer.java       |    2 +-
 .../lucene/analysis/hy/ArmenianAnalyzer.java    |   17 +-
 .../lucene/analysis/id/IndonesianAnalyzer.java  |   17 +-
 .../lucene/analysis/it/ItalianAnalyzer.java     |   20 +-
 .../lucene/analysis/lt/LithuanianAnalyzer.java  |   17 +-
 .../lucene/analysis/lv/LatvianAnalyzer.java     |   19 +-
 .../lucene/analysis/minhash/MinHashFilter.java  |    6 +-
 .../analysis/minhash/MinHashFilterFactory.java  |    5 +-
 .../miscellaneous/CapitalizationFilter.java     |    2 +-
 .../CapitalizationFilterFactory.java            |    8 +-
 .../miscellaneous/CodepointCountFilter.java     |    2 +-
 .../miscellaneous/DateRecognizerFilter.java     |    2 +-
 .../miscellaneous/FingerprintFilter.java        |    2 +-
 .../analysis/miscellaneous/KeepWordFilter.java  |    4 +-
 .../miscellaneous/KeepWordFilterFactory.java    |    8 +-
 .../KeywordMarkerFilterFactory.java             |    2 +-
 .../analysis/miscellaneous/LengthFilter.java    |    2 +-
 .../RemoveDuplicatesTokenFilter.java            |    2 +-
 .../ScandinavianFoldingFilterFactory.java       |   10 +-
 .../ScandinavianNormalizationFilterFactory.java |   10 +-
 .../miscellaneous/SetKeywordMarkerFilter.java   |    2 +-
 .../miscellaneous/WordDelimiterFilter.java      |   10 +-
 .../WordDelimiterFilterFactory.java             |   16 +-
 .../lucene/analysis/ngram/NGramTokenizer.java   |    2 +-
 .../lucene/analysis/nl/DutchAnalyzer.java       |   29 +-
 .../lucene/analysis/no/NorwegianAnalyzer.java   |   19 +-
 .../lucene/analysis/pt/PortugueseAnalyzer.java  |   19 +-
 .../lucene/analysis/pt/RSLPStemmerBase.java     |    2 +-
 .../query/QueryAutoStopWordAnalyzer.java        |    4 +-
 .../lucene/analysis/ro/RomanianAnalyzer.java    |   17 +-
 .../lucene/analysis/ru/RussianAnalyzer.java     |   23 +-
 .../analysis/snowball/SnowballFilter.java       |    4 +-
 .../snowball/SnowballPorterFilterFactory.java   |    6 +-
 .../analysis/standard/ASCIITLD.jflex-macro      |    2 +-
 .../analysis/standard/ClassicAnalyzer.java      |   15 +-
 .../analysis/standard/ClassicTokenizer.java     |    1 +
 .../standard/ClassicTokenizerImpl.jflex         |    1 +
 .../analysis/standard/StandardAnalyzer.java     |   98 -
 .../analysis/standard/StandardFilter.java       |   38 -
 .../analysis/standard/StandardTokenizer.java    |  201 -
 .../standard/StandardTokenizerImpl.java         |  818 ---
 .../standard/StandardTokenizerImpl.jflex        |  201 -
 .../standard/UAX29URLEmailAnalyzer.java         |   19 +-
 .../standard/UAX29URLEmailTokenizer.java        |    1 +
 .../standard/UAX29URLEmailTokenizerImpl.jflex   |    1 +
 .../lucene/analysis/standard/package-info.java  |   63 -
 .../lucene/analysis/standard/package.html       |   50 +
 .../lucene/analysis/sv/SwedishAnalyzer.java     |   19 +-
 .../analysis/synonym/SynonymFilterFactory.java  |    2 +-
 .../apache/lucene/analysis/th/ThaiAnalyzer.java |   15 +-
 .../lucene/analysis/tr/TurkishAnalyzer.java     |   15 +-
 .../analysis/util/AbstractAnalysisFactory.java  |    4 +-
 .../lucene/analysis/util/CharArrayMap.java      |  669 ---
 .../lucene/analysis/util/CharArraySet.java      |  193 -
 .../lucene/analysis/util/CharTokenizer.java     |   10 +-
 .../lucene/analysis/util/CharacterUtils.java    |  251 -
 .../lucene/analysis/util/ElisionFilter.java     |    2 +-
 .../analysis/util/ElisionFilterFactory.java     |    1 +
 .../analysis/util/FilteringTokenFilter.java     |   76 -
 .../analysis/util/StopwordAnalyzerBase.java     |  138 -
 .../lucene/analysis/util/UnicodeProps.java      |    4 +-
 .../lucene/analysis/util/WordlistLoader.java    |  244 -
 .../wikipedia/WikipediaTokenizerImpl.java       |    1 +
 .../wikipedia/WikipediaTokenizerImpl.jflex      |    1 +
 .../lucene/collation/CollationKeyAnalyzer.java  |    7 +
 .../apache/lucene/collation/package-info.java   |    2 +-
 .../lucene/analysis/ar/TestArabicAnalyzer.java  |    2 +-
 .../analysis/ar/TestArabicStemFilter.java       |    2 +-
 .../analysis/bg/TestBulgarianAnalyzer.java      |    2 +-
 .../analysis/bg/TestBulgarianStemmer.java       |    2 +-
 .../analysis/br/TestBrazilianAnalyzer.java      |    2 +-
 .../lucene/analysis/ca/TestCatalanAnalyzer.java |    2 +-
 .../lucene/analysis/cjk/TestCJKAnalyzer.java    |    4 +-
 .../lucene/analysis/ckb/TestSoraniAnalyzer.java |    2 +-
 .../commongrams/CommonGramsFilterTest.java      |    2 +-
 .../TestCommonGramsFilterFactory.java           |   10 +-
 .../TestCommonGramsQueryFilterFactory.java      |    7 +-
 .../compound/TestCompoundWordTokenFilter.java   |    2 +-
 .../core/TestAllAnalyzersHaveFactories.java     |    4 +
 .../lucene/analysis/core/TestAnalyzers.java     |    5 +
 .../analysis/core/TestBugInSomething.java       |    2 +-
 .../lucene/analysis/core/TestRandomChains.java  |   16 +-
 .../lucene/analysis/core/TestStopAnalyzer.java  |   14 +-
 .../lucene/analysis/core/TestStopFilter.java    |  176 -
 .../analysis/core/TestStopFilterFactory.java    |    2 +-
 .../analysis/custom/TestCustomAnalyzer.java     |  143 +
 .../lucene/analysis/cz/TestCzechAnalyzer.java   |    4 +-
 .../lucene/analysis/cz/TestCzechStemmer.java    |    2 +-
 .../lucene/analysis/da/TestDanishAnalyzer.java  |    2 +-
 .../lucene/analysis/de/TestGermanAnalyzer.java  |    2 +-
 .../analysis/de/TestGermanLightStemFilter.java  |    2 +-
 .../de/TestGermanMinimalStemFilter.java         |    2 +-
 .../analysis/de/TestGermanStemFilter.java       |    4 +-
 .../lucene/analysis/en/TestEnglishAnalyzer.java |    2 +-
 .../analysis/en/TestPorterStemFilter.java       |    8 +-
 .../lucene/analysis/es/TestSpanishAnalyzer.java |    2 +-
 .../lucene/analysis/eu/TestBasqueAnalyzer.java  |    2 +-
 .../lucene/analysis/fa/TestPersianAnalyzer.java |    2 +-
 .../lucene/analysis/fi/TestFinnishAnalyzer.java |    2 +-
 .../analysis/fi/TestFinnishLightStemFilter.java |    2 +-
 .../lucene/analysis/fr/TestFrenchAnalyzer.java  |    2 +-
 .../analysis/fr/TestFrenchLightStemFilter.java  |    2 +-
 .../fr/TestFrenchMinimalStemFilter.java         |    2 +-
 .../lucene/analysis/ga/TestIrishAnalyzer.java   |    2 +-
 .../analysis/gl/TestGalicianAnalyzer.java       |    2 +-
 .../gl/TestGalicianMinimalStemFilter.java       |    2 +-
 .../lucene/analysis/hi/TestHindiAnalyzer.java   |    2 +-
 .../analysis/hu/TestHungarianAnalyzer.java      |    2 +-
 .../hu/TestHungarianLightStemFilter.java        |    2 +-
 .../hunspell/TestHunspellStemFilter.java        |    2 +-
 .../analysis/hy/TestArmenianAnalyzer.java       |    2 +-
 .../analysis/id/TestIndonesianAnalyzer.java     |    2 +-
 .../lucene/analysis/it/TestItalianAnalyzer.java |    2 +-
 .../analysis/lt/TestLithuanianAnalyzer.java     |    2 +-
 .../lucene/analysis/lv/TestLatvianAnalyzer.java |    2 +-
 .../analysis/minhash/MinHashFilterTest.java     |    4 +-
 .../miscellaneous/TestCapitalizationFilter.java |    2 +-
 .../miscellaneous/TestKeepFilterFactory.java    |    4 +-
 .../miscellaneous/TestKeepWordFilter.java       |    2 +-
 .../miscellaneous/TestKeywordMarkerFilter.java  |    4 +-
 .../TestStemmerOverrideFilter.java              |    2 +-
 .../miscellaneous/TestWordDelimiterFilter.java  |   12 +-
 .../lucene/analysis/nl/TestDutchAnalyzer.java   |    6 +-
 .../analysis/no/TestNorwegianAnalyzer.java      |    2 +-
 .../no/TestNorwegianLightStemFilter.java        |    2 +-
 .../no/TestNorwegianMinimalStemFilter.java      |    2 +-
 .../analysis/pt/TestPortugueseAnalyzer.java     |    2 +-
 .../pt/TestPortugueseLightStemFilter.java       |    2 +-
 .../pt/TestPortugueseMinimalStemFilter.java     |    2 +-
 .../analysis/pt/TestPortugueseStemFilter.java   |    6 +-
 .../analysis/ro/TestRomanianAnalyzer.java       |    2 +-
 .../lucene/analysis/ru/TestRussianAnalyzer.java |    4 +-
 .../analysis/ru/TestRussianLightStemFilter.java |    2 +-
 .../shingle/ShingleAnalyzerWrapperTest.java     |    4 +-
 .../analysis/sinks/TestTeeSinkTokenFilter.java  |    4 +-
 .../analysis/standard/TestStandardAnalyzer.java |  390 --
 .../standard/WordBreakTestUnicode_6_3_0.java    | 5537 ------------------
 .../generateJavaUnicodeWordBreakTest.pl         |  232 -
 .../lucene/analysis/sv/TestSwedishAnalyzer.java |    2 +-
 .../analysis/sv/TestSwedishLightStemFilter.java |    2 +-
 .../lucene/analysis/th/TestThaiAnalyzer.java    |    2 +-
 .../lucene/analysis/tr/TestTurkishAnalyzer.java |    2 +-
 .../lucene/analysis/util/TestCharArrayMap.java  |  244 -
 .../lucene/analysis/util/TestCharArraySet.java  |  429 --
 .../analysis/util/TestCharacterUtils.java       |  107 -
 .../lucene/analysis/util/TestElision.java       |    2 +-
 .../util/TestFilesystemResourceLoader.java      |    2 +
 .../analysis/util/TestWordlistLoader.java       |   79 -
 .../tools/groovy/generate-unicode-data.groovy   |    4 +-
 .../icu/src/data/uax29/MyanmarSyllable.rbbi     |   50 +
 .../segmentation/DefaultICUTokenizerConfig.java |   14 +-
 .../analysis/icu/segmentation/ICUTokenizer.java |    2 +-
 .../icu/segmentation/ICUTokenizerFactory.java   |    6 +-
 lucene/analysis/icu/src/java/overview.html      |    2 +-
 .../icu/segmentation/MyanmarSyllable.brk        |  Bin 0 -> 19776 bytes
 .../icu/segmentation/TestICUTokenizer.java      |    6 +-
 .../icu/segmentation/TestICUTokenizerCJK.java   |    2 +-
 .../icu/segmentation/TestMyanmarSyllable.java   |  156 +
 .../segmentation/TestWithCJKBigramFilter.java   |    8 +-
 .../lucene/analysis/ja/JapaneseAnalyzer.java    |   15 +-
 .../analysis/ja/JapaneseNumberFilter.java       |    4 +-
 .../ja/JapanesePartOfSpeechStopFilter.java      |    4 +-
 .../JapanesePartOfSpeechStopFilterFactory.java  |    2 +-
 .../analysis/ja/TestJapaneseBaseFormFilter.java |    2 +-
 .../ja/TestJapaneseKatakanaStemFilter.java      |    6 +-
 .../analysis/ja/TestJapaneseNumberFilter.java   |    2 +-
 .../analysis/morfologik/MorfologikAnalyzer.java |    6 +
 .../analysis/morfologik/MorfologikFilter.java   |   12 +-
 .../uk/UkrainianMorfologikAnalyzer.java         |  153 +
 .../apache/lucene/analysis/uk/package-info.java |   21 +
 .../apache/lucene/analysis/uk/mapping_uk.txt    |   19 +
 .../org/apache/lucene/analysis/uk/stopwords.txt | 1269 ++++
 .../apache/lucene/analysis/uk/ukrainian.dict    |  Bin 0 -> 1989243 bytes
 .../apache/lucene/analysis/uk/ukrainian.info    |   10 +
 .../morfologik/TestMorfologikAnalyzer.java      |    2 +-
 .../analysis/uk/TestUkrainianAnalyzer.java      |   72 +
 .../analysis/cn/smart/SmartChineseAnalyzer.java |   12 +-
 .../lucene/analysis/pl/PolishAnalyzer.java      |   21 +-
 .../lucene/analysis/pl/TestPolishAnalyzer.java  |    2 +-
 .../index/TestBackwardsCompatibility.java       |   42 +-
 .../org/apache/lucene/index/index.6.0.0-cfs.zip |  Bin 13744 -> 15807 bytes
 .../apache/lucene/index/index.6.0.0-nocfs.zip   |  Bin 13749 -> 15806 bytes
 .../org/apache/lucene/index/index.6.0.1-cfs.zip |  Bin 13734 -> 15820 bytes
 .../apache/lucene/index/index.6.0.1-nocfs.zip   |  Bin 13735 -> 15823 bytes
 .../org/apache/lucene/index/index.6.1.0-cfs.zip |  Bin 0 -> 15803 bytes
 .../apache/lucene/index/index.6.1.0-nocfs.zip   |  Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.5.5.2-cfs.zip      |  Bin 0 -> 13712 bytes
 .../lucene/index/unsupported.5.5.2-nocfs.zip    |  Bin 0 -> 13720 bytes
 .../benchmark/byTask/tasks/CommitIndexTask.java |    2 +-
 .../benchmark/quality/TestQualityRun.java       |    3 -
 .../lucene/benchmark/quality/trecQRels.txt      |  428 +-
 lucene/build.xml                                |   15 +-
 .../BooleanPerceptronClassifier.java            |   20 +-
 .../CachingNaiveBayesClassifier.java            |   18 +-
 .../KNearestNeighborClassifier.java             |    9 +-
 .../SimpleNaiveBayesClassifier.java             |   24 +-
 .../KNearestNeighborDocumentClassifier.java     |   10 +-
 .../SimpleNaiveBayesDocumentClassifier.java     |   16 +-
 .../utils/ConfusionMatrixGenerator.java         |    8 +-
 .../classification/utils/DatasetSplitter.java   |   30 +-
 .../DocumentClassificationTestBase.java         |   11 +-
 .../KNearestNeighborDocumentClassifierTest.java |   40 +-
 .../SimpleNaiveBayesDocumentClassifierTest.java |   32 +-
 .../autoprefix/AutoPrefixPostingsFormat.java    |  125 -
 .../lucene/codecs/autoprefix/package-info.java  |   22 -
 .../simpletext/SimpleTextCompoundFormat.java    |    5 +-
 .../simpletext/SimpleTextPointsWriter.java      |   16 +-
 .../org.apache.lucene.codecs.PostingsFormat     |    1 -
 .../TestAutoPrefixPostingsFormat.java           |   38 -
 .../codecs/autoprefix/TestAutoPrefixTerms.java  |  941 ---
 lucene/common-build.xml                         |   48 +-
 lucene/core/build.xml                           |   18 +-
 .../org/apache/lucene/analysis/Analyzer.java    |  135 +-
 .../apache/lucene/analysis/CharArrayMap.java    |  669 +++
 .../apache/lucene/analysis/CharArraySet.java    |  196 +
 .../apache/lucene/analysis/CharacterUtils.java  |  251 +
 .../lucene/analysis/FilteringTokenFilter.java   |   76 +
 .../apache/lucene/analysis/LowerCaseFilter.java |   50 +
 .../org/apache/lucene/analysis/StopFilter.java  |  111 +
 .../lucene/analysis/StopwordAnalyzerBase.java   |  138 +
 .../apache/lucene/analysis/WordlistLoader.java  |  244 +
 .../apache/lucene/analysis/package-info.java    |    2 +-
 .../analysis/standard/StandardAnalyzer.java     |  122 +
 .../analysis/standard/StandardFilter.java       |   39 +
 .../analysis/standard/StandardTokenizer.java    |  214 +
 .../standard/StandardTokenizerImpl.java         |  823 +++
 .../standard/StandardTokenizerImpl.jflex        |  207 +
 .../lucene/analysis/standard/package-info.java  |   33 +
 .../apache/lucene/codecs/BlockTermState.java    |   14 +-
 .../lucene/codecs/MutablePointsReader.java      |   39 +
 .../codecs/blocktree/AutoPrefixTermsWriter.java |  438 --
 .../codecs/blocktree/BlockTreeTermsReader.java  |   11 +-
 .../codecs/blocktree/BlockTreeTermsWriter.java  |  222 +-
 .../codecs/blocktree/IntersectTermsEnum.java    |    2 -
 .../codecs/lucene50/Lucene50CompoundReader.java |    7 +-
 .../codecs/lucene60/Lucene60PointsWriter.java   |    9 +
 .../org/apache/lucene/document/BinaryPoint.java |    2 +-
 .../lucene/document/CompressionTools.java       |  150 -
 .../org/apache/lucene/document/FieldType.java   |    2 +-
 .../lucene/document/SortedDocValuesField.java   |    4 +-
 .../document/SortedSetDocValuesField.java       |    2 +
 .../java/org/apache/lucene/geo/GeoUtils.java    |   43 +-
 .../src/java/org/apache/lucene/geo/Polygon.java |   13 +-
 .../java/org/apache/lucene/geo/Rectangle.java   |    4 +-
 .../lucene/geo/SimpleGeoJSONPolygonParser.java  |  440 ++
 .../apache/lucene/index/DocumentsWriter.java    |   15 +-
 .../index/DocumentsWriterFlushControl.java      |   27 +-
 .../index/DocumentsWriterStallControl.java      |   26 +-
 .../org/apache/lucene/index/IndexCommit.java    |    2 +-
 .../org/apache/lucene/index/IndexUpgrader.java  |    2 +-
 .../org/apache/lucene/index/IndexWriter.java    |   74 +-
 .../apache/lucene/index/IndexWriterConfig.java  |   17 +-
 .../apache/lucene/index/MergeReaderWrapper.java |    4 +-
 .../apache/lucene/index/PointValuesWriter.java  |  160 +-
 .../org/apache/lucene/index/SegmentInfos.java   |   35 +-
 .../apache/lucene/index/SortingLeafReader.java  |    4 +-
 .../org/apache/lucene/index/TermContext.java    |   12 -
 .../java/org/apache/lucene/index/TermState.java |    6 -
 .../apache/lucene/search/BlendedTermQuery.java  |    6 +-
 .../org/apache/lucene/search/BooleanQuery.java  |   44 +-
 .../org/apache/lucene/search/BooleanScorer.java |   36 +-
 .../lucene/search/BooleanTopLevelScorers.java   |  182 -
 .../org/apache/lucene/search/BooleanWeight.java |  180 +-
 .../org/apache/lucene/search/BoostQuery.java    |   44 +-
 .../apache/lucene/search/ConjunctionDISI.java   |  124 +-
 .../apache/lucene/search/ConjunctionScorer.java |   10 +-
 .../lucene/search/ConstantScoreQuery.java       |    6 +-
 .../lucene/search/ConstantScoreWeight.java      |   35 +-
 .../lucene/search/DisjunctionMaxQuery.java      |   29 +-
 .../lucene/search/DisjunctionSumScorer.java     |   11 +-
 .../lucene/search/DocValuesRewriteMethod.java   |    4 +-
 .../org/apache/lucene/search/Explanation.java   |   33 +-
 .../apache/lucene/search/FieldValueQuery.java   |    4 +-
 .../org/apache/lucene/search/FilterWeight.java  |   73 +
 .../org/apache/lucene/search/IndexSearcher.java |   27 +-
 .../org/apache/lucene/search/LRUQueryCache.java |   36 +-
 .../lucene/search/LeafFieldComparator.java      |    7 +-
 .../apache/lucene/search/MatchAllDocsQuery.java |    4 +-
 .../apache/lucene/search/MatchNoDocsQuery.java  |   42 +-
 .../lucene/search/MinShouldMatchSumScorer.java  |    6 +-
 .../apache/lucene/search/MultiPhraseQuery.java  |   20 +-
 .../apache/lucene/search/MultiTermQuery.java    |    8 +-
 .../MultiTermQueryConstantScoreWrapper.java     |   11 +-
 .../org/apache/lucene/search/PhraseQuery.java   |   20 +-
 .../apache/lucene/search/PointInSetQuery.java   |    4 +-
 .../apache/lucene/search/PointRangeQuery.java   |    4 +-
 .../java/org/apache/lucene/search/Query.java    |    3 +-
 .../lucene/search/RandomAccessWeight.java       |    4 +-
 .../apache/lucene/search/ScoringRewrite.java    |    6 +-
 .../org/apache/lucene/search/SynonymQuery.java  |   20 +-
 .../org/apache/lucene/search/TermQuery.java     |   86 +-
 .../java/org/apache/lucene/search/Weight.java   |   15 +-
 .../org/apache/lucene/search/package-info.java  |   29 +-
 .../search/similarities/BM25Similarity.java     |   25 +-
 .../lucene/search/similarities/BasicStats.java  |   35 +-
 .../search/similarities/ClassicSimilarity.java  |   12 -
 .../search/similarities/LMSimilarity.java       |    8 +-
 .../search/similarities/MultiSimilarity.java    |   20 +-
 .../similarities/PerFieldSimilarityWrapper.java |   14 +-
 .../lucene/search/similarities/Similarity.java  |   64 +-
 .../search/similarities/SimilarityBase.java     |    8 +-
 .../search/similarities/TFIDFSimilarity.java    |  168 +-
 .../search/spans/FieldMaskingSpanQuery.java     |    4 +-
 .../search/spans/ScoringWrapperSpans.java       |   95 -
 .../lucene/search/spans/SpanBoostQuery.java     |   54 +-
 .../lucene/search/spans/SpanContainQuery.java   |    4 +-
 .../search/spans/SpanContainingQuery.java       |   12 +-
 .../search/spans/SpanMultiTermQueryWrapper.java |    2 +-
 .../lucene/search/spans/SpanNearQuery.java      |   18 +-
 .../lucene/search/spans/SpanNotQuery.java       |   14 +-
 .../apache/lucene/search/spans/SpanOrQuery.java |   12 +-
 .../search/spans/SpanPositionCheckQuery.java    |   10 +-
 .../apache/lucene/search/spans/SpanQuery.java   |    2 +-
 .../apache/lucene/search/spans/SpanScorer.java  |   10 +-
 .../lucene/search/spans/SpanTermQuery.java      |    8 +-
 .../apache/lucene/search/spans/SpanWeight.java  |   20 +-
 .../lucene/search/spans/SpanWithinQuery.java    |   12 +-
 .../lucene/store/ByteArrayIndexInput.java       |    4 +-
 .../java/org/apache/lucene/store/Directory.java |    8 +-
 .../org/apache/lucene/store/FSDirectory.java    |   15 +-
 .../lucene/store/FileSwitchDirectory.java       |   10 +-
 .../apache/lucene/store/FilterDirectory.java    |    9 +-
 .../store/LockValidatingDirectoryWrapper.java   |   10 +-
 .../lucene/store/NRTCachingDirectory.java       |    4 +-
 .../org/apache/lucene/store/RAMDirectory.java   |   22 +-
 .../lucene/store/TrackingDirectoryWrapper.java  |    4 +-
 .../java/org/apache/lucene/util/ArrayUtil.java  |   71 +-
 .../org/apache/lucene/util/BitSetIterator.java  |   10 +
 .../org/apache/lucene/util/ByteBlockPool.java   |    8 +
 .../org/apache/lucene/util/IntroSelector.java   |  126 +
 .../org/apache/lucene/util/IntroSorter.java     |    7 +-
 .../org/apache/lucene/util/QueryBuilder.java    |    1 -
 .../org/apache/lucene/util/RadixSelector.java   |  202 +
 .../java/org/apache/lucene/util/Selector.java   |   41 +
 .../java/org/apache/lucene/util/SloppyMath.java |   20 +-
 .../org/apache/lucene/util/bkd/BKDReader.java   |   83 +-
 .../org/apache/lucene/util/bkd/BKDWriter.java   |  638 +-
 .../apache/lucene/util/bkd/DocIdsWriter.java    |  170 +
 .../util/bkd/MutablePointsReaderUtils.java      |  185 +
 .../org/apache/lucene/util/packed/Direct16.java |    2 +-
 .../org/apache/lucene/util/packed/Direct32.java |    2 +-
 .../org/apache/lucene/util/packed/Direct64.java |    2 +-
 .../org/apache/lucene/util/packed/Direct8.java  |    2 +-
 .../lucene/util/packed/Packed16ThreeBlocks.java |    2 +-
 .../lucene/util/packed/Packed64SingleBlock.java |    2 +-
 .../lucene/util/packed/Packed8ThreeBlocks.java  |    2 +-
 lucene/core/src/java/overview.html              |    2 +-
 .../lucene/analysis/TestCharArrayMap.java       |  244 +
 .../lucene/analysis/TestCharArraySet.java       |  430 ++
 .../lucene/analysis/TestCharacterUtils.java     |  107 +
 .../apache/lucene/analysis/TestStopFilter.java  |  139 +
 .../lucene/analysis/TestWordlistLoader.java     |   79 +
 .../analysis/standard/TestStandardAnalyzer.java |  396 ++
 .../lucene62/TestLucene62SegmentInfoFormat.java |    4 +-
 .../lucene/document/TestBinaryDocument.java     |   29 -
 .../test/org/apache/lucene/geo/TestPolygon.java |  241 +
 .../index/TestAllFilesCheckIndexHeader.java     |    6 -
 .../index/TestConcurrentMergeScheduler.java     |    3 -
 .../test/org/apache/lucene/index/TestCrash.java |    1 -
 .../apache/lucene/index/TestCustomNorms.java    |   12 +-
 .../apache/lucene/index/TestDeletionPolicy.java |    4 +-
 .../lucene/index/TestDirectoryReaderReopen.java |    4 +-
 .../index/TestDocumentsWriterStallControl.java  |    6 +-
 .../lucene/index/TestIndexFileDeleter.java      |    3 -
 .../apache/lucene/index/TestIndexSorting.java   |    8 +-
 .../apache/lucene/index/TestIndexWriter.java    |   43 +-
 .../lucene/index/TestIndexWriterCommit.java     |   57 +-
 .../lucene/index/TestIndexWriterDelete.java     |    1 -
 .../index/TestIndexWriterExceptions2.java       |    1 -
 .../lucene/index/TestIndexWriterFromReader.java |    9 -
 .../lucene/index/TestIndexWriterMerging.java    |    5 -
 .../lucene/index/TestIndexWriterOnDiskFull.java |    1 -
 .../TestIndexWriterOutOfFileDescriptors.java    |    1 -
 .../index/TestIndexWriterWithThreads.java       |    3 -
 .../lucene/index/TestMaxTermFrequency.java      |    2 -
 .../lucene/index/TestNRTReaderCleanup.java      |    3 -
 .../test/org/apache/lucene/index/TestNorms.java |   15 +-
 .../org/apache/lucene/index/TestOmitTf.java     |    4 -
 .../apache/lucene/index/TestPointValues.java    |    3 +-
 .../lucene/index/TestTransactionRollback.java   |    4 +-
 .../apache/lucene/index/TestTransactions.java   |    2 -
 .../lucene/index/TestUniqueTermCount.java       |    2 +-
 .../apache/lucene/search/JustCompileSearch.java |   12 +-
 .../org/apache/lucene/search/TestBoolean2.java  |   65 +-
 .../apache/lucene/search/TestBooleanCoord.java  |  860 ---
 .../search/TestBooleanMinShouldMatch.java       |   58 +-
 .../org/apache/lucene/search/TestBooleanOr.java |    2 +-
 .../apache/lucene/search/TestBooleanQuery.java  |   37 +-
 .../search/TestBooleanQueryVisitSubscorers.java |    5 +-
 .../lucene/search/TestBooleanRewrites.java      |   14 -
 .../apache/lucene/search/TestBooleanScorer.java |   26 +-
 .../apache/lucene/search/TestBoostQuery.java    |    4 +-
 .../lucene/search/TestComplexExplanations.java  |   17 +-
 .../lucene/search/TestConjunctionDISI.java      |   98 +-
 .../apache/lucene/search/TestConjunctions.java  |   13 +-
 .../lucene/search/TestConstantScoreQuery.java   |   13 +-
 .../TestControlledRealTimeReopenThread.java     |   15 +
 .../lucene/search/TestDocValuesScoring.java     |   14 +-
 .../apache/lucene/search/TestFilterWeight.java  |   67 +
 .../apache/lucene/search/TestLRUQueryCache.java |   35 +-
 .../lucene/search/TestMatchNoDocsQuery.java     |   50 +-
 .../lucene/search/TestMinShouldMatch2.java      |   13 +-
 .../lucene/search/TestMultiPhraseQuery.java     |   27 -
 .../search/TestMultiTermConstantScore.java      |   74 -
 .../search/TestMultiTermQueryRewrites.java      |   12 +-
 .../apache/lucene/search/TestNeedsScores.java   |   14 +-
 .../lucene/search/TestPositionIncrement.java    |    4 +-
 .../search/TestPositiveScoresOnlyCollector.java |    2 +-
 .../apache/lucene/search/TestQueryRescorer.java |   11 +-
 .../search/TestScoreCachingWrappingScorer.java  |    2 +-
 .../apache/lucene/search/TestScorerPerf.java    |    5 +-
 .../apache/lucene/search/TestSimilarity.java    |    4 -
 .../lucene/search/TestSimilarityProvider.java   |   20 -
 .../lucene/search/TestSimpleExplanations.java   |   43 +-
 .../apache/lucene/search/TestSortRandom.java    |    4 +-
 .../org/apache/lucene/search/TestTermQuery.java |  154 +
 .../org/apache/lucene/search/TestWildcard.java  |    3 +-
 .../search/similarities/TestSimilarity2.java    |    5 -
 .../search/similarities/TestSimilarityBase.java |    8 +-
 .../search/spans/JustCompileSearchSpans.java    |    2 +-
 .../search/spans/TestFieldMaskingSpanQuery.java |   14 +-
 .../search/spans/TestNearSpansOrdered.java      |   26 +-
 .../lucene/search/spans/TestSpanCollection.java |    6 +-
 .../search/spans/TestSpanContainQuery.java      |    2 +-
 .../apache/lucene/search/spans/TestSpans.java   |   10 +-
 .../store/TestTrackingDirectoryWrapper.java     |    2 +-
 .../apache/lucene/util/TestByteBlockPool.java   |    8 +-
 .../apache/lucene/util/TestIntroSelector.java   |   86 +
 .../apache/lucene/util/TestOfflineSorter.java   |   13 -
 .../apache/lucene/util/TestQueryBuilder.java    |   43 +-
 .../apache/lucene/util/TestRadixSelector.java   |   77 +
 .../org/apache/lucene/util/bkd/TestBKD.java     |   35 +-
 .../lucene/util/bkd/TestDocIdsWriter.java       |  101 +
 .../util/bkd/TestMutablePointsReaderUtils.java  |  251 +
 .../org/apache/lucene/util/fst/TestFSTs.java    |    1 -
 .../demo/facet/DistanceFacetsExample.java       |   27 +-
 .../org/apache/lucene/facet/DrillDownQuery.java |    1 -
 .../apache/lucene/facet/DrillSidewaysQuery.java |   14 +-
 .../apache/lucene/facet/range/DoubleRange.java  |    6 +-
 .../apache/lucene/facet/range/LongRange.java    |    6 +-
 .../lucene/facet/taxonomy/TaxonomyReader.java   |    2 +-
 .../lucene/facet/taxonomy/TaxonomyWriter.java   |   16 +-
 .../directory/DirectoryTaxonomyWriter.java      |   40 +-
 .../apache/lucene/facet/TestDrillSideways.java  |    5 +-
 .../facet/range/TestRangeFacetCounts.java       |   14 +-
 .../taxonomy/directory/TestAddTaxonomy.java     |    4 +-
 .../directory/TestDirectoryTaxonomyWriter.java  |   20 +-
 .../lucene/search/grouping/SearchGroup.java     |    8 +-
 .../highlight/WeightedSpanTermExtractor.java    |    4 +-
 .../search/vectorhighlight/FieldQuery.java      |    6 +
 .../search/vectorhighlight/FieldQueryTest.java  |   14 +
 lucene/ivy-versions.properties                  |   38 +-
 .../lucene/search/join/GlobalOrdinalsQuery.java |    8 +-
 .../join/GlobalOrdinalsWithScoreQuery.java      |   25 +-
 .../org/apache/lucene/search/join/JoinUtil.java |    4 +-
 .../join/PointInSetIncludingScoreQuery.java     |   47 +-
 .../search/join/TermsIncludingScoreQuery.java   |   13 +-
 .../search/join/ToChildBlockJoinQuery.java      |   33 +-
 .../search/join/ToParentBlockJoinQuery.java     |   33 +-
 .../lucene/search/join/TestBlockJoin.java       |    4 +-
 .../apache/lucene/search/join/TestJoinUtil.java |   13 +-
 lucene/licenses/commons-compress-1.11.jar.sha1  |    1 +
 lucene/licenses/commons-compress-1.8.1.jar.sha1 |    1 -
 .../apache/lucene/index/memory/MemoryIndex.java |   51 +-
 .../lucene/index/memory/TestMemoryIndex.java    |   36 +
 .../store/HardlinkCopyDirectoryWrapper.java     |    4 +-
 .../search/TestDiversifiedTopDocsCollector.java |    4 +-
 .../store/TestHardLinkCopyDirectoryWrapper.java |    4 +-
 .../apache/lucene/util/fst/TestFSTsMisc.java    |    1 -
 .../apache/lucene/queries/BoostingQuery.java    |   18 +-
 .../apache/lucene/queries/CommonTermsQuery.java |   49 +-
 .../apache/lucene/queries/CustomScoreQuery.java |   82 +-
 .../org/apache/lucene/queries/TermsQuery.java   |    7 +-
 .../lucene/queries/function/BoostedQuery.java   |   18 +-
 .../lucene/queries/function/FunctionQuery.java  |   37 +-
 .../queries/function/FunctionRangeQuery.java    |   13 +-
 .../valuesource/ComparisonBoolFunction.java     |  105 +
 .../lucene/queries/mlt/MoreLikeThisQuery.java   |    1 -
 .../queries/payloads/PayloadScoreQuery.java     |   20 +-
 .../queries/payloads/SpanPayloadCheckQuery.java |   10 +-
 .../lucene/queries/BoostingQueryTest.java       |    4 +-
 .../lucene/queries/CommonTermsQueryTest.java    |   10 +-
 .../queries/TestCustomScoreExplanations.java    |   12 +-
 .../lucene/queries/TestCustomScoreQuery.java    |    4 -
 .../function/TestLongNormValueSource.java       |   12 -
 .../queries/payloads/TestPayloadScoreQuery.java |   10 -
 .../queries/payloads/TestPayloadSpans.java      |   30 +-
 .../queries/payloads/TestPayloadTermQuery.java  |   14 +-
 .../analyzing/AnalyzingQueryParser.java         |  202 -
 .../queryparser/analyzing/package-info.java     |   22 -
 .../lucene/queryparser/classic/CharStream.java  |    2 +-
 .../classic/MultiFieldQueryParser.java          |   52 +-
 .../queryparser/classic/ParseException.java     |    2 +-
 .../lucene/queryparser/classic/QueryParser.java |  399 +-
 .../lucene/queryparser/classic/QueryParser.jj   |  265 +-
 .../queryparser/classic/QueryParserBase.java    |  179 +-
 .../classic/QueryParserTokenManager.java        |   27 +-
 .../lucene/queryparser/classic/Token.java       |    2 +-
 .../queryparser/classic/TokenMgrError.java      |    2 +-
 .../complexPhrase/ComplexPhraseQueryParser.java |   24 +-
 .../CommonQueryParserConfiguration.java         |   12 -
 .../flexible/standard/StandardQueryParser.java  |   30 -
 .../StandardBooleanQueryNodeBuilder.java        |  109 -
 .../builders/StandardQueryTreeBuilder.java      |    6 +-
 .../builders/SynonymQueryNodeBuilder.java       |   48 +
 .../config/StandardQueryConfigHandler.java      |    9 -
 .../nodes/StandardBooleanQueryNode.java         |   49 -
 .../standard/nodes/SynonymQueryNode.java        |   30 +
 .../processors/AnalyzerQueryNodeProcessor.java  |    8 +-
 .../processors/FuzzyQueryNodeProcessor.java     |   11 +-
 ...owercaseExpandedTermsQueryNodeProcessor.java |  100 -
 .../processors/RegexpQueryNodeProcessor.java    |   56 +
 .../StandardQueryNodeProcessorPipeline.java     |    4 +-
 .../processors/TermRangeQueryNodeProcessor.java |   11 +-
 .../processors/WildcardQueryNodeProcessor.java  |   58 +-
 .../queryparser/simple/SimpleQueryParser.java   |   16 +-
 .../lucene/queryparser/xml/CoreParser.java      |    2 +
 .../xml/builders/BooleanQueryBuilder.java       |    1 -
 .../xml/builders/TermsQueryBuilder.java         |    1 -
 .../analyzing/TestAnalyzingQueryParser.java     |  268 -
 .../classic/TestMultiFieldQueryParser.java      |    1 -
 .../queryparser/classic/TestQueryParser.java    |  485 +-
 .../ext/TestExtendableQueryParser.java          |    1 +
 .../precedence/TestPrecedenceQueryParser.java   |   61 +-
 .../standard/TestMultiFieldQPHelper.java        |   24 +-
 .../flexible/standard/TestQPHelper.java         |   93 +-
 .../flexible/standard/TestStandardQP.java       |   27 +-
 .../simple/TestSimpleQueryParser.java           |    3 -
 .../queryparser/util/QueryParserTestBase.java   |  149 +-
 .../IndexAndTaxonomyReplicationHandler.java     |    6 +-
 .../replicator/IndexReplicationHandler.java     |    3 +-
 .../apache/lucene/replicator/nrt/CopyJob.java   |    4 +-
 .../lucene/replicator/nrt/CopyOneFile.java      |    4 +-
 .../apache/lucene/replicator/nrt/CopyState.java |    4 +-
 .../lucene/replicator/nrt/FileMetaData.java     |    4 +-
 .../org/apache/lucene/replicator/nrt/Node.java  |   23 +-
 .../nrt/NodeCommunicationException.java         |    4 +-
 .../nrt/PreCopyMergedSegmentWarmer.java         |    4 +-
 .../lucene/replicator/nrt/PrimaryNode.java      |   35 +-
 .../replicator/nrt/ReplicaFileDeleter.java      |    4 +-
 .../lucene/replicator/nrt/ReplicaNode.java      |    8 +-
 .../nrt/SegmentInfosSearcherManager.java        |    4 +-
 .../IndexAndTaxonomyReplicationClientTest.java  |   16 +-
 .../replicator/IndexReplicationClientTest.java  |   15 +-
 .../lucene/replicator/LocalReplicatorTest.java  |    4 +-
 .../replicator/http/HttpReplicatorTest.java     |    2 +-
 .../lucene/replicator/nrt/Connection.java       |    4 +-
 .../org/apache/lucene/replicator/nrt/Jobs.java  |    4 +-
 .../lucene/replicator/nrt/NodeProcess.java      |    4 +-
 .../lucene/replicator/nrt/SimpleCopyJob.java    |    6 +-
 .../replicator/nrt/SimplePrimaryNode.java       |    4 +-
 .../replicator/nrt/SimpleReplicaNode.java       |    4 +-
 .../lucene/replicator/nrt/SimpleServer.java     |    4 +-
 .../lucene/replicator/nrt/SimpleTransLog.java   |    4 +-
 .../replicator/nrt/TestNRTReplication.java      |   15 +-
 .../nrt/TestStressNRTReplication.java           |    4 +-
 .../lucene/replicator/nrt/ThreadPumper.java     |    4 +-
 .../lucene/document/DoubleRangeField.java       |  262 +
 .../org/apache/lucene/document/LatLonPoint.java |    5 +-
 .../document/LatLonPointDistanceQuery.java      |   39 +-
 .../document/LatLonPointInPolygonQuery.java     |    4 +-
 .../apache/lucene/document/RangeFieldQuery.java |  315 +
 .../sandbox/queries/FuzzyLikeThisQuery.java     |    1 -
 .../lucene/search/DocValuesNumbersQuery.java    |    4 +-
 .../lucene/search/DocValuesRangeQuery.java      |    4 +-
 .../lucene/search/DocValuesTermsQuery.java      |    4 +-
 .../lucene/search/TermAutomatonQuery.java       |   18 +-
 .../lucene/document/TestDoubleRangeField.java   |   67 +
 .../sandbox/queries/FuzzyLikeThisQueryTest.java |    8 +-
 .../sandbox/queries/TestSlowFuzzyQuery2.java    |  184 -
 .../lucene/sandbox/queries/fuzzyTestData.txt    | 3721 ------------
 .../search/BaseRangeFieldQueryTestCase.java     |  427 ++
 .../search/TestDoubleRangeFieldQueries.java     |  106 +
 .../lucene/search/TestTermAutomatonQuery.java   |    4 +-
 .../spatial/composite/CompositeVerifyQuery.java |    6 +-
 .../composite/IntersectsRPTVerifyQuery.java     |    4 +-
 .../spatial/prefix/AbstractPrefixTreeQuery.java |    4 +-
 .../serialized/SerializedDVStrategy.java        |    4 +-
 .../geopoint/document/GeoPointTokenStream.java  |   14 +-
 .../geopoint/search/GeoPointDistanceQuery.java  |   15 +-
 .../search/GeoPointDistanceQueryImpl.java       |   63 +-
 .../search/GeoPointInBBoxQueryImpl.java         |   32 +-
 .../search/GeoPointInPolygonQueryImpl.java      |   14 +-
 .../geopoint/search/GeoPointMultiTermQuery.java |   49 +-
 .../GeoPointTermQueryConstantScoreWrapper.java  |    4 +-
 .../geopoint/search/GeoPointTermsEnum.java      |  212 +-
 .../lucene/spatial/util/TestGeoPointField.java  |    4 +-
 .../spatial3d/PointInGeo3DShapeQuery.java       |    4 +-
 .../lucene/spatial3d/geom/GeoStandardPath.java  |   35 +-
 .../apache/lucene/spatial3d/geom/XYZBounds.java |    2 +-
 .../lucene/spatial3d/geom/GeoPathTest.java      |   37 +-
 .../suggest/analyzing/SuggestStopFilter.java    |    4 +-
 .../analyzing/SuggestStopFilterFactory.java     |   10 +-
 .../suggest/document/CompletionWeight.java      |    8 -
 .../search/suggest/document/ContextQuery.java   |    4 +-
 .../suggest/document/FuzzyCompletionQuery.java  |    2 +-
 .../suggest/document/PrefixCompletionQuery.java |    2 +-
 .../suggest/document/RegexCompletionQuery.java  |    2 +-
 .../suggest/document/SuggestIndexSearcher.java  |    2 +-
 .../analyzing/AnalyzingInfixSuggesterTest.java  |    4 +-
 .../analyzing/BlendedInfixSuggesterTest.java    |    2 +-
 .../analyzing/TestFreeTextSuggester.java        |    6 +-
 .../analyzing/TestSuggestStopFilter.java        |    4 +-
 .../analyzing/TestSuggestStopFilterFactory.java |    2 +-
 .../analysis/BaseTokenStreamTestCase.java       |    5 +-
 .../apache/lucene/analysis/MockAnalyzer.java    |   11 +-
 .../lucene/analysis/MockBytesAnalyzer.java      |    7 +
 .../lucene/analysis/MockLowerCaseFilter.java    |   40 +
 .../lucene/analysis/MockSynonymAnalyzer.java    |   28 +
 .../lucene/analysis/MockSynonymFilter.java      |   97 +
 .../standard/WordBreakTestUnicode_6_3_0.java    | 5537 ++++++++++++++++++
 .../generateJavaUnicodeWordBreakTest.pl         |  232 +
 .../lucene/analysis/standard/package.html       |   26 +
 .../codecs/asserting/AssertingPointsFormat.java |    1 +
 .../org/apache/lucene/geo/EarthDebugger.java    |    8 +-
 .../java/org/apache/lucene/geo/GeoTestUtil.java |    8 +-
 .../index/BaseCompoundFormatTestCase.java       |    2 +-
 .../index/BaseIndexFileFormatTestCase.java      |    1 -
 .../lucene/index/BaseNormsFormatTestCase.java   |    2 +-
 .../lucene/index/BasePointsFormatTestCase.java  |   29 +
 .../apache/lucene/mockfile/VirusCheckingFS.java |    4 +-
 .../lucene/search/AssertingIndexSearcher.java   |   23 +-
 .../apache/lucene/search/AssertingQuery.java    |    4 +-
 .../apache/lucene/search/AssertingWeight.java   |   29 +-
 .../lucene/search/BaseExplanationTestCase.java  |    6 +-
 .../org/apache/lucene/search/CheckHits.java     |    6 +-
 .../lucene/search/RandomApproximationQuery.java |   35 +-
 .../search/similarities/RandomSimilarity.java   |   32 +-
 .../lucene/search/spans/AssertingSpanQuery.java |    4 +-
 .../search/spans/AssertingSpanWeight.java       |   12 +-
 .../lucene/store/BaseDirectoryTestCase.java     |   56 +-
 .../lucene/store/MockDirectoryWrapper.java      |  136 +-
 .../lucene/analysis/TestMockSynonymFilter.java  |  151 +
 .../lucene/mockfile/TestVirusCheckingFS.java    |    4 +-
 .../search/TestBaseExplanationTestCase.java     |   24 +-
 .../lucene/store/TestMockDirectoryWrapper.java  |   82 +-
 lucene/tools/forbiddenApis/lucene.txt           |    3 +
 .../dependencies/GetMavenDependenciesTask.java  |    2 +-
 solr/CHANGES.txt                                |  376 +-
 solr/NOTICE.txt                                 |    3 +
 solr/bin/solr                                   |  254 +-
 solr/bin/solr.cmd                               |  280 +-
 solr/build.xml                                  |    8 +-
 solr/common-build.xml                           |    9 +-
 solr/contrib/analysis-extras/build.xml          |   10 +
 .../apache/solr/schema/ICUCollationField.java   |    2 +-
 .../solr/schema/TestICUCollationField.java      |   15 +-
 .../SolrStopwordsCarrot2LexicalDataFactory.java |    4 +-
 .../dataimport/TestTikaEntityProcessor.java     |    2 -
 .../solr/handler/dataimport/DataImporter.java   |    7 +-
 solr/contrib/extraction/ivy.xml                 |    3 +
 .../extraction/ExtractingDocumentLoader.java    |    4 +-
 .../ExtractingRequestHandlerTest.java           |    2 -
 solr/contrib/map-reduce/ivy.xml                 |    4 +-
 .../apache/solr/hadoop/SolrRecordWriter.java    |    7 +-
 .../solr/hadoop/TreeMergeOutputFormat.java      |    5 +-
 .../apache/solr/hadoop/ZooKeeperInspector.java  |   21 +-
 .../solr/hadoop/MorphlineBasicMiniMRTest.java   |    2 +
 .../solr/hadoop/MorphlineGoLiveMiniMRTest.java  |    2 +
 .../apache/solr/hadoop/MorphlineMapperTest.java |    1 +
 .../morphlines/cell/SolrCellMorphlineTest.java  |    3 +-
 solr/contrib/morphlines-core/ivy.xml            |    5 +-
 .../solr/collection1/conf/elevate.xml           |   24 +-
 .../src/test-files/solr/minimr/conf/elevate.xml |   24 +-
 .../src/test-files/solr/mrunit/conf/elevate.xml |   24 +-
 .../solrcelltest/collection1/conf/elevate.xml   |   24 +-
 solr/core/ivy.xml                               |   12 +-
 .../apache/solr/analysis/TokenizerChain.java    |   28 +-
 solr/core/src/java/org/apache/solr/api/Api.java |    3 +-
 .../src/java/org/apache/solr/api/ApiBag.java    |    4 +-
 .../java/org/apache/solr/api/ApiSupport.java    |    4 +-
 .../java/org/apache/solr/api/V2HttpCall.java    |    4 +-
 .../org/apache/solr/cloud/ElectionContext.java  |   51 +-
 .../java/org/apache/solr/cloud/LockTree.java    |   30 +-
 .../java/org/apache/solr/cloud/Overseer.java    |    9 +-
 .../OverseerAutoReplicaFailoverThread.java      |    2 +-
 .../cloud/OverseerCollectionMessageHandler.java |  168 +-
 .../org/apache/solr/cloud/ZkController.java     |  170 +-
 .../apache/solr/cloud/ZkSolrResourceLoader.java |   16 +-
 .../solr/cloud/overseer/CollectionMutator.java  |   11 +-
 .../apache/solr/cloud/rule/ImplicitSnitch.java  |   25 +-
 .../apache/solr/cloud/rule/ReplicaAssigner.java |   10 +-
 .../java/org/apache/solr/cloud/rule/Rule.java   |   10 +-
 .../apache/solr/cloud/rule/SnitchContext.java   |   33 +-
 .../org/apache/solr/core/CoreContainer.java     |  100 +-
 .../java/org/apache/solr/core/CoreSorter.java   |  185 +
 .../apache/solr/core/HdfsDirectoryFactory.java  |   13 +-
 .../solr/core/IndexDeletionPolicyWrapper.java   |   27 +-
 .../java/org/apache/solr/core/NodeConfig.java   |   38 +-
 .../apache/solr/core/QuerySenderListener.java   |   10 +-
 .../java/org/apache/solr/core/SolrConfig.java   |   10 +-
 .../src/java/org/apache/solr/core/SolrCore.java |  111 +-
 .../apache/solr/core/SolrResourceLoader.java    |   10 +-
 .../org/apache/solr/core/SolrXmlConfig.java     |   12 +
 .../java/org/apache/solr/core/ZkContainer.java  |   44 +-
 .../apache/solr/core/backup/BackupManager.java  |  249 +
 .../apache/solr/core/backup/package-info.java   |   22 +
 .../backup/repository/BackupRepository.java     |  174 +
 .../repository/BackupRepositoryFactory.java     |   89 +
 .../backup/repository/HdfsBackupRepository.java |  159 +
 .../repository/LocalFileSystemRepository.java   |  136 +
 .../core/backup/repository/package-info.java    |   23 +
 .../core/snapshots/SolrSnapshotManager.java     |  134 +
 .../snapshots/SolrSnapshotMetaDataManager.java  |  416 ++
 .../solr/core/snapshots/package-info.java       |   22 +
 .../org/apache/solr/handler/GraphHandler.java   |    8 +-
 .../org/apache/solr/handler/IndexFetcher.java   |   35 +-
 .../solr/handler/MoreLikeThisHandler.java       |    1 -
 .../apache/solr/handler/OldBackupDirectory.java |   55 +-
 .../apache/solr/handler/PingRequestHandler.java |    1 -
 .../apache/solr/handler/ReplicationHandler.java |   88 +-
 .../apache/solr/handler/RequestHandlerBase.java |   24 +-
 .../org/apache/solr/handler/RestoreCore.java    |   40 +-
 .../org/apache/solr/handler/SQLHandler.java     |    5 +-
 .../org/apache/solr/handler/SnapShooter.java    |  215 +-
 .../apache/solr/handler/SolrConfigHandler.java  |   29 +-
 .../org/apache/solr/handler/StreamHandler.java  |    1 +
 .../solr/handler/UpdateRequestHandlerApi.java   |    3 +-
 .../apache/solr/handler/admin/ApiCommand.java   |    5 +-
 .../handler/admin/BaseHandlerApiSupport.java    |    3 +-
 .../handler/admin/CollectionHandlerApi.java     |    4 +-
 .../solr/handler/admin/CollectionsHandler.java  |  849 ++-
 .../handler/admin/ConfigSetsHandlerApi.java     |    5 +-
 .../solr/handler/admin/CoreAdminHandler.java    |   10 +-
 .../solr/handler/admin/CoreAdminHandlerApi.java |    7 +-
 .../solr/handler/admin/CoreAdminOperation.java  | 1463 ++---
 .../apache/solr/handler/admin/InfoHandler.java  |    3 -
 .../apache/solr/handler/admin/V2EndPoint.java   |    3 +-
 .../component/QueryElevationComponent.java      |    1 -
 .../handler/component/RealTimeGetComponent.java |  286 +-
 .../solr/handler/component/SearchComponent.java |    2 +
 .../solr/handler/component/SearchHandler.java   |    2 +
 .../solr/handler/component/TermsComponent.java  |  122 +-
 .../solr/highlight/DefaultSolrHighlighter.java  |   17 +-
 .../java/org/apache/solr/query/FilterQuery.java |    6 +-
 .../org/apache/solr/query/SolrRangeQuery.java   |   20 +-
 .../apache/solr/request/SolrRequestInfo.java    |    6 +-
 .../solr/response/GraphMLResponseWriter.java    |    6 +-
 .../org/apache/solr/response/ResultContext.java |    2 +-
 .../transform/DocIdAugmenterFactory.java        |   10 +-
 .../solr/response/transform/DocTransformer.java |   26 +-
 .../response/transform/DocTransformers.java     |   12 +
 .../transform/ExplainAugmenterFactory.java      |   22 +-
 .../transform/ValueSourceAugmenter.java         |   13 +-
 .../analysis/ManagedStopFilterFactory.java      |    4 +-
 .../solr/schema/AbstractSpatialFieldType.java   |   18 +-
 .../java/org/apache/solr/schema/LatLonType.java |   12 +-
 .../java/org/apache/solr/schema/PointType.java  |    2 -
 .../org/apache/solr/schema/SchemaManager.java   |   56 +-
 .../org/apache/solr/search/DisMaxQParser.java   |    1 -
 .../apache/solr/search/ExportQParserPlugin.java |    4 +-
 .../solr/search/ExtendedDismaxQParser.java      |   16 +-
 .../src/java/org/apache/solr/search/Filter.java |   10 +-
 .../solr/search/GraphTermsQParserPlugin.java    |    9 +-
 .../apache/solr/search/HashQParserPlugin.java   |    4 +-
 .../apache/solr/search/JoinQParserPlugin.java   |    8 +-
 .../java/org/apache/solr/search/LRUCache.java   |   34 +-
 .../org/apache/solr/search/QueryParsing.java    |    5 +-
 .../java/org/apache/solr/search/QueryUtils.java |    2 -
 .../apache/solr/search/ReRankQParserPlugin.java |   37 +-
 .../apache/solr/search/SimpleQParserPlugin.java |    2 -
 .../solr/search/SolrConstantScoreQuery.java     |    8 +-
 .../org/apache/solr/search/SolrCoreParser.java  |   40 +-
 .../apache/solr/search/SolrIndexSearcher.java   |   20 +-
 .../apache/solr/search/SolrQueryBuilder.java    |   34 +
 .../apache/solr/search/TermsQParserPlugin.java  |    1 -
 .../apache/solr/search/ValueSourceParser.java   |   52 +
 .../org/apache/solr/search/WrappedQuery.java    |    4 +-
 .../apache/solr/search/XmlQParserPlugin.java    |   11 +
 .../function/SolrComparisonBoolFunction.java    |   58 +
 .../org/apache/solr/search/join/GraphQuery.java |   22 +-
 .../apache/solr/search/mlt/CloudMLTQParser.java |    2 -
 .../solr/search/mlt/SimpleMLTQParser.java       |    2 -
 .../similarities/SchemaSimilarityFactory.java   |    4 +-
 .../solr/security/AuthenticationPlugin.java     |   29 +-
 .../security/AutorizationEditOperation.java     |   29 +-
 .../apache/solr/security/BasicAuthPlugin.java   |    5 +-
 .../security/DelegationTokenKerberosFilter.java |  171 +
 .../apache/solr/security/KerberosFilter.java    |   14 +
 .../apache/solr/security/KerberosPlugin.java    |  195 +-
 .../solr/security/PKIAuthenticationPlugin.java  |   13 +-
 .../org/apache/solr/security/Permission.java    |   35 +-
 .../solr/security/PermissionNameProvider.java   |    4 +-
 .../solr/security/PrintWriterWrapper.java       |  215 +
 .../security/RuleBasedAuthorizationPlugin.java  |    5 +
 .../security/Sha256AuthenticationProvider.java  |    2 +
 .../apache/solr/servlet/SolrDispatchFilter.java |   12 +-
 .../apache/solr/servlet/SolrRequestParsers.java |    2 -
 .../solr/store/blockcache/BlockDirectory.java   |    5 +-
 .../store/blockcache/BlockDirectoryCache.java   |    5 +-
 .../solr/store/blockcache/BufferStore.java      |    2 +-
 .../blockcache/CustomBufferedIndexInput.java    |    2 +-
 .../apache/solr/store/hdfs/HdfsDirectory.java   |   33 +-
 .../apache/solr/store/hdfs/HdfsFileReader.java  |  105 -
 .../solr/update/DeleteByQueryWrapper.java       |   10 +-
 .../solr/update/DirectUpdateHandler2.java       |  117 +-
 .../org/apache/solr/update/HdfsUpdateLog.java   |    6 -
 .../apache/solr/update/IndexFingerprint.java    |    6 +-
 .../java/org/apache/solr/update/PeerSync.java   |  124 +-
 .../apache/solr/update/UpdateShardHandler.java  |   13 +-
 .../ClassificationUpdateProcessor.java          |   38 +-
 .../ClassificationUpdateProcessorFactory.java   |   24 +-
 .../processor/UpdateRequestProcessorChain.java  |   19 +-
 .../apache/solr/util/ConcurrentLFUCache.java    |   15 +-
 .../apache/solr/util/ConcurrentLRUCache.java    |   40 +-
 .../apache/solr/util/JsonSchemaValidator.java   |  129 +-
 .../src/java/org/apache/solr/util/PathTrie.java |    3 +-
 .../apache/solr/util/RecordingJSONParser.java   |   80 +-
 .../src/java/org/apache/solr/util/SolrCLI.java  |  414 +-
 .../org/apache/solr/util/SolrPluginUtils.java   |    1 -
 .../resources/EditableSolrConfigAttributes.json |    5 +-
 solr/core/src/resources/ImplicitPlugins.json    |    6 +
 .../apispec/cluster.config.Commands.json        |   30 +
 .../apispec/cluster.config.commands.json        |   33 -
 .../cluster.security.BasicAuth.Commands.json    |    1 -
 ...cluster.security.RuleBasedAuthorization.json |   12 +-
 .../resources/apispec/collections.Commands.json |    4 +-
 .../apispec/core.SchemaEdit.addCopyField.json   |    2 +-
 .../core/src/resources/apispec/core.Update.json |    1 -
 .../core.config.Commands.addRuntimeLib.json     |    2 +-
 .../core.config.Commands.updateRuntimeLib.json  |    2 +-
 .../src/resources/apispec/cores.Commands.json   |    1 -
 .../src/resources/apispec/cores.Status.json     |    1 -
 .../resources/apispec/cores.core.Commands.json  |    1 -
 .../cores.core.Commands.requestRecovery.json    |    4 -
 solr/core/src/resources/apispec/cores.json      |   19 -
 .../collection1/conf/schema-psuedo-fields.xml   |   71 +
 .../conf/solrconfig-testxmlparser.xml           |   33 +
 .../solr/collection1/conf/solrconfig-tlog.xml   |    8 +-
 .../solr/collection1/conf/solrconfig.xml        |    5 +-
 .../configsets/cloud-subdirs/conf/schema.xml    |   28 +
 .../cloud-subdirs/conf/solrconfig.xml           |   48 +
 .../conf/stopwords/stopwords-en.txt             |   62 +
 solr/core/src/test-files/solr/solr-50-all.xml   |    4 +
 solr/core/src/test-files/solr/solr-no-core.xml  |   45 -
 solr/core/src/test-files/solr/solr.xml          |    3 +
 .../apache/solr/DisMaxRequestHandlerTest.java   |    4 +-
 .../test/org/apache/solr/MinimalSchemaTest.java |    4 +-
 .../test/org/apache/solr/api/TestPathTrie.java  |    3 +-
 .../AbstractCloudBackupRestoreTestCase.java     |  272 +
 .../solr/cloud/BasicDistributedZk2Test.java     |   27 +-
 .../solr/cloud/ChaosMonkeyShardSplitTest.java   |   13 +-
 .../solr/cloud/CollectionStateFormat2Test.java  |    2 +-
 .../cloud/CollectionsAPIDistributedZkTest.java  |    2 +-
 .../solr/cloud/CreateCollectionCleanupTest.java |    4 +-
 .../apache/solr/cloud/CustomCollectionTest.java |    2 +-
 .../DeleteLastCustomShardedReplicaTest.java     |    2 +-
 .../apache/solr/cloud/DeleteReplicaTest.java    |    2 +-
 .../cloud/DistribJoinFromCollectionTest.java    |    2 +-
 .../apache/solr/cloud/KerberosTestServices.java |  228 +
 .../org/apache/solr/cloud/KerberosTestUtil.java |  147 -
 .../apache/solr/cloud/LeaderElectionTest.java   |    1 +
 ...utOfBoxZkACLAndCredentialsProvidersTest.java |    7 +-
 ...rriddenZkACLAndCredentialsProvidersTest.java |   71 +-
 .../cloud/OverseerModifyCollectionTest.java     |   96 +
 .../apache/solr/cloud/OverseerRolesTest.java    |    2 +-
 .../org/apache/solr/cloud/OverseerTest.java     |    1 +
 .../solr/cloud/SaslZkACLProviderTest.java       |   39 +-
 .../cloud/SharedFSAutoReplicaFailoverTest.java  |  150 +-
 .../apache/solr/cloud/SolrCLIZkUtilsTest.java   |  632 ++
 .../solr/cloud/TestAuthenticationFramework.java |  169 +-
 .../solr/cloud/TestCloudBackupRestore.java      |  219 -
 .../solr/cloud/TestCloudPseudoReturnFields.java |  839 +++
 .../apache/solr/cloud/TestConfigSetsAPI.java    |    4 +-
 .../solr/cloud/TestConfigSetsAPIZkFailure.java  |    2 +-
 .../solr/cloud/TestHdfsCloudBackupRestore.java  |  147 +
 .../cloud/TestLocalFSCloudBackupRestore.java    |   51 +
 .../org/apache/solr/cloud/TestLockTree.java     |   34 +-
 .../solr/cloud/TestMiniSolrCloudCluster.java    |    2 +-
 .../cloud/TestMiniSolrCloudClusterKerberos.java |   32 +-
 .../cloud/TestOnReconnectListenerSupport.java   |    4 +-
 .../apache/solr/cloud/TestRandomFlRTGCloud.java |  675 +++
 .../cloud/TestSizeLimitedDistributedMap.java    |    4 +-
 .../TestSolrCloudWithDelegationTokens.java      |  405 ++
 .../cloud/TestSolrCloudWithKerberosAlt.java     |   40 +-
 .../solr/cloud/UnloadDistributedZkTest.java     |    2 +-
 ...MParamsZkACLAndCredentialsProvidersTest.java |   25 +-
 .../org/apache/solr/cloud/ZkControllerTest.java |    1 +
 .../solr/cloud/hdfs/HdfsNNFailoverTest.java     |    2 +-
 .../HdfsWriteToMultipleCollectionsTest.java     |    2 +-
 .../apache/solr/cloud/hdfs/StressHdfsTest.java  |    2 +-
 .../solr/cloud/overseer/ZkStateReaderTest.java  |   36 +-
 .../solr/cloud/overseer/ZkStateWriterTest.java  |  403 +-
 .../solr/cloud/rule/ImplicitSnitchTest.java     |   49 +-
 .../apache/solr/cloud/rule/RuleEngineTest.java  |   51 +-
 .../org/apache/solr/cloud/rule/RulesTest.java   |    2 -
 .../solr/core/BlobRepositoryCloudTest.java      |   35 +-
 .../solr/core/BlobRepositoryMockingTest.java    |   35 +-
 .../org/apache/solr/core/CoreSorterTest.java    |  240 +
 .../solr/core/OpenCloseCoreStressTest.java      |   16 +-
 .../test/org/apache/solr/core/SolrCoreTest.java |    1 +
 .../solr/core/TestBackupRepositoryFactory.java  |  149 +
 .../solr/core/TestConfigSetImmutable.java       |    3 +-
 .../org/apache/solr/core/TestLazyCores.java     |    4 +-
 .../solr/core/TestQuerySenderListener.java      |   18 +-
 .../apache/solr/core/TestSolrConfigHandler.java |    2 +-
 .../test/org/apache/solr/core/TestSolrXml.java  |   15 +-
 .../core/snapshots/TestSolrCoreSnapshots.java   |  419 ++
 .../apache/solr/handler/BackupRestoreUtils.java |  104 +
 .../apache/solr/handler/CheckBackupStatus.java  |   10 +-
 .../DocumentAnalysisRequestHandlerTest.java     |    8 +-
 .../FieldAnalysisRequestHandlerTest.java        |   10 +-
 .../solr/handler/TestHdfsBackupRestoreCore.java |  239 +
 .../solr/handler/TestReplicationHandler.java    |   20 +-
 .../handler/TestReplicationHandlerBackup.java   |   39 +-
 .../apache/solr/handler/TestRestoreCore.java    |   52 +-
 .../handler/TestSolrConfigHandlerCloud.java     |    2 +-
 .../handler/admin/CoreAdminHandlerTest.java     |    2 +-
 .../solr/handler/admin/TestApiFramework.java    |    4 +-
 .../solr/handler/admin/TestCollectionAPIs.java  |    6 +-
 .../solr/handler/admin/TestCoreAdminApis.java   |    7 +-
 .../DistributedTermsComponentTest.java          |   13 +-
 .../component/ResourceSharingTestComponent.java |   34 +-
 .../handler/component/TermsComponentTest.java   |   58 +-
 .../solr/index/hdfs/CheckHdfsIndexTest.java     |    3 +-
 .../apache/solr/request/TestFacetMethods.java   |    4 +-
 .../response/TestGraphMLResponseWriter.java     |    4 +-
 .../transform/TestSubQueryTransformer.java      |   17 +-
 .../apache/solr/schema/BooleanFieldTest.java    |    4 +-
 .../solr/schema/TestManagedSchemaAPI.java       |   34 +-
 .../apache/solr/search/GoodbyeQueryBuilder.java |   39 +
 .../apache/solr/search/HandyQueryBuilder.java   |   53 +
 .../apache/solr/search/HelloQueryBuilder.java   |   39 +
 .../apache/solr/search/QueryEqualityTest.java   |   27 +-
 .../search/TestGraphTermsQParserPlugin.java     |    4 +-
 .../solr/search/TestPseudoReturnFields.java     |  615 +-
 .../org/apache/solr/search/TestRangeQuery.java  |  146 +-
 .../apache/solr/search/TestRankQueryPlugin.java |    4 +-
 .../solr/search/TestXmlQParserPlugin.java       |   78 +
 .../solr/search/function/TestFunctionQuery.java |   69 +-
 .../solr/search/mlt/CloudMLTQParserTest.java    |   10 +-
 .../solr/security/BasicAuthIntegrationTest.java |  227 +-
 ...ramDelegationTokenAuthenticationHandler.java |  109 +
 .../solr/security/MockAuthenticationPlugin.java |   32 +-
 .../spelling/TestSuggestSpellingConverter.java  |    2 +-
 .../solr/store/hdfs/HdfsDirectoryTest.java      |    5 +-
 .../uninverting/TestFieldCacheSortRandom.java   |    4 +-
 .../solr/update/DirectUpdateHandlerTest.java    |   48 +-
 ...lassificationUpdateProcessorFactoryTest.java |    4 +-
 .../org/apache/solr/util/JsonValidatorTest.java |   45 +-
 .../example-DIH/solr/db/conf/elevate.xml        |   24 +-
 .../example-DIH/solr/mail/conf/elevate.xml      |   24 +-
 .../example-DIH/solr/rss/conf/elevate.xml       |   24 +-
 .../example-DIH/solr/solr/conf/elevate.xml      |   24 +-
 solr/example/files/conf/elevate.xml             |   24 +-
 solr/licenses/bcpkix-jdk15on-1.47.jar.sha1      |    1 +
 .../bcpkix-jdk15on-LICENSE-BSD_LIKE.txt         |   15 +
 solr/licenses/bcpkix-jdk15on-NOTICE.txt         |    2 +
 solr/licenses/commons-compress-1.11.jar.sha1    |    1 +
 solr/licenses/commons-compress-1.8.1.jar.sha1   |    1 -
 solr/licenses/curator-recipes-2.8.0.jar.sha1    |    1 +
 solr/licenses/curator-recipes-LICENSE-ASL.txt   |  202 +
 solr/licenses/curator-recipes-NOTICE.txt        |    5 +
 solr/licenses/fontbox-1.8.8.jar.sha1            |    1 -
 solr/licenses/fontbox-2.0.1.jar.sha1            |    1 +
 solr/licenses/hadoop-annotations-2.6.0.jar.sha1 |    1 -
 solr/licenses/hadoop-annotations-2.7.2.jar.sha1 |    1 +
 solr/licenses/hadoop-auth-2.6.0.jar.sha1        |    1 -
 solr/licenses/hadoop-auth-2.7.2.jar.sha1        |    1 +
 .../licenses/hadoop-common-2.6.0-tests.jar.sha1 |    1 -
 solr/licenses/hadoop-common-2.6.0.jar.sha1      |    1 -
 .../licenses/hadoop-common-2.7.2-tests.jar.sha1 |    1 +
 solr/licenses/hadoop-common-2.7.2.jar.sha1      |    1 +
 solr/licenses/hadoop-hdfs-2.6.0-tests.jar.sha1  |    1 -
 solr/licenses/hadoop-hdfs-2.6.0.jar.sha1        |    1 -
 solr/licenses/hadoop-hdfs-2.7.2-tests.jar.sha1  |    1 +
 solr/licenses/hadoop-hdfs-2.7.2.jar.sha1        |    1 +
 .../hadoop-mapreduce-client-app-2.6.0.jar.sha1  |    1 -
 .../hadoop-mapreduce-client-app-2.7.2.jar.sha1  |    1 +
 ...adoop-mapreduce-client-common-2.6.0.jar.sha1 |    1 -
 ...adoop-mapreduce-client-common-2.7.2.jar.sha1 |    1 +
 .../hadoop-mapreduce-client-core-2.6.0.jar.sha1 |    1 -
 .../hadoop-mapreduce-client-core-2.7.2.jar.sha1 |    1 +
 .../hadoop-mapreduce-client-hs-2.6.0.jar.sha1   |    1 -
 .../hadoop-mapreduce-client-hs-2.7.2.jar.sha1   |    1 +
 ...reduce-client-jobclient-2.6.0-tests.jar.sha1 |    1 -
 ...op-mapreduce-client-jobclient-2.6.0.jar.sha1 |    1 -
 ...reduce-client-jobclient-2.7.2-tests.jar.sha1 |    1 +
 ...op-mapreduce-client-jobclient-2.7.2.jar.sha1 |    1 +
 ...doop-mapreduce-client-shuffle-2.6.0.jar.sha1 |    1 -
 ...doop-mapreduce-client-shuffle-2.7.2.jar.sha1 |    1 +
 solr/licenses/hadoop-minikdc-2.6.0.jar.sha1     |    1 -
 solr/licenses/hadoop-minikdc-2.7.2.jar.sha1     |    1 +
 solr/licenses/hadoop-yarn-api-2.6.0.jar.sha1    |    1 -
 solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1    |    1 +
 solr/licenses/hadoop-yarn-client-2.6.0.jar.sha1 |    1 -
 solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1 |    1 +
 solr/licenses/hadoop-yarn-common-2.6.0.jar.sha1 |    1 -
 solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1 |    1 +
 ...ver-applicationhistoryservice-2.6.0.jar.sha1 |    1 -
 ...ver-applicationhistoryservice-2.7.2.jar.sha1 |    1 +
 .../hadoop-yarn-server-common-2.6.0.jar.sha1    |    1 -
 .../hadoop-yarn-server-common-2.7.2.jar.sha1    |    1 +
 ...adoop-yarn-server-nodemanager-2.6.0.jar.sha1 |    1 -
 ...adoop-yarn-server-nodemanager-2.7.2.jar.sha1 |    1 +
 ...p-yarn-server-resourcemanager-2.6.0.jar.sha1 |    1 -
 ...p-yarn-server-resourcemanager-2.7.2.jar.sha1 |    1 +
 ...adoop-yarn-server-tests-2.6.0-tests.jar.sha1 |    1 -
 ...adoop-yarn-server-tests-2.7.2-tests.jar.sha1 |    1 +
 .../hadoop-yarn-server-web-proxy-2.6.0.jar.sha1 |    1 -
 .../hadoop-yarn-server-web-proxy-2.7.2.jar.sha1 |    1 +
 solr/licenses/htrace-core-3.0.4.jar.sha1        |    1 -
 .../htrace-core-3.2.0-incubating.jar.sha1       |    1 +
 solr/licenses/isoparser-1.0.2.jar.sha1          |    1 -
 solr/licenses/isoparser-1.1.18.jar.sha1         |    1 +
 solr/licenses/jackcess-2.1.3.jar.sha1           |    1 +
 solr/licenses/jackcess-LICENSE-ASL.txt          |  507 ++
 solr/licenses/jackcess-NOTICE.txt               |    2 +
 solr/licenses/jempbox-1.8.12.jar.sha1           |    1 +
 solr/licenses/jempbox-1.8.8.jar.sha1            |    1 -
 solr/licenses/metadata-extractor-2.6.2.jar.sha1 |    1 -
 solr/licenses/metadata-extractor-2.8.1.jar.sha1 |    1 +
 solr/licenses/netty-3.2.4.Final.jar.sha1        |    1 +
 solr/licenses/netty-3.7.0.Final.jar.sha1        |    1 -
 solr/licenses/netty-NOTICE.txt                  |   85 +-
 solr/licenses/netty-all-4.0.36.Final.jar.sha1   |    1 +
 solr/licenses/netty-all-LICENSE-ASL.txt         |  202 +
 solr/licenses/netty-all-NOTICE.txt              |  121 +
 solr/licenses/pdfbox-1.8.8.jar.sha1             |    1 -
 solr/licenses/pdfbox-2.0.1.jar.sha1             |    1 +
 solr/licenses/pdfbox-tools-2.0.1.jar.sha1       |    1 +
 solr/licenses/pdfbox-tools-LICENSE-ASL.txt      |  314 +
 solr/licenses/pdfbox-tools-NOTICE.txt           |   14 +
 solr/licenses/poi-3.11.jar.sha1                 |    1 -
 solr/licenses/poi-3.15-beta1.jar.sha1           |    1 +
 solr/licenses/poi-ooxml-3.11.jar.sha1           |    1 -
 solr/licenses/poi-ooxml-3.15-beta1.jar.sha1     |    1 +
 solr/licenses/poi-ooxml-schemas-3.11.jar.sha1   |    1 -
 .../poi-ooxml-schemas-3.15-beta1.jar.sha1       |    1 +
 solr/licenses/poi-scratchpad-3.11.jar.sha1      |    1 -
 .../licenses/poi-scratchpad-3.15-beta1.jar.sha1 |    1 +
 solr/licenses/rome-1.6.1.jar.sha1               |    1 +
 solr/licenses/tika-core-1.13.jar.sha1           |    1 +
 solr/licenses/tika-core-1.7.jar.sha1            |    1 -
 solr/licenses/tika-java7-1.13.jar.sha1          |    1 +
 solr/licenses/tika-java7-1.7.jar.sha1           |    1 -
 solr/licenses/tika-parsers-1.13.jar.sha1        |    1 +
 solr/licenses/tika-parsers-1.7.jar.sha1         |    1 -
 solr/licenses/tika-xmp-1.13.jar.sha1            |    1 +
 solr/licenses/tika-xmp-1.7.jar.sha1             |    1 -
 solr/licenses/vorbis-java-core-0.6.jar.sha1     |    1 -
 solr/licenses/vorbis-java-core-0.8.jar.sha1     |    1 +
 solr/licenses/vorbis-java-tika-0.6.jar.sha1     |    1 -
 solr/licenses/vorbis-java-tika-0.8.jar.sha1     |    1 +
 .../basic_configs/conf/_rest_managed.json       |    1 -
 .../configsets/basic_configs/conf/elevate.xml   |   42 +
 .../basic_configs/conf/lang/contractions_ca.txt |    8 +
 .../basic_configs/conf/lang/contractions_fr.txt |   15 +
 .../basic_configs/conf/lang/contractions_ga.txt |    5 +
 .../basic_configs/conf/lang/contractions_it.txt |   23 +
 .../basic_configs/conf/lang/hyphenations_ga.txt |    5 +
 .../basic_configs/conf/lang/stemdict_nl.txt     |    6 +
 .../basic_configs/conf/lang/stoptags_ja.txt     |  420 ++
 .../basic_configs/conf/lang/stopwords_ar.txt    |  125 +
 .../basic_configs/conf/lang/stopwords_bg.txt    |  193 +
 .../basic_configs/conf/lang/stopwords_ca.txt    |  220 +
 .../basic_configs/conf/lang/stopwords_cz.txt    |  172 +
 .../basic_configs/conf/lang/stopwords_da.txt    |  110 +
 .../basic_configs/conf/lang/stopwords_de.txt    |  294 +
 .../basic_configs/conf/lang/stopwords_el.txt    |   78 +
 .../basic_configs/conf/lang/stopwords_es.txt    |  356 ++
 .../basic_configs/conf/lang/stopwords_eu.txt    |   99 +
 .../basic_configs/conf/lang/stopwords_fa.txt    |  313 +
 .../basic_configs/conf/lang/stopwords_fi.txt    |   97 +
 .../basic_configs/conf/lang/stopwords_fr.txt    |  186 +
 .../basic_configs/conf/lang/stopwords_ga.txt    |  110 +
 .../basic_configs/conf/lang/stopwords_gl.txt    |  161 +
 .../basic_configs/conf/lang/stopwords_hi.txt    |  235 +
 .../basic_configs/conf/lang/stopwords_hu.txt    |  211 +
 .../basic_configs/conf/lang/stopwords_hy.txt    |   46 +
 .../basic_configs/conf/lang/stopwords_id.txt    |  359 ++
 .../basic_configs/conf/lang/stopwords_it.txt    |  303 +
 .../basic_configs/conf/lang/stopwords_ja.txt    |  127 +
 .../basic_configs/conf/lang/stopwords_lv.txt    |  172 +
 .../basic_configs/conf/lang/stopwords_nl.txt    |  119 +
 .../basic_configs/conf/lang/stopwords_no.txt    |  194 +
 .../basic_configs/conf/lang/stopwords_pt.txt    |  253 +
 .../basic_configs/conf/lang/stopwords_ro.txt    |  233 +
 .../basic_configs/conf/lang/stopwords_ru.txt    |  243 +
 .../basic_configs/conf/lang/stopwords_sv.txt    |  133 +
 .../basic_configs/conf/lang/stopwords_th.txt    |  119 +
 .../basic_configs/conf/lang/stopwords_tr.txt    |  212 +
 .../basic_configs/conf/lang/userdict_ja.txt     |   29 +
 .../basic_configs/conf/managed-schema           |  764 ++-
 .../configsets/basic_configs/conf/params.json   |   20 +
 .../basic_configs/conf/solrconfig.xml           | 1072 +++-
 .../data_driven_schema_configs/conf/elevate.xml |   24 +-
 .../conf/managed-schema                         |    4 +-
 .../conf/elevate.xml                            |   24 +-
 solr/solrj/ivy.xml                              |    5 +
 .../apache/solr/client/solrj/SolrRequest.java   |    1 -
 .../solr/client/solrj/impl/CloudSolrClient.java |  158 +-
 .../solr/client/solrj/impl/HttpClientUtil.java  |    8 +-
 .../solr/client/solrj/impl/HttpSolrClient.java  |   57 +-
 .../solrj/impl/Krb5HttpClientBuilder.java       |   18 +-
 .../solrj/io/graph/ShortestPathStream.java      |    6 +-
 .../client/solrj/io/stream/CloudSolrStream.java |   25 +-
 .../solr/client/solrj/io/stream/JDBCStream.java |    4 +
 .../client/solrj/io/stream/ParallelStream.java  |    2 +-
 .../solrj/io/stream/ScoreNodesStream.java       |  256 +
 .../client/solrj/io/stream/TopicStream.java     |   61 +-
 .../solrj/request/CollectionAdminRequest.java   |   32 +-
 .../client/solrj/request/CoreAdminRequest.java  |   57 +
 .../solrj/request/DelegationTokenRequest.java   |  152 +
 .../client/solrj/request/UpdateRequest.java     |    6 +
 .../solrj/response/DelegationTokenResponse.java |  108 +
 .../solr/common/ToleratedUpdateError.java       |    2 +-
 .../solr/common/cloud/ClusterProperties.java    |    4 +-
 .../apache/solr/common/cloud/ClusterState.java  |   13 +-
 .../common/cloud/CollectionStatePredicate.java  |    4 +-
 .../common/cloud/CollectionStateWatcher.java    |    6 +-
 .../solr/common/cloud/ConnectionManager.java    |   15 +-
 .../common/cloud/DefaultConnectionStrategy.java |    4 +-
 .../apache/solr/common/cloud/DocCollection.java |   26 +-
 .../solr/common/cloud/SaslZkACLProvider.java    |   21 +-
 .../cloud/SecurityAwareZkACLProvider.java       |   79 +
 .../apache/solr/common/cloud/SolrZkClient.java  |  121 +-
 ...ParamsAllAndReadonlyDigestZkACLProvider.java |   52 +-
 .../cloud/ZkClientConnectionStrategy.java       |    4 +-
 .../solr/common/cloud/ZkConfigManager.java      |  117 +-
 .../solr/common/cloud/ZkMaintenanceUtils.java   |  368 ++
 .../apache/solr/common/cloud/ZkStateReader.java |  167 +-
 .../solr/common/params/CollectionParams.java    |   29 +-
 .../solr/common/params/CoreAdminParams.java     |   20 +-
 .../apache/solr/common/params/SolrParams.java   |   24 +-
 .../apache/solr/common/params/TermsParams.java  |   12 +
 .../org/apache/solr/common/util/Lookup.java     |   22 -
 .../org/apache/solr/common/util/RetryUtil.java  |    8 +-
 .../solr/common/util/ValidatingJsonMap.java     |    4 +-
 .../solr/configsets/streaming/conf/schema.xml   |    2 +-
 .../solrj/impl/CloudSolrClientBuilderTest.java  |   28 +-
 .../client/solrj/impl/CloudSolrClientTest.java  |   24 +-
 .../ConcurrentUpdateSolrClientBuilderTest.java  |   12 +-
 .../solrj/impl/HttpSolrClientBuilderTest.java   |   22 +-
 .../solrj/impl/LBHttpSolrClientBuilderTest.java |   18 +-
 .../solrj/io/graph/GraphExpressionTest.java     |  137 +-
 .../solr/client/solrj/io/graph/GraphTest.java   |    4 +-
 .../solr/client/solrj/io/sql/JdbcTest.java      |    4 +-
 .../client/solrj/io/stream/JDBCStreamTest.java  |   16 +
 .../solrj/io/stream/StreamExpressionTest.java   |  244 +-
 .../client/solrj/io/stream/StreamingTest.java   |   19 +-
 .../request/TestDelegationTokenRequest.java     |   70 +
 .../response/TestDelegationTokenResponse.java   |  138 +
 .../cloud/TestCollectionStateWatchers.java      |    4 +-
 .../solr/common/util/TestJsonRecordReader.java  |   52 +
 .../apache/solr/common/util/TestRetryUtil.java  |   37 +-
 .../java/org/apache/solr/SolrTestCaseJ4.java    |   71 +-
 .../apache/solr/core/MockDirectoryFactory.java  |    5 -
 .../solr/core/MockFSDirectoryFactory.java       |    1 -
 solr/webapp/web/css/angular/cloud.css           |   14 +
 solr/webapp/web/js/angular/app.js               |    2 +-
 solr/webapp/web/js/angular/controllers/cloud.js |   53 +-
 solr/webapp/web/js/angular/controllers/query.js |   10 +-
 solr/webapp/web/js/lib/jquery.blockUI.js        |    2 +-
 solr/webapp/web/partials/cloud.html             |    3 +-
 1211 files changed, 47788 insertions(+), 28323 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/api/Api.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/api/ApiBag.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/handler/admin/ApiCommand.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
index 3388147,c674ff3..e798670
--- a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
@@@ -27,7 -27,7 +27,12 @@@ import java.util.Map
  import java.util.Set;
  import java.util.function.Function;
  
 -import org.apache.solr.common.util.Map2;
++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.Utils;
 +import org.apache.solr.common.util.ValidatingJsonMap;
++
  import org.apache.solr.util.CommandOperation;
  import org.apache.solr.api.ApiBag;
  import org.apache.solr.api.SpecProvider;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
index f270524,7410335..f18838d
--- a/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
+++ b/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
@@@ -30,7 -30,7 +30,9 @@@ import java.util.Set
  
  import com.google.common.collect.ImmutableSet;
  import org.apache.commons.codec.binary.Base64;
 -import org.apache.solr.common.util.Map2;
++import org.apache.solr.api.SpecProvider;
 +import org.apache.solr.common.util.ValidatingJsonMap;
++
  import org.apache.solr.util.CommandOperation;
  import org.apache.solr.api.ApiBag;
  import org.slf4j.Logger;

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/test/org/apache/solr/api/TestPathTrie.java
----------------------------------------------------------------------

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
----------------------------------------------------------------------
diff --cc solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
index 0bfdc12,3bae53f..1730353
--- a/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
+++ b/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
@@@ -31,9 -31,10 +31,9 @@@ import static org.apache.solr.common.ut
  
  public class JsonValidatorTest extends SolrTestCaseJ4 {
  
 -
    public void testSchema() {
      checkSchema("collections.Commands");
-     checkSchema("collections.collection.commands");
+     checkSchema("collections.collection.Commands");
      checkSchema("collections.collection.shards.Commands");
      checkSchema("collections.collection.shards.shard.Commands");
      checkSchema("collections.collection.shards.shard.replica.Commands");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92411981/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
----------------------------------------------------------------------
diff --cc solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
index 553d134,0000000..d19d56a
mode 100644,000000..100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
@@@ -1,291 -1,0 +1,291 @@@
- package org.apache.solr.common.util;
- 
 +/*
 + * 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.solr.common.util;
++
 +import java.io.IOException;
 +import java.io.InputStream;
 +import java.io.InputStreamReader;
 +import java.io.Reader;
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.HashSet;
 +import java.util.LinkedHashMap;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +
 +import org.noggit.JSONParser;
 +import org.noggit.ObjectBuilder;
 +
 +import static java.nio.charset.StandardCharsets.UTF_8;
 +import static java.util.Collections.unmodifiableList;
 +import static java.util.Collections.unmodifiableSet;
 +
 +public class ValidatingJsonMap implements Map<String, Object> {
 +
 +  public static final PredicateWithErrMsg<Object> NOT_NULL = o -> {
 +    if (o == null) return " Must not be NULL";
 +    return null;
 +  };
 +  public static final PredicateWithErrMsg<Pair> ENUM_OF = pair -> {
 +    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.second();
 +          }
 +        }
 +      } else {
 +        if (!set.contains(pair.first())) return " Must be one of " + pair.second() + ", got " + pair.first();
 +      }
 +      return null;
 +    } else {
 +      return " Unknown type";
 +    }
 +
 +  };
 +  private final Map<String, Object> delegate;
 +
 +  public ValidatingJsonMap(Map<String, Object> delegate) {
 +    this.delegate = delegate;
 +  }
 +
 +  public ValidatingJsonMap(int i) {
 +    delegate = new LinkedHashMap<>(i);
 +  }
 +
 +  public ValidatingJsonMap() {
 +    delegate = new LinkedHashMap<>();
 +  }
 +
 +  @Override
 +  public int size() {
 +    return delegate.size();
 +  }
 +
 +  @Override
 +  public boolean isEmpty() {
 +    return delegate.isEmpty();
 +  }
 +
 +  @Override
 +  public boolean containsKey(Object key) {
 +    return delegate.containsKey(key);
 +  }
 +
 +  @Override
 +  public boolean containsValue(Object value) {
 +    return delegate.containsValue(value);
 +  }
 +
 +  @Override
 +  public Object get(Object key) {
 +    return delegate.get(key);
 +  }
 +
 +  @Override
 +  public Object put(String key, Object value) {
 +    return delegate.put(key, value);
 +  }
 +
 +  @Override
 +  public Object remove(Object key) {
 +    return null;
 +  }
 +
 +  @Override
 +  public void putAll(Map<? extends String, ?> m) {
 +    delegate.putAll(m);
 +  }
 +
 +  @Override
 +  public void clear() {
 +    delegate.clear();
 +
 +  }
 +
 +  @Override
 +  public Set<String> keySet() {
 +    return delegate.keySet();
 +  }
 +
 +  @Override
 +  public Collection<Object> values() {
 +    return delegate.values();
 +  }
 +
 +  @Override
 +  public Set<Entry<String, Object>> entrySet() {
 +    return delegate.entrySet();
 +  }
 +
 +  public Object get(String key, PredicateWithErrMsg predicate) {
 +    Object v = get(key);
 +    if (predicate != null) {
 +      String msg = predicate.test(v);
 +      if (msg != null) {
 +        throw new RuntimeException("" + key + msg);
 +      }
 +    }
 +    return v;
 +  }
 +
 +  public Boolean getBool(String key, Boolean def) {
 +    Object v = get(key);
 +    if (v == null) return def;
 +    if (v instanceof Boolean) return (Boolean) v;
 +    try {
 +      return Boolean.parseBoolean(v.toString());
 +    } catch (NumberFormatException e) {
 +      throw new RuntimeException("value of " + key + "must be an boolean");
 +    }
 +  }
 +
 +  public Integer getInt(String key, Integer def) {
 +    Object v = get(key);
 +    if (v == null) return def;
 +    if (v instanceof Integer) return (Integer) v;
 +    try {
 +      return Integer.parseInt(v.toString());
 +    } catch (NumberFormatException e) {
 +      throw new RuntimeException("value of " + key + "must be an integer");
 +    }
 +  }
 +  public ValidatingJsonMap getMap(String key, PredicateWithErrMsg predicate) {
 +    return getMap(key, predicate, null);
 +
 +  }
 +
 +  public ValidatingJsonMap getMap(String key, PredicateWithErrMsg predicate, String message) {
 +    Object v = get(key);
 +    if (v != null && !(v instanceof Map)) {
 +      throw new RuntimeException("" + key + " should be of type map");
 +    }
 +
 +    if (predicate != null) {
 +      String msg = predicate.test(v);
 +      if (msg != null) {
 +        msg = message != null ? message : key + msg;
 +        throw new RuntimeException(msg);
 +      }
 +    }
 +    return wrap((Map) v);
 +  }
 +
 +  public List getList(String key, PredicateWithErrMsg predicate) {
 +    return getList(key, predicate, null);
 +  }
 +
 +  public List getList(String key, PredicateWithErrMsg predicate, Object test) {
 +    Object v = get(key);
 +    if (v != null && !(v instanceof List)) {
 +      throw new RuntimeException("" + key + " should be of type List");
 +    }
 +
 +    if (predicate != null) {
 +      String msg = predicate.test(test == null ? v : new Pair(v, test));
 +      if (msg != null) {
 +        throw new RuntimeException("" + key + msg);
 +      }
 +    }
 +
 +    return (List) v;
 +  }
 +
 +  public Object get(String key, PredicateWithErrMsg<Pair> predicate, Object arg) {
 +    Object v = get(key);
 +    String test = predicate.test(new Pair(v, arg));
 +    if (test != null) {
 +      throw new RuntimeException("" + key + test);
 +    }
 +    return v;
 +  }
 +
 +  public Object get(String k, Object def) {
 +    Object v = get(k);
 +    if (v == null) return def;
 +    return v;
 +  }
 +
 +  static ValidatingJsonMap wrap(Map<String, Object> map) {
 +    if (map == null) return null;
 +    if (map instanceof ValidatingJsonMap) {
 +      return (ValidatingJsonMap) map;
 +    } else {
 +      return new ValidatingJsonMap(map);
 +    }
 +
 +  }
 +
 +  public static ValidatingJsonMap fromJSON(InputStream is) {
 +    return fromJSON(new InputStreamReader(is, UTF_8));
 +  }
 +
 +  public static ValidatingJsonMap fromJSON(Reader s) {
 +    try {
 +      return (ValidatingJsonMap) (getObjectBuilder(new JSONParser(s)).getObject());
 +    } catch (IOException e) {
 +      throw new RuntimeException();
 +    }
 +  }
 +
 +  public static ValidatingJsonMap getDeepCopy(Map map, int maxDepth, boolean mutable) {
 +    if (map == null) return null;
 +    if (maxDepth < 1) return ValidatingJsonMap.wrap(map);
 +    ValidatingJsonMap copy = mutable ? new ValidatingJsonMap(map.size()) : new ValidatingJsonMap();
 +    for (Object o : map.entrySet()) {
 +      Map.Entry<String,Object> e = (Entry<String, Object>) o;
 +      Object v = e.getValue();
 +      if (v instanceof Map) v = getDeepCopy((Map) v, maxDepth - 1, mutable);
 +      else if (v instanceof Collection) v = getDeepCopy((Collection) v, maxDepth - 1, mutable);
 +      copy.put(e.getKey(), v);
 +    }
 +    return mutable ? copy : new ValidatingJsonMap(Collections.unmodifiableMap(copy));
 +  }
 +
 +  public static Collection getDeepCopy(Collection c, int maxDepth, boolean mutable) {
 +    if (c == null || maxDepth < 1) return c;
 +    Collection result = c instanceof Set ? new HashSet() : new ArrayList();
 +    for (Object o : c) {
 +      if (o instanceof Map) {
 +        o = getDeepCopy((Map) o, maxDepth - 1, mutable);
 +      }
 +      result.add(o);
 +    }
 +    return mutable ? result : result instanceof Set ? unmodifiableSet((Set) result) : unmodifiableList((List) result);
 +  }
 +
 +  private static ObjectBuilder getObjectBuilder(final JSONParser jp) throws IOException {
 +    return new ObjectBuilder(jp) {
 +      @Override
 +      public Object newObject() throws IOException {
 +        return new ValidatingJsonMap();
 +      }
 +    };
 +  }
 +
 +
 +  @Override
 +  public boolean equals(Object that) {
 +    return that instanceof Map && this.delegate.equals(that);
 +  }
 +
 +  public static final ValidatingJsonMap EMPTY = new ValidatingJsonMap(Collections.EMPTY_MAP);
 +}