You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/01/18 23:38:59 UTC

svn commit: r1435384 [1/4] - in /lucene/dev/branches/lucene4547: ./ dev-tools/ dev-tools/maven/ dev-tools/maven/solr/core/src/test/ dev-tools/maven/solr/solrj/src/java/ dev-tools/maven/solr/solrj/src/test/ dev-tools/maven/solr/webapp/ dev-tools/scripts...

Author: rmuir
Date: Fri Jan 18 22:38:56 2013
New Revision: 1435384

URL: http://svn.apache.org/viewvc?rev=1435384&view=rev
Log:
Merged /lucene/dev/trunk:r1433031-1435376

Added:
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/index.41.cfs.zip
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/index.41.cfs.zip
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/index.41.nocfs.zip
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/index.41.nocfs.zip
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsIterator.java
      - copied, changed from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/FloatAssociationsIterator.java
      - copied, changed from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/associations/FloatAssociationsIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/IntAssociationsIterator.java
      - copied, changed from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/associations/IntAssociationsIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/index/FacetsPayloadMigrationReader.java
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/index/FacetsPayloadMigrationReader.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/DocValuesCategoryListIterator.java
      - copied, changed from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/DocValuesCategoryListIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/DGapVInt8IntDecoder.java
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/util/encoding/DGapVInt8IntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/DGapVInt8IntEncoder.java
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/util/encoding/DGapVInt8IntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/index/TestFacetsPayloadMigrationReader.java
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/index/TestFacetsPayloadMigrationReader.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestSameRequestAccumulation.java
      - copied unchanged from r1435376, lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/search/TestSameRequestAccumulation.java
Removed:
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsPayloadIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/FloatAssociationsPayloadIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/IntAssociationsPayloadIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/PayloadCategoryListIteraor.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/PayloadIterator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/cache/
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/VInt8.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/TestSameRequestAccumulation.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestCategoryListCache.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/util/encoding/Vint8Test.java
    lucene/dev/branches/lucene4547/solr/licenses/log4j-over-slf4j-1.6.4.jar.sha1
    lucene/dev/branches/lucene4547/solr/licenses/log4j-over-slf4j-LICENSE-BSD_LIKE.txt
    lucene/dev/branches/lucene4547/solr/licenses/log4j-over-slf4j-NOTICE.txt
Modified:
    lucene/dev/branches/lucene4547/   (props changed)
    lucene/dev/branches/lucene4547/dev-tools/   (props changed)
    lucene/dev/branches/lucene4547/dev-tools/README.txt
    lucene/dev/branches/lucene4547/dev-tools/maven/pom.xml.template
    lucene/dev/branches/lucene4547/dev-tools/maven/solr/core/src/test/pom.xml.template
    lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/java/pom.xml.template
    lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/test/pom.xml.template
    lucene/dev/branches/lucene4547/dev-tools/maven/solr/webapp/pom.xml.template
    lucene/dev/branches/lucene4547/dev-tools/scripts/buildAndPushRelease.py
    lucene/dev/branches/lucene4547/lucene/   (props changed)
    lucene/dev/branches/lucene4547/lucene/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/lucene4547/lucene/analysis/   (props changed)
    lucene/dev/branches/lucene4547/lucene/analysis/common/   (props changed)
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/HyphenationTree.java
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilterFactory.java
    lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java
    lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java
    lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoFST.java
    lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
    lucene/dev/branches/lucene4547/lucene/codecs/   (props changed)
    lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java
    lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
    lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
    lucene/dev/branches/lucene4547/lucene/core/   (props changed)
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41DocValuesProducer.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Terms.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/FixedBitSet.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/Version.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FST.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FSTEnum.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/Util.java
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
    lucene/dev/branches/lucene4547/lucene/facet/   (props changed)
    lucene/dev/branches/lucene4547/lucene/facet/build.xml
    lucene/dev/branches/lucene4547/lucene/facet/src/examples/org/apache/lucene/facet/example/merge/TaxonomyMergeUtils.java
    lucene/dev/branches/lucene4547/lucene/facet/src/examples/org/apache/lucene/facet/example/multiCL/MultiCLIndexer.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsFacetFields.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/index/CountingListBuilder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/index/FacetFields.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/index/OrdinalMappingAtomicReader.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/index/params/CategoryListParams.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/DrillDown.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/StandardFacetsAccumulator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/TopKFacetResultsHandler.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/TopKInEachNodeHandler.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/TotalFacetCounts.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/TotalFacetCountsCache.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/aggregator/associations/AssociationFloatSumAggregator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/aggregator/associations/AssociationIntSumAggregator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/params/FacetRequest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/params/FacetSearchParams.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/params/associations/AssociationFloatSumFacetRequest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/params/associations/AssociationIntSumFacetRequest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/results/FacetResult.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/search/sampling/Sampler.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/CategoryPath.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/facet/util/PartitionsUtils.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/ChunksIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/DGapIntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/DGapIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/EightFlagsIntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/EightFlagsIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/FourFlagsIntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/FourFlagsIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/IntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/IntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/IntEncoderFilter.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/NOnesIntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/NOnesIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/SimpleIntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/SimpleIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/SortingIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/UniqueValuesIntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/VInt8IntDecoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/java/org/apache/lucene/util/encoding/VInt8IntEncoder.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/FacetTestBase.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/FacetTestUtils.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/index/params/CategoryListParamsTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/index/params/FacetIndexingParamsTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/index/params/PerDimensionIndexingParamsTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/CategoryListIteratorTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/DrillDownTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestMultipleCategoryLists.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestStandardFacetsAccumulator.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKInEachNodeResultHandler.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestTotalFacetCounts.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/TestTotalFacetCountsCache.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/params/FacetRequestTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/params/FacetSearchParamsTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/search/params/MultiCategoryListIteratorTest.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestCategoryPath.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingSpeed.java
    lucene/dev/branches/lucene4547/lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingTest.java
    lucene/dev/branches/lucene4547/lucene/misc/   (props changed)
    lucene/dev/branches/lucene4547/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
    lucene/dev/branches/lucene4547/lucene/suggest/   (props changed)
    lucene/dev/branches/lucene4547/lucene/suggest/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
    lucene/dev/branches/lucene4547/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
    lucene/dev/branches/lucene4547/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FSTUtil.java
    lucene/dev/branches/lucene4547/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletion.java
    lucene/dev/branches/lucene4547/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java
    lucene/dev/branches/lucene4547/lucene/test-framework/   (props changed)
    lucene/dev/branches/lucene4547/lucene/test-framework/src/java/org/apache/lucene/util/fst/FSTTester.java
    lucene/dev/branches/lucene4547/solr/   (props changed)
    lucene/dev/branches/lucene4547/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/lucene4547/solr/contrib/   (props changed)
    lucene/dev/branches/lucene4547/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/FileDataSource.java
    lucene/dev/branches/lucene4547/solr/core/   (props changed)
    lucene/dev/branches/lucene4547/solr/core/src/java/org/apache/solr/core/CoreContainer.java
    lucene/dev/branches/lucene4547/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
    lucene/dev/branches/lucene4547/solr/core/src/test/org/apache/solr/core/TestLazyCores.java
    lucene/dev/branches/lucene4547/solr/example/   (props changed)
    lucene/dev/branches/lucene4547/solr/example/example-DIH/solr/rss/conf/rss-data-config.xml
    lucene/dev/branches/lucene4547/solr/example/solr/collection1/conf/solrconfig.xml
    lucene/dev/branches/lucene4547/solr/example/solr/collection1/conf/velocity/head.vm
    lucene/dev/branches/lucene4547/solr/example/solr/collection1/conf/velocity/jquery.autocomplete.js
    lucene/dev/branches/lucene4547/solr/licenses/   (props changed)
    lucene/dev/branches/lucene4547/solr/solrj/   (props changed)
    lucene/dev/branches/lucene4547/solr/solrj/ivy.xml
    lucene/dev/branches/lucene4547/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrServer.java

