diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java index 4918c6d1873..34a600877e2 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexProviderManagerTest.java @@ -75,7 +75,7 @@ public class IndexProviderManagerTest extends IndexTestBase { final static Class DP4= Providers.Dummy4.class; final static Class DP5= Providers.Dummy5.class; final static Class[] DPS= new Class[] {DP4, DP2, DP1, DP3, DP5}; - + /* * Fictional compatibility ranges for testing */ @@ -83,9 +83,9 @@ public class IndexProviderManagerTest extends IndexTestBase { final static VersionRange VERSION_401= new VersionRange("[36,37]"); final static VersionRange VERSION_405= new VersionRange("[37,39]"); final static VersionRange VERSION_502= new VersionRange("[89,91]"); - + final CCorePlugin core= CCorePlugin.getDefault(); - + public IndexProviderManagerTest() { super("IndexProviderManagerTest"); } @@ -106,11 +106,11 @@ public class IndexProviderManagerTest extends IndexTestBase { IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager(); ipm.reset(); ipm.startup(); } - + public void testProvider_SimpleLifeCycle_200958() throws Exception { for (Class element : DPS) DPT.reset(element); - + List cprojects = new ArrayList(), expectedTrace = new ArrayList(); try { for(int i=0; i<3; i++) { @@ -137,7 +137,7 @@ public class IndexProviderManagerTest extends IndexTestBase { public void testProvider_OverDeleteAndAdd() throws Exception { DPT.reset(DP1); - + List expectedTrace = new ArrayList(); ICProject cproject = null; try { @@ -180,7 +180,7 @@ public class IndexProviderManagerTest extends IndexTestBase { File newLocation = CProjectHelper.freshDir(); IProjectDescription description = cproject.getProject().getDescription(); description.setLocationURI(newLocation.toURI()); - cproject.getProject().move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor()); + cproject.getProject().move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor()); index = CCorePlugin.getIndexManager().getIndex(cproject); assertEquals(expectedTrace, DPT.getProjectsTrace(DP1)); @@ -190,19 +190,19 @@ public class IndexProviderManagerTest extends IndexTestBase { } } } - + public void testVersioning_IncompatibleIgnored() throws Exception { IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager(); - + ICProject cproject = null; try { cproject= CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER); IProject project= cproject.getProject(); - - + + MockState mockState = new MockState(cproject); mockState.setConfig(MockState.REL_V1_ID); - + IIndexProvider provider1= new IIndexFragmentProvider() { IIndexFragment[] fragments= new IIndexFragment[] { new MockPDOM("contentID.contentA", "36"), @@ -211,11 +211,9 @@ public class IndexProviderManagerTest extends IndexTestBase { new MockPDOM("contentID.bar", "91"), new MockPDOM("contentID.baz", "89") }; - @Override public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { return fragments; } - @Override public boolean providesFor(ICProject project) throws CoreException { return true; } @@ -225,22 +223,20 @@ public class IndexProviderManagerTest extends IndexTestBase { new MockPDOM("contentID.baz", "90"), new MockPDOM("contentID.contentA", "38"), }; - @Override public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { return fragments; } - @Override public boolean providesFor(ICProject project) throws CoreException { return true; } }; - + CCorePlugin.getIndexManager().joinIndexer(8000, npm()); // ensure IPM is called only once under test conditions setExpectedNumberOfLoggedNonOKStatusObjects(3); // foo, bar and baz have no compatible fragments available - + ipm.reset(VERSION_405); ipm.startup(); ipm.addIndexProvider(provider1); ipm.addIndexProvider(provider2); - + IIndexFragment[] actual = ipm.getProvidedIndexFragments(mockState.getCurrentConfig(), true); assertEquals(1, actual.length); assertFragmentPresent("contentID.contentA", "38", actual); @@ -250,19 +246,19 @@ public class IndexProviderManagerTest extends IndexTestBase { } } } - + public void testVersioning_NoCompatibleVersionsFound() throws Exception { IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager(); - + ICProject cproject = null; try { cproject= CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER); IProject project= cproject.getProject(); - - + + MockState mockState = new MockState(cproject); mockState.setConfig(MockState.REL_V1_ID); - + IIndexProvider provider1= new IIndexFragmentProvider() { IIndexFragment[] fragments= new IIndexFragment[] { new MockPDOM("contentID.contentA", "36"), @@ -271,11 +267,9 @@ public class IndexProviderManagerTest extends IndexTestBase { new MockPDOM("contentID.bar", "91"), new MockPDOM("contentID.baz", "89") }; - @Override public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { return fragments; } - @Override public boolean providesFor(ICProject project) throws CoreException { return true; } @@ -284,22 +278,20 @@ public class IndexProviderManagerTest extends IndexTestBase { IIndexFragment[] fragments= new IIndexFragment[] { new MockPDOM("contentID.contentA", "41"), }; - @Override public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { return fragments; } - @Override public boolean providesFor(ICProject project) throws CoreException { return true; } }; - + CCorePlugin.getIndexManager().joinIndexer(8000, npm()); // ensure IPM is called only once under test conditions setExpectedNumberOfLoggedNonOKStatusObjects(1); // contentA has no compatible fragments available - + ipm.reset(VERSION_502); ipm.startup(); ipm.addIndexProvider(provider1); ipm.addIndexProvider(provider2); - + IIndexFragment[] actual = ipm.getProvidedIndexFragments(mockState.getCurrentConfig(), true); assertEquals(3, actual.length); assertFragmentPresent("contentID.foo", "90", actual); @@ -311,7 +303,7 @@ public class IndexProviderManagerTest extends IndexTestBase { } } } - + private void assertFragmentPresent(String id, String version, IIndexFragment[] fragments) throws Exception { for (IIndexFragment candidate : fragments) { String cid= null, csver= null; @@ -327,49 +319,49 @@ public class IndexProviderManagerTest extends IndexTestBase { } fail("Fragment matching (id="+id+",version="+version+") was not present"); } - + public void testIndexFactoryConfigurationUsage() throws Exception { IIndex index; - + ICProject cproject = null; // Modifying the .project file triggers an indexer job, suppress that: DeltaAnalyzer.sSuppressPotentialTUs= true; try { cproject = CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER); IProject project= cproject.getProject(); - + ICProjectDescription pd= core.getProjectDescription(project); ICConfigurationDescription cfg1= newCfg(pd, "project", "config1"); ICConfigurationDescription cfg2= newCfg(pd, "project", "config2"); core.setProjectDescription(project, pd); - + index= CCorePlugin.getIndexManager().getIndex(cproject); CCorePlugin.getIndexManager().joinIndexer(8000, npm()); - + DPT.reset(DP1); changeConfigRelations(project, ICProjectDescriptionPreferences.CONFIGS_LINK_SETTINGS_AND_ACTIVE); assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(0, DPT.getCfgsTrace(DP1).size()); - + changeActiveConfiguration(project, cfg1); DPT.reset(DP1); index= CCorePlugin.getIndexManager().getIndex(cproject); assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(1, DPT.getCfgsTrace(DP1).size()); assertEquals("project.config1", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId()); - + changeActiveConfiguration(project, cfg2); DPT.reset(DP1); index= CCorePlugin.getIndexManager().getIndex(cproject); assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(1, DPT.getCfgsTrace(DP1).size()); assertEquals("project.config2", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId()); - + DPT.reset(DP1); changeConfigRelations(project, ICProjectDescriptionPreferences.CONFIGS_INDEPENDENT); assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(0, DPT.getCfgsTrace(DP1).size()); - + changeActiveConfiguration(project, cfg1); DPT.reset(DP1); index= CCorePlugin.getIndexManager().getIndex(cproject); @@ -377,7 +369,7 @@ public class IndexProviderManagerTest extends IndexTestBase { assertEquals(1, DPT.getCfgsTrace(DP1).size()); // should still be config2, as the change in active configuration does not matter assertEquals("project.config2", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId()); - + changeActiveConfiguration(project, cfg2); DPT.reset(DP1); index= CCorePlugin.getIndexManager().getIndex(cproject); @@ -392,7 +384,7 @@ public class IndexProviderManagerTest extends IndexTestBase { } } } - + public void testGetProvidedFragments() throws Exception { ICProject cproject= CProjectHelper.createCProject("IndexProviderManagerTest", "bin", IPDOMManager.ID_NO_INDEXER); @@ -499,20 +491,20 @@ public class IndexProviderManagerTest extends IndexTestBase { } } } - + private ICConfigurationDescription newCfg(ICProjectDescription des, String project, String config) throws CoreException { CDefaultConfigurationData data= new CDefaultConfigurationData(project+"."+config, project+" "+config+" name", null); data.initEmptyData(); - return des.createConfiguration(CCorePlugin.DEFAULT_PROVIDER_ID, data); + return des.createConfiguration(CCorePlugin.DEFAULT_PROVIDER_ID, data); } - + private void changeActiveConfiguration(IProject project, ICConfigurationDescription cfg) throws CoreException { ICProjectDescription pd= core.getProjectDescription(project); pd.setActiveConfiguration(pd.getConfigurationById(cfg.getId())); core.setProjectDescription(project, pd); CCorePlugin.getIndexManager().joinIndexer(8000, npm()); } - + private void changeConfigRelations(IProject project, int option) throws CoreException { ICProjectDescription pd= core.getProjectDescription(project); pd.setConfigurationRelations(option); @@ -528,7 +520,6 @@ class MockStateIndexProvider implements IIndexProvider { this.targetProject = cproject; } - @Override public boolean providesFor(ICProject cproject) throws CoreException { return this.targetProject.equals(cproject); } @@ -537,7 +528,7 @@ class MockStateIndexProvider implements IIndexProvider { class MockStateIndexFragmentProvider extends MockStateIndexProvider implements IIndexFragmentProvider { private boolean invert; final IIndexFragment[] fragments; - + public void invert() { invert = !invert; } @@ -551,7 +542,6 @@ class MockStateIndexFragmentProvider extends MockStateIndexProvider implements I } } - @Override public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) throws CoreException { int index = MockState.states.indexOf(config.getId()); index = invert ? (fragments.length-1)-index : index; @@ -574,201 +564,146 @@ class MockConfig implements ICConfigurationDescription { this.project= project; } - @Override public String getId() { return id; } - @Override public ICConfigExtensionReference create(String extensionPoint, String extension) throws CoreException { return null; } - @Override public ICExternalSetting createExternalSetting(String[] languageIDs, String[] contentTypeIds, String[] extensions, ICSettingEntry[] entries) throws WriteAccessException { return null; } - @Override public ICFileDescription createFileDescription(IPath path, ICResourceDescription base) throws CoreException, WriteAccessException { return null; } - @Override public ICFolderDescription createFolderDescription(IPath path, ICFolderDescription base) throws CoreException, WriteAccessException { return null; } - @Override public ICConfigExtensionReference[] get(String extensionPointID) { return null; } - @Override public ICBuildSetting getBuildSetting() { return null; } - @Override public String getBuildSystemId() { return null; } - @Override public ICdtVariablesContributor getBuildVariablesContributor() { return null; } - @Override public CConfigurationData getConfigurationData() { return null; } - @Override public String getDescription() { return null; } - @Override public ICExternalSetting[] getExternalSettings() { return null; } - @Override public ICFileDescription[] getFileDescriptions() { return null; } - @Override public ICFolderDescription[] getFolderDescriptions() { return null; } - @Override public ICProjectDescription getProjectDescription() { return CoreModel.getDefault().getProjectDescription(project); } - @Override public Map getReferenceInfo() { return null; } - @Override public ICResourceDescription getResourceDescription(IPath path, boolean exactPath) { return null; } - @Override public ICResourceDescription[] getResourceDescriptions() { return null; } - @Override public ICFolderDescription getRootFolderDescription() {return null;} - @Override public Object getSessionProperty(QualifiedName name) {return null;} - @Override public ICSourceEntry[] getSourceEntries() {return null;} - @Override public ICTargetPlatformSetting getTargetPlatformSetting() {return null;} - @Override public boolean isActive() {return false;} - @Override public boolean isModified() {return false;} - @Override public boolean isPreferenceConfiguration() {return false;} - @Override public void remove(ICConfigExtensionReference ext) throws CoreException {} - @Override public void remove(String extensionPoint) throws CoreException {} - @Override public void removeExternalSetting(ICExternalSetting setting) throws WriteAccessException {} - @Override public void removeExternalSettings() throws WriteAccessException {} - @Override public void removeResourceDescription(ICResourceDescription des) throws CoreException, WriteAccessException {} - @Override public void setActive() throws WriteAccessException {} - @Override public void setConfigurationData(String buildSystemId, CConfigurationData data) throws WriteAccessException {} - @Override public void setDescription(String des) throws WriteAccessException {} - @Override public void setName(String name) throws WriteAccessException {} - @Override public void setReferenceInfo(Map refs) throws WriteAccessException {} - @Override public void setSessionProperty(QualifiedName name, Object value) {} - @Override public void setSourceEntries(ICSourceEntry[] entries) throws CoreException, WriteAccessException {} - @Override public ICSettingObject[] getChildSettings() {return null;} - @Override public ICConfigurationDescription getConfiguration() {return null;} - @Override public String getName() {return null;} - @Override public ICSettingContainer getParent() {return null;} - @Override public int getType() {return 0;} - @Override public boolean isReadOnly() {return false;} - @Override public boolean isValid() {return false;} - @Override public ICStorageElement getStorage(String id, boolean create) throws CoreException { return null; } - @Override public ICStorageElement importStorage(String id, ICStorageElement storage) { return null; } - @Override public void removeStorage(String id) throws CoreException { } - @Override public ICLanguageSetting getLanguageSettingForFile(IPath path, boolean ignoreExludeStatus) { return null; } - @Override public String[] getExternalSettingsProviderIds() { return null; } - @Override public void setExternalSettingsProviderIds(String[] ids) {} - @Override public void updateExternalSettingsProviders(String[] ids) {} - @Override public ICSourceEntry[] getResolvedSourceEntries() { return null; } - @Override public CConfigurationStatus getConfigurationStatus() { return CConfigurationStatus.CFG_STATUS_OK; } - @Override public void setReadOnly(boolean readOnly, boolean keepModify) {} - } /* @@ -801,12 +736,12 @@ class MockState { class MockPDOM extends EmptyIndexFragment { String id; String version; - + MockPDOM(String id, String version) { this.id= id; this.version= version; } - + @Override public String getProperty(String propertyName) throws CoreException { if(IIndexFragment.PROPERTY_FRAGMENT_ID.equals(propertyName)) { @@ -820,9 +755,9 @@ class MockPDOM extends EmptyIndexFragment { } return null; } - + @Override public String toString() { return "[Mock index fragment "+id+"."+System.identityHashCode(this)+"]"; } -} +} \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java index bdb1a16b36d..782173d66ef 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java @@ -147,12 +147,12 @@ public class PDOMManager implements IWritableIndexManager, IListener { private final PDOMIndexerJob fIndexerJob; private IPDOMIndexerTask fCurrentTask; private int fSourceCount, fHeaderCount, fTickCount; - + private final LinkedList fChangeEvents= new LinkedList(); private final Job fNotificationJob; - private final AtomicMultiSet fFilesIndexedUnconditionlly= new AtomicMultiSet(); - + private final AtomicMultiSet fFilesIndexedUnconditionlly= new AtomicMultiSet(); + /** * Stores mapping from pdom to project, used to serialize creation of new pdoms. */ @@ -160,7 +160,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { private Map fFileToProject= new HashMap(); private ListenerList fChangeListeners= new ListenerList(); private ListenerList fStateListeners= new ListenerList(); - + private IndexChangeEvent fIndexChangeEvent= new IndexChangeEvent(); private IndexerStateEvent fIndexerStateEvent= new IndexerStateEvent(); @@ -170,17 +170,17 @@ public class PDOMManager implements IWritableIndexManager, IListener { private final ICProjectDescriptionListener fProjectDescriptionListener; private final JobChangeListener fJobChangeListener; private final IPreferenceChangeListener fPreferenceChangeListener; - + private IndexFactory fIndexFactory= new IndexFactory(this); private IndexProviderManager fIndexProviderManager = new IndexProviderManager(); - + /** - * Serializes creation of new indexer, when acquiring the lock you are + * Serializes creation of new indexer, when acquiring the lock you are * not allowed to hold a lock on fPDOMs. */ private Map fUpdatePolicies= new HashMap(); private Set fClosingProjects= new HashSet(); - + private Map fPrefListeners= new HashMap(); private List fSetupParticipants= new ArrayList(); private Set fPostponedProjects= new HashSet(); @@ -188,7 +188,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { private boolean fInShutDown; boolean fTraceIndexerSetup; - + public PDOMManager() { PDOM.sDEBUG_LOCKS= "true".equals(Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/index/locks")); //$NON-NLS-1$//$NON-NLS-2$ addIndexerSetupParticipant(new WaitForRefreshJobs()); @@ -204,7 +204,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { fIndexerJob= new PDOMIndexerJob(this); fNotificationJob= createNotifyJob(); } - + public Job startup() { fInShutDown= false; Job postStartupJob= new Job(CCorePlugin.getResourceString("CCorePlugin.startupJob")) { //$NON-NLS-1$ @@ -219,10 +219,10 @@ public class PDOMManager implements IWritableIndexManager, IListener { } }; postStartupJob.setSystem(true); - return postStartupJob; + return postStartupJob; } - /** + /** * Called from a job after plugin start. */ protected void postStartup() { @@ -234,7 +234,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { adjustCacheSize(); updatePathCanonicalizationStrategy(); fIndexProviderManager.startup(); - + fTraceIndexerSetup= String.valueOf(true).equals(Platform.getDebugOption(TRACE_INDEXER_SETUP)); final CoreModel model = CoreModel.getDefault(); ResourcesPlugin.getWorkspace().addResourceChangeListener(fCModelListener, IResourceChangeEvent.POST_BUILD); @@ -268,7 +268,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { fTaskQueue.clear(); jobToCancel= fIndexerJob; } - + if (jobToCancel != null) { assert !Thread.holdsLock(fTaskQueue); jobToCancel.cancelJobs(null, false); @@ -290,7 +290,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { reindexAll(); } } - + protected void adjustCacheSize() { IPreferencesService prefs = Platform.getPreferencesService(); int cachePct= prefs.getInt(CCorePlugin.PLUGIN_ID, CCorePreferenceConstants.INDEX_DB_CACHE_SIZE_PCT, 10, null); @@ -313,7 +313,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } /** - * Returns the pdom for the project. + * Returns the pdom for the project. * @throws CoreException */ public IPDOM getPDOM(ICProject project) throws CoreException { @@ -327,9 +327,9 @@ public class PDOMManager implements IWritableIndexManager, IListener { return pdom; } } - + /** - * Returns the pdom for the project. The call to the method may cause + * Returns the pdom for the project. The call to the method may cause * opening the database. In case there is a version mismatch the data * base is cleared, in case it does not exist it is created. In any * case a pdom ready to use is returned. @@ -390,7 +390,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } pdom.setASTFilePathResolver(new ProjectIndexerInputAdapter(project, false)); pdom.addListener(this); - + fFileToProject.put(dbFile, project); fProjectToPDOM.put(rproject, pdom); if (pdomProxy instanceof PDOMProxy) { @@ -438,7 +438,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { public void setDefaultIndexerId(String indexerId) { IndexerPreferences.setDefaultIndexerId(indexerId); } - + @Override public String getIndexerId(ICProject project) { IProject prj= project != null ? project.getProject() : null; @@ -451,7 +451,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { IndexerPreferences.set(prj, IndexerPreferences.KEY_INDEXER_ID, indexerId); CCoreInternals.savePreferences(prj, IndexerPreferences.getScope(prj) == IndexerPreferences.SCOPE_PROJECT_SHARED); } - + protected void onPreferenceChange(ICProject cproject, PreferenceChangeEvent event) { if (IndexerPreferences.KEY_UPDATE_POLICY.equals(event.getKey())) { changeUpdatePolicy(cproject); @@ -482,17 +482,17 @@ public class PDOMManager implements IWritableIndexManager, IListener { private void changeIndexer(ICProject cproject) throws CoreException { assert !Thread.holdsLock(fProjectToPDOM); - + // if there is no indexer, don't touch the preferences. IPDOMIndexer oldIndexer= getIndexer(cproject); if (oldIndexer == null) { return; } - + IProject prj= cproject.getProject(); String newid= IndexerPreferences.get(prj, IndexerPreferences.KEY_INDEXER_ID, IPDOMManager.ID_NO_INDEXER); Properties props= IndexerPreferences.getProperties(prj); - + // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=359485 synchronized (new ProjectScope(prj).getNode(CCorePlugin.PLUGIN_ID)) { synchronized (fUpdatePolicies) { @@ -519,7 +519,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { enqueue(new PDOMRebuildTask(indexer)); } }} - + if (oldIndexer != null) { stopIndexer(oldIndexer); } @@ -546,26 +546,26 @@ public class PDOMManager implements IWritableIndexManager, IListener { void createIndexer(ICProject project, IProgressMonitor pm) throws InterruptedException { final IProject prj= project.getProject(); final String name = prj.getName(); - if (fTraceIndexerSetup) + if (fTraceIndexerSetup) System.out.println("Indexer: Creation for project " + name); //$NON-NLS-1$ - + assert !Thread.holdsLock(fProjectToPDOM); try { // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=359485 synchronized (new ProjectScope(prj).getNode(CCorePlugin.PLUGIN_ID)) { synchronized (fUpdatePolicies) { if (fClosingProjects.contains(name)) { - if (fTraceIndexerSetup) + if (fTraceIndexerSetup) System.out.println("Indexer: Aborting setup (1) for closing project " + name + " [1]"); //$NON-NLS-1$ //$NON-NLS-2$ return; } - + WritablePDOM pdom= getOrCreatePDOM(project); Properties props= IndexerPreferences.getProperties(prj); IPDOMIndexer indexer= newIndexer(getIndexerId(project), props); IndexUpdatePolicy policy= createPolicy(project); - boolean rebuild= + boolean rebuild= pdom.isClearedBecauseOfVersionMismatch() || pdom.isCreatedFromScratch() || policy.isInitialRebuildRequested(); @@ -593,7 +593,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { pdom.releaseReadLock(); } if (resume) { - if (fTraceIndexerSetup) + if (fTraceIndexerSetup) System.out.println("Indexer: Resuming for project " + name); //$NON-NLS-1$ enqueue(new PDOMUpdateTask(indexer, @@ -612,7 +612,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { synchronized (new ProjectScope(prj).getNode(CCorePlugin.PLUGIN_ID)) { synchronized (fUpdatePolicies) { if (fClosingProjects.contains(name)) { - if (fTraceIndexerSetup) + if (fTraceIndexerSetup) System.out.println("Indexer: Aborting setup for closing project " + name + " [2]"); //$NON-NLS-1$ //$NON-NLS-2$ return; } @@ -626,13 +626,13 @@ public class PDOMManager implements IWritableIndexManager, IListener { IPDOMIndexerTask task= null; if (operation.wasSuccessful()) { - if (fTraceIndexerSetup) - System.out.println("Indexer: Imported shared index for project " + name); //$NON-NLS-1$ + if (fTraceIndexerSetup) + System.out.println("Indexer: Imported shared index for project " + name); //$NON-NLS-1$ task= new PDOMUpdateTask(indexer, IIndexManager.UPDATE_CHECK_TIMESTAMPS | IIndexManager.UPDATE_CHECK_CONTENTS_HASH); } else { - if (fTraceIndexerSetup) - System.out.println("Indexer: Rebuiding for project " + name); //$NON-NLS-1$ + if (fTraceIndexerSetup) + System.out.println("Indexer: Rebuiding for project " + name); //$NON-NLS-1$ task= new PDOMRebuildTask(indexer); } enqueue(task); @@ -644,7 +644,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } } } - + private IPDOMIndexer newIndexer(String indexerId, Properties props) throws CoreException { IPDOMIndexer indexer = null; // Look up in extension point @@ -659,14 +659,14 @@ public class PDOMManager implements IWritableIndexManager, IListener { indexer.setProperties(props); } catch (CoreException e) { CCorePlugin.log(e); - } + } break; } } } // Unknown index, default to the null one - if (indexer == null) + if (indexer == null) indexer = new PDOMNullIndexer(); return indexer; @@ -700,7 +700,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { fIndexerJob.schedule(); } } - + private void getReferencingProjects(IProject prj, HashSet result) { LinkedList projectsToSearch= new LinkedList(); projectsToSearch.add(prj); @@ -731,7 +731,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } return result; } - + void cancelledIndexerJob(boolean byManager) { synchronized (fTaskQueue) { fCurrentTask= null; @@ -743,7 +743,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } } } - + @Override public boolean isIndexerIdle() { return Job.getJobManager().find(this).length == 0; @@ -753,19 +753,19 @@ public class PDOMManager implements IWritableIndexManager, IListener { final String name = cproject.getProject().getName(); if (fTraceIndexerSetup) { System.out.println("Indexer: Adding new project " + name); //$NON-NLS-1$ - } - + } + synchronized (fUpdatePolicies) { fClosingProjects.remove(name); } - + setupProject(cproject); } void setupProject(final ICProject cproject) { if (fInShutDown) return; - + synchronized (fProjectQueue) { fProjectQueue.add(cproject); } @@ -804,7 +804,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { if (indexer != null && indexer.getID().equals(IPDOMManager.ID_NO_INDEXER)) { return; } - + if (added.length > 0 || changed.length > 0 || removed.length > 0) { synchronized (fUpdatePolicies) { IndexUpdatePolicy policy= createPolicy(project); @@ -835,7 +835,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } public void preDeleteProject(ICProject cproject) { - preRemoveProject(cproject, true); + preRemoveProject(cproject, true); } public void preCloseProject(ICProject cproject) { @@ -848,8 +848,8 @@ public class PDOMManager implements IWritableIndexManager, IListener { final IProject rproject= cproject.getProject(); final String name = rproject.getName(); - if (fTraceIndexerSetup) - System.out.println("Indexer: Removing project " + name + "; delete=" + delete); //$NON-NLS-1$ //$NON-NLS-2$ + if (fTraceIndexerSetup) + System.out.println("Indexer: Removing project " + name + "; delete=" + delete); //$NON-NLS-1$ //$NON-NLS-2$ IPDOMIndexer indexer; synchronized (fUpdatePolicies) { @@ -896,12 +896,12 @@ public class PDOMManager implements IWritableIndexManager, IListener { job.setSystem(true); job.schedule(); } - + synchronized (fUpdatePolicies) { fUpdatePolicies.remove(cproject); } } - + void removeProject(ICProject cproject, ICElementDelta delta) { synchronized (fProjectToPDOM) { IProject rproject= cproject.getProject(); @@ -921,7 +921,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { policy.clearTUs(); policy.setIndexer(null); } - } + } } cancelIndexerJobs(indexer); } @@ -937,13 +937,13 @@ public class PDOMManager implements IWritableIndexManager, IListener { } jobToCancel= fIndexerJob; } - + if (jobToCancel != null) { assert !Thread.holdsLock(fTaskQueue); jobToCancel.cancelJobs(indexer, true); } - } - + } + private void reindexAll() { ICProject[] cProjects; try { @@ -958,7 +958,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { @Override public void reindex(final ICProject project) { - Job job= new Job(Messages.PDOMManager_notifyJob_label) { + Job job= new Job(Messages.PDOMManager_notifyJob_label) { @Override protected IStatus run(IProgressMonitor monitor) { IPDOMIndexer indexer= null; @@ -999,7 +999,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { public void removeIndexChangeListener(IIndexChangeListener listener) { fChangeListeners.remove(listener); } - + @Override public void addIndexerStateListener(IIndexerStateListener listener) { fStateListeners.add(listener); @@ -1029,7 +1029,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { notify.setSystem(true); return notify; } - + private void scheduleNotification(Runnable notify) { if (fInShutDown) return; @@ -1079,12 +1079,12 @@ public class PDOMManager implements IWritableIndexManager, IListener { if (fChangeListeners.isEmpty()) { return; } - + ICProject project; synchronized (fProjectToPDOM) { project = fFileToProject.get(pdom.getPath()); - } - + } + if (project != null) { final ICProject finalProject= project; Runnable notify= new Runnable() { @@ -1145,10 +1145,10 @@ public class PDOMManager implements IWritableIndexManager, IListener { } } } - + int getMonitorMessage(PDOMIndexerJob job, int currentTicks, int base) { assert !Thread.holdsLock(fTaskQueue); - + int sourceCount, sourceEstimate, headerCount, tickCount, tickEstimate; String detail= null; synchronized (fTaskQueue) { @@ -1175,14 +1175,14 @@ public class PDOMManager implements IWritableIndexManager, IListener { detail= PDOMIndexerJob.sMonitorDetail; } } - - String msg= MessageFormat.format(Messages.PDOMManager_indexMonitorDetail, new Object[] { - new Integer(sourceCount), new Integer(sourceEstimate), - new Integer(headerCount)}); + + String msg= MessageFormat.format(Messages.PDOMManager_indexMonitorDetail, new Object[] { + new Integer(sourceCount), new Integer(sourceEstimate), + new Integer(headerCount)}); if (detail != null) { msg += ": " + detail; //$NON-NLS-1$ } - + job.subTask(msg); if (tickCount > 0 && tickCount <= tickEstimate) { int newTick= tickCount*base/tickEstimate; @@ -1218,7 +1218,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { public IIndex getIndex(ICProject[] projects, int options) throws CoreException { return fIndexFactory.getIndex(projects, options); } - + /** * Exports the project PDOM to the specified location, rewriting locations with * the specified location converter. @@ -1255,7 +1255,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } // overwrite internal location representations - final WritablePDOM newPDOM = new WritablePDOM(targetLocation, pdom.getLocationConverter(), getLinkageFactories()); + final WritablePDOM newPDOM = new WritablePDOM(targetLocation, pdom.getLocationConverter(), getLinkageFactories()); newPDOM.acquireWriteLock(); try { newPDOM.rewriteLocations(newConverter); @@ -1275,7 +1275,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } /** - * Resets the pdom for the project with the provided stream. + * Resets the pdom for the project with the provided stream. * @throws CoreException * @throws OperationCanceledException in case the thread was interrupted * @since 4.0 @@ -1294,11 +1294,11 @@ public class PDOMManager implements IWritableIndexManager, IListener { } if (version > PDOM.getMaxSupportedVersion()) { final IStatus status = new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, 0, CCorePlugin.getResourceString("PDOMManager.unsupportedHigherVersion"), null); //$NON-NLS-1$ - throw new CoreException(status); + throw new CoreException(status); } if ( !PDOM.isSupportedVersion( version ) ) { final IStatus status = new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, 0, CCorePlugin.getResourceString("PDOMManager.unsupportedVersion"), null); //$NON-NLS-1$ - throw new CoreException(status); + throw new CoreException(status); } byte[] buffer= new byte[2048]; int read; @@ -1308,7 +1308,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } finally { out.close(); } - + WritablePDOM pdom= (WritablePDOM) getPDOM(project); try { pdom.acquireWriteLock(); @@ -1323,7 +1323,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { pdom.releaseWriteLock(); } } - + @Override public void export(ICProject project, String location, int options, IProgressMonitor monitor) throws CoreException { TeamPDOMExportOperation operation= new TeamPDOMExportOperation(project); @@ -1331,7 +1331,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { operation.setOptions(options); operation.run(monitor); } - + /** * Write metadata appropriate for a project pdom * @param pdom the pdom to write to @@ -1362,7 +1362,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { for (Map.Entry> entry : projectsToElements.entrySet()) { ICProject project = entry.getKey(); List filesAndFolders = entry.getValue(); - + update(project, filesAndFolders, options); } } @@ -1389,14 +1389,14 @@ public class PDOMManager implements IWritableIndexManager, IListener { } else if (contains(element, other)) { set.set(j, element); continue allElements; - } + } } set.add(element); } } return result; } - + private boolean contains(final ICElement a, ICElement b) { if (a.equals(b)) { return true; @@ -1493,7 +1493,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { if (fPostponedProjects.contains(project)) { setupProject(project); } - } + } } @Override @@ -1512,7 +1512,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } } } - + /** * @param project * @return whether the specified project has been registered. If a project has @@ -1522,7 +1522,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { public boolean isProjectRegistered(ICProject project) { return getIndexer(project) != null; } - + /** * @param cproject the project to check * @return whether the content in the project fragment of the specified project's index @@ -1532,7 +1532,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { public boolean isProjectContentSynced(ICProject cproject) throws CoreException { if (!"true".equals(IndexerPreferences.get(cproject.getProject(), IndexerPreferences.KEY_INDEX_ALL_FILES, null))) //$NON-NLS-1$ return true; // no check performed in this case - + Set sources= new HashSet(); cproject.accept(new TranslationUnitCollector(sources, null, new NullProgressMonitor())); @@ -1558,7 +1558,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { return true; } - + private boolean isSubjectToIndexing(ILanguage language) { final int linkageID=language.getLinkageID(); for (int id : IDS_FOR_LINKAGES_TO_INDEX) { @@ -1580,7 +1580,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { private static boolean areSynchronized(Set trail, IIndex index, IResource resource, IIndexFileLocation location) throws CoreException { if (!trail.contains(location)) { trail.add(location); - + IIndexFile[] file= index.getFiles(location); // pre-includes may be listed twice (191989) @@ -1606,7 +1606,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } } } - + return true; } diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml index 9dbdb0cbde7..c22d57744da 100644 --- a/core/org.eclipse.cdt.core/plugin.xml +++ b/core/org.eclipse.cdt.core/plugin.xml @@ -653,9 +653,9 @@ - + + -