diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/index/IndexAccessors.java b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/index/IndexAccessors.java index 10c58b9363e88..91d0387364bc8 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/index/IndexAccessors.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/index/IndexAccessors.java @@ -97,7 +97,7 @@ public IndexAccessors( IndexProviderMap providers, private IndexProvider provider( IndexProviderMap providers, IndexRule indexRule ) { - return providers.apply( indexRule.getProviderDescriptor() ); + return providers.lookup( indexRule.getProviderDescriptor() ); } public Collection notOnlineRules() diff --git a/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java b/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java index 43f98da62da90..1693c85a03ac8 100644 --- a/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java +++ b/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java @@ -455,7 +455,7 @@ public void shouldNotReportIndexInconsistenciesIfIndexIsFailed() throws Exceptio { IndexRule rule = rules.next(); IndexSamplingConfig samplingConfig = new IndexSamplingConfig( Config.defaults() ); - IndexPopulator populator = storeAccess.indexes().apply( rule.getProviderDescriptor() ) + IndexPopulator populator = storeAccess.indexes().lookup( rule.getProviderDescriptor() ) .getPopulator( rule.getId(), rule.getIndexDescriptor(), samplingConfig ); populator.markAsFailed( "Oh noes! I was a shiny index and then I was failed" ); populator.close( false ); @@ -571,7 +571,7 @@ public void shouldReportNodesThatAreNotIndexed() throws Exception IndexRule indexRule = indexRuleIterator.next(); SchemaIndexDescriptor descriptor = indexRule.getIndexDescriptor(); IndexAccessor accessor = fixture.directStoreAccess().indexes(). - apply( indexRule.getProviderDescriptor() ).getOnlineAccessor( + lookup( indexRule.getProviderDescriptor() ).getOnlineAccessor( indexRule.getId(), descriptor, samplingConfig ); try ( IndexUpdater updater = accessor.newUpdater( IndexUpdateMode.ONLINE ) ) { @@ -606,7 +606,7 @@ public void shouldReportNodesWithDuplicatePropertyValueInUniqueIndex() throws Ex while ( indexRuleIterator.hasNext() ) { IndexRule indexRule = indexRuleIterator.next(); - IndexAccessor accessor = fixture.directStoreAccess().indexes().apply( indexRule.getProviderDescriptor() ) + IndexAccessor accessor = fixture.directStoreAccess().indexes().lookup( indexRule.getProviderDescriptor() ) .getOnlineAccessor( indexRule.getId(), indexRule.getIndexDescriptor(), samplingConfig ); IndexUpdater updater = accessor.newUpdater( IndexUpdateMode.ONLINE ); updater.process( IndexEntryUpdate.add( 42, indexRule.getIndexDescriptor().schema(), values( indexRule ) ) ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProviderMap.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProviderMap.java index 5ca7d54c24dcb..3230fb28d61f6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProviderMap.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProviderMap.java @@ -20,18 +20,44 @@ package org.neo4j.kernel.impl.api.index; import java.util.function.Consumer; -import java.util.function.Function; import org.neo4j.kernel.api.index.IndexProvider; -public interface IndexProviderMap extends Function +/** + * Contains mapping from {@link IndexProvider.Descriptor} or provider name to {@link IndexProvider}. + */ +public interface IndexProviderMap { - @Override - IndexProvider apply( IndexProvider.Descriptor providerDescriptor ) throws IndexProviderNotFoundException; + /** + * Looks up and returns the {@link IndexProvider} for the given {@link IndexProvider.Descriptor}. + * + * @param providerDescriptor the descriptor identifying the {@link IndexProvider}. + * @return the {@link IndexProvider} with the given {@link IndexProvider.Descriptor}. + * @throws IndexProviderNotFoundException if no such {@link IndexProvider} was found. + */ + IndexProvider lookup( IndexProvider.Descriptor providerDescriptor ) throws IndexProviderNotFoundException; - IndexProvider apply( String providerDescriptorName ) throws IndexProviderNotFoundException; + /** + * Looks up and returns the {@link IndexProvider} for the given index provider name. The name is what + * an {@link IndexProvider.Descriptor#name()} call would return. + * + * @param providerDescriptorName the descriptor name identifying the {@link IndexProvider}. + * @return the {@link IndexProvider} with the given name. + * @throws IndexProviderNotFoundException if no such {@link IndexProvider} was found. + */ + IndexProvider lookup( String providerDescriptorName ) throws IndexProviderNotFoundException; + /** + * There's always a default {@link IndexProvider}, this method returns it. + * + * @return the default index provider for this instance. + */ IndexProvider getDefaultProvider(); + /** + * Visits all the {@link IndexProvider} with the visitor. + * + * @param visitor {@link Consumer} visiting all the {@link IndexProvider index providers} in this map. + */ void accept( Consumer visitor ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java index 43fc57236e014..a5d27d9974e26 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java @@ -164,7 +164,7 @@ private String indexUserDescription( final SchemaIndexDescriptor descriptor, private IndexPopulator populatorFromProvider( IndexProvider.Descriptor providerDescriptor, long ruleId, SchemaIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) { - IndexProvider indexProvider = providerMap.apply( providerDescriptor ); + IndexProvider indexProvider = providerMap.lookup( providerDescriptor ); return indexProvider.getPopulator( ruleId, descriptor, samplingConfig ); } @@ -172,13 +172,13 @@ private IndexAccessor onlineAccessorFromProvider( IndexProvider.Descriptor provi long ruleId, SchemaIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) throws IOException { - IndexProvider indexProvider = providerMap.apply( providerDescriptor ); + IndexProvider indexProvider = providerMap.lookup( providerDescriptor ); return indexProvider.getOnlineAccessor( ruleId, descriptor, samplingConfig ); } private IndexMeta indexMetaFromProvider( long ruleId, IndexProvider.Descriptor providerDescriptor, SchemaIndexDescriptor schemaIndexDescriptor ) { - IndexCapability indexCapability = providerMap.apply( providerDescriptor ).getCapability( schemaIndexDescriptor ); + IndexCapability indexCapability = providerMap.lookup( providerDescriptor ).getCapability( schemaIndexDescriptor ); return new IndexMeta( ruleId, schemaIndexDescriptor, providerDescriptor, indexCapability ); } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java index 292414760d71a..0564101ae0a8f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexingService.java @@ -207,7 +207,7 @@ public void init() long indexId = indexRule.getId(); SchemaIndexDescriptor descriptor = indexRule.getIndexDescriptor(); IndexProvider.Descriptor providerDescriptor = indexRule.getProviderDescriptor(); - IndexProvider provider = providerMap.apply( providerDescriptor ); + IndexProvider provider = providerMap.lookup( providerDescriptor ); InternalIndexState initialState = provider.getInitialState( indexId, descriptor ); indexStates.computeIfAbsent( initialState, internalIndexState -> new ArrayList<>() ) .add( new IndexLogRecord( indexId, descriptor ) ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java index 5fb294ce792c1..731f0faf43c4c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java @@ -886,7 +886,7 @@ public IndexReference indexCreate( SchemaDescriptor descriptor, String providerN assertIndexDoesNotExist( SchemaKernelException.OperationContext.INDEX_CREATION, descriptor ); SchemaIndexDescriptor indexDescriptor = SchemaIndexDescriptorFactory.forSchema( descriptor ); - IndexProvider.Descriptor providerDescriptor = providerName != null ? indexProviderMap.apply( providerName ).getProviderDescriptor() : null; + IndexProvider.Descriptor providerDescriptor = providerName != null ? indexProviderMap.lookup( providerName ).getProviderDescriptor() : null; ktx.txState().indexRuleDoAdd( indexDescriptor, providerDescriptor ); return DefaultIndexReference.fromDescriptor( indexDescriptor ); } @@ -939,7 +939,7 @@ public ConstraintDescriptor uniquePropertyConstraintCreate( SchemaDescriptor des assertIndexDoesNotExist( SchemaKernelException.OperationContext.CONSTRAINT_CREATION, descriptor ); // Create constraints - IndexProvider.Descriptor providerDescriptor = providerName != null ? indexProviderMap.apply( providerName ).getProviderDescriptor() : null; + IndexProvider.Descriptor providerDescriptor = providerName != null ? indexProviderMap.lookup( providerName ).getProviderDescriptor() : null; indexBackedConstraintCreate( constraint, providerDescriptor ); return constraint; } @@ -966,7 +966,7 @@ public ConstraintDescriptor nodeKeyConstraintCreate( LabelSchemaDescriptor descr } //create constraint - IndexProvider.Descriptor providerDescriptor = providerName != null ? indexProviderMap.apply( providerName ).getProviderDescriptor() : null; + IndexProvider.Descriptor providerDescriptor = providerName != null ? indexProviderMap.lookup( providerName ).getProviderDescriptor() : null; indexBackedConstraintCreate( constraint, providerDescriptor ); return constraint; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/TransactionToRecordStateVisitor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/TransactionToRecordStateVisitor.java index 8c1558697e5bd..425247f145a0a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/TransactionToRecordStateVisitor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/TransactionToRecordStateVisitor.java @@ -184,7 +184,7 @@ public void visitAddedIndex( SchemaIndexDescriptor index, IndexProvider.Descript // No specific provider descriptor, use the default providerDescriptor = indexProviderMap.getDefaultProvider().getProviderDescriptor(); } - else if ( indexProviderMap.apply( providerDescriptor ) == null ) + else if ( indexProviderMap.lookup( providerDescriptor ) == null ) { // A specific provider descriptor, verify that it exists throw new IllegalArgumentException( "Specified non-existent provider '" + providerDescriptor + "' for created index " + index ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMap.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMap.java index 1833d1b0320f8..1548a746fd02c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMap.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMap.java @@ -73,7 +73,7 @@ public IndexProvider getDefaultProvider() } @Override - public IndexProvider apply( IndexProvider.Descriptor providerDescriptor ) + public IndexProvider lookup( IndexProvider.Descriptor providerDescriptor ) { IndexProvider provider = indexProviders.get( providerDescriptor ); if ( provider != null ) @@ -85,7 +85,7 @@ public IndexProvider apply( IndexProvider.Descriptor providerDescriptor ) } @Override - public IndexProvider apply( String providerDescriptorName ) throws IndexProviderNotFoundException + public IndexProvider lookup( String providerDescriptorName ) throws IndexProviderNotFoundException { IndexProvider provider = indexProvidersByName.get( providerDescriptorName ); if ( provider != null ) diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java b/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java index e38c84d5ae25b..afabb92b7c058 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/batchinsert/internal/BatchInserterImpl.java @@ -498,7 +498,7 @@ private void repopulateAllIndexes() throws IOException, IndexEntryConflictExcept IndexRule rule = rules[i]; SchemaIndexDescriptor index = rule.getIndexDescriptor(); descriptors[i] = index.schema(); - IndexPopulator populator = schemaIndexProviders.apply( rule.getProviderDescriptor() ) + IndexPopulator populator = schemaIndexProviders.lookup( rule.getProviderDescriptor() ) .getPopulator( rule.getId(), index, new IndexSamplingConfig( config ) ); populator.create(); populators.add( new IndexPopulatorWithSchema( populator, index ) ); @@ -585,7 +585,7 @@ private IndexRule[] getIndexesNeedingPopulation() List indexesNeedingPopulation = new ArrayList<>(); for ( IndexRule rule : schemaCache.indexRules() ) { - IndexProvider provider = schemaIndexProviders.apply( rule.getProviderDescriptor() ); + IndexProvider provider = schemaIndexProviders.lookup( rule.getProviderDescriptor() ); if ( provider.getInitialState( rule.getId(), rule.getIndexDescriptor() ) != InternalIndexState.FAILED ) { indexesNeedingPopulation.add( rule ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMapTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMapTest.java index 546907e4ef4b5..39241a3ae0507 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMapTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/DefaultIndexProviderMapTest.java @@ -24,12 +24,11 @@ import org.neo4j.kernel.api.index.IndexProvider; import org.neo4j.kernel.impl.api.index.IndexProviderMap; +import static java.util.Arrays.asList; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static java.util.Arrays.asList; - public class DefaultIndexProviderMapTest { @Test @@ -65,7 +64,7 @@ public void shouldThrowOnLookupOnUnknownProvider() IndexProviderMap map = new DefaultIndexProviderMap( provider ); try { - new DefaultIndexProviderMap( provider ).apply( new IndexProvider.Descriptor( "provider2", "1.2" ) ); + new DefaultIndexProviderMap( provider ).lookup( new IndexProvider.Descriptor( "provider2", "1.2" ) ); fail( "Should have failed" ); } catch ( IllegalArgumentException e )