You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2013/05/22 17:51:12 UTC

svn commit: r1485259 [1/5] - in /lucene/dev/branches/lucene4956: ./ dev-tools/ dev-tools/idea/.idea/ dev-tools/idea/.idea/libraries/ dev-tools/idea/lucene/replicator/ dev-tools/maven/ dev-tools/maven/lucene/ dev-tools/maven/lucene/replicator/ dev-tools...

Author: sarowe
Date: Wed May 22 15:51:08 2013
New Revision: 1485259

URL: http://svn.apache.org/r1485259
Log:
Merged trunk r1479228 through r1485254

Added:
    lucene/dev/branches/lucene4956/dev-tools/idea/lucene/replicator/
      - copied from r1485254, lucene/dev/trunk/dev-tools/idea/lucene/replicator/
    lucene/dev/branches/lucene4956/dev-tools/maven/lucene/replicator/
      - copied from r1485254, lucene/dev/trunk/dev-tools/maven/lucene/replicator/
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/index/TestTryDelete.java
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTryDelete.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/range/RangeFacetsAccumulatorWrapper.java
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/range/RangeFacetsAccumulatorWrapper.java
    lucene/dev/branches/lucene4956/lucene/licenses/httpclient-4.2.3.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/httpclient-4.2.3.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/httpclient-LICENSE-ASL.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/httpclient-LICENSE-ASL.txt
    lucene/dev/branches/lucene4956/lucene/licenses/httpclient-NOTICE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/httpclient-NOTICE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/httpcore-4.2.2.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/httpcore-4.2.2.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/httpcore-LICENSE-ASL.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/httpcore-LICENSE-ASL.txt
    lucene/dev/branches/lucene4956/lucene/licenses/httpcore-NOTICE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/httpcore-NOTICE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/javax.servlet-3.0.0.v201112011016.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/javax.servlet-3.0.0.v201112011016.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/javax.servlet-LICENSE-CDDL.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/javax.servlet-LICENSE-CDDL.txt
    lucene/dev/branches/lucene4956/lucene/licenses/javax.servlet-NOTICE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/javax.servlet-NOTICE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/jcl-over-slf4j-1.6.6.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jcl-over-slf4j-1.6.6.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/jcl-over-slf4j-LICENSE-BSD_LIKE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jcl-over-slf4j-LICENSE-BSD_LIKE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/jcl-over-slf4j-NOTICE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jcl-over-slf4j-NOTICE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-LICENSE-ASL.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-LICENSE-ASL.txt
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-NOTICE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-NOTICE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-http-8.1.10.v20130312.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-http-8.1.10.v20130312.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-io-8.1.10.v20130312.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-io-8.1.10.v20130312.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-server-8.1.10.v20130312.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-server-8.1.10.v20130312.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/jetty-util-8.1.10.v20130312.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/jetty-util-8.1.10.v20130312.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/junit4-ant-2.0.10.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/junit4-ant-2.0.10.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/randomizedtesting-runner-2.0.10.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/randomizedtesting-runner-2.0.10.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/slf4j-LICENSE-BSD_LIKE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/slf4j-LICENSE-BSD_LIKE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/slf4j-NOTICE.txt
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/slf4j-NOTICE.txt
    lucene/dev/branches/lucene4956/lucene/licenses/slf4j-api-1.6.6.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/licenses/slf4j-api-1.6.6.jar.sha1
    lucene/dev/branches/lucene4956/lucene/replicator/   (props changed)
      - copied from r1485254, lucene/dev/trunk/lucene/replicator/
    lucene/dev/branches/lucene4956/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleDelegate.java
      - copied unchanged from r1485254, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleDelegate.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollector.java
      - copied unchanged from r1485254, lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollector.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollectorException.java
      - copied unchanged from r1485254, lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollectorException.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
      - copied unchanged from r1485254, lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/search/MaxScoreQParserPlugin.java
      - copied unchanged from r1485254, lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParserPlugin.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/util/SolrLogLayout.java
      - copied unchanged from r1485254, lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrLogLayout.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
      - copied unchanged from r1485254, lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
    lucene/dev/branches/lucene4956/solr/example/cloud-scripts/log4j.properties
      - copied unchanged from r1485254, lucene/dev/trunk/solr/example/cloud-scripts/log4j.properties
    lucene/dev/branches/lucene4956/solr/licenses/junit4-ant-2.0.10.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/solr/licenses/junit4-ant-2.0.10.jar.sha1
    lucene/dev/branches/lucene4956/solr/licenses/randomizedtesting-runner-2.0.10.jar.sha1
      - copied unchanged from r1485254, lucene/dev/trunk/solr/licenses/randomizedtesting-runner-2.0.10.jar.sha1
Removed:
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/position/
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/position/
    lucene/dev/branches/lucene4956/lucene/licenses/junit4-ant-2.0.9.jar.sha1
    lucene/dev/branches/lucene4956/lucene/licenses/randomizedtesting-runner-2.0.9.jar.sha1
    lucene/dev/branches/lucene4956/solr/licenses/junit4-ant-2.0.9.jar.sha1
    lucene/dev/branches/lucene4956/solr/licenses/randomizedtesting-runner-2.0.9.jar.sha1