Modified: lucene/dev/branches/lucene4547/dev-tools/README.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/README.txt?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/README.txt (original)
+++ lucene/dev/branches/lucene4547/dev-tools/README.txt Fri Jan 18 22:38:56 2013
@@ -1,7 +1,11 @@
-The tools, documentation, etc. in this directory are intended to be helpful to developers of Lucene and Solr.  They are not necessarily maintained in the same way that the core code is maintained and so your mileage may vary as to the usefulness of the tools.
+The tools, documentation, etc. in this directory are intended to be helpful
+to developers of Lucene and Solr.  They are not necessarily maintained in
+the same way that the core code is maintained and so your mileage may vary
+as to the usefulness of the tools.
 
-Description of directories:
-./size-estimator-lucene-solr -- Spreadsheet for estimating memory and disk usage in Lucene/Solr
+Description of dev-tools/ contents:
+
+./size-estimator-lucene-solr.xls -- Spreadsheet for estimating memory and disk usage in Lucene/Solr
 ./eclipse -- Used to generate project descriptors for the Eclipse IDE.
 ./idea -- Similar to Eclipse, but for IntelliJ's IDEA IDE.
 ./maven -- Mavenizes the Lucene/Solr packages

Modified: lucene/dev/branches/lucene4547/dev-tools/maven/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/maven/pom.xml.template?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/maven/pom.xml.template (original)
+++ lucene/dev/branches/lucene4547/dev-tools/maven/pom.xml.template Fri Jan 18 22:38:56 2013
@@ -393,11 +393,6 @@
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
-        <artifactId>log4j-over-slf4j</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${slf4j.version}</version>
       </dependency> 

Modified: lucene/dev/branches/lucene4547/dev-tools/maven/solr/core/src/test/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/maven/solr/core/src/test/pom.xml.template?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/maven/solr/core/src/test/pom.xml.template (original)
+++ lucene/dev/branches/lucene4547/dev-tools/maven/solr/core/src/test/pom.xml.template Fri Jan 18 22:38:56 2013
@@ -57,11 +57,6 @@
       <artifactId>easymock</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>log4j-over-slf4j</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
   <build>
     <sourceDirectory/>

Modified: lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/java/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/java/pom.xml.template?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/java/pom.xml.template (original)
+++ lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/java/pom.xml.template Fri Jan 18 22:38:56 2013
@@ -76,12 +76,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-    <!-- Need log4j api so long as Zookeeper does; see https://issues.apache.org/jira/browse/ZOOKEEPER-850 -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>log4j-over-slf4j</artifactId>
-      <optional>true</optional>  <!-- let the end user decide... they may be using log4j directly! -->
-    </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>

Modified: lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/test/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/test/pom.xml.template?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/test/pom.xml.template (original)
+++ lucene/dev/branches/lucene4547/dev-tools/maven/solr/solrj/src/test/pom.xml.template Fri Jan 18 22:38:56 2013
@@ -52,11 +52,6 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>log4j-over-slf4j</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
   <build>
     <sourceDirectory/>

Modified: lucene/dev/branches/lucene4547/dev-tools/maven/solr/webapp/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/maven/solr/webapp/pom.xml.template?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/maven/solr/webapp/pom.xml.template (original)
+++ lucene/dev/branches/lucene4547/dev-tools/maven/solr/webapp/pom.xml.template Fri Jan 18 22:38:56 2013
@@ -64,10 +64,6 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>log4j-over-slf4j</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
     </dependency>
   </dependencies>

Modified: lucene/dev/branches/lucene4547/dev-tools/scripts/buildAndPushRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/dev-tools/scripts/buildAndPushRelease.py?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/dev-tools/scripts/buildAndPushRelease.py (original)
+++ lucene/dev/branches/lucene4547/dev-tools/scripts/buildAndPushRelease.py Fri Jan 18 22:38:56 2013
@@ -19,9 +19,9 @@ import shutil
 import os
 import sys
 
-# Usage: python -u buildRelease.py [-sign gpgKey(eg: 6E68DA61)] [-prepare] [-push userName] [-pushLocal dirName] [-smoke tmpDir] /path/to/checkout version(eg: 3.4.0) rcNum(eg: 0)
+# Usage: python3.2 -u buildAndPushRelease.py [-sign gpgKey(eg: 6E68DA61)] [-prepare] [-push userName] [-pushLocal dirName] [-smoke tmpDir] /path/to/checkout version(eg: 3.4.0) rcNum(eg: 0)
 #
-# EG: python -u buildRelease.py -prepare -push -sign 6E68DA61 mikemccand /lucene/34x 3.4.0 0
+# EG: python3.2 -u buildAndPushRelease.py -prepare -push -sign 6E68DA61 mikemccand /lucene/34x 3.4.0 0
 
 # NOTE: if you specify -sign, you have to type in your gpg password at
 # some point while this runs; it's VERY confusing because the output
@@ -32,15 +32,15 @@ import sys
 LOG = '/tmp/release.log'
 
 def log(msg):
-  f = open(LOG, 'ab')
-  f.write(msg)
+  f = open(LOG, mode='ab')
+  f.write(msg.encode('utf-8'))
   f.close()
   
 def run(command):
   log('\n\n%s: RUN: %s\n' % (datetime.datetime.now(), command))
   if os.system('%s >> %s 2>&1' % (command, LOG)):
     msg = '    FAILED: %s [see log %s]' % (command, LOG)
-    print msg
+    print(msg)
     raise RuntimeError(msg)
 
 def scrubCheckout():
@@ -53,7 +53,7 @@ def scrubCheckout():
     if match:
       s = match.group(1)
       if os.path.exists(s):
-        print '    delete %s' % s
+        print('    delete %s' % s)
         if os.path.isdir(s) and not os.path.islink(s):
           shutil.rmtree(s)
         else:
@@ -69,29 +69,29 @@ def getSVNRev():
   
 
 def prepare(root, version, gpgKeyID, doTest):
-  print
-  print 'Prepare release...'
+  print()
+  print('Prepare release...')
   if os.path.exists(LOG):
     os.remove(LOG)
 
   os.chdir(root)
-  print '  svn up...'
+  print('  svn up...')
   run('svn up')
 
   rev = getSVNRev()
-  print '  svn rev: %s' % rev
+  print('  svn rev: %s' % rev)
   log('\nSVN rev: %s\n' % rev)
 
   if doTest:
     # Don't run tests if we are gonna smoke test after the release...
-    print '  ant clean test'
+    print('  ant clean test')
     run('ant clean test')
 
-  print '  clean checkout'
+  print('  clean checkout')
   scrubCheckout()
-  open('rev.txt', 'wb').write(rev)
+  open('rev.txt', mode='wb').write(rev.encode('UTF-8'))
   
-  print '  lucene prepare-release'
+  print('  lucene prepare-release')
   os.chdir('lucene')
   cmd = 'ant -Dversion=%s -Dspecversion=%s' % (version, version)
   if gpgKeyID is not None:
