From 6f5c5603099e5d7a96d9adfe53cff1fdbe8edee3 Mon Sep 17 00:00:00 2001 From: Bogdan Gheorghe Date: Wed, 21 Apr 2004 06:33:32 +0000 Subject: [PATCH] Fix for Bug 54155 - [Scalability] Indexer bypassing filtering when project was closed and had no index Fix for Search UI refresh on Linux --- core/org.eclipse.cdt.core/index/ChangeLog | 3 +++ .../core/search/indexing/IndexManager.java | 17 ++++++++++++++++- .../core/search/processing/JobManager.java | 13 ++++++++++++- core/org.eclipse.cdt.ui/ChangeLog | 5 +++++ .../internal/ui/search/CSearchResultPage.java | 3 ++- 5 files changed, 38 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index a8394acd5aa..7c2609be782 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,6 @@ +2004-04-20 Bogdan Gheorghe + Fix for Bug 54155 + 2004-04-12 Bogdan Gheorghe Added Indexer watchdog diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java index fd0e284bc61..82da101c818 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java @@ -111,6 +111,10 @@ public class IndexManager extends JobManager implements IIndexConstants { public void addSource(IFile resource, IPath indexedContainer){ if (CCorePlugin.getDefault() == null) return; AddCompilationUnitToIndex job = new AddCompilationUnitToIndex(resource, indexedContainer, this); + + if (!jobSet.add(job.resource.getLocation())) + return; + if (this.awaitingJobsCount() < MAX_FILES_IN_MEMORY) { // reduces the chance that the file is open later on, preventing it from being deleted if (!job.initializeContents()) return; @@ -595,5 +599,16 @@ public class IndexManager extends JobManager implements IIndexConstants { public TimeOut getTimeout() { // TODO Auto-generated method stub return this.timeoutThread ; - } + } + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.search.processing.JobManager#jobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IJob) + */ + protected void jobFinishedNotification(IJob job) { + + if (job instanceof AddCompilationUnitToIndex){ + AddCompilationUnitToIndex tempJob = (AddCompilationUnitToIndex) job; + jobSet.remove(tempJob.resource.getLocation()); + } + } + } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java index 11f49cb90a1..f69be87c629 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java @@ -13,8 +13,10 @@ */ package org.eclipse.cdt.internal.core.search.processing; +import java.util.HashSet; import org.eclipse.cdt.core.ICLogConstants; import org.eclipse.cdt.internal.core.Util; +import org.eclipse.cdt.internal.core.search.indexing.IndexRequest; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.SubProgressMonitor; @@ -38,7 +40,8 @@ public abstract class JobManager implements Runnable { public boolean activated = false; private int awaitingClients = 0; - + + protected HashSet jobSet = new HashSet(); public static void verbose(String log) { System.out.println("(" + Thread.currentThread() + ") " + log); //$NON-NLS-1$//$NON-NLS-2$ } @@ -320,6 +323,11 @@ public abstract class JobManager implements Runnable { return; } + IndexRequest tempJob = null; + if (job instanceof IndexRequest) + tempJob = (IndexRequest) job; + + // append the job to the list of ones to process later on int size = awaitingJobs.length; if (++jobEnd == size) { // when growing, relocate jobs starting at position 0 @@ -385,6 +393,7 @@ public abstract class JobManager implements Runnable { //if (status == FAILED) request(job); } finally { executing = false; + jobFinishedNotification(currentJob()); if (VERBOSE) { JobManager.verbose("FINISHED background job - " + job); //$NON-NLS-1$ } @@ -447,5 +456,7 @@ public abstract class JobManager implements Runnable { } return buffer.toString(); } + + protected abstract void jobFinishedNotification(IJob job); } diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 0152b825956..9b2eadbcbde 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,8 @@ +2004-04-20 Bogdan Gheorghe + Added clear() to CSearchResultPage to solve refresh problem on Linux. + + * src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java + 2004-04-20 Alain Magloire In Eclipse-3.0 things changes to set partition scanner diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java index 4db5a050aa4..ce34a5347fb 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java @@ -84,7 +84,8 @@ public class CSearchResultPage extends AbstractTextSearchViewPage { * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#clear() */ protected void clear() { - // TODO Auto-generated method stub + if (_contentProvider!=null) + _contentProvider.clear(); } /* (non-Javadoc) * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#configureTreeViewer(org.eclipse.jface.viewers.TreeViewer)