Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Core startup/shutdown

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.86
diff -u -r1.86 ChangeLog
--- ChangeLog	9 Apr 2003 03:07:30 -0000	1.86
+++ ChangeLog	10 Apr 2003 01:10:22 -0000
@@ -1,3 +1,18 @@
+2003-04-09 Alain Magloire
+
+	Give a chance to the manager to initialize and shutdown gracefully.
+	The CCorePlugin will call the managers, indexer, coreModel, CDescriptorManager
+	startup() method and shutdown() method.
+
+	* src/org/eclipse/cdt/core/CCorePlugin.java:
+	Call {IndexModel,CoreModel}.{startup,shutdown}().
+	* model/org/eclipse/cdt/core/model/CoreModel.java:
+	New methods startup/shutdown.
+	* model/org/eclipse/cdt/internal/core/mode/CModelManager.java:
+	implement startup/shutdown.
+	* index/org/eclipse/cdt/core/model/IndexModel.java:
+	New methods startup/shutdown.
+
 2003-04-08 Alain Magloire
 
 	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java:
Index: index/org/eclipse/cdt/core/index/IndexModel.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/IndexModel.java,v
retrieving revision 1.4
diff -u -r1.4 IndexModel.java
--- index/org/eclipse/cdt/core/index/IndexModel.java	12 Nov 2002 22:16:00 -0000	1.4
+++ index/org/eclipse/cdt/core/index/IndexModel.java	10 Apr 2003 01:10:23 -0000
@@ -89,6 +89,20 @@
 	}
 
 	/**
+	 * 
+	 */
+	public void startup() {
+		manager.startup();
+	}
+
+	/**
+	 * 
+	 */
+	public void shutdown() {
+		manager.shutdown();		
+	}
+
+	/**
 	 * Initialize default index Model.
 	 */
 	public static IndexModel getDefault() {
@@ -101,4 +115,5 @@
 
 	private IndexModel () {
 	}
+
 }
Index: index/org/eclipse/cdt/internal/core/index/IndexManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexManager.java,v
retrieving revision 1.8
diff -u -r1.8 IndexManager.java
--- index/org/eclipse/cdt/internal/core/index/IndexManager.java	27 Mar 2003 19:29:40 -0000	1.8
+++ index/org/eclipse/cdt/internal/core/index/IndexManager.java	10 Apr 2003 01:10:24 -0000
@@ -78,7 +78,7 @@
 		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 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 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 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);
 		}
Index: index/org/eclipse/cdt/internal/core/index/RequestList.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/RequestList.java,v
retrieving revision 1.2
diff -u -r1.2 RequestList.java
--- index/org/eclipse/cdt/internal/core/index/RequestList.java	12 Nov 2002 20:52:39 -0000	1.2
+++ index/org/eclipse/cdt/internal/core/index/RequestList.java	10 Apr 2003 01:10:24 -0000
@@ -54,8 +54,8 @@
 		//print("in addItem() - leaving");
 	}
 
-	private static void print(String msg) {
-		String name = Thread.currentThread().getName();
-		System.out.println(name + ": " + msg);
-	}
+//	private static void print(String msg) {
+//		String name = Thread.currentThread().getName();
+//		System.out.println(name + ": " + msg);
+//	}
 }
Index: model/org/eclipse/cdt/core/model/CoreModel.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java,v
retrieving revision 1.10
diff -u -r1.10 CoreModel.java
--- model/org/eclipse/cdt/core/model/CoreModel.java	27 Mar 2003 16:04:19 -0000	1.10
+++ model/org/eclipse/cdt/core/model/CoreModel.java	10 Apr 2003 01:10:25 -0000
@@ -185,6 +185,17 @@
 		manager.removeElementChangedListener(listener);
 	}
 
+	/**
+	 * @see Plugin#startup
+	 */
+	public void startup() {
+		manager.startup();
+	}
+
+	public void shutdown() {
+		manager.shutdown();
+	}
+
 	private CoreModel() {
 	}
 
Index: model/org/eclipse/cdt/internal/core/model/CModelManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java,v
retrieving revision 1.20
diff -u -r1.20 CModelManager.java
--- model/org/eclipse/cdt/internal/core/model/CModelManager.java	2 Apr 2003 04:55:44 -0000	1.20
+++ model/org/eclipse/cdt/internal/core/model/CModelManager.java	10 Apr 2003 01:10:27 -0000
@@ -747,5 +747,25 @@
 	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();
+			}
+		}
+	}
 	
 }
Index: model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java,v
retrieving revision 1.6
diff -u -r1.6 DeltaProcessor.java
--- model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java	9 Apr 2003 20:08:50 -0000	1.6
+++ model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java	10 Apr 2003 01:10:28 -0000
@@ -10,7 +10,6 @@
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.core.model.ICElementDelta;
 import org.eclipse.cdt.core.model.ICModel;
-import org.eclipse.cdt.core.model.ICModelStatusConstants;
 import org.eclipse.cdt.core.model.IParent;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -249,11 +248,6 @@
 			return CoreModel.getDefault().hasCNature(project);
 		}
 		return false;
-	}
-
-
-	private CModelException newInvalidElementType() {
-		return new CModelException(new CModelStatus(ICModelStatusConstants.INVALID_ELEMENT_TYPES));
 	}
 
 	/**
Index: src/org/eclipse/cdt/core/CCorePlugin.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java,v
retrieving revision 1.16
diff -u -r1.16 CCorePlugin.java
--- src/org/eclipse/cdt/core/CCorePlugin.java	2 Apr 2003 21:30:22 -0000	1.16
+++ src/org/eclipse/cdt/core/CCorePlugin.java	10 Apr 2003 01:10:30 -0000
@@ -52,6 +52,8 @@
 	private static ResourceBundle fgResourceBundle;
 
 	private CDescriptorManager fDescriptorManager;
+	private CoreModel fCoreModel;
+	private IndexModel fIndexModel;
 
 	// -------- static methods --------
 
@@ -113,7 +115,15 @@
 	 */
 	public void shutdown() throws CoreException {
 		super.shutdown();
-		fDescriptorManager.shutdown();
+		if (fDescriptorManager != null) {
+			fDescriptorManager.shutdown();
+		}
+		if (fIndexModel != null) {
+			fIndexModel.shutdown();
+		}
+		if (fCoreModel != null) {
+			fCoreModel.shutdown();
+		}
 	}
 
 	/**
@@ -123,9 +133,13 @@
 		super.startup();
 
 		// Fired up the model.
-		getCoreModel();
+		fCoreModel = CoreModel.getDefault();
+		fCoreModel.startup();
+
 		// Fired up the indexer. It should delay itself for 10 seconds
-		getIndexModel();
+		fIndexModel = IndexModel.getDefault();
+		fIndexModel.startup();
+
 		fDescriptorManager = new CDescriptorManager();
 		fDescriptorManager.startup();
 		
@@ -206,11 +220,11 @@
 	}
 
 	public CoreModel getCoreModel() {
-		return CoreModel.getDefault();
+		return fCoreModel;
 	}
 
 	public IndexModel getIndexModel() {
-		return IndexModel.getDefault();
+		return fIndexModel;
 	}
 
 	public ICDescriptor getCProjectDescription(IProject project) throws CoreException {



Back to the top