1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 02:06:01 +02:00

bugs 66981, 66799 - don't do indexer requests if the indexer is turned off

for that project.  Also, when turning off the indexer, discard the queued up
jobs for that project.
This commit is contained in:
Andrew Niefer 2004-06-14 21:29:33 +00:00
parent d0de77fc60
commit 7f8eb9fbd2
6 changed files with 46 additions and 25 deletions

View file

@ -1,3 +1,7 @@
2004-06-14 Andrew Niefer
- Bugs 66799, 66981 : don't process indexer jobs if the indexer for that project is disabled.
- also fix warnings about deprecated calls and unnecessary else statements
2004-06-13 Bogdan Gheorghe 2004-06-13 Bogdan Gheorghe
Fix for Bug 63275 - Ensured that only declarations and references are found for enumerations/enumerators Fix for Bug 63275 - Ensured that only declarations and references are found for enumerations/enumerators

View file

@ -175,9 +175,10 @@ public class IndexManager extends JobManager implements IIndexConstants {
} }
public void updateDependencies(IResource resource){ public void updateDependencies(IResource resource){
if (CCorePlugin.getDefault() == null) return; if (CCorePlugin.getDefault() == null || !isIndexEnabled( resource.getProject() ) )
UpdateDependency job = new UpdateDependency(resource); return;
UpdateDependency job = new UpdateDependency(resource);
request(job); request(job);
} }
@ -233,9 +234,8 @@ public class IndexManager extends JobManager implements IIndexConstants {
JobManager.verbose("-> cannot reuse existing index: "+indexName+" path: "+path.toOSString()); //$NON-NLS-1$ //$NON-NLS-2$ JobManager.verbose("-> cannot reuse existing index: "+indexName+" path: "+path.toOSString()); //$NON-NLS-1$ //$NON-NLS-2$
rebuildIndex(indexName, path); rebuildIndex(indexName, path);
return null; return null;
} else {
index = null; // will fall thru to createIfMissing & create a empty index for the rebuild all job to populate
} }
index = null; // will fall thru to createIfMissing & create a empty index for the rebuild all job to populate
} }
} }
if (currentIndexState == SAVED_STATE) { // rebuild index if existing file is missing if (currentIndexState == SAVED_STATE) { // rebuild index if existing file is missing
@ -388,7 +388,8 @@ public class IndexManager extends JobManager implements IIndexConstants {
* Index the content of the given source folder. * Index the content of the given source folder.
*/ */
public void indexSourceFolder(IProject project, IPath sourceFolder, final char[][] exclusionPattern) { public void indexSourceFolder(IProject project, IPath sourceFolder, final char[][] exclusionPattern) {
if( !isIndexEnabled( project ) )
return;
if (this.jobEnd > this.jobStart) { if (this.jobEnd > this.jobStart) {
// check if a job to index the project is not already in the queue // check if a job to index the project is not already in the queue
IndexRequest request = new IndexAllProject(project, this); IndexRequest request = new IndexAllProject(project, this);
@ -445,6 +446,7 @@ public class IndexManager extends JobManager implements IIndexConstants {
IndexRequest request = null; IndexRequest request = null;
if (target instanceof IProject) { if (target instanceof IProject) {
IProject p = (IProject) target; IProject p = (IProject) target;
if( p.exists() && isIndexEnabled( p ) )
request = new IndexAllProject(p, this); request = new IndexAllProject(p, this);
} }
@ -484,6 +486,8 @@ public class IndexManager extends JobManager implements IIndexConstants {
* Note: the actual operation is performed in background * Note: the actual operation is performed in background
*/ */
public void remove(String resourceName, IPath indexedContainer){ public void remove(String resourceName, IPath indexedContainer){
IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexedContainer.toString());
if( isIndexEnabled( project ) )
request(new RemoveFromIndex(resourceName, indexedContainer, this)); request(new RemoveFromIndex(resourceName, indexedContainer, this));
} }
/** /**
@ -525,8 +529,11 @@ public class IndexManager extends JobManager implements IIndexConstants {
/** /**
* Remove the content of the given source folder from the index. * Remove the content of the given source folder from the index.
*/ */
public void removeSourceFolderFromIndex(CProject javaProject, IPath sourceFolder, char[][] exclusionPatterns) { public void removeSourceFolderFromIndex(CProject cProject, IPath sourceFolder, char[][] exclusionPatterns) {
IProject project = javaProject.getProject(); IProject project = cProject.getProject();
if( !isIndexEnabled( project ) )
return;
if (this.jobEnd > this.jobStart) { if (this.jobEnd > this.jobStart) {
// check if a job to index the project is not already in the queue // check if a job to index the project is not already in the queue
@ -745,7 +752,7 @@ public class IndexManager extends JobManager implements IIndexConstants {
} }
private Boolean loadIndexerEnabledFromCDescriptor(IProject project) throws CoreException { private Boolean loadIndexerEnabledFromCDescriptor(IProject project) throws CoreException {
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project); ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true );
Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild(); Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild();
Boolean strBool = null; Boolean strBool = null;
@ -761,7 +768,7 @@ public class IndexManager extends JobManager implements IIndexConstants {
return strBool; return strBool;
} }
private Boolean loadIndexerProblemsEnabledFromCDescriptor(IProject project) throws CoreException { private Boolean loadIndexerProblemsEnabledFromCDescriptor(IProject project) throws CoreException {
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project); ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true);
Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild(); Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild();
Boolean strBool = null; Boolean strBool = null;
@ -790,7 +797,7 @@ public class IndexManager extends JobManager implements IIndexConstants {
return Status.OK_STATUS; return Status.OK_STATUS;
} }
}; }
public void removeAllIndexerProblems( IProject project){ public void removeAllIndexerProblems( IProject project){
String jobName = "remove markers"; //$NON-NLS-1$ String jobName = "remove markers"; //$NON-NLS-1$

View file

@ -13,9 +13,11 @@ package org.eclipse.cdt.internal.core.search.indexing;
import java.io.IOException; import java.io.IOException;
import org.eclipse.cdt.internal.core.search.processing.IJob; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.cdt.internal.core.index.IIndex; import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.search.processing.IJob;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
public abstract class IndexRequest implements IJob { public abstract class IndexRequest implements IJob {
protected boolean isCancelled = false; protected boolean isCancelled = false;
@ -37,6 +39,10 @@ public abstract class IndexRequest implements IJob {
} }
public boolean isReadyToRun() { public boolean isReadyToRun() {
IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexPath.segment(0));
if ( !this.manager.isIndexEnabled( project ) )
return false;
// tag the index as inconsistent // tag the index as inconsistent
this.manager.aboutToUpdateIndex(indexPath, updatedIndexState()); this.manager.aboutToUpdateIndex(indexPath, updatedIndexState());
return true; return true;

View file

@ -112,7 +112,7 @@ public abstract class JobManager implements Runnable {
if (VERBOSE) if (VERBOSE)
JobManager.verbose("DISCARD background job family - " + jobFamily); //$NON-NLS-1$ JobManager.verbose("DISCARD background job family - " + jobFamily); //$NON-NLS-1$
boolean wasEnabled = ( enabledState() == ENABLED ); int oldEnabledState = enabledState();
try { try {
IJob currentJob; IJob currentJob;
// cancel current job if it belongs to the given family // cancel current job if it belongs to the given family
@ -161,8 +161,10 @@ public abstract class JobManager implements Runnable {
jobEnd = loc; jobEnd = loc;
} }
} finally { } finally {
if ( wasEnabled ) if ( oldEnabledState == ENABLED )
enable(); enable();
else if( oldEnabledState == WAITING )
pause();
} }
if (VERBOSE) if (VERBOSE)
JobManager.verbose("DISCARD DONE with background job family - " + jobFamily); //$NON-NLS-1$ JobManager.verbose("DISCARD DONE with background job family - " + jobFamily); //$NON-NLS-1$
@ -452,9 +454,9 @@ public abstract class JobManager implements Runnable {
notifyIdle(System.currentTimeMillis() - idlingStart); notifyIdle(System.currentTimeMillis() - idlingStart);
Thread.sleep(500); Thread.sleep(500);
continue; continue;
} else {
idlingStart = -1;
} }
idlingStart = -1;
if (VERBOSE) { if (VERBOSE) {
JobManager.verbose(awaitingJobsCount() + " awaiting jobs"); //$NON-NLS-1$ JobManager.verbose(awaitingJobsCount() + " awaiting jobs"); //$NON-NLS-1$
JobManager.verbose("STARTING background job - " + job); //$NON-NLS-1$ JobManager.verbose("STARTING background job - " + job); //$NON-NLS-1$

View file

@ -102,7 +102,7 @@ public class IndexerOptionDialogPage extends DialogPage {
try { try {
newProject = project; newProject = project;
descriptor = CCorePlugin.getDefault().getCProjectDescription(newProject); descriptor = CCorePlugin.getDefault().getCProjectDescription(newProject, true);
rootElement = descriptor.getProjectData(IndexManager.CDT_INDEXER); rootElement = descriptor.getProjectData(IndexManager.CDT_INDEXER);

View file

@ -89,6 +89,8 @@ public class IndexerOptionPropertyPage extends PropertyPage {
//if indexer is now on send a index all request //if indexer is now on send a index all request
if( (indexChanged && newIndexerValue) || (problemsChanged && newIndexerProblemsValue && newIndexerValue) ) if( (indexChanged && newIndexerValue) || (problemsChanged && newIndexerProblemsValue && newIndexerValue) )
CCorePlugin.getDefault().getCoreModel().getIndexManager().indexAll(tempProject); CCorePlugin.getDefault().getCoreModel().getIndexManager().indexAll(tempProject);
else if( indexChanged && !newIndexerValue )
CCorePlugin.getDefault().getCoreModel().getIndexManager().discardJobs( tempProject.getName() );
else if( problemsChanged && !newIndexerProblemsValue ){ else if( problemsChanged && !newIndexerProblemsValue ){
CCorePlugin.getDefault().getCoreModel().getIndexManager().removeAllIndexerProblems(tempProject); CCorePlugin.getDefault().getCoreModel().getIndexManager().removeAllIndexerProblems(tempProject);
} }
@ -161,7 +163,7 @@ public class IndexerOptionPropertyPage extends PropertyPage {
* @throws CoreException * @throws CoreException
*/ */
private Boolean loadIndexerEnabledFromCDescriptor(IProject project) throws CoreException { private Boolean loadIndexerEnabledFromCDescriptor(IProject project) throws CoreException {
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project); ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true);
Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild(); Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild();
Boolean strBool = null; Boolean strBool = null;
@ -179,7 +181,7 @@ public class IndexerOptionPropertyPage extends PropertyPage {
private Boolean loadIndexerProblemsEnabledFromCDescriptor( IProject project ) throws CoreException private Boolean loadIndexerProblemsEnabledFromCDescriptor( IProject project ) throws CoreException
{ {
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project); ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true);
Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild(); Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild();
Boolean strBool = null; Boolean strBool = null;