test_class.declarator: temporaryFolder = new TemporaryFolder(new File("target"))
test_class.modifier: @Rule
      public final
test_class.original_string: @Rule
      public final TemporaryFolder temporaryFolder = new TemporaryFolder(new File("target"));
test_class.type: TemporaryFolder
test_class.var_name: temporaryFolder
test_class.declarator: store = new MemoryNodeStore()
test_class.modifier: private
test_class.original_string: private NodeStore store = new MemoryNodeStore();
test_class.type: NodeStore
test_class.var_name: store
test_class.declarator: provider = new PropertyIndexEditorProvider()
test_class.modifier: private
test_class.original_string: private IndexEditorProvider provider = new PropertyIndexEditorProvider();
test_class.type: IndexEditorProvider
test_class.var_name: provider
test_class.file: oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/importer/IndexImporterTest.java
test_class.identifier: IndexImporterTest
test_case.body: @Test
      public void switchLanes() throws Exception{
          NodeBuilder builder = store.getRoot().builder();
          builder.child("idx-a").setProperty("type", "property");
  
          builder.child("idx-b").setProperty("type", "property");
          builder.child("idx-b").setProperty("async", "async");
  
          store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
  
          createIndexDirs("/idx-a", "/idx-b");
  
          IndexImporter importer = new IndexImporter(store, temporaryFolder.getRoot(), provider, NOOP_LOCK);
          importer.switchLanes();
  
          NodeState idxa = NodeStateUtils.getNode(store.getRoot(), "/idx-a");
          assertEquals(AsyncLaneSwitcher.getTempLaneName(IndexImporter.ASYNC_LANE_SYNC), idxa.getString(ASYNC_PROPERTY_NAME));
  
          NodeState idxb = NodeStateUtils.getNode(store.getRoot(), "/idx-b");
          assertEquals(AsyncLaneSwitcher.getTempLaneName("async"), idxb.getString(ASYNC_PROPERTY_NAME));
      }
test_case.class_method_signature: IndexImporterTest.switchLanes()
test_case.full_signature: @Test public void switchLanes()
test_case.identifier: switchLanes
test_case.invocations: builder getRoot setProperty child setProperty child setProperty child merge createIndexDirs getRoot switchLanes getNode getRoot assertEquals getTempLaneName getString getNode getRoot assertEquals getTempLaneName getString
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void switchLanes()
focal_class.declarator: ASYNC_LANE_SYNC = "sync"
focal_class.modifier: static final
focal_class.original_string: static final String ASYNC_LANE_SYNC = "sync";
focal_class.type: String
focal_class.var_name: ASYNC_LANE_SYNC
focal_class.declarator: log = LoggerFactory.getLogger(getClass())
focal_class.modifier: private final
focal_class.original_string: private final Logger log = LoggerFactory.getLogger(getClass());
focal_class.type: Logger
focal_class.var_name: log
focal_class.declarator: nodeStore
focal_class.modifier: private final
focal_class.original_string: private final NodeStore nodeStore;
focal_class.type: NodeStore
focal_class.var_name: nodeStore
focal_class.declarator: indexDir
focal_class.modifier: private final
focal_class.original_string: private final File indexDir;
focal_class.type: File
focal_class.var_name: indexDir
focal_class.declarator: importers = new HashMap<>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, IndexImporterProvider> importers = new HashMap<>();
focal_class.type: Map<String, IndexImporterProvider>
focal_class.var_name: importers
focal_class.declarator: indexerInfo
focal_class.modifier: private final
focal_class.original_string: private final IndexerInfo indexerInfo;
focal_class.type: IndexerInfo
focal_class.var_name: indexerInfo
focal_class.declarator: indexes
focal_class.modifier: private final
focal_class.original_string: private final Map<String, File> indexes;
focal_class.type: Map<String, File>
focal_class.var_name: indexes
focal_class.declarator: asyncLaneToIndexMapping
focal_class.modifier: private final
focal_class.original_string: private final ListMultimap<String, IndexInfo> asyncLaneToIndexMapping;
focal_class.type: ListMultimap<String, IndexInfo>
focal_class.var_name: asyncLaneToIndexMapping
focal_class.declarator: indexedState
focal_class.modifier: private final
focal_class.original_string: private final NodeState indexedState;
focal_class.type: NodeState
focal_class.var_name: indexedState
focal_class.declarator: indexEditorProvider
focal_class.modifier: private final
focal_class.original_string: private final IndexEditorProvider indexEditorProvider;
focal_class.type: IndexEditorProvider
focal_class.var_name: indexEditorProvider
focal_class.declarator: indexerLock
focal_class.modifier: private final
focal_class.original_string: private final AsyncIndexerLock indexerLock;
focal_class.type: AsyncIndexerLock
focal_class.var_name: indexerLock
focal_class.declarator: indexDefinitionUpdater
focal_class.modifier: private final
focal_class.original_string: private final IndexDefinitionUpdater indexDefinitionUpdater;
focal_class.type: IndexDefinitionUpdater
focal_class.var_name: indexDefinitionUpdater
focal_class.file: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/IndexImporter.java
focal_class.identifier: IndexImporter
focal_class.class_method_signature: IndexImporter.IndexImporter(NodeStore nodeStore, File indexDir, IndexEditorProvider indexEditorProvider,
                           AsyncIndexerLock indexerLock)