Modified:
    lucene/dev/branches/lucene4956/   (props changed)
    lucene/dev/branches/lucene4956/build.xml
    lucene/dev/branches/lucene4956/dev-tools/   (props changed)
    lucene/dev/branches/lucene4956/dev-tools/idea/.idea/ant.xml
    lucene/dev/branches/lucene4956/dev-tools/idea/.idea/libraries/JUnit.xml
    lucene/dev/branches/lucene4956/dev-tools/idea/.idea/modules.xml
    lucene/dev/branches/lucene4956/dev-tools/idea/.idea/workspace.xml
    lucene/dev/branches/lucene4956/dev-tools/maven/lucene/pom.xml.template
    lucene/dev/branches/lucene4956/dev-tools/maven/pom.xml.template
    lucene/dev/branches/lucene4956/dev-tools/scripts/buildAndPushRelease.py
    lucene/dev/branches/lucene4956/dev-tools/scripts/checkJavadocLinks.py
    lucene/dev/branches/lucene4956/dev-tools/scripts/poll-mirrors.pl
    lucene/dev/branches/lucene4956/dev-tools/scripts/smokeTestRelease.py
    lucene/dev/branches/lucene4956/lucene/   (props changed)
    lucene/dev/branches/lucene4956/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/lucene4956/lucene/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/lucene4956/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/lucene4956/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/lucene4956/lucene/NOTICE.txt   (contents, props changed)
    lucene/dev/branches/lucene4956/lucene/analysis/   (props changed)
    lucene/dev/branches/lucene4956/lucene/analysis/common/   (props changed)
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/PatternKeywordMarkerFilter.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramFilterFactory.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizerFactory.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilterTest.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/ngram/EdgeNGramTokenizerTest.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/ngram/TestNGramFilters.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java
    lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java
    lucene/dev/branches/lucene4956/lucene/analysis/phonetic/src/java/org/apache/lucene/analysis/phonetic/BeiderMorseFilter.java
    lucene/dev/branches/lucene4956/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestBeiderMorseFilter.java
    lucene/dev/branches/lucene4956/lucene/backwards/   (props changed)
    lucene/dev/branches/lucene4956/lucene/benchmark/   (props changed)
    lucene/dev/branches/lucene4956/lucene/build.xml   (contents, props changed)
    lucene/dev/branches/lucene4956/lucene/classification/   (props changed)
    lucene/dev/branches/lucene4956/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
    lucene/dev/branches/lucene4956/lucene/codecs/   (props changed)
    lucene/dev/branches/lucene4956/lucene/common-build.xml   (contents, props changed)
    lucene/dev/branches/lucene4956/lucene/core/   (props changed)
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/DirectoryReader.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/DocInverterPerField.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/IndexFileNames.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/PersistentSnapshotDeletionPolicy.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/search/LiveFieldValues.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/util/BytesRef.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/util/CharsRef.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/util/IntsRef.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/util/LongsRef.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/util/Sorter.java
    lucene/dev/branches/lucene4956/lucene/core/src/java/org/apache/lucene/util/TimSorter.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnJRECrash.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/index/TestPersistentSnapshotDeletionPolicy.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestLiveFieldValues.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestMaxFailuresRule.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestTimSorter.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
    lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/junitcompat/WithNestedTests.java
    lucene/dev/branches/lucene4956/lucene/demo/   (props changed)
    lucene/dev/branches/lucene4956/lucene/facet/   (props changed)
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/associations/MultiAssociationsFacetsAggregator.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/range/RangeAccumulator.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/search/DrillDownQuery.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSideways.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysCollector.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java
    lucene/dev/branches/lucene4956/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsAccumulator.java
    lucene/dev/branches/lucene4956/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java
    lucene/dev/branches/lucene4956/lucene/grouping/   (props changed)
    lucene/dev/branches/lucene4956/lucene/highlighter/   (props changed)
    lucene/dev/branches/lucene4956/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/lucene4956/lucene/join/   (props changed)
    lucene/dev/branches/lucene4956/lucene/licenses/   (props changed)
    lucene/dev/branches/lucene4956/lucene/memory/   (props changed)
    lucene/dev/branches/lucene4956/lucene/misc/   (props changed)
    lucene/dev/branches/lucene4956/lucene/module-build.xml   (contents, props changed)
    lucene/dev/branches/lucene4956/lucene/queries/   (props changed)
    lucene/dev/branches/lucene4956/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
    lucene/dev/branches/lucene4956/lucene/queryparser/   (props changed)
    lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/analyzing/AnalyzingQueryParser.java
    lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java
    lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/CommonQueryParserConfiguration.java
    lucene/dev/branches/lucene4956/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/config/StandardQueryConfigHandler.java
    lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/analyzing/TestAnalyzingQueryParser.java
    lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java
    lucene/dev/branches/lucene4956/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
    lucene/dev/branches/lucene4956/lucene/replicator/lib/   (props changed)
    lucene/dev/branches/lucene4956/lucene/sandbox/   (props changed)
    lucene/dev/branches/lucene4956/lucene/site/   (props changed)
    lucene/dev/branches/lucene4956/lucene/spatial/   (props changed)
    lucene/dev/branches/lucene4956/lucene/suggest/   (props changed)
    lucene/dev/branches/lucene4956/lucene/test-framework/   (props changed)
    lucene/dev/branches/lucene4956/lucene/test-framework/ivy.xml
    lucene/dev/branches/lucene4956/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
    lucene/dev/branches/lucene4956/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
    lucene/dev/branches/lucene4956/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexOutputWrapper.java
    lucene/dev/branches/lucene4956/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
    lucene/dev/branches/lucene4956/lucene/tools/   (props changed)
    lucene/dev/branches/lucene4956/lucene/tools/junit4/tests.policy
    lucene/dev/branches/lucene4956/solr/   (props changed)
    lucene/dev/branches/lucene4956/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/lucene4956/solr/NOTICE.txt   (contents, props changed)
    lucene/dev/branches/lucene4956/solr/build.xml   (contents, props changed)
    lucene/dev/branches/lucene4956/solr/cloud-dev/   (props changed)
    lucene/dev/branches/lucene4956/solr/common-build.xml   (props changed)
    lucene/dev/branches/lucene4956/solr/contrib/   (props changed)
    lucene/dev/branches/lucene4956/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm   (props changed)
    lucene/dev/branches/lucene4956/solr/core/   (props changed)
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/cloud/ZkController.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/CoreContainer.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/SolrConfig.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/SolrCoreDiscoverer.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/core/ZkContainer.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/search/QParserPlugin.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/spelling/SpellCheckCollator.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/update/SolrIndexSplitter.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/update/SplitIndexCommand.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/update/UpdateLog.java
    lucene/dev/branches/lucene4956/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
    lucene/dev/branches/lucene4956/solr/core/src/test-files/log4j.properties
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyShardSplitTest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/request/TestFaceting.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/update/SolrIndexSplitterTest.java
    lucene/dev/branches/lucene4956/solr/core/src/test/org/apache/solr/update/processor/RegexBoostProcessorTest.java
    lucene/dev/branches/lucene4956/solr/example/   (props changed)
    lucene/dev/branches/lucene4956/solr/example/cloud-scripts/zkcli.bat
    lucene/dev/branches/lucene4956/solr/example/cloud-scripts/zkcli.sh
    lucene/dev/branches/lucene4956/solr/example/example-DIH/solr/rss/conf/rss-data-config.xml
    lucene/dev/branches/lucene4956/solr/licenses/   (props changed)
    lucene/dev/branches/lucene4956/solr/site/   (props changed)
    lucene/dev/branches/lucene4956/solr/solrj/   (props changed)
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/common/cloud/CompositeIdRouter.java
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/common/cloud/HashBasedRouter.java
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/common/params/SpellingParams.java
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java
    lucene/dev/branches/lucene4956/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
    lucene/dev/branches/lucene4956/solr/solrj/src/test-files/solrj/log4j.properties
    lucene/dev/branches/lucene4956/solr/solrj/src/test/org/apache/solr/common/util/NamedListTest.java
    lucene/dev/branches/lucene4956/solr/test-framework/   (props changed)
    lucene/dev/branches/lucene4956/solr/test-framework/ivy.xml
    lucene/dev/branches/lucene4956/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
    lucene/dev/branches/lucene4956/solr/webapp/   (props changed)

Modified: lucene/dev/branches/lucene4956/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/build.xml?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/build.xml (original)
+++ lucene/dev/branches/lucene4956/build.xml Wed May 22 15:51:08 2013
@@ -268,6 +268,7 @@
   <property name="fakeRelease" location="lucene/build/fakeRelease"/>
   <property name="fakeReleaseTmp" location="lucene/build/fakeReleaseTmp"/>
   <property name="fakeReleaseVersion" value="5.0.0"/> <!-- *not* -SNAPSHOT, the real version -->
+  <property name="smokeTestRelease.testArgs" value=""/>
 
   <target name="-load-env">
      <!-- load the properties only here, so not on every invocation /usr/bin/env is called: -->
@@ -281,7 +282,6 @@
   <target name="nightly-smoke" description="Builds an unsigned release and smoke tests it" depends="clean,-env-JAVA7_HOME">
    <fail unless="JAVA7_HOME">JAVA7_HOME property or environment variable is not defined.</fail>
    <property name="svnversion.exe" value="svnversion" />
-   <exec dir="." executable="${svnversion.exe}" outputproperty="fakeReleaseSvnRevision" failifexecutionfails="false"/>
    <subant target="prepare-release-no-sign" inheritall="false" failonerror="true">
      <fileset dir="lucene" includes="build.xml" />
      <fileset dir="solr" includes="build.xml" />
@@ -303,10 +303,12 @@
      <arg value="-B"/>
      <arg file="dev-tools/scripts/smokeTestRelease.py"/>
      <arg value="${fakeRelease.uri}"/>
-     <arg value="${fakeReleaseSvnRevision}"/>
+     <arg value="skip"/>
      <arg value="${fakeReleaseVersion}"/>
      <arg file="${fakeReleaseTmp}"/>
      <arg value="false"/>
+     <arg value="-testArgs"/>
+     <arg value="${smokeTestRelease.testArgs}"/>
      <env key="JAVA7_HOME" file="${JAVA7_HOME}"/>
    </exec>
    <delete dir="${fakeRelease}"/>

Modified: lucene/dev/branches/lucene4956/dev-tools/idea/.idea/ant.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/idea/.idea/ant.xml?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/idea/.idea/ant.xml (original)
+++ lucene/dev/branches/lucene4956/dev-tools/idea/.idea/ant.xml Wed May 22 15:51:08 2013
@@ -27,6 +27,7 @@
     <buildFile url="file://$PROJECT_DIR$/lucene/misc/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/lucene/queries/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/lucene/queryparser/build.xml" />
+    <buildFile url="file://$PROJECT_DIR$/lucene/replicator/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/lucene/sandbox/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/lucene/spatial/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/lucene/suggest/build.xml" />

Modified: lucene/dev/branches/lucene4956/dev-tools/idea/.idea/libraries/JUnit.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/idea/.idea/libraries/JUnit.xml?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/idea/.idea/libraries/JUnit.xml (original)
+++ lucene/dev/branches/lucene4956/dev-tools/idea/.idea/libraries/JUnit.xml Wed May 22 15:51:08 2013
@@ -2,7 +2,7 @@
   <library name="JUnit">
     <CLASSES>
       <root url="jar://$PROJECT_DIR$/lucene/test-framework/lib/junit-4.10.jar!/" />
-      <root url="jar://$PROJECT_DIR$/lucene/test-framework/lib/randomizedtesting-runner-2.0.9.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lucene/test-framework/lib/randomizedtesting-runner-2.0.10.jar!/" />
     </CLASSES>
     <JAVADOC />
     <SOURCES />

Modified: lucene/dev/branches/lucene4956/dev-tools/idea/.idea/modules.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/idea/.idea/modules.xml?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/idea/.idea/modules.xml (original)
+++ lucene/dev/branches/lucene4956/dev-tools/idea/.idea/modules.xml Wed May 22 15:51:08 2013
@@ -32,6 +32,7 @@
       <module filepath="$PROJECT_DIR$/lucene/misc/misc.iml" />
       <module filepath="$PROJECT_DIR$/lucene/queries/queries.iml" />
       <module filepath="$PROJECT_DIR$/lucene/queryparser/queryparser.iml" />
+      <module filepath="$PROJECT_DIR$/lucene/replicator/replicator.iml" />
       <module filepath="$PROJECT_DIR$/lucene/sandbox/sandbox.iml" />
       <module filepath="$PROJECT_DIR$/lucene/spatial/spatial.iml" />
       <module filepath="$PROJECT_DIR$/lucene/suggest/suggest.iml" />

