//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: IndexReference getIndexSearcher(IndexIdentifier identifier) throws org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException internal virtual IndexReference GetIndexSearcher(IndexIdentifier identifier) { AssertNotClosed(); IndexReference searcher = _indexSearchers.get(identifier); if (searcher == null) { return(SyncGetIndexSearcher(identifier)); } lock ( searcher ) { /* * We need to get again a reference to the searcher because it might be so that * it was refreshed while we waited. Once in here though no one will mess with * our searcher */ searcher = _indexSearchers.get(identifier); if (searcher == null || searcher.Closed) { return(SyncGetIndexSearcher(identifier)); } searcher = RefreshSearcherIfNeeded(searcher); searcher.IncRef(); return(searcher); } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: private synchronized IndexReference syncGetIndexSearcher(IndexIdentifier identifier) throws org.neo4j.internal.kernel.api.exceptions.explicitindex.ExplicitIndexNotFoundKernelException private IndexReference SyncGetIndexSearcher(IndexIdentifier identifier) { lock (this) { try { IndexReference indexReference = _indexSearchers.get(identifier); if (indexReference == null) { indexReference = _indexReferenceFactory.createIndexReference(identifier); _indexSearchers.put(identifier, indexReference); ConcurrentDictionary <string, DocValuesType> fieldTypes = new ConcurrentDictionary <string, DocValuesType>(); IndexSearcher searcher = indexReference.Searcher; IList <LeafReaderContext> leaves = searcher.TopReaderContext.leaves(); foreach (LeafReaderContext leafReaderContext in leaves) { foreach (FieldInfo fieldInfo in leafReaderContext.reader().FieldInfos) { fieldTypes[fieldInfo.name] = fieldInfo.DocValuesType; } } _indexTypeMap[identifier] = fieldTypes; } else { if (!_readOnly) { lock ( indexReference ) { indexReference = RefreshSearcherIfNeeded(indexReference); } } } indexReference.IncRef(); return(indexReference); } catch (IOException e) { throw new UncheckedIOException(e); } } }