focal_class.full_signature: public  IndexImporter(NodeStore nodeStore, File indexDir, IndexEditorProvider indexEditorProvider,
                           AsyncIndexerLock indexerLock)
focal_class.identifier: IndexImporter
focal_class.modifiers: public
focal_class.parameters: (NodeStore nodeStore, File indexDir, IndexEditorProvider indexEditorProvider,
                           AsyncIndexerLock indexerLock)
focal_class.signature:  IndexImporter(NodeStore nodeStore, File indexDir, IndexEditorProvider indexEditorProvider,
                           AsyncIndexerLock indexerLock)
focal_class.class_method_signature: IndexImporter.importIndex()
focal_class.full_signature: public void importIndex()
focal_class.identifier: importIndex
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void importIndex()
focal_class.class_method_signature: IndexImporter.addImporterProvider(IndexImporterProvider importerProvider)
focal_class.full_signature: public void addImporterProvider(IndexImporterProvider importerProvider)
focal_class.identifier: addImporterProvider
focal_class.modifiers: public
focal_class.parameters: (IndexImporterProvider importerProvider)
focal_class.return: void
focal_class.signature: void addImporterProvider(IndexImporterProvider importerProvider)
focal_class.class_method_signature: IndexImporter.switchLanes()
focal_class.full_signature:  void switchLanes()
focal_class.identifier: switchLanes
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void switchLanes()
focal_class.class_method_signature: IndexImporter.importIndexData()
focal_class.full_signature:  void importIndexData()
focal_class.identifier: importIndexData
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void importIndexData()
focal_class.class_method_signature: IndexImporter.bringIndexUpToDate()
focal_class.full_signature: private void bringIndexUpToDate()
focal_class.identifier: bringIndexUpToDate
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void bringIndexUpToDate()
focal_class.class_method_signature: IndexImporter.bringAsyncIndexUpToDate(String laneName, List<IndexInfo> indexInfos)
focal_class.full_signature: private void bringAsyncIndexUpToDate(String laneName, List<IndexInfo> indexInfos)
focal_class.identifier: bringAsyncIndexUpToDate
focal_class.modifiers: private
focal_class.parameters: (String laneName, List<IndexInfo> indexInfos)
focal_class.return: void
focal_class.signature: void bringAsyncIndexUpToDate(String laneName, List<IndexInfo> indexInfos)
focal_class.class_method_signature: IndexImporter.revertLaneChange(NodeBuilder builder, List<IndexInfo> indexInfos)
focal_class.full_signature: private void revertLaneChange(NodeBuilder builder, List<IndexInfo> indexInfos)
focal_class.identifier: revertLaneChange
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder builder, List<IndexInfo> indexInfos)
focal_class.return: void
focal_class.signature: void revertLaneChange(NodeBuilder builder, List<IndexInfo> indexInfos)
focal_class.class_method_signature: IndexImporter.resumeCurrentIndexing(LockToken lockToken)
focal_class.full_signature: private void resumeCurrentIndexing(LockToken lockToken)
focal_class.identifier: resumeCurrentIndexing
focal_class.modifiers: private
focal_class.parameters: (LockToken lockToken)
focal_class.return: void
focal_class.signature: void resumeCurrentIndexing(LockToken lockToken)
focal_class.class_method_signature: IndexImporter.interruptCurrentIndexing(String laneName)
focal_class.full_signature: private LockToken interruptCurrentIndexing(String laneName)
focal_class.identifier: interruptCurrentIndexing
focal_class.modifiers: private
focal_class.parameters: (String laneName)
focal_class.return: LockToken
focal_class.signature: LockToken interruptCurrentIndexing(String laneName)
focal_class.class_method_signature: IndexImporter.getImporter(String type)
focal_class.full_signature: private IndexImporterProvider getImporter(String type)
focal_class.identifier: getImporter
focal_class.modifiers: private
focal_class.parameters: (String type)
focal_class.return: IndexImporterProvider
focal_class.signature: IndexImporterProvider getImporter(String type)
focal_class.class_method_signature: IndexImporter.mapIndexesToLanes(Map<String, File> indexes)
focal_class.full_signature: private ListMultimap<String, IndexInfo> mapIndexesToLanes(Map<String, File> indexes)
focal_class.identifier: mapIndexesToLanes
focal_class.modifiers: private
focal_class.parameters: (Map<String, File> indexes)
focal_class.return: ListMultimap<String, IndexInfo>
focal_class.signature: ListMultimap<String, IndexInfo> mapIndexesToLanes(Map<String, File> indexes)
focal_class.class_method_signature: IndexImporter.copyLaneProps(NodeState existing, NodeBuilder indexBuilder)
focal_class.full_signature: private static void copyLaneProps(NodeState existing, NodeBuilder indexBuilder)
focal_class.identifier: copyLaneProps
focal_class.modifiers: private static
focal_class.parameters: (NodeState existing, NodeBuilder indexBuilder)
focal_class.return: void
focal_class.signature: void copyLaneProps(NodeState existing, NodeBuilder indexBuilder)
focal_class.class_method_signature: IndexImporter.copy(String propName, NodeState existing, NodeBuilder indexBuilder)
focal_class.full_signature: private static void copy(String propName, NodeState existing, NodeBuilder indexBuilder)
focal_class.identifier: copy
focal_class.modifiers: private static
focal_class.parameters: (String propName, NodeState existing, NodeBuilder indexBuilder)
focal_class.return: void
focal_class.signature: void copy(String propName, NodeState existing, NodeBuilder indexBuilder)
focal_class.class_method_signature: IndexImporter.getAsyncLaneName(String indexPath, NodeState indexState)
focal_class.full_signature: static String getAsyncLaneName(String indexPath, NodeState indexState)
focal_class.identifier: getAsyncLaneName
focal_class.modifiers: static
focal_class.parameters: (String indexPath, NodeState indexState)
focal_class.return: String
focal_class.signature: String getAsyncLaneName(String indexPath, NodeState indexState)
focal_class.class_method_signature: IndexImporter.releaseCheckpoint()
focal_class.full_signature: private void releaseCheckpoint()
focal_class.identifier: releaseCheckpoint
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void releaseCheckpoint()
focal_class.class_method_signature: IndexImporter.incrementReIndexCount(NodeBuilder definition)
focal_class.full_signature: private void incrementReIndexCount(NodeBuilder definition)
focal_class.identifier: incrementReIndexCount
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definition)
focal_class.return: void
focal_class.signature: void incrementReIndexCount(NodeBuilder definition)
focal_class.class_method_signature: IndexImporter.getAsync()
focal_class.full_signature: private NodeState getAsync()
focal_class.identifier: getAsync
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: NodeState
focal_class.signature: NodeState getAsync()
focal_method.body: void switchLanes() throws CommitFailedException, IOException {
          NodeState root = nodeStore.getRoot();
          NodeBuilder builder = root.builder();
  
          for (IndexInfo indexInfo : asyncLaneToIndexMapping.values()){
              if (!indexInfo.newIndex) {
                  NodeBuilder idxBuilder = NodeStoreUtils.childBuilder(builder, indexInfo.indexPath);
                  AsyncLaneSwitcher.switchLane(idxBuilder, AsyncLaneSwitcher.getTempLaneName(indexInfo.asyncLaneName));
              }
          }
          mergeWithConcurrentCheck(nodeStore, builder);
      }
focal_method.class_method_signature: IndexImporter.switchLanes()
focal_method.full_signature:  void switchLanes()
focal_method.identifier: switchLanes
focal_method.invocations: getRoot builder values childBuilder switchLane getTempLaneName mergeWithConcurrentCheck
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void switchLanes()