From febb3908e9c53aad542a01fc2a8332e9e4922802 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Thu, 10 Apr 2003 01:12:24 +0000 Subject: [PATCH] add startup() and shtudown() methods. --- .../eclipse/cdt/core/index/IndexModel.java | 15 ++++++++++++++ .../cdt/internal/core/index/IndexManager.java | 11 ++++++---- .../org/eclipse/cdt/core/model/CoreModel.java | 11 ++++++++++ .../internal/core/model/CModelManager.java | 20 +++++++++++++++++++ 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/IndexModel.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/IndexModel.java index 0572d580dd0..be995686c7e 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/IndexModel.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/IndexModel.java @@ -88,6 +88,20 @@ public class IndexModel { manager.addAll(); } + /** + * + */ + public void startup() { + manager.startup(); + } + + /** + * + */ + public void shutdown() { + manager.shutdown(); + } + /** * Initialize default index Model. */ @@ -101,4 +115,5 @@ public class IndexModel { private IndexModel () { } + } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexManager.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexManager.java index 0acdf55031a..c8efca7abb4 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexManager.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexManager.java @@ -78,7 +78,7 @@ public class IndexManager implements IElementChangedListener { return projectsMap; } - protected void init () { + public void startup () { requestList = new RequestList(); projectsMap = Collections.synchronizedMap(new HashMap()); CTagsRunner ctags = new CTagsRunner(this); @@ -155,7 +155,9 @@ public class IndexManager implements IElementChangedListener { public void clearRequestList(IResource resource) { if (resource instanceof IFile) { - requestList.removeItem(resource); + if (requestList != null) { + requestList.removeItem(resource); + } } else if (resource instanceof IContainer) { try { IContainer container = (IContainer)resource; @@ -189,7 +191,9 @@ public class IndexManager implements IElementChangedListener { public void addFile(IFile file) { if (CoreModel.getDefault().isTranslationUnit(file) && IndexModel.getDefault().isEnabled(file.getProject())) { - requestList.addItem(file); + if (requestList != null) { + requestList.addItem(file); + } } } @@ -248,7 +252,6 @@ public class IndexManager implements IElementChangedListener { public static IndexManager getDefault() { if (indexManager == null) { indexManager = new IndexManager(); - indexManager.init(); // Register to the C Core Model for C specific changes. CoreModel.getDefault().addElementChangedListener(indexManager); } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java index 919215a0820..977ee4b1a31 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java @@ -185,6 +185,17 @@ public class CoreModel { manager.removeElementChangedListener(listener); } + /** + * @see Plugin#startup + */ + public void startup() { + manager.startup(); + } + + public void shutdown() { + manager.shutdown(); + } + private CoreModel() { } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java index 8b6d0a3daa3..c9c030f9435 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java @@ -747,5 +747,25 @@ public class CModelManager implements IResourceChangeListener { protected void removeInfo(ICElement element) { this.cache.removeInfo(element); } + + /** + * + */ + public void startup() { + // Do any initialization. + } + + /** + * + */ + public void shutdown() { + // Do any shutdown of services. + BinaryRunner[] runners = (BinaryRunner[])binaryRunners.values().toArray(new BinaryRunner[0]); + for (int i = 0; i < runners.length; i++) { + if (runners[i].isAlive()) { + runners[i].interrupt(); + } + } + } }