Modified: lucene/dev/branches/lucene4956/dev-tools/idea/.idea/workspace.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/idea/.idea/workspace.xml?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/idea/.idea/workspace.xml (original)
+++ lucene/dev/branches/lucene4956/dev-tools/idea/.idea/workspace.xml Wed May 22 15:51:08 2013
@@ -151,6 +151,13 @@
       <option name="VM_PARAMETERS" value="-ea -DtempDir=temp" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
+    <configuration default="false" name="Module replicator" type="JUnit" factoryName="JUnit">
+      <module name="replicator" />
+      <option name="TEST_OBJECT" value="package" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/idea-build/lucene/replicator" />
+      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp" />
+      <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
+    </configuration>
     <configuration default="false" name="Module sandbox" type="JUnit" factoryName="JUnit">
       <module name="sandbox" />
       <option name="TEST_OBJECT" value="package" />
@@ -242,7 +249,7 @@
       <option name="VM_PARAMETERS" value="-ea" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
-    <list size="34">
+    <list size="35">
       <item index="0" class="java.lang.String" itemvalue="JUnit.Lucene core" />
       <item index="1" class="java.lang.String" itemvalue="JUnit.Module analyzers-arirang" />
       <item index="2" class="java.lang.String" itemvalue="JUnit.Module analyzers-common" />
@@ -264,19 +271,20 @@
       <item index="18" class="java.lang.String" itemvalue="JUnit.Module misc" />
       <item index="19" class="java.lang.String" itemvalue="JUnit.Module queries" />
       <item index="20" class="java.lang.String" itemvalue="JUnit.Module queryparser" />
-      <item index="21" class="java.lang.String" itemvalue="JUnit.Module sandbox" />
-      <item index="22" class="java.lang.String" itemvalue="JUnit.Module spatial" />
-      <item index="23" class="java.lang.String" itemvalue="JUnit.Module suggest" />
-      <item index="24" class="java.lang.String" itemvalue="JUnit.Solr core" />
-      <item index="25" class="java.lang.String" itemvalue="JUnit.Solr analysis-extras contrib" />
-      <item index="26" class="java.lang.String" itemvalue="JUnit.Solr clustering contrib" />
-      <item index="27" class="java.lang.String" itemvalue="JUnit.Solr dataimporthandler contrib" />
-      <item index="28" class="java.lang.String" itemvalue="JUnit.Solr dataimporthandler-extras contrib" />
-      <item index="29" class="java.lang.String" itemvalue="JUnit.Solr extraction contrib" />
-      <item index="30" class="java.lang.String" itemvalue="JUnit.Solr langid contrib" />
-      <item index="31" class="java.lang.String" itemvalue="JUnit.Solr uima contrib" />
-      <item index="32" class="java.lang.String" itemvalue="JUnit.Solr velocity contrib" />
-      <item index="33" class="java.lang.String" itemvalue="JUnit.Solrj" />
+      <item index="21" class="java.lang.String" itemvalue="JUnit.Module replicator" />
+      <item index="22" class="java.lang.String" itemvalue="JUnit.Module sandbox" />
+      <item index="23" class="java.lang.String" itemvalue="JUnit.Module spatial" />
+      <item index="24" class="java.lang.String" itemvalue="JUnit.Module suggest" />
+      <item index="25" class="java.lang.String" itemvalue="JUnit.Solr core" />
+      <item index="26" class="java.lang.String" itemvalue="JUnit.Solr analysis-extras contrib" />
+      <item index="27" class="java.lang.String" itemvalue="JUnit.Solr clustering contrib" />
+      <item index="28" class="java.lang.String" itemvalue="JUnit.Solr dataimporthandler contrib" />
+      <item index="29" class="java.lang.String" itemvalue="JUnit.Solr dataimporthandler-extras contrib" />
+      <item index="30" class="java.lang.String" itemvalue="JUnit.Solr extraction contrib" />
+      <item index="31" class="java.lang.String" itemvalue="JUnit.Solr langid contrib" />
+      <item index="32" class="java.lang.String" itemvalue="JUnit.Solr uima contrib" />
+      <item index="33" class="java.lang.String" itemvalue="JUnit.Solr velocity contrib" />
+      <item index="34" class="java.lang.String" itemvalue="JUnit.Solrj" />
     </list>
   </component>
 </project>

Modified: lucene/dev/branches/lucene4956/dev-tools/maven/lucene/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/maven/lucene/pom.xml.template?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/maven/lucene/pom.xml.template (original)
+++ lucene/dev/branches/lucene4956/dev-tools/maven/lucene/pom.xml.template Wed May 22 15:51:08 2013
@@ -55,6 +55,7 @@
     <module>misc</module>
     <module>queries</module>
     <module>queryparser</module>
+    <module>replicator</module>
     <module>sandbox</module>
     <module>spatial</module>
     <module>suggest</module>

Modified: lucene/dev/branches/lucene4956/dev-tools/maven/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/maven/pom.xml.template?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/maven/pom.xml.template (original)
+++ lucene/dev/branches/lucene4956/dev-tools/maven/pom.xml.template Wed May 22 15:51:08 2013
@@ -461,7 +461,7 @@
       <dependency>
         <groupId>com.carrotsearch.randomizedtesting</groupId>
         <artifactId>randomizedtesting-runner</artifactId>
-        <version>2.0.9</version>
+        <version>2.0.10</version>
       </dependency>
     </dependencies>
   </dependencyManagement>

Modified: lucene/dev/branches/lucene4956/dev-tools/scripts/buildAndPushRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/scripts/buildAndPushRelease.py?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/scripts/buildAndPushRelease.py (original)
+++ lucene/dev/branches/lucene4956/dev-tools/scripts/buildAndPushRelease.py Wed May 22 15:51:08 2013
@@ -310,7 +310,7 @@ def main():
   if smokeTmpDir is not None:
     import smokeTestRelease
     smokeTestRelease.DEBUG = False
-    smokeTestRelease.smokeTest(url, rev, version, smokeTmpDir, gpgKeyID is not None)
+    smokeTestRelease.smokeTest(url, rev, version, smokeTmpDir, gpgKeyID is not None, '')
 
 if __name__ == '__main__':
   try:

Modified: lucene/dev/branches/lucene4956/dev-tools/scripts/checkJavadocLinks.py
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/scripts/checkJavadocLinks.py?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/scripts/checkJavadocLinks.py (original)
+++ lucene/dev/branches/lucene4956/dev-tools/scripts/checkJavadocLinks.py Wed May 22 15:51:08 2013
@@ -65,7 +65,7 @@ class FindHyperlinks(HTMLParser):
             pass
           else:
             self.printFile()
-            print('    WARNING: anchor "%s" appears more than once' % name)
+            raise RuntimeError('anchor "%s" appears more than once' % name)
         else:
           self.anchors.add(name)
       elif href is not None:

Modified: lucene/dev/branches/lucene4956/dev-tools/scripts/poll-mirrors.pl
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/scripts/poll-mirrors.pl?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/scripts/poll-mirrors.pl (original)
+++ lucene/dev/branches/lucene4956/dev-tools/scripts/poll-mirrors.pl Wed May 22 15:51:08 2013
@@ -51,7 +51,7 @@ my $previously_selected = select STDOUT;
 $| = 1; # turn off buffering of STDOUT, so status is printed immediately
 select $previously_selected;
 
-my $apache_url_suffix = "lucene/java/$version/lucene-$version.zip.asc";
+my $apache_url_suffix = "lucene/java/$version/KEYS";
 my $apache_mirrors_list_url = "http://www.apache.org/mirrors/";
 my $maven_url = "http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/$version/lucene-core-$version.pom.asc";
 

Modified: lucene/dev/branches/lucene4956/dev-tools/scripts/smokeTestRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/dev-tools/scripts/smokeTestRelease.py?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/dev-tools/scripts/smokeTestRelease.py (original)
+++ lucene/dev/branches/lucene4956/dev-tools/scripts/smokeTestRelease.py Wed May 22 15:51:08 2013
@@ -198,8 +198,6 @@ def checkJARMetaData(desc, jarFile, svnR
       'Ant-Version: Apache Ant 1.8',
       # Make sure .class files are 1.7 format:
       'X-Compile-Target-JDK: 1.7',
-      # Make sure this matches the version and svn revision we think we are releasing:
-      'Implementation-Version: %s %s ' % (version, svnRevision),
       'Specification-Version: %s' % version,
       # Make sure the release was compiled with 1.7:
       'Created-By: 1.7'):
