From a936f8db56194cc04f1c7ba6c2594c3bf15615c6 Mon Sep 17 00:00:00 2001 From: Bogdan Gheorghe Date: Tue, 15 Mar 2005 03:35:34 +0000 Subject: [PATCH] Fix for Bugs # 87978, 87982, 87993 --- .../core/indexer/tests/DependencyTests.java | 2 +- .../indexer/tests/SourceIndexerTests.java | 2 +- .../core/parser/tests/FileBasePluginTest.java | 2 +- .../cdt/core/tests/BaseTestFramework.java | 2 +- .../cdt/core/tests/SearchRegressionTests.java | 2 +- .../cdt/core/search/tests/BaseSearchTest.java | 2 +- .../core/suite/AutomatedIntegrationSuite.java | 11 -- core/org.eclipse.cdt.core/ChangeLog | 5 + core/org.eclipse.cdt.core/index/ChangeLog | 3 + .../core/search/indexing/IndexManager.java | 125 ++++++++++-------- .../internal/core/model/PathEntryManager.java | 6 +- .../contentassist/ContentAssistTests.java | 2 +- 12 files changed, 90 insertions(+), 74 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java index c2bdab843de..fd8933c820c 100644 --- a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java +++ b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java @@ -112,7 +112,7 @@ import org.eclipse.core.runtime.Platform; fail("Unable to create project"); indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager(); - indexManager.reset(); + //indexManager.reset(); TypeCacheManager typeCacheManager = TypeCacheManager.getInstance(); typeCacheManager.setProcessTypeCacheEvents(false); diff --git a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java index d6782854ed9..d9e63926c52 100644 --- a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java +++ b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java @@ -111,7 +111,7 @@ public class SourceIndexerTests extends TestCase implements IIndexChangeListener fail("Unable to create project"); //$NON-NLS-1$ indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager(); - indexManager.reset(); + //indexManager.reset(); //Get the indexer used for the test project sourceIndexer = (SourceIndexer) indexManager.getIndexerForProject(testProject); sourceIndexer.addIndexChangeListener(this); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java index deabeafdd5b..88e64559a38 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java @@ -96,7 +96,7 @@ public class FileBasePluginTest extends TestCase { private void initialize(Class aClassName){ if( CCorePlugin.getDefault() != null && CCorePlugin.getDefault().getCoreModel() != null){ - (CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset(); + //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset(); monitor = new NullProgressMonitor(); workspace = ResourcesPlugin.getWorkspace(); diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java index 42ecd3f0167..66aeff463e2 100644 --- a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java +++ b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java @@ -45,7 +45,7 @@ abstract public class BaseTestFramework extends TestCase { static protected SourceIndexer sourceIndexer; { if( CCorePlugin.getDefault() != null && CCorePlugin.getDefault().getCoreModel() != null){ - (CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset(); + //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset(); monitor = new NullProgressMonitor(); workspace = ResourcesPlugin.getWorkspace(); diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java index c716f95ce9a..e9fd6c27ce5 100644 --- a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java +++ b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java @@ -76,7 +76,7 @@ public class SearchRegressionTests extends BaseTestFramework implements ICSearch typeCacheManager.setProcessTypeCacheEvents(false); IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager(); - indexManager.reset(); + //indexManager.reset(); sourceIndexer = (SourceIndexer) CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(project); sourceIndexer.addIndexChangeListener( this ); diff --git a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java index e2c466bb747..40b63b32cfe 100644 --- a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java +++ b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java @@ -58,7 +58,7 @@ public class BaseSearchTest extends TestCase implements ICSearchConstants { { - (CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset(); + //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset(); monitor = new NullProgressMonitor(); workspace = ResourcesPlugin.getWorkspace(); diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java index 2f77e84b027..13bd7c06494 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java @@ -51,9 +51,6 @@ public class AutomatedIntegrationSuite extends TestSuite { public static Test suite() { final AutomatedIntegrationSuite suite = new AutomatedIntegrationSuite(); - //TODO: BOG take this out once TypeCache issues resolved - disableIndexUpgrades(); - // Add all success tests suite.addTest(CDescriptorTests.suite()); //suite.addTest(GCCErrorParserTests.suite()); @@ -79,13 +76,5 @@ public class AutomatedIntegrationSuite extends TestSuite { return suite; } - - /** - * - */ - private static void disableIndexUpgrades() { - CCorePlugin.getDefault().getCoreModel().getIndexManager().disableUpgrades(); - - } } diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 0bddce3a4a6..ec96f6a7a57 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,8 @@ +2005-03-14 Bogdan Gheorghe + Added a NPE check to path entry manager + + * model/org/eclipse/cdt/internal/core/model/PathEntryManager.java + 2005-03-13 Bogdan Gheorghe Added support for new indexer framework diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 327c31240a7..2138ce41d5a 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,6 @@ +2005-03-14 Bogdan Gheorghe + Added update code for old indexer projects + 2005-03-12 Bogdan Gheorghe Restructured indexer framework to allow for multiple indexers in a workspace. 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 b913d1b1d07..ea8594da8de 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 @@ -64,9 +64,9 @@ public class IndexManager extends JobManager{ //Upgrade index version private boolean upgradeIndexEnabled = false; private int upgradeIndexProblems = 0; - private boolean upgradeProjects = true; - + private ReadWriteMonitor monitor = new ReadWriteMonitor(); + /** * Create an indexer only on request */ @@ -96,36 +96,75 @@ public class IndexManager extends JobManager{ /** * Flush current state */ - public void reset() { + public synchronized void reset() { super.reset(); initializeIndexersMap(); this.indexerMap = new HashMap(5); + try{ + monitor.enterWrite(); + initializeIndexerID(); + } finally { + monitor.exitWrite(); + } } - public synchronized String getIndexerID(IProject project) throws CoreException { - //See if there's already one associated with the resource for this session - String indexerID = (String) project.getSessionProperty(indexerIDKey); - - // Try to load one for the project - if (indexerID == null) { - indexerID = loadIndexerIDFromCDescriptor(project); - } - - // There is nothing persisted for the session, or saved in a file so - // create a build info object - if (indexerID != null) { - project.setSessionProperty(indexerIDKey, indexerID); - } - else{ - //Hmm, no persisted indexer value. Could be an old project - need to run project - //update code here + /** + * + */ + private void initializeIndexerID() { + IProject[] projects = CCorePlugin.getWorkspace().getRoot().getProjects(); + //Make sure that all projects are added to the indexer map and updated + //where neccesary + for (int i=0; i