@@ -100,7 +100,7 @@ def prepare(root, version, gpgKeyID, doT
     cmd += ' prepare-release-no-sign'
   run(cmd)
   
-  print '  solr prepare-release'
+  print('  solr prepare-release')
   os.chdir('../solr')
   cmd = 'ant -Dversion=%s -Dspecversion=%s' % (version, version)
   if gpgKeyID is not None:
@@ -108,105 +108,94 @@ def prepare(root, version, gpgKeyID, doT
   else:
     cmd += ' prepare-release-no-sign'
   run(cmd)
-  print '  done!'
-  print
+  print('  done!')
+  print()
   return rev
 
 def push(version, root, rev, rcNum, username):
-  print 'Push...'
+  print('Push...')
   dir = 'lucene-solr-%s-RC%d-rev%s' % (version, rcNum, rev)
-  s = os.popen('ssh %s@people.apache.org "ls -ld public_html/staging_area/%s" 2>&1' % (username, dir)).read()
-  if s.lower().find('no such file or directory') == -1:
-    print '  Remove old dir...'
+  s = os.popen('ssh %s@people.apache.org "ls -ld public_html/staging_area/%s" 2>&1' % (username, dir)).read().decode('UTF-8')
+  if 'no such file or directory' not in s.lower():
+    print('  Remove old dir...')
     run('ssh %s@people.apache.org "chmod -R u+rwX public_html/staging_area/%s; rm -rf public_html/staging_area/%s"' % 
         (username, dir, dir))
   run('ssh %s@people.apache.org "mkdir -p public_html/staging_area/%s/lucene public_html/staging_area/%s/solr"' % \
       (username, dir, dir))
-  print '  Lucene'
+  print('  Lucene')
   os.chdir('%s/lucene/dist' % root)
-  print '    zip...'
+  print('    zip...')
   if os.path.exists('lucene.tar.bz2'):
     os.remove('lucene.tar.bz2')
   run('tar cjf lucene.tar.bz2 *')
-  print '    copy...'
+  print('    copy...')
   run('scp lucene.tar.bz2 %s@people.apache.org:public_html/staging_area/%s/lucene' % (username, dir))
-  print '    unzip...'
+  print('    unzip...')
   run('ssh %s@people.apache.org "cd public_html/staging_area/%s/lucene; tar xjf lucene.tar.bz2; rm -f lucene.tar.bz2"' % (username, dir))
   os.remove('lucene.tar.bz2')
-  print '    copy changes...'
-  os.chdir('..')
-  run('scp -r build/docs/changes %s@people.apache.org:public_html/staging_area/%s/lucene/changes-%s' % (username, dir, version))
 
-  print '  Solr'
+  print('  Solr')
   os.chdir('%s/solr/package' % root)
-  print '    zip...'
+  print('    zip...')
   if os.path.exists('solr.tar.bz2'):
     os.remove('solr.tar.bz2')
   run('tar cjf solr.tar.bz2 *')
-  print '    copy...'
+  print('    copy...')
   run('scp solr.tar.bz2 %s@people.apache.org:public_html/staging_area/%s/solr' % (username, dir))
-  print '    unzip...'
+  print('    unzip...')
   run('ssh %s@people.apache.org "cd public_html/staging_area/%s/solr; tar xjf solr.tar.bz2; rm -f solr.tar.bz2"' % (username, dir))
   os.remove('solr.tar.bz2')
 
-  print '  KEYS'
-  run('wget http://people.apache.org/keys/group/lucene.asc')
-  os.rename('lucene.asc', 'KEYS')
-  run('chmod a+r-w KEYS')
-  run('scp KEYS %s@people.apache.org:public_html/staging_area/%s/lucene' % (username, dir))
-  run('scp KEYS %s@people.apache.org:public_html/staging_area/%s/solr' % (username, dir))
-  os.remove('KEYS')
-
-  print '  chmod...'
+  print('  chmod...')
   run('ssh %s@people.apache.org "chmod -R a+rX-w public_html/staging_area/%s"' % (username, dir))
 
-  print '  done!'
+  print('  done!')
   url = 'https://people.apache.org/~%s/staging_area/%s' % (username, dir)
   return url
 
 def pushLocal(version, root, rev, rcNum, localDir):
-  print 'Push local [%s]...' % localDir
+  print('Push local [%s]...' % localDir)
   os.makedirs(localDir)
 
   dir = 'lucene-solr-%s-RC%d-rev%s' % (version, rcNum, rev)
   os.makedirs('%s/%s/lucene' % (localDir, dir))
   os.makedirs('%s/%s/solr' % (localDir, dir))
-  print '  Lucene'
+  print('  Lucene')
   os.chdir('%s/lucene/dist' % root)
-  print '    zip...'
+  print('    zip...')
   if os.path.exists('lucene.tar.bz2'):
     os.remove('lucene.tar.bz2')
   run('tar cjf lucene.tar.bz2 *')
 
   os.chdir('%s/%s/lucene' % (localDir, dir))
-  print '    unzip...'
+  print('    unzip...')
   run('tar xjf "%s/lucene/dist/lucene.tar.bz2"' % root)
   os.remove('%s/lucene/dist/lucene.tar.bz2' % root)
-  print '    copy changes...'
+  print('    copy changes...')
   run('cp -r "%s/lucene/build/docs/changes" changes-%s' % (root, version))
 
-  print '  Solr'
+  print('  Solr')
   os.chdir('%s/solr/package' % root)
-  print '    zip...'
+  print('    zip...')
   if os.path.exists('solr.tar.bz2'):
     os.remove('solr.tar.bz2')
   run('tar cjf solr.tar.bz2 *')
-  print '    unzip...'
+  print('    unzip...')
   os.chdir('%s/%s/solr' % (localDir, dir))
   run('tar xjf "%s/solr/package/solr.tar.bz2"' % root)
   os.remove('%s/solr/package/solr.tar.bz2' % root)
 
-  print '  KEYS'
+  print('  KEYS')
   run('wget http://people.apache.org/keys/group/lucene.asc')
   os.rename('lucene.asc', 'KEYS')
   run('chmod a+r-w KEYS')
   run('cp KEYS ../lucene')
 
-  print '  chmod...'
+  print('  chmod...')
   os.chdir('..')
   run('chmod -R a+rX-w .')
 
-  print '  done!'
+  print('  done!')
   return 'file://%s/%s' % (os.path.abspath(localDir), dir)
   
 def main():
@@ -231,9 +220,9 @@ def main():
     smokeTmpDir = sys.argv[idx+1]
     del sys.argv[idx:idx+2]
     if os.path.exists(smokeTmpDir):
-      print
-      print 'ERROR: smoke tmpDir "%s" exists; please remove first' % smokeTmpDir
-      print
+      print()
+      print('ERROR: smoke tmpDir "%s" exists; please remove first' % smokeTmpDir)
+      print()
       sys.exit(1)
     
   try:
@@ -245,15 +234,15 @@ def main():
     localStagingDir = sys.argv[idx+1]
     del sys.argv[idx:idx+2]
     if os.path.exists(localStagingDir):
-      print
-      print 'ERROR: pushLocal dir "%s" exists; please remove first' % localStagingDir
-      print
+      print()
+      print('ERROR: pushLocal dir "%s" exists; please remove first' % localStagingDir)
+      print()
       sys.exit(1)
 
   if doPushRemote and doPushLocal:
-    print
-    print 'ERROR: specify at most one of -push or -pushLocal (got both)'
-    print
+    print()
+    print('ERROR: specify at most one of -push or -pushLocal (got both)')
+    print()
     sys.exit(1)
 
   try:
@@ -263,7 +252,7 @@ def main():
   else:
     gpgKeyID = sys.argv[idx+1]
     del sys.argv[idx:idx+2]
-    
+
   root = os.path.abspath(sys.argv[1])
   version = sys.argv[2]
   rcNum = int(sys.argv[3])
@@ -272,22 +261,26 @@ def main():
     rev = prepare(root, version, gpgKeyID, smokeTmpDir is None)
   else:
     os.chdir(root)
-    rev = open('rev.txt').read()
+    rev = open('rev.txt', encoding='UTF-8').read()
 
   if doPushRemote:
     url = push(version, root, rev, rcNum, username)
   elif doPushLocal:
     url = pushLocal(version, root, rev, rcNum, localStagingDir)
   else:
-    url = NOne
+    url = None
 
   if url is not None:
-    print '  URL: %s' % url
+    print('  URL: %s' % url)
 
   if smokeTmpDir is not None:
     import smokeTestRelease
     smokeTestRelease.DEBUG = False
     smokeTestRelease.smokeTest(url, version, smokeTmpDir, gpgKeyID is not None)
-    
+
 if __name__ == '__main__':
-  main()
+  try:
+    main()
+  except:
+    import traceback
+    traceback.print_exc()

Modified: lucene/dev/branches/lucene4547/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/CHANGES.txt?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene4547/lucene/CHANGES.txt Fri Jan 18 22:38:56 2013
@@ -19,6 +19,21 @@ Changes in backwards compatibility polic
   (Nikola Tanković, Uwe Schindler, Chris Male, Mike McCandless,
   Robert Muir)
 
+======================= Lucene 4.2.0 =======================
+
+Changes in backwards compatibility policy
+
+* LUCENE-4602: FacetFields now stores facet ordinals in a DocValues field, 
+  rather than a payload. This forces rebuilding existing indexes, or do a
+  one time migration using FacetsPayloadMigratingReader. Since DocValues 
+  support in-memory caching, CategoryListCache was removed too.
+  (Shai Erera, Michael McCandless)
+
+Optimizations
+
+* LUCENE-4687: BloomFilterPostingsFormat now lazily initializes delegate
+  TermsEnum only if needed to do a seek or get a DocsEnum. (Simon Willnauer) 
+
 * LUCENE-4677, LUCENE-4682: unpacked FSTs now use vInt to encode the node target,
   to reduce their size (Mike McCandless)
 
@@ -29,6 +44,11 @@ Changes in backwards compatibility polic
 * LUCENE-3298: FST can now be larger than 2.1 GB / 2.1 B nodes.
   (James Dyer, Mike McCandless)
 
+New Features
+
+* LUCENE-4686: New specialized DGapVInt8IntEncoder for facets (now the 
+  default). (Shai Erera)
+
 ======================= Lucene 4.1.0 =======================
 
 Changes in backwards compatibility policy
@@ -150,7 +170,7 @@ New Features
   remove stop words then "ghost chr..." could suggest "The Ghost of
   Christmas Past"; if SynonymFilter is used to map wifi and wireless
   network to hotspot, then "wirele..." could suggest "wifi router";
-  token normalization likes stemmers, accent removel, etc. would allow
+  token normalization likes stemmers, accent removal, etc. would allow
   the suggester to ignore such variations. (Robert Muir, Sudarshan
   Gaikaiwari, Mike McCandless)
 
@@ -202,7 +222,7 @@ API Changes
   information about the trigger of the merge ie. merge triggered due
   to a segment merge or a full flush etc. (Simon Willnauer)
 
-* Lucene-4415: TermsFilter is now immutable. All terms need to be provided
+* LUCENE-4415: TermsFilter is now immutable. All terms need to be provided
   as constructor argument. (Simon Willnauer)
 
 * LUCENE-4520: ValueSource.getSortField no longer throws IOExceptions
@@ -227,6 +247,9 @@ API Changes
 * LUCENE-4663: Deprecate IndexSearcher.document(int, Set). This was not intended
   to be final, nor named document(). Use IndexSearcher.doc(int, Set) instead.
   (Robert Muir)
+
+* LUCENE-4684: Made DirectSpellChecker extendable.
+  (Martijn van Groningen)
   
 Bug Fixes
 
@@ -343,6 +366,9 @@ Bug Fixes
   DEFAULT_ARTICLES list passed to ElisionFilter.  (David Leunen via Steve Rowe)
 
 * LUCENE-4671: Fix CharsRef.subSequence method.  (Tim Smith via Robert Muir)
+
+* LUCENE-4465: Let ConstantScoreQuery's Scorer return its child scorer.
+  (selckin via Uwe Schindler)
     
 Changes in Runtime Behavior
   

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java Fri Jan 18 22:38:56 2013
@@ -59,7 +59,7 @@ public class MappingCharFilter extends B
     cachedRootArcs = normMap.cachedRootArcs;
 
     if (map != null) {
-      fstReader = map.getBytesReader(0);
+      fstReader = map.getBytesReader();
     } else {
       fstReader = null;
     }

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/NormalizeCharMap.java Fri Jan 18 22:38:56 2013
@@ -49,7 +49,7 @@ public class NormalizeCharMap {
       try {
         // Pre-cache root arcs:
         final FST.Arc<CharsRef> scratchArc = new FST.Arc<CharsRef>();
-        final FST.BytesReader fstReader = map.getBytesReader(0);
+        final FST.BytesReader fstReader = map.getBytesReader();
         map.getFirstArc(scratchArc);
         if (FST.targetHasArcs(scratchArc)) {
           map.readFirstRealTargetArc(scratchArc.target, scratchArc, fstReader);

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/HyphenationCompoundWordTokenFilter.java Fri Jan 18 22:38:56 2013
@@ -148,7 +148,7 @@ public class HyphenationCompoundWordToke
    */
   public static HyphenationTree getHyphenationTree(File hyphenationFile)
       throws IOException {
-    return getHyphenationTree(new InputSource(hyphenationFile.toURL().toExternalForm()));
+    return getHyphenationTree(new InputSource(hyphenationFile.toURI().toASCIIString()));
   }
 
   /**

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/HyphenationTree.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/HyphenationTree.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/HyphenationTree.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/HyphenationTree.java Fri Jan 18 22:38:56 2013
@@ -111,7 +111,7 @@ public class HyphenationTree extends Ter
    * @throws IOException In case the parsing fails
    */
   public void loadPatterns(File f) throws IOException {
-    InputSource src = new InputSource(f.toURL().toExternalForm());
+    InputSource src = new InputSource(f.toURI().toASCIIString());
     loadPatterns(src);
   }
 

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java Fri Jan 18 22:38:56 2013
@@ -98,7 +98,7 @@ public class PatternParser extends Defau
    * @throws IOException In case of an exception while parsing
    */
   public void parse(File file) throws IOException {
-    InputSource src = new InputSource(file.toURL().toExternalForm());
+    InputSource src = new InputSource(file.toURI().toASCIIString());
     parse(src);
   }
 

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilterFactory.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilterFactory.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilterFactory.java Fri Jan 18 22:38:56 2013
@@ -35,7 +35,7 @@ import java.util.Set;
  *   &lt;analyzer&gt;
  *     &lt;tokenizer class="solr.StandardTokenizerFactory"/&gt;
  *     &lt;filter class="solr.TypeTokenFilterFactory" types="stoptypes.txt"
- *                   enablePositionIncrements="true" useWhiteList="false"/&gt;
+ *                   enablePositionIncrements="true" useWhitelist="false"/&gt;
  *   &lt;/analyzer&gt;
  * &lt;/fieldType&gt;</pre>
  */

Modified: lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java Fri Jan 18 22:38:56 2013
@@ -263,7 +263,7 @@ public final class SynonymFilter extends
     this.synonyms = synonyms;
     this.ignoreCase = ignoreCase;
     this.fst = synonyms.fst;
-    this.fstReader = fst.getBytesReader(0);
+    this.fstReader = fst.getBytesReader();
     if (fst == null) {
       throw new IllegalArgumentException("fst must be non-null");
     }

Modified: lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapaneseTokenizer.java Fri Jan 18 22:38:56 2013
@@ -201,10 +201,10 @@ public final class JapaneseTokenizer ext
     characterDefinition = unkDictionary.getCharacterDefinition();
     this.userDictionary = userDictionary;
     costs = ConnectionCosts.getInstance();
-    fstReader = fst.getBytesReader(0);
+    fstReader = fst.getBytesReader();
     if (userDictionary != null) {
       userFST = userDictionary.getFST();
-      userFSTReader = userFST.getBytesReader(0);
+      userFSTReader = userFST.getBytesReader();
     } else {
       userFST = null;
       userFSTReader = null;

Modified: lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoFST.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoFST.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoFST.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/TokenInfoFST.java Fri Jan 18 22:38:56 2013
@@ -54,7 +54,7 @@ public final class TokenInfoFST {
     FST.Arc<Long> firstArc = new FST.Arc<Long>();
     fst.getFirstArc(firstArc);
     FST.Arc<Long> arc = new FST.Arc<Long>();
-    final FST.BytesReader fstReader = fst.getBytesReader(0);
+    final FST.BytesReader fstReader = fst.getBytesReader();
     // TODO: jump to 3040, readNextRealArc to ceiling? (just be careful we don't add bugs)
     for (int i = 0; i < rootCache.length; i++) {
       if (fst.findTargetArc(0x3040 + i, firstArc, arc, fstReader) != null) {
@@ -83,8 +83,8 @@ public final class TokenInfoFST {
     return fst.getFirstArc(arc);
   }
 
-  public FST.BytesReader getBytesReader(int pos) {
-    return fst.getBytesReader(pos);
+  public FST.BytesReader getBytesReader() {
+    return fst.getBytesReader();
   }
   
   /** @lucene.internal for testing only */

Modified: lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java (original)
+++ lucene/dev/branches/lucene4547/lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/dict/UserDictionary.java Fri Jan 18 22:38:56 2013
@@ -139,7 +139,7 @@ public final class UserDictionary implem
     TreeMap<Integer, int[]> result = new TreeMap<Integer, int[]>(); // index, [length, length...]
     boolean found = false; // true if we found any results
 
-    final FST.BytesReader fstReader = fst.getBytesReader(0);
+    final FST.BytesReader fstReader = fst.getBytesReader();
 
     FST.Arc<Long> arc = new FST.Arc<Long>();
     int end = off + len;

Modified: lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java (original)
+++ lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java Fri Jan 18 22:38:56 2013
@@ -236,26 +236,22 @@ public final class BloomFilteringPosting
       
       @Override
       public TermsEnum iterator(TermsEnum reuse) throws IOException {
-        TermsEnum result;
         if ((reuse != null) && (reuse instanceof BloomFilteredTermsEnum)) {
           // recycle the existing BloomFilteredTermsEnum by asking the delegate
           // to recycle its contained TermsEnum
           BloomFilteredTermsEnum bfte = (BloomFilteredTermsEnum) reuse;
           if (bfte.filter == filter) {
-            bfte.delegateTermsEnum = delegateTerms
-                .iterator(bfte.delegateTermsEnum);
+            bfte.reset(delegateTerms, bfte.delegateTermsEnum);
             return bfte;
           }
         }
         // We have been handed something we cannot reuse (either null, wrong
         // class or wrong filter) so allocate a new object
-        result = new BloomFilteredTermsEnum(delegateTerms.iterator(reuse),
-            filter);
-        return result;
+        return new BloomFilteredTermsEnum(delegateTerms, reuse, filter);
       }
       
       @Override
-      public Comparator<BytesRef> getComparator() throws IOException {
+      public Comparator<BytesRef> getComparator() {
         return delegateTerms.getComparator();
       }
       
@@ -295,24 +291,43 @@ public final class BloomFilteringPosting
       }
     }
     
-    class BloomFilteredTermsEnum extends TermsEnum {
+    final class BloomFilteredTermsEnum extends TermsEnum {
+      private Terms delegateTerms;
+      private TermsEnum delegateTermsEnum;
+      private TermsEnum reuseDelegate;
+      private final FuzzySet filter;
+      
+      public BloomFilteredTermsEnum(Terms delegateTerms, TermsEnum reuseDelegate, FuzzySet filter) throws IOException {
+        this.delegateTerms = delegateTerms;
+        this.reuseDelegate = reuseDelegate;
+        this.filter = filter;
+      }
       
-      TermsEnum delegateTermsEnum;
-      private FuzzySet filter;
+      void reset(Terms delegateTerms, TermsEnum reuseDelegate) throws IOException {
+        this.delegateTerms = delegateTerms;
+        this.reuseDelegate = reuseDelegate;
+        this.delegateTermsEnum = null;
+      }
       
-      public BloomFilteredTermsEnum(TermsEnum iterator, FuzzySet filter) {
-        this.delegateTermsEnum = iterator;
-        this.filter = filter;
+      private final TermsEnum delegate() throws IOException {
+        if (delegateTermsEnum == null) {
+          /* pull the iterator only if we really need it -
+           * this can be a relativly heavy operation depending on the 
+           * delegate postings format and they underlying directory
+           * (clone IndexInput) */
+          delegateTermsEnum = delegateTerms.iterator(reuseDelegate);
+        }
+        return delegateTermsEnum;
       }
       
       @Override
       public final BytesRef next() throws IOException {
-        return delegateTermsEnum.next();
+        return delegate().next();
       }
       
       @Override
       public final Comparator<BytesRef> getComparator() {
-        return delegateTermsEnum.getComparator();
+        return delegateTerms.getComparator();
       }
       
       @Override
@@ -326,51 +341,51 @@ public final class BloomFilteringPosting
         if (filter.contains(text) == ContainsResult.NO) {
           return false;
         }
-        return delegateTermsEnum.seekExact(text, useCache);
+        return delegate().seekExact(text, useCache);
       }
       
       @Override
       public final SeekStatus seekCeil(BytesRef text, boolean useCache)
           throws IOException {
-        return delegateTermsEnum.seekCeil(text, useCache);
+        return delegate().seekCeil(text, useCache);
       }
       
       @Override
       public final void seekExact(long ord) throws IOException {
-        delegateTermsEnum.seekExact(ord);
+        delegate().seekExact(ord);
       }
       
       @Override
       public final BytesRef term() throws IOException {
-        return delegateTermsEnum.term();
+        return delegate().term();
       }
       
       @Override
       public final long ord() throws IOException {
-        return delegateTermsEnum.ord();
+        return delegate().ord();
       }
       
       @Override
       public final int docFreq() throws IOException {
-        return delegateTermsEnum.docFreq();
+        return delegate().docFreq();
       }
       
       @Override
       public final long totalTermFreq() throws IOException {
-        return delegateTermsEnum.totalTermFreq();
+        return delegate().totalTermFreq();
       }
       
 
       @Override
       public DocsAndPositionsEnum docsAndPositions(Bits liveDocs,
           DocsAndPositionsEnum reuse, int flags) throws IOException {
-        return delegateTermsEnum.docsAndPositions(liveDocs, reuse, flags);
+        return delegate().docsAndPositions(liveDocs, reuse, flags);
       }
 
       @Override
       public DocsEnum docs(Bits liveDocs, DocsEnum reuse, int flags)
           throws IOException {
-        return delegateTermsEnum.docs(liveDocs, reuse, flags);
+        return delegate().docs(liveDocs, reuse, flags);
       }
       
       
@@ -383,12 +398,10 @@ public final class BloomFilteringPosting
     private Map<FieldInfo,FuzzySet> bloomFilters = new HashMap<FieldInfo,FuzzySet>();
     private SegmentWriteState state;
     
-    // private PostingsFormat delegatePostingsFormat;
     
     public BloomFilteredFieldsConsumer(FieldsConsumer fieldsConsumer,
         SegmentWriteState state, PostingsFormat delegatePostingsFormat) {
       this.delegateFieldsConsumer = fieldsConsumer;
-      // this.delegatePostingsFormat=delegatePostingsFormat;
       this.state = state;
     }
     

Modified: lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java (original)
+++ lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java Fri Jan 18 22:38:56 2013
@@ -70,10 +70,6 @@ import org.apache.lucene.util.packed.Pac
  * queries that rely on advance will (AND BooleanQuery,
  * PhraseQuery) will be relatively slow!
  *
- * <p><b>NOTE</b>: this codec cannot address more than ~2.1 GB
- * of postings, because the underlying FST uses an int
- * to address the underlying byte[].
- *
  * @lucene.experimental */
 
 // TODO: Maybe name this 'Cached' or something to reflect
@@ -88,6 +84,13 @@ public final class MemoryPostingsFormat 
     this(false, PackedInts.DEFAULT);
   }
 
+  /**
+   * Create MemoryPostingsFormat, specifying advanced FST options.
+   * @param doPackFST true if a packed FST should be built.
+   *        NOTE: packed FSTs are limited to ~2.1 GB of postings.
+   * @param acceptableOverheadRatio allowable overhead for packed ints
+   *        during FST construction.
+   */
   public MemoryPostingsFormat(boolean doPackFST, float acceptableOverheadRatio) {
     super("Memory");
     this.doPackFST = doPackFST;

Modified: lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java (original)
+++ lucene/dev/branches/lucene4547/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java Fri Jan 18 22:38:56 2013
@@ -272,7 +272,7 @@ public class SimpleTextTermVectorsReader
     }
 
     @Override
-    public Comparator<BytesRef> getComparator() throws IOException {
+    public Comparator<BytesRef> getComparator() {
       return BytesRef.getUTF8SortedAsUnicodeComparator();
     }
 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java Fri Jan 18 22:38:56 2013
@@ -833,7 +833,7 @@ public class BlockTreeTermsReader extend
         if (index == null) {
           fstReader = null;
         } else {
-          fstReader = index.getBytesReader(0);
+          fstReader = index.getBytesReader();
         }
 
         // TODO: if the automaton is "smallish" we really
@@ -1277,7 +1277,7 @@ public class BlockTreeTermsReader extend
         if (index == null) {
           fstReader = null;
         } else {
-          fstReader = index.getBytesReader(0);
+          fstReader = index.getBytesReader();
         }
 
         // Init w/ root block; don't use index since it may

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41DocValuesProducer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41DocValuesProducer.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41DocValuesProducer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41DocValuesProducer.java Fri Jan 18 22:38:56 2013
@@ -218,7 +218,7 @@ class Lucene41DocValuesProducer extends 
     final FST<Long> fst = instance;
     
     // per-thread resources
-    final BytesReader in = fst.getBytesReader(0);
+    final BytesReader in = fst.getBytesReader();
     final Arc<Long> firstArc = new Arc<Long>();
     final Arc<Long> scratchArc = new Arc<Long>();
     final IntsRef scratchInts = new IntsRef();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java Fri Jan 18 22:38:56 2013
@@ -87,7 +87,7 @@ public class FilterAtomicReader extends 
     }
 
     @Override
-    public Comparator<BytesRef> getComparator() throws IOException {
+    public Comparator<BytesRef> getComparator() {
       return in.getComparator();
     }
 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Terms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Terms.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Terms.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Terms.java Fri Jan 18 22:38:56 2013
@@ -80,7 +80,7 @@ public abstract class Terms {
    *  if there are no terms.  This method may be invoked
    *  many times; it's best to cache a single instance &
    *  reuse it. */
-  public abstract Comparator<BytesRef> getComparator() throws IOException;
+  public abstract Comparator<BytesRef> getComparator();
 
   /** Returns the number of terms for this field, or -1 if this 
    *  measure isn't stored by the codec. Note that, just like 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java Fri Jan 18 22:38:56 2013
@@ -24,6 +24,8 @@ import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.ToStringUtils;
 
 import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Set;
 
 /**
@@ -248,6 +250,14 @@ public class ConstantScoreQuery extends 
         return super.score(collector, max, firstDocID);
       }
     }
+
+    @Override
+    public Collection<ChildScorer> getChildren() {
+      if (docIdSetIterator instanceof Scorer)
+        return Collections.singletonList(new ChildScorer((Scorer) docIdSetIterator, "constant"));
+      else
+        return Collections.emptyList();
+    }
   }
 
   @Override

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java Fri Jan 18 22:38:56 2013
@@ -96,7 +96,7 @@ public class FuzzyQuery extends MultiTer
   
   /**
    * Calls {@link #FuzzyQuery(Term, int, int, int, boolean) 
-   * FuzzyQuery(term, minimumSimilarity, prefixLength, defaultMaxExpansions, defaultTranspositions)}.
+   * FuzzyQuery(term, maxEdits, prefixLength, defaultMaxExpansions, defaultTranspositions)}.
    */
   public FuzzyQuery(Term term, int maxEdits, int prefixLength) {
     this(term, maxEdits, prefixLength, defaultMaxExpansions, defaultTranspositions);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/FixedBitSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/FixedBitSet.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/FixedBitSet.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/FixedBitSet.java Fri Jan 18 22:38:56 2013
@@ -39,6 +39,7 @@ import org.apache.lucene.search.DocIdSet
 public final class FixedBitSet extends DocIdSet implements Bits {
   private final long[] bits;
   private final int numBits;
+  private final int wordLength;
 
   /** returns the number of 64 bit words it would take to hold numBits */
   public static int bits2words(int numBits) {
@@ -52,23 +53,29 @@ public final class FixedBitSet extends D
   public FixedBitSet(int numBits) {
     this.numBits = numBits;
     bits = new long[bits2words(numBits)];
+    wordLength = bits.length;
   }
 
-  public FixedBitSet(long[]storedBits,int numBits) {
+  public FixedBitSet(long[] storedBits, int numBits) {
+    this.wordLength = bits2words(numBits);
+    if (wordLength > storedBits.length) {
+      throw new IllegalArgumentException("The given long array is too small  to hold " + numBits + " bits");
+    }
     this.numBits = numBits;
     this.bits = storedBits;
   }      
   
   /** Makes full copy. */
   public FixedBitSet(FixedBitSet other) {
-    bits = new long[other.bits.length];
-    System.arraycopy(other.bits, 0, bits, 0, bits.length);
+    bits = new long[other.wordLength];
+    System.arraycopy(other.bits, 0, bits, 0, other.wordLength);
     numBits = other.numBits;
+    wordLength = other.wordLength;
   }
 
   @Override
   public DocIdSetIterator iterator() {
-    return new OpenBitSetIterator(bits, bits.length);
+    return new OpenBitSetIterator(bits, wordLength);
   }
 
   @Override
@@ -159,7 +166,7 @@ public final class FixedBitSet extends D
       return (i<<6) + subIndex + Long.numberOfTrailingZeros(word);
     }
 
-    while(++i < bits.length) {
+    while(++i < wordLength) {
       word = bits[i];
       if (word != 0) {
         return (i<<6) + Long.numberOfTrailingZeros(word);
@@ -211,12 +218,12 @@ public final class FixedBitSet extends D
 
   /** this = this OR other */
   public void or(FixedBitSet other) {
-    or(other.bits, other.bits.length);
+    or(other.bits, other.wordLength);
   }
   
   private void or(final long[] otherArr, final int otherLen) {
     final long[] thisArr = this.bits;
-    int pos = Math.min(thisArr.length, otherLen);
+    int pos = Math.min(wordLength, otherLen);
     while (--pos >= 0) {
       thisArr[pos] |= otherArr[pos];
     }
@@ -247,17 +254,17 @@ public final class FixedBitSet extends D
 
   /** this = this AND other */
   public void and(FixedBitSet other) {
-    and(other.bits, other.bits.length);
+    and(other.bits, other.wordLength);
   }
   
   private void and(final long[] otherArr, final int otherLen) {
     final long[] thisArr = this.bits;
-    int pos = Math.min(thisArr.length, otherLen);
+    int pos = Math.min(this.wordLength, otherLen);
     while(--pos >= 0) {
       thisArr[pos] &= otherArr[pos];
     }
-    if (thisArr.length > otherLen) {
-      Arrays.fill(thisArr, otherLen, thisArr.length, 0L);
+    if (this.wordLength > otherLen) {
+      Arrays.fill(thisArr, otherLen, this.wordLength, 0L);
     }
   }
 
@@ -285,7 +292,7 @@ public final class FixedBitSet extends D
   
   private void andNot(final long[] otherArr, final int otherLen) {
     final long[] thisArr = this.bits;
-    int pos = Math.min(thisArr.length, otherLen);
+    int pos = Math.min(this.wordLength, otherLen);
     while(--pos >= 0) {
       thisArr[pos] &= ~otherArr[pos];
     }
@@ -418,7 +425,7 @@ public final class FixedBitSet extends D
   @Override
   public int hashCode() {
     long h = 0;
-    for (int i = bits.length; --i>=0;) {
+    for (int i = wordLength; --i>=0;) {
       h ^= bits[i];
       h = (h << 1) | (h >>> 63); // rotate left
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/Version.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/Version.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/Version.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/Version.java Fri Jan 18 22:38:56 2013
@@ -47,7 +47,14 @@ public enum Version { 
   @Deprecated
   LUCENE_41,
 
-  /** Match settings and bugs in Lucene's 5.0 release. 
+  /**
+   * Match settings and bugs in Lucene's 4.2 release.
+   * @deprecated (5.0) Use latest
+   */
+  @Deprecated
+  LUCENE_42,
+
+  /** Match settings and bugs in Lucene's 5.0 release.
    *  <p>
    *  Use this to get the latest &amp; greatest settings, bug
    *  fixes, etc, for Lucene.

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FST.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FST.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FST.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FST.java Fri Jan 18 22:38:56 2013
@@ -417,7 +417,7 @@ public final class FST<T> {
     cachedRootArcs = (Arc<T>[]) new Arc[0x80];
     final Arc<T> arc = new Arc<T>();
     getFirstArc(arc);
-    final BytesReader in = getBytesReader(0);
+    final BytesReader in = getBytesReader();
     if (targetHasArcs(arc)) {
       readFirstRealTargetArc(arc.target, arc, in);
       while(true) {
@@ -1246,22 +1246,12 @@ public final class FST<T> {
   /** Returns a {@link BytesReader} for this FST, positioned at
    *  position 0. */
   public BytesReader getBytesReader() {
-    return getBytesReader(0);
-  }
-
-  /** Returns a {@link BytesReader} for this FST, positioned at
-   *  the provided position. */
-  public BytesReader getBytesReader(long pos) {
-    // TODO: maybe re-use via ThreadLocal?
     BytesReader in;
     if (packed) {
       in = bytes.getForwardReader();
     } else {
       in = bytes.getReverseReader();
     }
-    if (pos != 0) {
-      in.setPosition(pos);
-    }
     return in;
   }
 
@@ -1448,7 +1438,7 @@ public final class FST<T> {
 
     Arc<T> arc = new Arc<T>();
 
-    final BytesReader r = getBytesReader(0);
+    final BytesReader r = getBytesReader();
 
     final int topN = Math.min(maxDerefNodes, inCounts.size());
 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FSTEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FSTEnum.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FSTEnum.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/FSTEnum.java Fri Jan 18 22:38:56 2013
@@ -46,7 +46,7 @@ abstract class FSTEnum<T> {
    *  term before target.  */
   protected FSTEnum(FST<T> fst) {
     this.fst = fst;
-    fstReader = fst.getBytesReader(0);
+    fstReader = fst.getBytesReader();
     NO_OUTPUT = fst.outputs.getNoOutput();
     fst.getFirstArc(getArc(0));
     output[0] = NO_OUTPUT;
@@ -145,7 +145,7 @@ abstract class FSTEnum<T> {
         // Arcs are fixed array -- use binary search to find
         // the target.
 
-        final FST.BytesReader in = fst.getBytesReader(0);
+        final FST.BytesReader in = fst.getBytesReader();
         int low = arc.arcIdx;
         int high = arc.numArcs-1;
         int mid = 0;
@@ -284,7 +284,7 @@ abstract class FSTEnum<T> {
         // Arcs are fixed array -- use binary search to find
         // the target.
 
-        final FST.BytesReader in = fst.getBytesReader(0);
+        final FST.BytesReader in = fst.getBytesReader();
         int low = arc.arcIdx;
         int high = arc.numArcs-1;
         int mid = 0;
@@ -434,7 +434,7 @@ abstract class FSTEnum<T> {
     FST.Arc<T> arc = getArc(upto-1);
     int targetLabel = getTargetLabel();
 
-    final FST.BytesReader fstReader = fst.getBytesReader(0);
+    final FST.BytesReader fstReader = fst.getBytesReader();
 
     while(true) {
       //System.out.println("  cycle target=" + (targetLabel == -1 ? "-1" : (char) targetLabel));

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/Util.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/Util.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/Util.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/util/fst/Util.java Fri Jan 18 22:38:56 2013
@@ -39,7 +39,7 @@ public final class Util {
     // TODO: would be nice not to alloc this on every lookup
     final FST.Arc<T> arc = fst.getFirstArc(new FST.Arc<T>());
 
-    final BytesReader fstReader = fst.getBytesReader(0);
+    final BytesReader fstReader = fst.getBytesReader();
 
     // Accumulate output as we go
     T output = fst.outputs.getNoOutput();
@@ -64,7 +64,7 @@ public final class Util {
   public static<T> T get(FST<T> fst, BytesRef input) throws IOException {
     assert fst.inputType == FST.INPUT_TYPE.BYTE1;
 
-    final BytesReader fstReader = fst.getBytesReader(0);
+    final BytesReader fstReader = fst.getBytesReader();
 
     // TODO: would be nice not to alloc this on every lookup
     final FST.Arc<T> arc = fst.getFirstArc(new FST.Arc<T>());
@@ -101,7 +101,7 @@ public final class Util {
    *  fit this. */
   public static IntsRef getByOutput(FST<Long> fst, long targetOutput) throws IOException {
 
-    final BytesReader in = fst.getBytesReader(0);
+    final BytesReader in = fst.getBytesReader();
 
     // TODO: would be nice not to alloc this on every lookup
     FST.Arc<Long> arc = fst.getFirstArc(new FST.Arc<Long>());
@@ -291,7 +291,7 @@ public final class Util {
 
     public TopNSearcher(FST<T> fst, int topN, int maxQueueDepth, Comparator<T> comparator) {
       this.fst = fst;
-      this.bytesReader = fst.getBytesReader(0);
+      this.bytesReader = fst.getBytesReader();
       this.topN = topN;
       this.maxQueueDepth = maxQueueDepth;
       this.comparator = comparator;
@@ -380,7 +380,7 @@ public final class Util {
 
       //System.out.println("search topN=" + topN);
 
-      final BytesReader fstReader = fst.getBytesReader(0);
+      final BytesReader fstReader = fst.getBytesReader();
       final T NO_OUTPUT = fst.outputs.getNoOutput();
 
       // TODO: we could enable FST to sorting arcs by weight
@@ -603,7 +603,7 @@ public final class Util {
     emitDotState(out, "initial", "point", "white", "");
 
     final T NO_OUTPUT = fst.outputs.getNoOutput();
-    final BytesReader r = fst.getBytesReader(0);
+    final BytesReader r = fst.getBytesReader();
 
     // final FST.Arc<T> scratchArc = new FST.Arc<T>();
 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Fri Jan 18 22:38:56 2013
@@ -83,14 +83,22 @@ import org.junit.Ignore;
 @SuppressCodecs({"MockFixedIntBlock", "MockVariableIntBlock", "MockSep", "MockRandom"})
 public class TestBackwardsCompatibility extends LuceneTestCase {
 
-  // Uncomment these cases & run them on an older Lucene
-  // version, to generate an index to test backwards
-  // compatibility.  Then, cd to build/test/index.cfs and
-  // run "zip index.<VERSION>.cfs.zip *"; cd to
-  // build/test/index.nocfs and run "zip
-  // index.<VERSION>.nocfs.zip *".  Then move those 2 zip
-  // files to your trunk checkout and add them to the
-  // oldNames array.
+  // Uncomment these cases & run them on an older Lucene version,
+  // to generate indexes to test backwards compatibility.  These
+  // indexes will be created under directory /tmp/idx/.
+  //
+  // However, you must first disable the Lucene TestSecurityManager,
+  // which will otherwise disallow writing outside of the build/
+  // directory - to do this, comment out the "java.security.manager"
+  // <sysproperty> under the "test-macro" <macrodef>.
+  //
+  // Zip up the generated indexes:
+  //
+  //    cd /tmp/idx/index.cfs   ; zip index.<VERSION>.cfs.zip *
+  //    cd /tmp/idx/index.nocfs ; zip index.<VERSION>.nocfs.zip *
+  //
+  // Then move those 2 zip files to your trunk checkout and add them
+  // to the oldNames array.
 
   /*
   public void testCreateCFS() throws IOException {
@@ -151,6 +159,8 @@ public class TestBackwardsCompatibility 
   
   final static String[] oldNames = {"40.cfs",
                                     "40.nocfs",
+                                    "41.cfs",
+                                    "41.nocfs",
   };
   
   final String[] unsupportedNames = {"19.cfs",
@@ -545,7 +555,7 @@ public class TestBackwardsCompatibility 
 
   public File createIndex(String dirName, boolean doCFS, boolean fullyMerged) throws IOException {
     // we use a real directory name that is not cleaned up, because this method is only used to create backwards indexes:
-    File indexDir = new File("/tmp/4x", dirName);
+    File indexDir = new File("/tmp/idx", dirName);
     _TestUtil.rmDir(indexDir);
     Directory dir = newFSDirectory(indexDir);
     LogByteSizeMergePolicy mp = new LogByteSizeMergePolicy();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java Fri Jan 18 22:38:56 2013
@@ -355,16 +355,20 @@ public class TestIndexWriterWithThreads 
         StackTraceElement[] trace = new Exception().getStackTrace();
         boolean sawAbortOrFlushDoc = false;
         boolean sawClose = false;
+        boolean sawMerge = false;
         for (int i = 0; i < trace.length; i++) {
           if ("abort".equals(trace[i].getMethodName()) ||
               "finishDocument".equals(trace[i].getMethodName())) {
             sawAbortOrFlushDoc = true;
           }
+          if ("merge".equals(trace[i])) {
+            sawMerge = true;
+          }
           if ("close".equals(trace[i].getMethodName())) {
             sawClose = true;
           }
         }
-        if (sawAbortOrFlushDoc && !sawClose) {
+        if (sawAbortOrFlushDoc && !sawClose && !sawMerge) {
           if (onlyOnce)
             doFail = false;
           //System.out.println(Thread.currentThread().getName() + ": now fail");

Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java Fri Jan 18 22:38:56 2013
@@ -32,6 +32,7 @@ import org.apache.lucene.index.IndexDocu
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.NoMergePolicy;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.ThreadedIndexingAndSearchingTestCase;
@@ -294,6 +295,7 @@ public class TestNRTManager extends Thre
    */
   public void testThreadStarvationNoDeleteNRTReader() throws IOException, InterruptedException {
     IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+    conf.setMergePolicy(random().nextBoolean() ? NoMergePolicy.COMPOUND_FILES : NoMergePolicy.NO_COMPOUND_FILES);
     Directory d = newDirectory();
     final CountDownLatch latch = new CountDownLatch(1);
     final CountDownLatch signal = new CountDownLatch(1);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java Fri Jan 18 22:38:56 2013
@@ -265,7 +265,18 @@ public class TestFixedBitSet extends Luc
   }
   
   private FixedBitSet makeFixedBitSet(int[] a, int numBits) {
-    FixedBitSet bs = new FixedBitSet(numBits);
+    FixedBitSet bs;
+    if (random().nextBoolean()) {
+      int bits2words = FixedBitSet.bits2words(numBits);
+      long[] words = new long[bits2words + random().nextInt(100)];
+      for (int i = bits2words; i < words.length; i++) {
+        words[i] = random().nextLong();
+      }
+      bs = new FixedBitSet(words, numBits);
+
+    } else {
+      bs = new FixedBitSet(numBits);
+    }
     for (int e: a) {
       bs.set(e);
     }
@@ -291,6 +302,23 @@ public class TestFixedBitSet extends Luc
     checkPrevSetBitArray(new int[] {0}, 1);
     checkPrevSetBitArray(new int[] {0,2}, 3);
   }
+  
+  
+  private void checkNextSetBitArray(int [] a, int numBits) {
+    FixedBitSet obs = makeFixedBitSet(a, numBits);
+    BitSet bs = makeBitSet(a);
+    doNextSetBit(bs, obs);
+  }
+  
+  public void testNextBitSet() {
+    int[] setBits = new int[0+random().nextInt(1000)];
+    for (int i = 0; i < setBits.length; i++) {
+      setBits[i] = random().nextInt(setBits.length);
+    }
+    checkNextSetBitArray(setBits, setBits.length + random().nextInt(10));
+    
+    checkNextSetBitArray(new int[0], setBits.length + random().nextInt(10));
+  }
 }
 
 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java Fri Jan 18 22:38:56 2013
@@ -1033,7 +1033,7 @@ public class TestFSTs extends LuceneTest
         throws IOException {
         if (FST.targetHasArcs(arc)) {
           int childCount = 0;
-          BytesReader fstReader = fst.getBytesReader(0);
+          BytesReader fstReader = fst.getBytesReader();
           for (arc = fst.readFirstTargetArc(arc, arc, fstReader);; 
                arc = fst.readNextArc(arc, fstReader), childCount++)
           {
@@ -1168,12 +1168,12 @@ public class TestFSTs extends LuceneTest
     assertEquals(nothing, startArc.nextFinalOutput);
 
     FST.Arc<Long> arc = fst.readFirstTargetArc(startArc, new FST.Arc<Long>(),
-                                               fst.getBytesReader(0));
+                                               fst.getBytesReader());
     assertEquals('a', arc.label);
     assertEquals(17, arc.nextFinalOutput.longValue());
     assertTrue(arc.isFinal());
 
-    arc = fst.readNextArc(arc, fst.getBytesReader(0));
+    arc = fst.readNextArc(arc, fst.getBytesReader());
     assertEquals('b', arc.label);
     assertFalse(arc.isFinal());
     assertEquals(42, arc.output.longValue());
@@ -1303,7 +1303,7 @@ public class TestFSTs extends LuceneTest
     //Util.toDot(fst, w, false, false);
     //w.close();
     
-    BytesReader reader = fst.getBytesReader(0);
+    BytesReader reader = fst.getBytesReader();
     
     //System.out.println("testing: " + allPrefixes.size() + " prefixes");
     for (String prefix : allPrefixes) {
@@ -1424,7 +1424,7 @@ public class TestFSTs extends LuceneTest
     //Util.toDot(fst, w, false, false);
     //w.close();
     
-    BytesReader reader = fst.getBytesReader(0);
+    BytesReader reader = fst.getBytesReader();
     
     //System.out.println("testing: " + allPrefixes.size() + " prefixes");
     for (String prefix : allPrefixes) {

Modified: lucene/dev/branches/lucene4547/lucene/facet/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/facet/build.xml?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/facet/build.xml (original)
+++ lucene/dev/branches/lucene4547/lucene/facet/build.xml Fri Jan 18 22:38:56 2013
@@ -30,19 +30,13 @@
 
   <property name="examples.dir" location="src/examples"/>
 
-  <path id="classpath">
-    <path refid="base.classpath" />
-    <pathelement location="${build.dir}/classes/java" />
-    <pathelement location="${build.dir}/classes/examples" />
-  </path>
-    
   <path id="examples.classpath">
     <path refid="classpath" />
     <pathelement location="${build.dir}/classes/java" />
     <pathelement path="${analyzers-common.jar}" />
   </path>
 
-  <path id="test.classpath">
+	<path id="test.classpath">
     <path refid="test.base.classpath" />
     <pathelement location="${build.dir}/classes/examples" />
     <!-- TODO, cut over tests to MockAnalyzer etc and nuke this dependency -->

Modified: lucene/dev/branches/lucene4547/lucene/facet/src/examples/org/apache/lucene/facet/example/merge/TaxonomyMergeUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/facet/src/examples/org/apache/lucene/facet/example/merge/TaxonomyMergeUtils.java?rev=1435384&r1=1435383&r2=1435384&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/facet/src/examples/org/apache/lucene/facet/example/merge/TaxonomyMergeUtils.java (original)
+++ lucene/dev/branches/lucene4547/lucene/facet/src/examples/org/apache/lucene/facet/example/merge/TaxonomyMergeUtils.java Fri Jan 18 22:38:56 2013
@@ -90,8 +90,9 @@ public class TaxonomyMergeUtils {
 
     DirectoryReader reader = DirectoryReader.open(srcIndexDir, -1);
     List<AtomicReaderContext> leaves = reader.leaves();
-    AtomicReader wrappedLeaves[] = new AtomicReader[leaves.size()];
-    for (int i = 0; i < leaves.size(); i++) {
+    int numReaders = leaves.size();
+    AtomicReader wrappedLeaves[] = new AtomicReader[numReaders];
+    for (int i = 0; i < numReaders; i++) {
       wrappedLeaves[i] = new OrdinalMappingAtomicReader(leaves.get(i).reader(), ordinalMap, params);
     }
     try {