@@ -207,6 +205,13 @@ def checkJARMetaData(desc, jarFile, svnR
         raise RuntimeError('%s is missing "%s" inside its META-INF/MANIFEST.MF' % \
                            (desc, verify))
 
+    if svnRevision != 'skip':
+      # Make sure this matches the version and svn revision we think we are releasing:
+      verifyRevision = 'Implementation-Version: %s %s ' % (version, svnRevision)
+      if s.find(verifyRevision) == -1:
+        raise RuntimeError('%s is missing "%s" inside its META-INF/MANIFEST.MF (wrong svn revision?)' % \
+                           (desc, verifyRevision))
+
     notice = decodeUTF8(z.read(NOTICE_FILE_NAME))
     license = decodeUTF8(z.read(LICENSE_FILE_NAME))
 
@@ -260,6 +265,9 @@ def checkAllJARs(topDir, project, svnRev
           if normRoot.endswith('/contrib/dataimporthandler/lib') and (file.startswith('mail-') or file.startswith('activation-')):
             print('      **WARNING**: skipping check of %s/%s: it has javax.* classes' % (root, file))
             continue
+        else:
+          if normRoot.endswith('/replicator/lib') and file.startswith('javax.servlet'):
+            continue
         fullPath = '%s/%s' % (root, file)
         noJavaPackageClasses('JAR file "%s"' % fullPath, fullPath)
         if file.lower().find('lucene') != -1 or file.lower().find('solr') != -1:
@@ -363,7 +371,7 @@ def checkSigs(project, urlString, versio
     shutil.rmtree(gpgHomeDir)
   os.makedirs(gpgHomeDir, 0o700)
   run('gpg --homedir %s --import %s' % (gpgHomeDir, keysFile),
-      '%s/%s.gpg.import.log 2>&1' % (tmpDir, project))
+      '%s/%s.gpg.import.log' % (tmpDir, project))
 
   if mavenURL is None:
     raise RuntimeError('%s is missing maven' % project)
@@ -396,7 +404,7 @@ def checkSigs(project, urlString, versio
 
       # Test trust (this is done with the real users config)
       run('gpg --import %s' % (keysFile),
-          '%s/%s.gpg.trust.import.log 2>&1' % (tmpDir, project))
+          '%s/%s.gpg.trust.import.log' % (tmpDir, project))
       print('    verify trust')
       logFile = '%s/%s.%s.gpg.trust.log' % (tmpDir, project, artifact)
       run('gpg --verify %s %s' % (sigFile, artifactFile), logFile)
@@ -567,7 +575,7 @@ def getDirEntries(urlString):
       if text == 'Parent Directory' or text == '..':
         return links[(i+1):]
 
-def unpackAndVerify(project, tmpDir, artifact, svnRevision, version):
+def unpackAndVerify(project, tmpDir, artifact, svnRevision, version, testArgs):
   destDir = '%s/unpack' % tmpDir
   if os.path.exists(destDir):
     shutil.rmtree(destDir)
@@ -587,14 +595,14 @@ def unpackAndVerify(project, tmpDir, art
     raise RuntimeError('unpack produced entries %s; expected only %s' % (l, expected))
 
   unpackPath = '%s/%s' % (destDir, expected)
-  verifyUnpacked(project, artifact, unpackPath, svnRevision, version, tmpDir)
+  verifyUnpacked(project, artifact, unpackPath, svnRevision, version, testArgs)
 
 LUCENE_NOTICE = None
 LUCENE_LICENSE = None
 SOLR_NOTICE = None
 SOLR_LICENSE = None
 
-def verifyUnpacked(project, artifact, unpackPath, svnRevision, version, tmpDir):
+def verifyUnpacked(project, artifact, unpackPath, svnRevision, version, testArgs):
   global LUCENE_NOTICE
   global LUCENE_LICENSE
   global SOLR_NOTICE
@@ -643,7 +651,7 @@ def verifyUnpacked(project, artifact, un
 
   if project == 'lucene':
     # TODO: clean this up to not be a list of modules that we must maintain
-    extras = ('analysis', 'benchmark', 'classification', 'codecs', 'core', 'demo', 'docs', 'facet', 'grouping', 'highlighter', 'join', 'memory', 'misc', 'queries', 'queryparser', 'sandbox', 'spatial', 'suggest', 'test-framework', 'licenses')
+    extras = ('analysis', 'benchmark', 'classification', 'codecs', 'core', 'demo', 'docs', 'facet', 'grouping', 'highlighter', 'join', 'memory', 'misc', 'queries', 'queryparser', 'replicator', 'sandbox', 'spatial', 'suggest', 'test-framework', 'licenses')
     if isSrc:
       extras += ('build.xml', 'common-build.xml', 'module-build.xml', 'ivy-settings.xml', 'backwards', 'tools', 'site')
   else:
@@ -681,8 +689,8 @@ def verifyUnpacked(project, artifact, un
     run('%s; ant validate' % javaExe('1.7'), '%s/validate.log' % unpackPath)
 
     if project == 'lucene':
-      print('    run tests w/ Java 7...')
-      run('%s; ant clean test' % javaExe('1.7'), '%s/test.log' % unpackPath)
+      print("    run tests w/ Java 7 and testArgs='%s'..." % testArgs)
+      run('%s; ant clean test %s' % (javaExe('1.7'), testArgs), '%s/test.log' % unpackPath)
       run('%s; ant jar' % javaExe('1.7'), '%s/compile.log' % unpackPath)
       testDemo(isSrc, version, '1.7')
 
@@ -694,8 +702,8 @@ def verifyUnpacked(project, artifact, un
       os.chdir('solr')
 
       # DISABLED until solr tests consistently pass
-      #print('    run tests w/ Java 7...')
-      #run('%s; ant test' % javaExe('1.7'), '%s/test.log' % unpackPath)
+      #print("    run tests w/ Java 7 and testArgs='%s'..." % testArgs)
+      #run('%s; ant clean test %s' % (javaExe('1.7'), testArgs), '%s/test.log' % unpackPath)
  
       # test javadocs
       print('    generate javadocs w/ Java 7...')
@@ -1301,7 +1309,8 @@ def main():
 
   if len(sys.argv) < 5:
     print()
-    print('Usage python -u %s BaseURL SvnRevision version tmpDir' % sys.argv[0])
+    print('Usage python -u %s BaseURL SvnRevision version tmpDir [ isSigned ] [ -testArgs "-Dwhat=ever [ ... ]" ]'
+          % sys.argv[0])
     print()
     print('  example: python3.2 -u dev-tools/scripts/smokeTestRelease.py http://people.apache.org/~whoever/staging_area/lucene-solr-4.3.0-RC1-rev1469340 1469340 4.3.0 /path/to/a/tmp/dir')
     print()
@@ -1314,14 +1323,37 @@ def main():
   if not reAllowedVersion.match(version):
     raise RuntimeError('version "%s" does not match format X.Y.Z[-ALPHA|-BETA]' % version)
   
-  tmpDir = os.path.abspath(sys.argv[4])
-  isSigned = True 
-  if len(sys.argv) == 6:
-    isSigned = (sys.argv[5] == "True")
+  tmpDirArgNum = 4
+  tmpDir = os.path.abspath(sys.argv[tmpDirArgNum])
+
+  # TODO: yuck: positional-only args with more than one optional arg totally sucks
+  # TODO: consider naming all args
+  isSigned = True
+  testArgs = ''
+  lastArgNum = len(sys.argv) - 1
+  if lastArgNum > tmpDirArgNum:
+    nextArgNum = tmpDirArgNum + 1
+    if sys.argv[nextArgNum] == '-testArgs':
+      if nextArgNum == lastArgNum:
+        raise RuntimeError('missing expected argument to -testArgs')
+      else:
+        # TODO: should there be arg validation here?  E.g. starts with '-D'?
+        testArgs = sys.argv[nextArgNum + 1]
+        nextArgNum += 2
+    if nextArgNum <= lastArgNum:
+      isSigned = (sys.argv[nextArgNum] == "True")
+      nextArgNum += 1
+    if nextArgNum <= lastArgNum and testArgs == '':
+      if sys.argv[nextArgNum] == '-testArgs':
+        if nextArgNum == lastArgNum:
+          raise RuntimeError('missing expected argument to -testArgs')
+        else:
+          # TODO: should there be arg validation here?  E.g. starts with '-D'?
+          testArgs = sys.argv[nextArgNum + 1]
 
-  smokeTest(baseURL, svnRevision, version, tmpDir, isSigned)
+  smokeTest(baseURL, svnRevision, version, tmpDir, isSigned, testArgs)
 
-def smokeTest(baseURL, svnRevision, version, tmpDir, isSigned):
+def smokeTest(baseURL, svnRevision, version, tmpDir, isSigned, testArgs):
 
   startTime = datetime.datetime.now()
   
@@ -1356,15 +1388,15 @@ def smokeTest(baseURL, svnRevision, vers
   print('Test Lucene...')
   checkSigs('lucene', lucenePath, version, tmpDir, isSigned)
   for artifact in ('lucene-%s.tgz' % version, 'lucene-%s.zip' % version):
-    unpackAndVerify('lucene', tmpDir, artifact, svnRevision, version)
-  unpackAndVerify('lucene', tmpDir, 'lucene-%s-src.tgz' % version, svnRevision, version)
+    unpackAndVerify('lucene', tmpDir, artifact, svnRevision, version, testArgs)
+  unpackAndVerify('lucene', tmpDir, 'lucene-%s-src.tgz' % version, svnRevision, version, testArgs)
 
   print()
   print('Test Solr...')
   checkSigs('solr', solrPath, version, tmpDir, isSigned)
   for artifact in ('solr-%s.tgz' % version, 'solr-%s.zip' % version):
-    unpackAndVerify('solr', tmpDir, artifact, svnRevision, version)
-  unpackAndVerify('solr', tmpDir, 'solr-%s-src.tgz' % version, svnRevision, version)
+    unpackAndVerify('solr', tmpDir, artifact, svnRevision, version, testArgs)
+  unpackAndVerify('solr', tmpDir, 'solr-%s-src.tgz' % version, svnRevision, version, testArgs)
 
   print()
   print('Test Maven artifacts for Lucene and Solr...')

Modified: lucene/dev/branches/lucene4956/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/CHANGES.txt?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene4956/lucene/CHANGES.txt Wed May 22 15:51:08 2013
@@ -69,44 +69,48 @@ Changes in backwards compatibility polic
   suggesters, you now need to call setPreservePositionIncrements(false) instead
   of configuring the token filters to not increment positions. (Adrien Grand)
 
-Bug Fixes
+* LUCENE-3907: EdgeNGramTokenizer now supports maxGramSize > 1024, doesn't trim
+  the input, sets position increment = 1 for all tokens and doesn't support
+  backward grams anymore. (Adrien Grand)
+
+* LUCENE-3907: EdgeNGramTokenFilter does not support backward grams and does
+  not update offsets anymore. (Adrien Grand)
+
+* LUCENE-4981: PositionFilter is now deprecated as it can corrupt token stream
+  graphs. Since it main use-case was to make query parsers generate boolean
+  queries instead of phrase queries, it is now advised to use
+  QueryParser.setAutoGeneratePhraseQueries(false) (for simple cases) or to
+  override QueryParser.newFieldQuery. (Adrien Grand, Steve Rowe)
 
-* LUCENE-4935: CustomScoreQuery wrongly applied its query boost twice 
-  (boost^2).  (Robert Muir)
+Bug Fixes
 
-* LUCENE-4948: Fixed ArrayIndexOutOfBoundsException in PostingsHighlighter
-  if you had a 64-bit JVM without compressed OOPS: IBM J9, or Oracle with
-  large heap/explicitly disabled.  (Mike McCandless, Uwe Schindler, Robert Muir)
+* LUCENE-4997: Internal test framework's tests are sensitive to previous 
+  test failures and tests.failfast. (Dawid Weiss, Shai Erera)
 
 * LUCENE-4955: NGramTokenizer now supports inputs larger than 1024 chars.
   (Adrien Grand)
 
-* LUCENE-4953: Fixed ParallelCompositeReader to inform ReaderClosedListeners of
-  its synthetic subreaders. FieldCaches keyed on the atomic childs will be purged
-  earlier and FC insanity prevented.  In addition, ParallelCompositeReader's
-  toString() was changed to better reflect the reader structure.
-  (Mike McCandless, Uwe Schindler)
-
 * LUCENE-4959: Fix incorrect return value in
   SimpleNaiveBayesClassifier.assignClass. (Alexey Kutin via Adrien Grand)
 
-* LUCENE-4968: Fixed ToParentBlockJoinQuery/Collector: correctly handle parent
-  hits that had no child matches, don't throw IllegalArgumentEx when
-  the child query has no hits, more aggressively catch cases where childQuery
-  incorrectly matches parent documents (Mike McCandless)
-
-* LUCENE-4970: Fix boost value of rewritten NGramPhraseQuery.
-  (Shingo Sasaki via Adrien Grand)
-
-* LUCENE-4974: CommitIndexTask was broken if no params were set. (Shai Erera)
-
-* LUCENE-4972: DirectoryTaxonomyWriter created empty commits even if no changes 
+* LUCENE-4972: DirectoryTaxonomyWriter created empty commits even if no changes
   were made. (Shai Erera, Michael McCandless)
   
-Optimizations
+* LUCENE-949: AnalyzingQueryParser can't work with leading wildcards.
+  (Tim Allison, Robert Muir, Steve Rowe)
 
-* LUCENE-4938: Don't use an unnecessarily large priority queue in IndexSearcher
-  methods that take top-N.  (Uwe Schindler, Mike McCandless, Robert Muir)
+* LUCENE-4980: Fix issues preventing mixing of RangeFacetRequest and
+  non-RangeFacetRequest when using DrillSideways.  (Mike McCandless,
+  Shai Erera)
+
+* LUCENE-4996: Ensure DocInverterPerField always includes field name
+  in exception messages.  (Markus Jelsma via Robert Muir)
+
+* LUCENE-4992: Fix constructor of CustomScoreQuery to take FunctionQuery
+  for scoringQueries. Instead use QueryValueSource to safely wrap arbitrary 
+  queries and use them with CustomScoreQuery.  (John Wang, Robert Muir)
+
+Optimizations
 
 * LUCENE-4936: Improve numeric doc values compression in case all values share
   a common divisor. In particular, this improves the compression ratio of dates
@@ -143,6 +147,80 @@ New Features
 * LUCENE-4965: Add dynamic (no taxonomy index used) numeric range
   faceting to Lucene's facet module (Mike McCandless, Shai Erera)
 
+* LUCENE-4979: LiveFieldFields can work with any ReferenceManager, not
+  just ReferenceManager<IndexSearcher> (Mike McCandless).
+
+* LUCENE-4975: Added a new Replicator module which can replicate index 
+  revisions between server and client. (Shai Erera, Mike McCandless)
+
+Build
+
+* LUCENE-4987: Upgrade randomized testing to version 2.0.10: 
+  Test framework may fail internally due to overly aggresive J9 optimizations. 
+  (Dawid Weiss, Shai Erera)
+
+Tests
+
+* LUCENE-4901: TestIndexWriterOnJRECrash should work on any 
+  JRE vendor via Runtime.halt().
+  (Mike McCandless, Robert Muir, Uwe Schindler, Rodrigo Trujillo, Dawid Weiss)
+
+======================= Lucene 4.3.1 =======================
+
+Bug Fixes
+
+* SOLR-4813: Fix SynonymFilterFactory to allow init parameters for
+  tokenizer factory used when parsing synonyms file.  (Shingo Sasaki, hossman)
+
+* LUCENE-4935: CustomScoreQuery wrongly applied its query boost twice
+  (boost^2).  (Robert Muir)
+
+* LUCENE-4948: Fixed ArrayIndexOutOfBoundsException in PostingsHighlighter
+  if you had a 64-bit JVM without compressed OOPS: IBM J9, or Oracle with
+  large heap/explicitly disabled.  (Mike McCandless, Uwe Schindler, Robert Muir)
+
+* LUCENE-4953: Fixed ParallelCompositeReader to inform ReaderClosedListeners of
+  its synthetic subreaders. FieldCaches keyed on the atomic childs will be purged
+  earlier and FC insanity prevented.  In addition, ParallelCompositeReader's
+  toString() was changed to better reflect the reader structure.
+  (Mike McCandless, Uwe Schindler)
+
+* LUCENE-4968: Fixed ToParentBlockJoinQuery/Collector: correctly handle parent
+  hits that had no child matches, don't throw IllegalArgumentEx when
+  the child query has no hits, more aggressively catch cases where childQuery
+  incorrectly matches parent documents (Mike McCandless)
+
+* LUCENE-4970: Fix boost value of rewritten NGramPhraseQuery.
+  (Shingo Sasaki via Adrien Grand)
+
+* LUCENE-4974: CommitIndexTask was broken if no params were set. (Shai Erera)
+
+* LUCENE-4986: Fixed case where a newly opened near-real-time reader
+  fails to reflect a delete from IndexWriter.tryDeleteDocument (Reg,
+  Mike McCandless)
+
+* LUCENE-4994: Fix PatternKeywordMarkerFilter to have public constructor.
+  (Uwe Schindler)
+
+* LUCENE-4993: Fix BeiderMorseFilter to preserve custom attributes when
+  inserting tokens with position increment 0.  (Uwe Schindler)
+
+* LUCENE-4991: Fix handling of synonyms in classic QueryParser.getFieldQuery for
+  terms not separated by whitespace. PositionIncrementAttribute was ignored, so with
+  default AND synonyms wrongly became mandatory clauses, and with OR, the
+  coordination factor was wrong.  (李威, Robert Muir)
+
+* LUCENE-5002: IndexWriter#deleteAll() caused a deadlock in DWPT / DWSC if a
+  DwPT was flushing concurrently while deleteAll() aborted all DWPT. The IW
+  should never wait on DWPT via the flush control while holding on to the IW
+  Lock. (Simon Willnauer)
+
+Optimizations
+
+* LUCENE-4938: Don't use an unnecessarily large priority queue in IndexSearcher
+  methods that take top-N.  (Uwe Schindler, Mike McCandless, Robert Muir)
+
+
 ======================= Lucene 4.3.0 =======================
 
 Changes in backwards compatibility policy

Modified: lucene/dev/branches/lucene4956/lucene/NOTICE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/NOTICE.txt?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/NOTICE.txt (original)
+++ lucene/dev/branches/lucene4956/lucene/NOTICE.txt Wed May 22 15:51:08 2013
@@ -104,8 +104,8 @@ LGPL and Creative Commons ShareAlike.
 Morfologic includes data from BSD-licensed dictionary of Polish (SGJP)
 (http://sgjp.pl/morfeusz/)
 
-Servlet-api.jar is under the CDDL license, the original source
-code for this can be found at http://www.eclipse.org/jetty/downloads.php
+Servlet-api.jar and javax.servlet-*.jar are under the CDDL license, the original
+source code for this can be found at http://www.eclipse.org/jetty/downloads.php
 
 ===========================================================================
 Kuromoji Japanese Morphological Analyzer - Apache Lucene Integration

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/PatternKeywordMarkerFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/PatternKeywordMarkerFilter.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/PatternKeywordMarkerFilter.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/PatternKeywordMarkerFilter.java Wed May 22 15:51:08 2013
@@ -42,7 +42,7 @@ public final class PatternKeywordMarkerF
    * @param pattern
    *          the pattern to apply to the incoming term buffer
    **/
-  protected PatternKeywordMarkerFilter(TokenStream in, Pattern pattern) {
+  public PatternKeywordMarkerFilter(TokenStream in, Pattern pattern) {
     super(in);
     this.matcher = pattern.matcher("");
   }

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramFilterFactory.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramFilterFactory.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramFilterFactory.java Wed May 22 15:51:08 2013
@@ -27,21 +27,19 @@ import org.apache.lucene.analysis.util.T
  * &lt;fieldType name="text_edgngrm" class="solr.TextField" positionIncrementGap="100"&gt;
  *   &lt;analyzer&gt;
  *     &lt;tokenizer class="solr.WhitespaceTokenizerFactory"/&gt;
- *     &lt;filter class="solr.EdgeNGramFilterFactory" side="front" minGramSize="1" maxGramSize="1"/&gt;
+ *     &lt;filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="1"/&gt;
  *   &lt;/analyzer&gt;
  * &lt;/fieldType&gt;</pre>
  */
 public class EdgeNGramFilterFactory extends TokenFilterFactory {
   private final int maxGramSize;
   private final int minGramSize;
-  private final String side;
 
   /** Creates a new EdgeNGramFilterFactory */
   public EdgeNGramFilterFactory(Map<String, String> args) {
     super(args);
     minGramSize = getInt(args, "minGramSize", EdgeNGramTokenFilter.DEFAULT_MIN_GRAM_SIZE);
     maxGramSize = getInt(args, "maxGramSize", EdgeNGramTokenFilter.DEFAULT_MAX_GRAM_SIZE);
-    side = get(args, "side", EdgeNGramTokenFilter.Side.FRONT.getLabel());
     if (!args.isEmpty()) {
       throw new IllegalArgumentException("Unknown parameters: " + args);
     }
@@ -49,6 +47,6 @@ public class EdgeNGramFilterFactory exte
 
   @Override
   public EdgeNGramTokenFilter create(TokenStream input) {
-    return new EdgeNGramTokenFilter(input, side, minGramSize, maxGramSize);
+    return new EdgeNGramTokenFilter(luceneMatchVersion, input, minGramSize, maxGramSize);
   }
 }

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.java Wed May 22 15:51:08 2013
@@ -17,83 +17,53 @@ package org.apache.lucene.analysis.ngram
  * limitations under the License.
  */
 
+import java.io.IOException;
+
 import org.apache.lucene.analysis.TokenFilter;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-
-import java.io.IOException;
+import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
+import org.apache.lucene.util.Version;
 
 /**
  * Tokenizes the given token into n-grams of given size(s).
  * <p>
- * This {@link TokenFilter} create n-grams from the beginning edge or ending edge of a input token.
- * </p>
+ * This {@link TokenFilter} create n-grams from the beginning edge of a input token.
  */
 public final class EdgeNGramTokenFilter extends TokenFilter {
-  public static final Side DEFAULT_SIDE = Side.FRONT;
   public static final int DEFAULT_MAX_GRAM_SIZE = 1;
   public static final int DEFAULT_MIN_GRAM_SIZE = 1;
 
-  /** Specifies which side of the input the n-gram should be generated from */
-  public static enum Side {
-
-    /** Get the n-gram from the front of the input */
-    FRONT {
-      @Override
-      public String getLabel() { return "front"; }
-    },
-
-    /** Get the n-gram from the end of the input */
-    BACK  {
-      @Override
-      public String getLabel() { return "back"; }
-    };
-
-    public abstract String getLabel();
-
-    // Get the appropriate Side from a string
-    public static Side getSide(String sideName) {
-      if (FRONT.getLabel().equals(sideName)) {
-        return FRONT;
-      }
-      if (BACK.getLabel().equals(sideName)) {
-        return BACK;
-      }
-      return null;
-    }
-  }
-
   private final int minGram;
   private final int maxGram;
-  private Side side;
   private char[] curTermBuffer;
   private int curTermLength;
   private int curGramSize;
   private int tokStart;
   private int tokEnd; // only used if the length changed before this filter
-  private boolean hasIllegalOffsets; // only if the length changed before this filter
   private int savePosIncr;
-  private boolean isFirstToken = true;
+  private int savePosLen;
   
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
   private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
   private final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class);
+  private final PositionLengthAttribute posLenAtt = addAttribute(PositionLengthAttribute.class);
 
   /**
    * Creates EdgeNGramTokenFilter that can generate n-grams in the sizes of the given range
    *
+   * @param version the Lucene match version
    * @param input {@link TokenStream} holding the input to be tokenized
-   * @param side the {@link Side} from which to chop off an n-gram
    * @param minGram the smallest n-gram to generate
    * @param maxGram the largest n-gram to generate
    */
-  public EdgeNGramTokenFilter(TokenStream input, Side side, int minGram, int maxGram) {
+  public EdgeNGramTokenFilter(Version version, TokenStream input, int minGram, int maxGram) {
     super(input);
 
-    if (side == null) {
-      throw new IllegalArgumentException("sideLabel must be either front or back");
+    if (version == null) {
+      throw new IllegalArgumentException("version must not be null");
     }
 
     if (minGram < 1) {
@@ -106,19 +76,6 @@ public final class EdgeNGramTokenFilter 
 
     this.minGram = minGram;
     this.maxGram = maxGram;
-    this.side = side;
-  }
-
-  /**
-   * Creates EdgeNGramTokenFilter that can generate n-grams in the sizes of the given range
-   *
-   * @param input {@link TokenStream} holding the input to be tokenized
-   * @param sideLabel the name of the {@link Side} from which to chop off an n-gram
-   * @param minGram the smallest n-gram to generate
-   * @param maxGram the largest n-gram to generate
-   */
-  public EdgeNGramTokenFilter(TokenStream input, String sideLabel, int minGram, int maxGram) {
-    this(input, Side.getSide(sideLabel), minGram, maxGram);
   }
 
   @Override
@@ -133,35 +90,25 @@ public final class EdgeNGramTokenFilter 
           curGramSize = minGram;
           tokStart = offsetAtt.startOffset();
           tokEnd = offsetAtt.endOffset();
-          // if length by start + end offsets doesn't match the term text then assume
-          // this is a synonym and don't adjust the offsets.
-          hasIllegalOffsets = (tokStart + curTermLength) != tokEnd;
-          savePosIncr = posIncrAtt.getPositionIncrement();
+          savePosIncr += posIncrAtt.getPositionIncrement();
+          savePosLen = posLenAtt.getPositionLength();
         }
       }
       if (curGramSize <= maxGram) {         // if we have hit the end of our n-gram size range, quit
         if (curGramSize <= curTermLength) { // if the remaining input is too short, we can't generate any n-grams
           // grab gramSize chars from front or back
-          int start = side == Side.FRONT ? 0 : curTermLength - curGramSize;
-          int end = start + curGramSize;
           clearAttributes();
-          if (hasIllegalOffsets) {
-            offsetAtt.setOffset(tokStart, tokEnd);
-          } else {
-            offsetAtt.setOffset(tokStart + start, tokStart + end);
-          }
+          offsetAtt.setOffset(tokStart, tokEnd);
           // first ngram gets increment, others don't
           if (curGramSize == minGram) {
-            //  Leave the first token position increment at the cleared-attribute value of 1
-            if ( ! isFirstToken) {
-              posIncrAtt.setPositionIncrement(savePosIncr);
-            }
+            posIncrAtt.setPositionIncrement(savePosIncr);
+            savePosIncr = 0;
           } else {
             posIncrAtt.setPositionIncrement(0);
           }
-          termAtt.copyBuffer(curTermBuffer, start, curGramSize);
+          posLenAtt.setPositionLength(savePosLen);
+          termAtt.copyBuffer(curTermBuffer, 0, curGramSize);
           curGramSize++;
-          isFirstToken = false;
           return true;
         }
       }
@@ -173,6 +120,6 @@ public final class EdgeNGramTokenFilter 
   public void reset() throws IOException {
     super.reset();
     curTermBuffer = null;
-    isFirstToken = true;
+    savePosIncr = 0;
   }
 }

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizer.java Wed May 22 15:51:08 2013
@@ -24,118 +24,60 @@ import org.apache.lucene.analysis.Tokeni
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.util.AttributeSource;
+import org.apache.lucene.util.ArrayUtil;
+import org.apache.lucene.util.Version;
 
 /**
  * Tokenizes the input from an edge into n-grams of given size(s).
  * <p>
- * This {@link Tokenizer} create n-grams from the beginning edge or ending edge of a input token.
- * MaxGram can't be larger than 1024 because of limitation.
- * </p>
+ * This {@link Tokenizer} create n-grams from the beginning edge of a input token.
  */
 public final class EdgeNGramTokenizer extends Tokenizer {
-  public static final Side DEFAULT_SIDE = Side.FRONT;
   public static final int DEFAULT_MAX_GRAM_SIZE = 1;
   public static final int DEFAULT_MIN_GRAM_SIZE = 1;
-  
+
   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
   private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
   private final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class);
 
-  /** Specifies which side of the input the n-gram should be generated from */
-  public static enum Side {
-
-    /** Get the n-gram from the front of the input */
-    FRONT {
-      @Override
-      public String getLabel() { return "front"; }
-    },
-
-    /** Get the n-gram from the end of the input */
-    BACK  {
-      @Override
-      public String getLabel() { return "back"; }
-    };
-
-    public abstract String getLabel();
-
-    // Get the appropriate Side from a string
-    public static Side getSide(String sideName) {
-      if (FRONT.getLabel().equals(sideName)) {
-        return FRONT;
-      }
-      if (BACK.getLabel().equals(sideName)) {
-        return BACK;
-      }
-      return null;
-    }
-  }
-
   private int minGram;
   private int maxGram;
   private int gramSize;
-  private Side side;
   private boolean started;
   private int inLen; // length of the input AFTER trim()
   private int charsRead; // length of the input
   private String inStr;
 
-
   /**
    * Creates EdgeNGramTokenizer that can generate n-grams in the sizes of the given range
    *
+   * @param version the Lucene match version
    * @param input {@link Reader} holding the input to be tokenized
-   * @param side the {@link Side} from which to chop off an n-gram
    * @param minGram the smallest n-gram to generate
    * @param maxGram the largest n-gram to generate
    */
-  public EdgeNGramTokenizer(Reader input, Side side, int minGram, int maxGram) {
+  public EdgeNGramTokenizer(Version version, Reader input, int minGram, int maxGram) {
     super(input);
-    init(side, minGram, maxGram);
+    init(version, minGram, maxGram);
   }
 
   /**
    * Creates EdgeNGramTokenizer that can generate n-grams in the sizes of the given range
-   * 
+   *
+   * @param version the Lucene match version
    * @param factory {@link org.apache.lucene.util.AttributeSource.AttributeFactory} to use
    * @param input {@link Reader} holding the input to be tokenized
-   * @param side the {@link Side} from which to chop off an n-gram
    * @param minGram the smallest n-gram to generate
    * @param maxGram the largest n-gram to generate
    */
-  public EdgeNGramTokenizer(AttributeFactory factory, Reader input, Side side, int minGram, int maxGram) {
+  public EdgeNGramTokenizer(Version version, AttributeFactory factory, Reader input, int minGram, int maxGram) {
     super(factory, input);
-    init(side, minGram, maxGram);
-  }
-  
-  /**
-   * Creates EdgeNGramTokenizer that can generate n-grams in the sizes of the given range
-   *
-   * @param input {@link Reader} holding the input to be tokenized
-   * @param sideLabel the name of the {@link Side} from which to chop off an n-gram
-   * @param minGram the smallest n-gram to generate
-   * @param maxGram the largest n-gram to generate
-   */
-  public EdgeNGramTokenizer(Reader input, String sideLabel, int minGram, int maxGram) {
-    this(input, Side.getSide(sideLabel), minGram, maxGram);
+    init(version, minGram, maxGram);
   }
 
-  /**
-   * Creates EdgeNGramTokenizer that can generate n-grams in the sizes of the given range
-   * 
-   * @param factory {@link org.apache.lucene.util.AttributeSource.AttributeFactory} to use
-   * @param input {@link Reader} holding the input to be tokenized
-   * @param sideLabel the name of the {@link Side} from which to chop off an n-gram
-   * @param minGram the smallest n-gram to generate
-   * @param maxGram the largest n-gram to generate
-   */
-  public EdgeNGramTokenizer(AttributeFactory factory, Reader input, String sideLabel, int minGram, int maxGram) {
-    this(factory, input, Side.getSide(sideLabel), minGram, maxGram);
-  }
-  
-  private void init(Side side, int minGram, int maxGram) {
-    if (side == null) {
-      throw new IllegalArgumentException("sideLabel must be either front or back");
+  private void init(Version version, int minGram, int maxGram) {
+    if (version == null) {
+      throw new IllegalArgumentException("version must not be null");
     }
 
     if (minGram < 1) {
@@ -148,7 +90,6 @@ public final class EdgeNGramTokenizer ex
 
     this.minGram = minGram;
     this.maxGram = maxGram;
-    this.side = side;
   }
 
   /** Returns the next token in the stream, or null at EOS. */
@@ -159,20 +100,25 @@ public final class EdgeNGramTokenizer ex
     if (!started) {
       started = true;
       gramSize = minGram;
-      char[] chars = new char[1024];
+      char[] chars = new char[Math.min(1024, maxGram)];
       charsRead = 0;
       // TODO: refactor to a shared readFully somewhere:
-      while (charsRead < chars.length) {
+      boolean exhausted = false;
+      while (charsRead < maxGram) {
         final int inc = input.read(chars, charsRead, chars.length-charsRead);
         if (inc == -1) {
+          exhausted = true;
           break;
         }
         charsRead += inc;
+        if (charsRead == chars.length && charsRead < maxGram) {
+          chars = ArrayUtil.grow(chars);
+        }
       }
 
-      inStr = new String(chars, 0, charsRead).trim();  // remove any trailing empty strings 
+      inStr = new String(chars, 0, charsRead);
 
-      if (charsRead == chars.length) {
+      if (!exhausted) {
         // Read extra throwaway chars so that on end() we
         // report the correct offset:
         char[] throwaway = new char[1024];
@@ -191,7 +137,7 @@ public final class EdgeNGramTokenizer ex
       }
       posIncrAtt.setPositionIncrement(1);
     } else {
-      posIncrAtt.setPositionIncrement(0);
+      posIncrAtt.setPositionIncrement(1);
     }
 
     // if the remaining input is too short, we can't generate any n-grams
@@ -200,15 +146,13 @@ public final class EdgeNGramTokenizer ex
     }
 
     // if we have hit the end of our n-gram size range, quit
-    if (gramSize > maxGram) {
+    if (gramSize > maxGram || gramSize > inLen) {
       return false;
     }
 
     // grab gramSize chars from front or back
-    int start = side == Side.FRONT ? 0 : inLen - gramSize;
-    int end = start + gramSize;
-    termAtt.setEmpty().append(inStr, start, end);
-    offsetAtt.setOffset(correctOffset(start), correctOffset(end));
+    termAtt.setEmpty().append(inStr, 0, gramSize);
+    offsetAtt.setOffset(correctOffset(0), correctOffset(gramSize));
     gramSize++;
     return true;
   }

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizerFactory.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizerFactory.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/ngram/EdgeNGramTokenizerFactory.java Wed May 22 15:51:08 2013
@@ -28,21 +28,19 @@ import java.util.Map;
  * <pre class="prettyprint">
  * &lt;fieldType name="text_edgngrm" class="solr.TextField" positionIncrementGap="100"&gt;
  *   &lt;analyzer&gt;
- *     &lt;tokenizer class="solr.EdgeNGramTokenizerFactory" side="front" minGramSize="1" maxGramSize="1"/&gt;
+ *     &lt;tokenizer class="solr.EdgeNGramTokenizerFactory" minGramSize="1" maxGramSize="1"/&gt;
  *   &lt;/analyzer&gt;
  * &lt;/fieldType&gt;</pre>
  */
 public class EdgeNGramTokenizerFactory extends TokenizerFactory {
   private final int maxGramSize;
   private final int minGramSize;
-  private final String side;
 
   /** Creates a new EdgeNGramTokenizerFactory */
   public EdgeNGramTokenizerFactory(Map<String, String> args) {
     super(args);
     minGramSize = getInt(args, "minGramSize", EdgeNGramTokenizer.DEFAULT_MIN_GRAM_SIZE);
     maxGramSize = getInt(args, "maxGramSize", EdgeNGramTokenizer.DEFAULT_MAX_GRAM_SIZE);
-    side = get(args, "side", EdgeNGramTokenFilter.Side.FRONT.getLabel());
     if (!args.isEmpty()) {
       throw new IllegalArgumentException("Unknown parameters: " + args);
     }
@@ -50,6 +48,6 @@ public class EdgeNGramTokenizerFactory e
   
   @Override
   public EdgeNGramTokenizer create(AttributeFactory factory, Reader input) {
-    return new EdgeNGramTokenizer(factory, input, side, minGramSize, maxGramSize);
+    return new EdgeNGramTokenizer(luceneMatchVersion, factory, input, minGramSize, maxGramSize);
   }
 }

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java Wed May 22 15:51:08 2013
@@ -26,6 +26,7 @@ import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CodingErrorAction;
 import java.text.ParseException;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -48,9 +49,18 @@ import org.apache.lucene.util.Version;
  *     &lt;tokenizer class="solr.WhitespaceTokenizerFactory"/&gt;
  *     &lt;filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" 
  *             format="solr" ignoreCase="false" expand="true" 
- *             tokenizerFactory="solr.WhitespaceTokenizerFactory"/&gt;
+ *             tokenizerFactory="solr.WhitespaceTokenizerFactory"
+ *             [optional tokenizer factory parameters]/&gt;
  *   &lt;/analyzer&gt;
  * &lt;/fieldType&gt;</pre>
+ * 
+ * <p>
+ * An optional param name prefix of "tokenizerFactory." may be used for any 
+ * init params that the SynonymFilterFactory needs to pass to the specified 
+ * TokenizerFactory.  If the TokenizerFactory expects an init parameters with 
+ * the same name as an init param used by the SynonymFilterFactory, the prefix 
+ * is mandatory.
+ * </p>
  */
 public class SynonymFilterFactory extends TokenFilterFactory implements ResourceLoaderAware {
   private final boolean ignoreCase;
@@ -58,19 +68,27 @@ public class SynonymFilterFactory extend
   private final String synonyms;
   private final String format;
   private final boolean expand;
+  private final Map<String, String> tokArgs = new HashMap<String, String>();
 
   private SynonymMap map;
   
   public SynonymFilterFactory(Map<String,String> args) {
     super(args);
     ignoreCase = getBoolean(args, "ignoreCase", false);
+    synonyms = require(args, "synonyms");
+    format = get(args, "format");
+    expand = getBoolean(args, "expand", true);
+
     tokenizerFactory = get(args, "tokenizerFactory");
     if (tokenizerFactory != null) {
       assureMatchVersion();
+      tokArgs.put("luceneMatchVersion", getLuceneMatchVersion().toString());
+      for (Iterator<String> itr = args.keySet().iterator(); itr.hasNext();) {
+        String key = itr.next();
+        tokArgs.put(key.replaceAll("^tokenizerFactory\\.",""), args.get(key));
+        itr.remove();
+      }
     }
-    synonyms = require(args, "synonyms");
-    format = get(args, "format");
-    expand = getBoolean(args, "expand", true);
     if (!args.isEmpty()) {
       throw new IllegalArgumentException("Unknown parameters: " + args);
     }
@@ -159,11 +177,9 @@ public class SynonymFilterFactory extend
   
   // (there are no tests for this functionality)
   private TokenizerFactory loadTokenizerFactory(ResourceLoader loader, String cname) throws IOException {
-    Map<String,String> args = new HashMap<String,String>();
-    args.put("luceneMatchVersion", getLuceneMatchVersion().toString());
     Class<? extends TokenizerFactory> clazz = loader.findClass(cname, TokenizerFactory.class);
     try {
-      TokenizerFactory tokFactory = clazz.getConstructor(Map.class).newInstance(args);
+      TokenizerFactory tokFactory = clazz.getConstructor(Map.class).newInstance(tokArgs);
       if (tokFactory instanceof ResourceLoaderAware) {
         ((ResourceLoaderAware) tokFactory).inform(loader);
       }

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/resources/META-INF/services/org.apache.lucene.analysis.util.TokenFilterFactory Wed May 22 15:51:08 2013
@@ -76,7 +76,6 @@ org.apache.lucene.analysis.payloads.Deli
 org.apache.lucene.analysis.payloads.NumericPayloadTokenFilterFactory
 org.apache.lucene.analysis.payloads.TokenOffsetPayloadTokenFilterFactory
 org.apache.lucene.analysis.payloads.TypeAsPayloadTokenFilterFactory
-org.apache.lucene.analysis.position.PositionFilterFactory
 org.apache.lucene.analysis.pt.PortugueseLightStemFilterFactory
 org.apache.lucene.analysis.pt.PortugueseMinimalStemFilterFactory
 org.apache.lucene.analysis.pt.PortugueseStemFilterFactory

Modified: lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java?rev=1485259&r1=1485258&r2=1485259&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java Wed May 22 15:51:08 2013
@@ -66,22 +66,15 @@ import org.apache.lucene.analysis.compou
 import org.apache.lucene.analysis.hunspell.HunspellDictionary;
 import org.apache.lucene.analysis.hunspell.HunspellDictionaryTest;
 import org.apache.lucene.analysis.miscellaneous.HyphenatedWordsFilter;
-import org.apache.lucene.analysis.miscellaneous.KeepWordFilter;
-import org.apache.lucene.analysis.miscellaneous.LengthFilter;
 import org.apache.lucene.analysis.miscellaneous.LimitTokenCountFilter;
 import org.apache.lucene.analysis.miscellaneous.LimitTokenPositionFilter;
 import org.apache.lucene.analysis.miscellaneous.StemmerOverrideFilter;
 import org.apache.lucene.analysis.miscellaneous.StemmerOverrideFilter.StemmerOverrideMap;
-import org.apache.lucene.analysis.miscellaneous.TrimFilter;
 import org.apache.lucene.analysis.miscellaneous.WordDelimiterFilter;
-import org.apache.lucene.analysis.ngram.EdgeNGramTokenFilter;
-import org.apache.lucene.analysis.ngram.EdgeNGramTokenizer;
-import org.apache.lucene.analysis.ngram.Lucene43NGramTokenizer;
 import org.apache.lucene.analysis.path.PathHierarchyTokenizer;
 import org.apache.lucene.analysis.path.ReversePathHierarchyTokenizer;
 import org.apache.lucene.analysis.payloads.IdentityEncoder;
 import org.apache.lucene.analysis.payloads.PayloadEncoder;
-import org.apache.lucene.analysis.position.PositionFilter;
 import org.apache.lucene.analysis.snowball.TestSnowball;
 import org.apache.lucene.analysis.standard.StandardTokenizer;
 import org.apache.lucene.analysis.synonym.SynonymMap;
@@ -153,17 +146,6 @@ public class TestRandomChains extends Ba
           // Not broken: we forcefully add this, so we shouldn't
           // also randomly pick it:
           ValidatingTokenFilter.class,
-          // NOTE: these by themselves won't cause any 'basic assertions' to fail.
-          // but see https://issues.apache.org/jira/browse/LUCENE-3920, if any 
-          // tokenfilter that combines words (e.g. shingles) comes after them,
-          // this will create bogus offsets because their 'offsets go backwards',
-          // causing shingle or whatever to make a single token with a 
-          // startOffset thats > its endOffset
-          // (see LUCENE-3738 for a list of other offenders here)
-          // broken!
-          EdgeNGramTokenizer.class,
-          // broken!
-          EdgeNGramTokenFilter.class,
           // broken!
           WordDelimiterFilter.class)) {
         for (Constructor<?> ctor : c.getConstructors()) {
@@ -185,8 +167,6 @@ public class TestRandomChains extends Ba
           PathHierarchyTokenizer.class,
           HyphenationCompoundWordTokenFilter.class,
           DictionaryCompoundWordTokenFilter.class,
-          // TODO: corrumpts graphs (offset consistency check):
-          PositionFilter.class,
           // TODO: it seems to mess up offsets!?
           WikipediaTokenizer.class,
           // TODO: doesn't handle graph inputs
@@ -195,6 +175,8 @@ public class TestRandomChains extends Ba
           CJKBigramFilter.class,
           // TODO: doesn't handle graph inputs (or even look at positionIncrement)
           HyphenatedWordsFilter.class,
+          // TODO: LUCENE-4983
+          CommonGramsFilter.class,
           // TODO: doesn't handle graph inputs
           CommonGramsQueryFilter.class)) {
         for (Constructor<?> ctor : c.getConstructors()) {
@@ -440,20 +422,6 @@ public class TestRandomChains extends Ba
         }
       }
     });
-    put(EdgeNGramTokenizer.Side.class, new ArgProducer() {
-      @Override public Object create(Random random) {
-        return random.nextBoolean() 
-            ? EdgeNGramTokenizer.Side.FRONT 
-            : EdgeNGramTokenizer.Side.BACK;
-      }
-    });
-    put(EdgeNGramTokenFilter.Side.class, new ArgProducer() {
-      @Override public Object create(Random random) {
-        return random.nextBoolean() 
-            ? EdgeNGramTokenFilter.Side.FRONT 
-            : EdgeNGramTokenFilter.Side.BACK;
-      }
-    });
     put(HyphenationTree.class, new ArgProducer() {
       @Override public Object create(Random random) {
         // TODO: make nastier