You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/03/18 09:30:36 UTC
[49/50] lucene-solr:apiv2: SOLR-8029: Merge remote-tracking branch
'remotes/origin/master' into apiv2
SOLR-8029: Merge remote-tracking branch 'remotes/origin/master' into apiv2
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4541cc56
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4541cc56
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4541cc56
Branch: refs/heads/apiv2
Commit: 4541cc562cbf2a84625dc2d4e33e52308147d265
Parents: 7209e04 5ea86b1
Author: Noble Paul <no...@apache.org>
Authored: Fri Mar 18 13:58:35 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Fri Mar 18 13:58:35 2016 +0530
----------------------------------------------------------------------
dev-tools/idea/solr/core/src/java/solr-core.iml | 1 +
.../idea/solr/core/src/solr-core-tests.iml | 1 +
lucene/CHANGES.txt | 33 +-
.../lucene50/TestLucene50DocValuesFormat.java | 2 +-
.../classification/ClassificationTestBase.java | 7 +-
.../DocumentClassificationTestBase.java | 4 +-
.../classification/utils/DataSplitterTest.java | 5 +-
.../simpletext/SimpleTextPointsWriter.java | 8 +-
.../org/apache/lucene/codecs/PointsWriter.java | 14 +-
.../lucene54/Lucene54DocValuesConsumer.java | 21 +-
.../codecs/lucene60/Lucene60PointsWriter.java | 20 +-
.../org/apache/lucene/document/DoublePoint.java | 24 +-
.../org/apache/lucene/document/FloatPoint.java | 24 +-
.../org/apache/lucene/document/IntPoint.java | 24 +-
.../org/apache/lucene/document/LongPoint.java | 22 +-
.../org/apache/lucene/index/CheckIndex.java | 7 +
.../apache/lucene/index/CompositeReader.java | 2 -
.../org/apache/lucene/index/IndexReader.java | 2 -
.../org/apache/lucene/index/MultiDocValues.java | 6 +-
.../org/apache/lucene/index/PointValues.java | 90 ++-
.../apache/lucene/index/PointValuesWriter.java | 16 +-
.../index/SingletonSortedSetDocValues.java | 1 -
.../index/SlowCompositeReaderWrapper.java | 271 --------
.../lucene/search/LegacyNumericRangeQuery.java | 12 +-
.../apache/lucene/search/PointInSetQuery.java | 10 +-
.../apache/lucene/search/PointRangeQuery.java | 38 +-
.../org/apache/lucene/util/IntroSorter.java | 6 +-
.../org/apache/lucene/util/OfflineSorter.java | 44 +-
.../org/apache/lucene/util/bkd/BKDWriter.java | 226 +++---
.../apache/lucene/util/bkd/HeapPointReader.java | 17 +-
.../apache/lucene/util/bkd/HeapPointWriter.java | 47 +-
.../lucene/util/bkd/OfflinePointReader.java | 102 ++-
.../lucene/util/bkd/OfflinePointWriter.java | 24 +-
.../org/apache/lucene/util/bkd/PointReader.java | 37 +-
.../lucene54/TestLucene54DocValuesFormat.java | 6 +-
.../org/apache/lucene/index/Test2BPoints.java | 148 ++++
.../index/TestAllFilesCheckIndexHeader.java | 8 +-
.../index/TestAllFilesDetectTruncation.java | 4 +-
.../index/TestBinaryDocValuesUpdates.java | 28 +-
.../apache/lucene/index/TestCustomNorms.java | 4 +-
.../index/TestDemoParallelLeafReader.java | 21 +-
.../lucene/index/TestDirectoryReader.java | 2 +-
.../org/apache/lucene/index/TestDocValues.java | 14 +-
.../lucene/index/TestDocValuesIndexing.java | 25 +-
.../lucene/index/TestDocsAndPositions.java | 4 +-
.../apache/lucene/index/TestDocumentWriter.java | 2 +-
.../apache/lucene/index/TestDuelingCodecs.java | 4 +-
.../index/TestExitableDirectoryReader.java | 17 +-
.../lucene/index/TestFilterLeafReader.java | 8 +-
.../test/org/apache/lucene/index/TestFlex.java | 2 +-
.../lucene/index/TestIndexReaderClose.java | 52 +-
.../apache/lucene/index/TestIndexWriter.java | 6 +-
.../lucene/index/TestLazyProxSkipping.java | 2 +-
.../apache/lucene/index/TestMultiDocValues.java | 16 +-
.../lucene/index/TestMultiLevelSkipList.java | 2 +-
.../test/org/apache/lucene/index/TestNorms.java | 4 +-
.../index/TestNumericDocValuesUpdates.java | 30 +-
.../org/apache/lucene/index/TestOmitNorms.java | 8 +-
.../apache/lucene/index/TestOmitPositions.java | 2 +-
.../org/apache/lucene/index/TestOmitTf.java | 6 +-
.../org/apache/lucene/index/TestOrdinalMap.java | 5 +-
.../index/TestParallelCompositeReader.java | 34 +-
.../lucene/index/TestParallelLeafReader.java | 28 +-
.../index/TestParallelReaderEmptyIndex.java | 22 +-
.../lucene/index/TestParallelTermEnum.java | 4 +-
.../org/apache/lucene/index/TestPayloads.java | 11 +-
.../apache/lucene/index/TestPointValues.java | 97 ++-
.../lucene/index/TestPostingsOffsets.java | 5 +-
.../apache/lucene/index/TestReaderClosed.java | 6 +-
.../index/TestReaderWrapperDVTypeCheck.java | 5 +-
.../lucene/index/TestSegmentTermEnum.java | 2 +-
.../lucene/index/TestSortedSetDocValues.java | 27 +
.../apache/lucene/index/TestStressAdvance.java | 2 +-
.../lucene/index/TestSwappedIndexFiles.java | 3 +-
.../org/apache/lucene/index/TestTermsEnum.java | 6 +-
.../lucene/search/TestDisjunctionMaxQuery.java | 6 +-
.../lucene/search/TestMinShouldMatch2.java | 2 +-
.../lucene/search/TestMultiPhraseEnum.java | 8 +-
.../apache/lucene/search/TestPhraseQuery.java | 4 +-
.../apache/lucene/search/TestPointQueries.java | 88 +++
.../lucene/search/TestPositionIncrement.java | 10 +-
.../lucene/search/TestSimilarityProvider.java | 11 +-
.../apache/lucene/search/TestTermScorer.java | 9 +-
.../TestUsageTrackingFilterCachingPolicy.java | 17 +-
.../search/spans/TestFieldMaskingSpanQuery.java | 11 +-
.../search/spans/TestNearSpansOrdered.java | 29 +-
.../lucene/search/spans/TestSpanCollection.java | 11 +-
.../search/spans/TestSpanContainQuery.java | 7 +-
.../apache/lucene/search/spans/TestSpans.java | 13 +-
.../apache/lucene/util/TestOfflineSorter.java | 2 +-
.../apache/lucene/util/bkd/Test2BBKDPoints.java | 121 ++++
.../org/apache/lucene/util/bkd/TestBKD.java | 22 +-
.../expressions/TestExpressionValueSource.java | 4 +-
.../DefaultSortedSetDocValuesReaderState.java | 55 +-
.../sortedset/TestSortedSetDocValuesFacets.java | 36 -
.../lucene/search/grouping/TestGrouping.java | 12 +-
lucene/ivy-versions.properties | 2 +-
.../lucene/search/join/TestBlockJoin.java | 25 +-
.../apache/lucene/search/join/TestJoinUtil.java | 8 +-
.../jetty-continuation-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-continuation-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-http-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-http-9.3.8.v20160314.jar.sha1 | 1 +
.../licenses/jetty-io-9.3.6.v20151106.jar.sha1 | 1 -
.../licenses/jetty-io-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-server-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-server-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-servlet-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-servlet-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-util-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-util-9.3.8.v20160314.jar.sha1 | 1 +
.../apache/lucene/index/memory/MemoryIndex.java | 628 ++++++++++++++---
.../lucene/index/memory/TestMemoryIndex.java | 293 ++++++++
.../memory/TestMemoryIndexAgainstRAMDir.java | 204 +++++-
.../index/SlowCompositeReaderWrapper.java | 275 ++++++++
.../apache/lucene/uninverting/FieldCache.java | 113 ++-
.../lucene/uninverting/FieldCacheImpl.java | 164 ++++-
.../lucene/uninverting/UninvertingReader.java | 97 ++-
.../index/TestSlowCompositeReaderWrapper.java | 91 +++
.../lucene/uninverting/TestDocTermOrds.java | 14 +-
.../lucene/uninverting/TestFieldCache.java | 147 ++--
.../uninverting/TestFieldCacheReopen.java | 11 +-
.../TestFieldCacheSanityChecker.java | 10 +-
.../lucene/uninverting/TestFieldCacheSort.java | 684 +++++++++++++++++--
.../uninverting/TestFieldCacheSortRandom.java | 8 +-
.../uninverting/TestFieldCacheVsDocValues.java | 6 +-
.../uninverting/TestFieldCacheWithThreads.java | 13 +-
.../uninverting/TestLegacyFieldCache.java | 498 ++++++++++++++
.../lucene/uninverting/TestNumericTerms32.java | 6 +-
.../lucene/uninverting/TestNumericTerms64.java | 8 +-
.../uninverting/TestUninvertingReader.java | 6 +-
.../queries/function/FunctionRangeQuery.java | 5 +-
.../lucene/queries/function/FunctionValues.java | 20 +-
.../queries/function/ValueSourceScorer.java | 7 +-
.../docvalues/DocTermsIndexDocValues.java | 5 +-
.../function/docvalues/DoubleDocValues.java | 16 +-
.../function/docvalues/IntDocValues.java | 9 +-
.../function/docvalues/LongDocValues.java | 9 +-
.../function/valuesource/EnumFieldSource.java | 8 +-
.../lucene/queries/CommonTermsQueryTest.java | 6 +-
.../apache/lucene/queries/TermsQueryTest.java | 4 +-
.../function/TestSortedSetFieldSource.java | 2 +-
.../lucene/queries/payloads/PayloadHelper.java | 3 +-
.../queries/payloads/TestPayloadSpans.java | 42 +-
.../queries/payloads/TestPayloadTermQuery.java | 11 +-
.../flexible/core/nodes/package-info.java | 4 +-
.../flexible/standard/StandardQueryParser.java | 29 +-
.../LegacyNumericRangeQueryNodeBuilder.java | 93 +++
.../builders/NumericRangeQueryNodeBuilder.java | 91 ---
.../builders/PointRangeQueryNodeBuilder.java | 137 ++++
.../builders/StandardQueryTreeBuilder.java | 12 +-
.../standard/config/LegacyNumericConfig.java | 166 +++++
.../LegacyNumericFieldConfigListener.java | 75 ++
.../flexible/standard/config/NumericConfig.java | 164 -----
.../config/NumericFieldConfigListener.java | 73 --
.../flexible/standard/config/PointsConfig.java | 124 ++++
.../standard/config/PointsConfigListener.java | 65 ++
.../config/StandardQueryConfigHandler.java | 39 +-
.../standard/nodes/LegacyNumericQueryNode.java | 153 +++++
.../nodes/LegacyNumericRangeQueryNode.java | 153 +++++
.../standard/nodes/NumericQueryNode.java | 151 ----
.../standard/nodes/NumericRangeQueryNode.java | 151 ----
.../flexible/standard/nodes/PointQueryNode.java | 151 ++++
.../standard/nodes/PointRangeQueryNode.java | 124 ++++
.../LegacyNumericQueryNodeProcessor.java | 154 +++++
.../LegacyNumericRangeQueryNodeProcessor.java | 170 +++++
.../processors/NumericQueryNodeProcessor.java | 152 -----
.../NumericRangeQueryNodeProcessor.java | 168 -----
.../processors/PointQueryNodeProcessor.java | 136 ++++
.../PointRangeQueryNodeProcessor.java | 148 ++++
.../StandardQueryNodeProcessorPipeline.java | 6 +-
.../lucene/queryparser/xml/CoreParser.java | 1 +
.../LegacyNumericRangeQueryBuilder.java | 2 +
.../xml/builders/PointRangeQueryBuilder.java | 95 +++
.../standard/TestLegacyNumericQueryParser.java | 535 +++++++++++++++
.../standard/TestNumericQueryParser.java | 535 ---------------
.../flexible/standard/TestPointQueryParser.java | 82 +++
.../lucene/queryparser/xml/PointRangeQuery.xml | 31 +
.../lucene/queryparser/xml/TestCoreParser.java | 9 +-
.../lucene/document/InetAddressPoint.java | 23 +-
.../org/apache/lucene/document/LatLonPoint.java | 78 ++-
.../document/LatLonPointDistanceComparator.java | 213 ++++++
.../document/LatLonPointDistanceQuery.java | 148 +++-
.../document/LatLonPointInPolygonQuery.java | 65 +-
.../lucene/document/LatLonPointSortField.java | 106 +++
.../lucene/document/TestBigIntegerPoint.java | 19 +-
.../lucene/document/TestInetAddressPoint.java | 25 +-
.../apache/lucene/document/TestLatLonPoint.java | 35 +-
.../document/TestLatLonPointDistanceQuery.java | 4 +-
.../document/TestLatLonPointDistanceSort.java | 289 ++++++++
.../document/TestLatLonPointInPolygonQuery.java | 49 ++
.../apache/lucene/spatial/SpatialTestCase.java | 4 +-
.../spatial3d/PointInGeo3DShapeQuery.java | 4 +-
.../apache/lucene/spatial3d/TestGeo3DPoint.java | 14 +
.../index/BaseDocValuesFormatTestCase.java | 64 +-
.../index/BaseIndexFileFormatTestCase.java | 6 +-
.../lucene/index/BasePointsFormatTestCase.java | 4 +-
.../index/BasePostingsFormatTestCase.java | 66 +-
.../index/BaseStoredFieldsFormatTestCase.java | 2 +-
.../index/BaseTermVectorsFormatTestCase.java | 12 +-
.../org/apache/lucene/search/QueryUtils.java | 6 +-
.../lucene/search/spans/MultiSpansWrapper.java | 51 --
.../lucene/store/MockDirectoryWrapper.java | 2 +-
.../org/apache/lucene/util/LuceneTestCase.java | 53 +-
.../java/org/apache/lucene/util/TestUtil.java | 14 +-
.../lucene/analysis/TestMockAnalyzer.java | 2 +-
.../TestCompressingStoredFieldsFormat.java | 5 +-
.../TestCompressingTermVectorsFormat.java | 8 +-
.../lucene/index/TestAssertingLeafReader.java | 5 +-
lucene/tools/javadoc/ecj.javadocs.prefs | 2 +-
lucene/tools/junit4/cached-timehints.txt | 2 +-
solr/CHANGES.txt | 70 +-
solr/common-build.xml | 4 +-
.../extraction/ExtractingRequestHandler.java | 9 +-
.../cloud/OverseerCollectionMessageHandler.java | 1 +
.../org/apache/solr/core/CoreContainer.java | 15 +-
.../src/java/org/apache/solr/core/SolrCore.java | 13 +-
.../org/apache/solr/handler/SQLHandler.java | 9 +-
.../org/apache/solr/handler/SchemaHandler.java | 17 +-
.../apache/solr/handler/SolrConfigHandler.java | 17 +-
.../org/apache/solr/handler/StreamHandler.java | 9 +-
.../solr/handler/UpdateRequestHandler.java | 9 +-
.../solr/handler/admin/ClusterStatus.java | 16 +-
.../solr/handler/admin/CollectionsHandler.java | 82 ++-
.../solr/handler/admin/SecurityConfHandler.java | 16 +-
.../solr/handler/component/SearchHandler.java | 11 +-
.../apache/solr/handler/loader/JsonLoader.java | 6 +-
.../solr/response/GeoJSONResponseWriter.java | 345 ++++++++++
.../solr/response/JSONResponseWriter.java | 2 +-
.../transform/GeoTransformerFactory.java | 224 ++++++
.../response/transform/TransformerFactory.java | 1 +
.../response/transform/WriteableGeoJSON.java | 55 ++
.../solr/schema/AbstractSpatialFieldType.java | 87 ++-
.../org/apache/solr/schema/DateRangeField.java | 4 +-
.../java/org/apache/solr/schema/EnumField.java | 2 +-
.../java/org/apache/solr/schema/TrieField.java | 8 +-
.../apache/solr/search/FunctionRangeQuery.java | 2 +-
.../apache/solr/search/SolrIndexSearcher.java | 4 +-
.../apache/solr/search/facet/FacetField.java | 13 +-
.../search/function/ValueSourceRangeFilter.java | 2 +-
.../solr/security/AuthorizationContext.java | 3 +
.../security/AutorizationEditOperation.java | 176 +++++
.../org/apache/solr/security/Permission.java | 119 ++++
.../solr/security/PermissionNameProvider.java | 72 ++
.../security/RuleBasedAuthorizationPlugin.java | 290 +-------
.../org/apache/solr/servlet/HttpSolrCall.java | 5 +
.../solr/update/DirectUpdateHandler2.java | 4 +-
.../org/apache/solr/update/SolrCoreState.java | 8 +-
.../org/apache/solr/update/TransactionLog.java | 4 +-
.../org/apache/solr/update/VersionInfo.java | 8 +-
.../ClassificationUpdateProcessor.java | 102 +++
.../ClassificationUpdateProcessorFactory.java | 223 ++++++
.../org/apache/solr/util/CommandOperation.java | 27 +
.../src/resources/WellKnownPermissions.json | 51 --
.../collection1/conf/schema-classification.xml | 43 ++
.../conf/schema-non-stored-docvalues.xml | 131 ++--
.../solr/collection1/conf/schema-spatial.xml | 1 +
.../conf/solrconfig-classification.xml | 53 ++
.../solr/cloud/CollectionsAPISolrJTest.java | 2 +-
.../org/apache/solr/cloud/DeleteStatusTest.java | 172 +++--
.../apache/solr/cloud/SolrCloudExampleTest.java | 1 -
.../apache/solr/cloud/TestCollectionAPI.java | 19 +
.../org/apache/solr/handler/JsonLoaderTest.java | 20 +
.../handler/admin/SecurityConfHandlerTest.java | 30 +-
.../response/TestGeoJSONResponseWriter.java | 279 ++++++++
.../solr/schema/SpatialRPTFieldTypeTest.java | 38 +-
.../solr/schema/TestUseDocValuesAsStored.java | 217 +++++-
.../org/apache/solr/search/TestRangeQuery.java | 5 +-
.../solr/search/facet/TestJsonFacets.java | 50 +-
.../solr/security/BasicAuthIntegrationTest.java | 3 +-
.../solr/security/MockAuthorizationPlugin.java | 10 +-
.../TestRuleBasedAuthorizationPlugin.java | 99 ++-
.../test/org/apache/solr/update/TestUpdate.java | 21 +
...lassificationUpdateProcessorFactoryTest.java | 234 +++++++
.../jetty-continuation-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-continuation-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-deploy-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-deploy-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-http-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-http-9.3.8.v20160314.jar.sha1 | 1 +
solr/licenses/jetty-io-9.3.6.v20151106.jar.sha1 | 1 -
solr/licenses/jetty-io-9.3.8.v20160314.jar.sha1 | 1 +
.../licenses/jetty-jmx-9.3.6.v20151106.jar.sha1 | 1 -
.../licenses/jetty-jmx-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-rewrite-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-rewrite-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-security-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-security-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-server-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-server-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-servlet-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-servlet-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-servlets-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-servlets-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-util-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-util-9.3.8.v20160314.jar.sha1 | 1 +
.../jetty-webapp-9.3.6.v20151106.jar.sha1 | 1 -
.../jetty-webapp-9.3.8.v20160314.jar.sha1 | 1 +
.../licenses/jetty-xml-9.3.6.v20151106.jar.sha1 | 1 -
.../licenses/jetty-xml-9.3.8.v20160314.jar.sha1 | 1 +
solr/licenses/start.jar.sha1 | 2 +-
.../basic_configs/conf/managed-schema | 32 +-
.../conf/managed-schema | 53 +-
.../conf/managed-schema | 43 +-
.../client/solrj/io/stream/DaemonStream.java | 6 +-
.../solrj/request/CollectionAdminRequest.java | 568 +++++++++++++--
.../client/solrj/request/CoreAdminRequest.java | 23 +-
.../solrj/util/SolrIdentifierValidator.java | 28 +-
.../apache/solr/common/cloud/ClusterState.java | 4 +-
.../org/apache/solr/common/cloud/DocRouter.java | 27 +-
.../common/params/CollectionAdminParams.java | 2 +
.../apache/solr/common/util/JavaBinCodec.java | 4 +-
.../solrj/io/stream/StreamExpressionTest.java | 8 +-
.../request/TestCollectionAdminRequest.java | 9 +-
.../client/solrj/request/TestCoreAdmin.java | 13 +-
.../java/org/apache/solr/cloud/ChaosMonkey.java | 100 +--
solr/webapp/web/css/angular/common.css | 13 +-
solr/webapp/web/css/styles/common.css | 16 +-
solr/webapp/web/index.html | 6 +-
solr/webapp/web/old.html | 5 +-
solr/webapp/web/partials/query.html | 12 +-
321 files changed, 11983 insertions(+), 3947 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 805662c,da24c25..6b393a3
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@@ -45,18 -42,15 +44,20 @@@ import org.apache.solr.schema.IndexSche
import org.apache.solr.schema.ManagedIndexSchema;
import org.apache.solr.schema.SchemaManager;
import org.apache.solr.schema.ZkIndexSchemaReader;
+import org.apache.solr.api.Api;
+import org.apache.solr.api.ApiBag;
+import org.apache.solr.api.ApiSupport;
+ import org.apache.solr.security.AuthorizationContext;
+ import org.apache.solr.security.PermissionNameProvider;
import org.apache.solr.util.plugin.SolrCoreAware;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.solr.common.params.CommonParams.JSON;
+import static org.apache.solr.core.ConfigSetProperties.IMMUTABLE_CONFIGSET_ARG;
+import static org.apache.solr.api.ApiBag.wrapRequestHandler;
- public class SchemaHandler extends RequestHandlerBase implements ApiSupport , SolrCoreAware {
+ public class SchemaHandler extends RequestHandlerBase implements SolrCoreAware, PermissionNameProvider {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private boolean isImmutableConfigSet = false;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index e7bbc95,eac9b11..42239dd
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@@ -90,9 -89,8 +93,9 @@@ import static org.apache.solr.core.Solr
import static org.apache.solr.core.SolrConfig.PluginOpts.REQUIRE_NAME;
import static org.apache.solr.core.SolrConfig.PluginOpts.REQUIRE_NAME_IN_OVERLAY;
import static org.apache.solr.schema.FieldType.CLASS_NAME;
+import static org.apache.solr.api.ApiBag.wrapRequestHandler;
- public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAware {
+ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAware, PermissionNameProvider {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static final String CONFIGSET_EDITING_DISABLED_ARG = "disable.configEdit";
public static final boolean configEditing_disabled = Boolean.getBoolean(CONFIGSET_EDITING_DISABLED_ARG);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index c8d2c27,f0a332e..2d69a2f
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@@ -16,46 -16,8 +16,45 @@@
*/
package org.apache.solr.handler.admin;
+import static org.apache.solr.client.solrj.response.RequestStatusState.*;
+import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.COLL_CONF;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.COLL_PROP_PREFIX;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET_SHUFFLE;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.NUM_SLICES;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.ONLY_ACTIVE_NODES;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.ONLY_IF_DOWN;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.REQUESTID;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.SHARDS_PROP;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.SHARD_UNIQUE;
+import static org.apache.solr.common.SolrException.ErrorCode.BAD_REQUEST;
+import static org.apache.solr.common.cloud.DocCollection.DOC_ROUTER;
+import static org.apache.solr.common.cloud.DocCollection.RULE;
+import static org.apache.solr.common.cloud.DocCollection.SNITCH;
+import static org.apache.solr.common.cloud.DocCollection.STATE_FORMAT;
+import static org.apache.solr.common.cloud.ZkStateReader.AUTO_ADD_REPLICAS;
+import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
+import static org.apache.solr.common.cloud.ZkStateReader.PROPERTY_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.PROPERTY_VALUE_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
+import static org.apache.solr.common.cloud.ZkStateReader.REPLICA_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.SHARD_ID_PROP;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.*;
+import static org.apache.solr.common.params.CommonAdminParams.ASYNC;
+import static org.apache.solr.common.params.CommonParams.NAME;
+import static org.apache.solr.common.params.CommonParams.VALUE_LONG;
+import static org.apache.solr.common.params.CoreAdminParams.DATA_DIR;
+import static org.apache.solr.common.params.CoreAdminParams.DELETE_DATA_DIR;
+import static org.apache.solr.common.params.CoreAdminParams.DELETE_INDEX;
+import static org.apache.solr.common.params.CoreAdminParams.DELETE_INSTANCE_DIR;
+import static org.apache.solr.common.params.CoreAdminParams.INSTANCE_DIR;
+import static org.apache.solr.common.params.ShardParams._ROUTE_;
+import static org.apache.solr.common.util.StrUtils.formatString;
+
import java.io.IOException;
import java.lang.invoke.MethodHandles;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@@ -67,9 -29,10 +66,11 @@@ import java.util.Map
import java.util.Set;
import java.util.concurrent.TimeUnit;
+ import com.google.common.collect.ImmutableList;
+ import com.google.common.collect.ImmutableSet;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.solr.api.Api;
import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
@@@ -145,9 -145,18 +185,19 @@@ public class CollectionsHandler extend
*/
public CollectionsHandler(final CoreContainer coreContainer) {
this.coreContainer = coreContainer;
+ v2Handler = new CollectionHandlerApi(this);
}
+ @Override
+ public PermissionNameProvider.Name getPermissionName(AuthorizationContext ctx) {
+ String action = ctx.getParams().get("action");
+ if (action == null) return null;
+ CollectionParams.CollectionAction collectionAction = CollectionParams.CollectionAction.get(action);
+ if (collectionAction == null) return null;
+ return collectionAction.isWrite ?
+ PermissionNameProvider.Name.COLL_EDIT_PERM :
+ PermissionNameProvider.Name.COLL_READ_PERM;
+ }
@Override
final public void init(NamedList args) {
@@@ -197,34 -225,9 +247,35 @@@
rsp.setHttpCaching(false);
}
+ void invokeAction(SolrQueryRequest req, SolrQueryResponse rsp, CoreContainer cores, CollectionAction action, CollectionOperation operation) throws Exception {
+ if (!coreContainer.isZooKeeperAware()) {
+ throw new SolrException(BAD_REQUEST,
+ "Invalid request. collections can be accessed only in SolrCloud mode");
+ }
+ SolrResponse response = null;
+ Map<String, Object> props = operation.call(req, rsp, this);
+ String asyncId = req.getParams().get(ASYNC);
+ if (props != null) {
+ if (asyncId != null) {
+ props.put(ASYNC, asyncId);
+ }
+ props.put(QUEUE_OPERATION, operation.action.toLower());
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ if (operation.sendToOCPQueue) {
+ response = handleResponse(operation.action.toLower(), zkProps, rsp, operation.timeOut);
+ }
+ else Overseer.getStateUpdateQueue(coreContainer.getZkController().getZkClient()).offer(Utils.toJSON(props));
+ final String collectionName = zkProps.getStr(NAME);
+ if (action.equals(CollectionAction.CREATE) && asyncId == null) {
+ if (rsp.getException() == null) {
+ waitForActiveCollection(collectionName, zkProps, cores, response);
+ }
+ }
+ }
+ }
+
static final Set<String> KNOWN_ROLES = ImmutableSet.of("overseer");
public static long DEFAULT_COLLECTION_OP_TIMEOUT = 180*1000;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
index 94bbb3e,0f4dd7b..eb63410
--- a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
@@@ -36,17 -33,13 +36,19 @@@ import org.apache.solr.handler.RequestH
import org.apache.solr.handler.SolrConfigHandler;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
+ import org.apache.solr.security.AuthorizationContext;
+import org.apache.solr.security.AuthenticationPlugin;
+import org.apache.solr.security.AuthorizationPlugin;
import org.apache.solr.security.ConfigEditablePlugin;
+ import org.apache.solr.security.PermissionNameProvider;
import org.apache.solr.util.CommandOperation;
+import org.apache.solr.api.Api;
+import org.apache.solr.api.ApiBag;
+import org.apache.solr.api.ApiSupport;
+import org.apache.solr.api.SpecProvider;
import org.apache.zookeeper.KeeperException;
- public class SecurityConfHandler extends RequestHandlerBase {
+ public class SecurityConfHandler extends RequestHandlerBase implements PermissionNameProvider {
private CoreContainer cores;
public SecurityConfHandler(CoreContainer coreContainer) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
index 03805db,3145113..330a3b9
--- a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
@@@ -29,28 -26,20 +26,27 @@@ import java.util.List
import java.util.Map;
import java.util.Objects;
import java.util.Set;
- import java.util.function.Predicate;
+import com.google.common.collect.ImmutableSet;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.CollectionParams;
+import org.apache.solr.common.util.Map2;
+import org.apache.solr.common.util.Utils;
import org.apache.solr.util.CommandOperation;
+import org.apache.solr.api.ApiBag;
+import org.apache.solr.api.SpecProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
- import static java.util.Collections.singleton;
- import static org.apache.solr.common.util.Utils.fromJSONResource;
+ import static java.util.Arrays.asList;
+ import static java.util.Collections.unmodifiableMap;
+ import static java.util.function.Function.identity;
+ import static java.util.stream.Collectors.toMap;
import static org.apache.solr.handler.admin.SecurityConfHandler.getListValue;
import static org.apache.solr.handler.admin.SecurityConfHandler.getMapValue;
- import static org.apache.solr.common.params.CommonParams.NAME;
- import static org.apache.solr.common.util.Utils.getDeepCopy;
-public class RuleBasedAuthorizationPlugin implements AuthorizationPlugin, ConfigEditablePlugin {
+public class RuleBasedAuthorizationPlugin implements AuthorizationPlugin, ConfigEditablePlugin, SpecProvider {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final Map<String, Set<String>> usersVsRoles = new HashMap<>();
@@@ -320,158 -233,6 +240,12 @@@
return latestConf;
}
- enum OPERATION {
- SET_USER_ROLE("set-user-role") {
- @Override
- public Map<String, Object> edit(Map<String, Object> latestConf, CommandOperation op) {
- Map<String, Object> roleMap = getMapValue(latestConf, "user-role");
- Map<String, Object> map = op.getDataMap();
- if (op.hasError()) return null;
- for (Map.Entry<String, Object> e : map.entrySet()) {
- if (e.getValue() == null) {
- roleMap.remove(e.getKey());
- continue;
- }
- if (e.getValue() instanceof String || e.getValue() instanceof List) {
- roleMap.put(e.getKey(), e.getValue());
- } else {
- op.addError("Unexpected value ");
- return null;
- }
- }
- return latestConf;
- }
- },
- SET_PERMISSION("set-permission") {
- @Override
- public Map<String, Object> edit(Map<String, Object> latestConf, CommandOperation op) {
- String name = op.getStr(NAME);
- Map<String, Object> dataMap = op.getDataMap();
- if (op.hasError()) return null;
- dataMap = getDeepCopy(dataMap, 3);
- String before = (String) dataMap.remove("before");
- for (String key : dataMap.keySet()) {
- if (!Permission.knownKeys.contains(key)) op.addError("Unknown key, " + key);
- }
- try {
- Permission.load(dataMap);
- } catch (Exception e) {
- op.addError(e.getMessage());
- return null;
- }
- List<Map> permissions = getListValue(latestConf, "permissions");
- List<Map> permissionsCopy = new ArrayList<>();
- boolean added = false;
- for (Map e : permissions) {
- Object n = e.get(NAME);
- if (n.equals(before) || n.equals(name)) {
- added = true;
- permissionsCopy.add(dataMap);
- }
- if (!n.equals(name)) permissionsCopy.add(e);
- }
- if (!added && before != null) {
- op.addError("Invalid 'before' :" + before);
- return null;
- }
- if (!added) permissionsCopy.add(dataMap);
- latestConf.put("permissions", permissionsCopy);
- return latestConf;
- }
- },
- UPDATE_PERMISSION("update-permission") {
- @Override
- public Map<String, Object> edit(Map<String, Object> latestConf, CommandOperation op) {
- String name = op.getStr(NAME);
- if (op.hasError()) return null;
- for (Map permission : (List<Map>) getListValue(latestConf, "permissions")) {
- if (name.equals(permission.get(NAME))) {
- LinkedHashMap copy = new LinkedHashMap<>(permission);
- copy.putAll(op.getDataMap());
- op.setCommandData(copy);
- return SET_PERMISSION.edit(latestConf, op);
- }
- }
- op.addError("No such permission " + name);
- return null;
- }
- },
- DELETE_PERMISSION("delete-permission") {
- @Override
- public Map<String, Object> edit(Map<String, Object> latestConf, CommandOperation op) {
- List<String> names = op.getStrs("");
- if (names == null || names.isEmpty()) {
- op.addError("Invalid command");
- return null;
- }
- names = new ArrayList<>(names);
- List<Map> copy = new ArrayList<>();
- List<Map> p = getListValue(latestConf, "permissions");
- for (Map map : p) {
- Object n = map.get(NAME);
- if (names.contains(n)) {
- names.remove(n);
- continue;
- } else {
- copy.add(map);
- }
- }
- if (!names.isEmpty()) {
- op.addError("Unknown permission name(s) " + names);
- return null;
- }
- latestConf.put("permissions", copy);
- return latestConf;
- }
- };
-
- public abstract Map<String, Object> edit(Map<String, Object> latestConf, CommandOperation op);
-
- public final String name;
-
- OPERATION(String s) {
- this.name = s;
- }
-
- public static OPERATION get(String name) {
- for (OPERATION o : values()) if (o.name.equals(name)) return o;
- return null;
- }
- }
-
- public static final Set<String> HTTP_METHODS = ImmutableSet.of("GET", "POST", "DELETE", "PUT", "HEAD");
-
- private static final Map<String, Map<String,Object>> well_known_permissions =
- (Map<String, Map<String, Object>>) fromJSONResource("WellKnownPermissions.json");
-
- static {
- ((Map) well_known_permissions.get("collection-admin-edit")).put(Predicate.class.getName(), getCollectionActionPredicate(true));
- ((Map) well_known_permissions.get("collection-admin-read")).put(Predicate.class.getName(), getCollectionActionPredicate(false));
- }
-
- private static Predicate<AuthorizationContext> getCollectionActionPredicate(final boolean isEdit) {
- return new Predicate<AuthorizationContext>() {
- @Override
- public boolean test(AuthorizationContext context) {
- String action = context.getParams().get("action");
- if (action == null) return false;
- CollectionParams.CollectionAction collectionAction = CollectionParams.CollectionAction.get(action);
- if (collectionAction == null) return false;
- return isEdit ? collectionAction.isWrite : !collectionAction.isWrite;
- }
- };
- }
-
-
- public static void main(String[] args) {
- System.out.println(Utils.toJSONString(well_known_permissions));
-
- }
+ private static final Map<String, AutorizationEditOperation> ops = unmodifiableMap(asList(AutorizationEditOperation.values()).stream().collect(toMap(AutorizationEditOperation::getOperationName, identity())));
+
+ @Override
+ public Map2 getSpec() {
+ return ApiBag.getSpec("cluster.security.RuleBasedAuthorization").getSpec();
+
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/java/org/apache/solr/util/CommandOperation.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4541cc56/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java
----------------------------------------------------------------------