[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Initial Dependency Tree Patch
|
Here's a first take at the dependency
tree service which is needed by both the managed build and the indexer.
The service is in a really early form with no persistance or notification
mechanisms in place yet. There is just enough in here to allow Sean to
get his makefile dependencies. I added a check box to the indexer tab to
enable the service on a per project basis. Note that this is the only trigger
at the moment for generating a dependency tree... (This patch has no direct
influence on any other components)
- Bogdan
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.125
diff -u -r1.125 ChangeLog
--- ChangeLog 22 Jul 2003 00:44:14 -0000 1.125
+++ ChangeLog 23 Jul 2003 20:08:17 -0000
@@ -1,3 +1,7 @@
+2003-07-23 Bogdan Gheorghe
+ Added checkbox to Indexer tab to turn on dependency tree
+ service
+
2003-07-21 Bogdan Gheorghe
Update to CSearchResultLabelProvider to ensure that search labels
show up on subsequent runs.
Index: src/org/eclipse/cdt/ui/wizards/IndexerBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/IndexerBlock.java,v
retrieving revision 1.2
diff -u -r1.2 IndexerBlock.java
--- src/org/eclipse/cdt/ui/wizards/IndexerBlock.java 27 Jun 2003 14:31:32 -0000 1.2
+++ src/org/eclipse/cdt/ui/wizards/IndexerBlock.java 23 Jul 2003 20:08:17 -0000
@@ -8,6 +8,7 @@
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.index.IndexModel;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.internal.core.sourcedependency.DependencyManager;
import org.eclipse.cdt.utils.ui.swt.IValidation;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -20,6 +21,7 @@
public class IndexerBlock implements IWizardTab {
private Button indexerSwitch;
private Button indexerSwitch2;
+ private Button dTreeSwitch;
IProject project;
IValidation page;
@@ -48,6 +50,12 @@
indexerSwitch2.setAlignment(SWT.LEFT);
indexerSwitch2.setText("Enable NEW indexing service for this project");
indexerSwitch2.setSelection(false);
+
+ dTreeSwitch = new Button(composite, SWT.CHECK | SWT.RIGHT);
+ dTreeSwitch.setAlignment(SWT.LEFT);
+ dTreeSwitch.setText("Enable dependency tree service for this project");
+ dTreeSwitch.setSelection(false);
+
return composite;
}
@@ -60,6 +68,9 @@
IndexManager newIndexer = CCorePlugin.getDefault().getCoreModel().getIndexManager();
newIndexer.setEnabled(project, indexerSwitch2.getSelection());
+
+ DependencyManager depManager = CCorePlugin.getDefault().getCoreModel().getDependencyManager();
+ depManager.setEnabled(project, dTreeSwitch.getSelection());
}
@@ -98,10 +109,14 @@
}
if (indexerSwitch2 != null) {
- //indexerSwitch.setAlignment(SWT.LEFT);
- //indexerSwitch.setText("Enable indexing service for this project");
indexerSwitch2.setSelection(newIndexer.isEnabled(project));
}
+
+ DependencyManager depManager = CCorePlugin.getDefault().getCoreModel().getDependencyManager();
+
+ if (dTreeSwitch != null) {
+ dTreeSwitch.setSelection(depManager.isEnabled(project));
+ }
}
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.29
diff -u -r1.29 ChangeLog
--- ChangeLog 22 Jul 2003 22:02:24 -0000 1.29
+++ ChangeLog 23 Jul 2003 20:07:55 -0000
@@ -1,3 +1,6 @@
+2003-07-23 Bogdan Gheorghe
+ Added new dependency tree test
+
2003-07-22 John Camelon
Updated CompleteParseASTTests.
Index: indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java,v
retrieving revision 1.4
diff -u -r1.4 IndexManagerTests.java
--- indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java 22 Jul 2003 18:51:41 -0000 1.4
+++ indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java 23 Jul 2003 20:07:55 -0000
@@ -11,18 +11,23 @@
package org.eclipse.cdt.core.indexer.tests;
import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.internal.core.index.IEntryResult;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.IQueryResult;
import org.eclipse.cdt.internal.core.index.impl.IFileDocument;
import org.eclipse.cdt.internal.core.search.indexing.IIndexConstants;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.internal.core.sourcedependency.DependencyManager;
+import org.eclipse.cdt.internal.core.sourcedependency.DependencyQueryJob;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
@@ -36,6 +41,7 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubProgressMonitor;
/**
* @author bgheorgh
@@ -80,7 +86,7 @@
public static Test suite() {
//TestSuite suite = new TestSuite();
- //suite.addTest(new IndexManagerTests("testIndexContents"));
+ //suite.addTest(new IndexManagerTests("testDependencyTree"));
//return suite;
return new TestSuite(IndexManagerTests.class);
}
@@ -114,7 +120,7 @@
return cproject;
}
- private void importFile(String fileName, String resourceLocation)throws Exception{
+ private IFile importFile(String fileName, String resourceLocation)throws Exception{
//Obtain file handle
file = testProject.getProject().getFile(fileName);
String pluginRoot=org.eclipse.core.runtime.Platform.getPlugin("org.eclipse.cdt.core.tests").find(new Path("/")).getFile();
@@ -124,6 +130,7 @@
file.create(new FileInputStream(pluginRoot + resourceLocation),false,monitor);
}
fileDoc = new IFileDocument(file);
+ return file;
}
private void addNatureToProject(IProject proj, String natureId, IProgressMonitor monitor) throws CoreException {
@@ -342,4 +349,79 @@
assertEquals(methodResultModel[i],methodresults[i].toString());
}
}
+
+ public void testDependencyTree() throws Exception{
+ //Add a file to the project
+ IFile depTest = importFile("DepTest.cpp","resources/dependency/DepTest.cpp");
+ importFile("DepTest.h","resources/dependency/DepTest.h");
+ importFile("a.h","resources/dependency/a.h");
+ importFile("c.h","resources/dependency/c.h");
+ importFile("d.h","resources/dependency/d.h");
+ importFile("Inc1.h","resources/dependency/Inc1.h");
+ importFile("DepTest2.h","resources/dependency/DepTest2.h");
+ IFile depTest2 = importFile("DepTest2.cpp","resources/dependency/DepTest2.cpp");
+ //Enable indexing on the created project
+ //By doing this, we force the Dependency Manager to do a g()
+ DependencyManager dependencyManager = CCorePlugin.getDefault().getCoreModel().getDependencyManager();
+ dependencyManager.setEnabled(testProject,true);
+ Thread.sleep(10000);
+ String[] depTestModel = {"\\IndexerTestProject\\d.h", "\\IndexerTestProject\\Inc1.h", "\\IndexerTestProject\\c.h", "\\IndexerTestProject\\a.h", "\\IndexerTestProject\\DepTest.h"};
+ String[] depTest2Model = {"\\IndexerTestProject\\d.h", "\\IndexerTestProject\\DepTest2.h"};
+
+ ArrayList includes = new ArrayList();
+ dependencyManager.performConcurrentJob(new DependencyQueryJob(testProject,depTest,dependencyManager,includes),ICSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,null);
+ //Thread.sleep(5000);
+ String[] depTestModelLocal = convertToLocalPath(depTestModel);
+ String[] depTestIncludes = new String[includes.size()];
+ Iterator includesIterator = includes.iterator();
+ int i=0;
+ while(includesIterator.hasNext()){
+ depTestIncludes[i] = (String) includesIterator.next();
+ i++;
+ }
+
+ if (depTestModelLocal.length != depTestIncludes.length)
+ fail("Number of included files differsfrom model");
+
+ for (i=0;i<depTestIncludes.length; i++)
+ {
+ assertEquals(depTestModelLocal[i],depTestIncludes[i]);
+ }
+
+ ArrayList includes2 = new ArrayList();
+ dependencyManager.performConcurrentJob(new DependencyQueryJob(testProject,depTest2,dependencyManager,includes2),ICSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,null);
+ //Thread.sleep(5000);
+ String[] depTest2ModelLocal = convertToLocalPath(depTest2Model);
+ String[] depTest2Includes = new String[includes2.size()];
+ Iterator includes2Iterator = includes2.iterator();
+ i=0;
+ while(includes2Iterator.hasNext()){
+ depTest2Includes[i] = (String) includes2Iterator.next();
+ i++;
+ }
+
+ if (depTest2ModelLocal.length != depTest2Includes.length)
+ fail("Number of included files differsfrom model");
+
+ for (i=0;i<depTest2Includes.length; i++)
+ {
+ assertEquals(depTest2ModelLocal[i],depTest2Includes[i]);
+ }
+ }
+
+ /**
+ * @param depTestModel
+ * @return
+ */
+ private String[] convertToLocalPath(String[] model) {
+ IPath defaultPath = Platform.getLocation();
+ String[] tempLocalArray = new String[model.length];
+ for (int i=0;i<model.length;i++){
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(defaultPath.toOSString());
+ buffer.append(model[i]);
+ tempLocalArray[i]=buffer.toString();
+ }
+ return tempLocalArray;
+ }
}
Index: .classpath
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/.classpath,v
retrieving revision 1.8
diff -u -r1.8 .classpath
--- .classpath 16 Jun 2003 17:35:46 -0000 1.8
+++ .classpath 23 Jul 2003 20:07:08 -0000
@@ -16,5 +16,6 @@
<classpathentry kind="src" path="/org.eclipse.core.boot"/>
<classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
<classpathentry kind="src" path="search"/>
+ <classpathentry kind="src" path="dependency"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.112
diff -u -r1.112 ChangeLog
--- ChangeLog 16 Jul 2003 15:02:13 -0000 1.112
+++ ChangeLog 23 Jul 2003 20:07:08 -0000
@@ -1,3 +1,16 @@
+2003-07-23 Bogdan Gheorghe
+
+ Added initial dependency impl
+ Started the new dependency thread on startup
+ Added some methods to access the DependencyManager to CoreModel
+ Changed the ManagedBuildManager.getScannerInfo() to public
+
+ Modified:
+ * src/org/eclipse/cdt/core/CCorePlugin.java
+ * src/org/eclipse/cdt/core/model/CoreModel.java
+ * src/org/eclipse/cdt/internal/core/model/CModelManager.java
+ * src/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
+
2003-07-16 Alain Magloire
Patch from Alex Chapiro
Index: build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java,v
retrieving revision 1.10
diff -u -r1.10 ManagedBuildManager.java
--- build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java 4 Jul 2003 18:36:45 -0000 1.10
+++ build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java 23 Jul 2003 20:07:08 -0000
@@ -420,7 +420,7 @@
* @param resource
* @return
*/
- private static IScannerInfo getScannerInfo(IResource resource) {
+ public static IScannerInfo getScannerInfo(IResource resource) {
return (IScannerInfo) getBuildInfo(resource, false);
}
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.13
diff -u -r1.13 CoreModel.java
--- model/org/eclipse/cdt/core/model/CoreModel.java 27 Jun 2003 14:31:27 -0000 1.13
+++ model/org/eclipse/cdt/core/model/CoreModel.java 23 Jul 2003 20:07:09 -0000
@@ -9,6 +9,7 @@
import org.eclipse.cdt.internal.core.model.BatchOperation;
import org.eclipse.cdt.internal.core.model.CModelManager;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.internal.core.sourcedependency.DependencyManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -226,4 +227,11 @@
return manager.getIndexManager();
}
+ public void startDependencyService() {
+ manager.getSourceDependencyManager().reset();
+ }
+
+ public DependencyManager getDependencyManager(){
+ return manager.getSourceDependencyManager();
+ }
}
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.29
diff -u -r1.29 CModelManager.java
--- model/org/eclipse/cdt/internal/core/model/CModelManager.java 4 Jul 2003 03:02:07 -0000 1.29
+++ model/org/eclipse/cdt/internal/core/model/CModelManager.java 23 Jul 2003 20:07:09 -0000
@@ -43,6 +43,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.internal.core.sourcedependency.DependencyManager;
public class CModelManager implements IResourceChangeListener {
@@ -777,4 +778,8 @@
this.getIndexManager().discardJobs(project.getName());
}
+
+ public DependencyManager getSourceDependencyManager() {
+ return this.fDeltaProcessor.sourceDependencyManager;
+ }
}
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.12
diff -u -r1.12 DeltaProcessor.java
--- model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java 4 Jul 2003 03:02:07 -0000 1.12
+++ model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java 23 Jul 2003 20:07:09 -0000
@@ -21,6 +21,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.internal.core.sourcedependency.DependencyManager;
/**
* This class is used by <code>CModelManager</code> to convert
@@ -36,7 +37,9 @@
protected CElementDelta fCurrentDelta;
protected IndexManager indexManager = new IndexManager();
-
+
+ protected DependencyManager sourceDependencyManager = new DependencyManager();
+
/* The C element that was last created (see createElement(IResource).
* This is used as a stack of C elements (using getParent() to pop it, and
* using the various get*(...) to push it. */
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.20
diff -u -r1.20 CCorePlugin.java
--- src/org/eclipse/cdt/core/CCorePlugin.java 10 Jul 2003 18:28:24 -0000 1.20
+++ src/org/eclipse/cdt/core/CCorePlugin.java 23 Jul 2003 20:07:10 -0000
@@ -189,6 +189,9 @@
//Fired up the new indexer
fCoreModel.startIndexing();
+ //Fire up dependency manager
+ fCoreModel.startDependencyService();
+
fDescriptorManager = new CDescriptorManager();
fDescriptorManager.startup();
Attachment:
cdt-core-dependency.zip
Description: Zip archive
Attachment:
core-tests-resources-dependency.zip
Description: Zip archive