Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceFoldersRelativePathSourceContainer.java')
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceFoldersRelativePathSourceContainer.java55
1 files changed, 27 insertions, 28 deletions
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceFoldersRelativePathSourceContainer.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceFoldersRelativePathSourceContainer.java
index f8961cab5be..7b03ffade3f 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceFoldersRelativePathSourceContainer.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceFoldersRelativePathSourceContainer.java
@@ -53,7 +53,8 @@ public class SourceFoldersRelativePathSourceContainer extends CompositeSourceCon
public static final String TYPE_ID =
CDebugCorePlugin.getUniqueIdentifier() + ".containerType.sourceFoldersRelativePath"; //$NON-NLS-1$
- private final IProject fProject;
+ private final IProject fOwnProject; // Project assigned to this container at construction time.
+ private IProject fProject;
private boolean fSearchReferencedProjects;
/**
@@ -64,10 +65,26 @@ public class SourceFoldersRelativePathSourceContainer extends CompositeSourceCon
* @param referenced whether referenced projects should be considered
*/
public SourceFoldersRelativePathSourceContainer(IProject project, boolean referenced) {
+ fOwnProject = project;
fProject = project;
fSearchReferencedProjects = referenced;
}
-
+
+ @Override
+ public void init(ISourceLookupDirector director) {
+ super.init(director);
+ if (director != null) {
+ fProject = SourceUtils.getLaunchConfigurationProject(director);
+ }
+ }
+
+ @Override
+ public void dispose() {
+ fProject = fOwnProject;
+ super.dispose();
+ }
+
+
/* (non-Javadoc)
* @see org.eclipse.debug.core.sourcelookup.ISourceContainer#isComposite()
*/
@@ -88,10 +105,9 @@ public class SourceFoldersRelativePathSourceContainer extends CompositeSourceCon
* @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getName()
*/
public String getName() {
- IProject project = getResolvedProject();
- return project == null ?
+ return fProject == null ?
InternalSourceLookupMessages.SourceFoldersRelativePathSourceContainer_0 :
- NLS.bind(InternalSourceLookupMessages.SourceFoldersRelativePathSourceContainer_1, project.getName());
+ NLS.bind(InternalSourceLookupMessages.SourceFoldersRelativePathSourceContainer_1, fProject.getName());
}
/* (non-Javadoc)
@@ -123,10 +139,9 @@ public class SourceFoldersRelativePathSourceContainer extends CompositeSourceCon
* @see org.eclipse.cdt.debug.core.sourcelookup.IMappingSourceContainer#getCompilationPath(java.lang.String)
*/
public IPath getCompilationPath(String sourceName) {
- IProject project = getResolvedProject();
- if (project == null)
+ if (fProject == null)
return null;
- ICProject cProject = CModelManager.getDefault().create(project);
+ ICProject cProject = CModelManager.getDefault().create(fProject);
IPath path = new Path(sourceName);
for (IFile file : ResourceLookup.findFilesForLocation(path)) {
ISourceRoot root = cProject.findSourceRoot(file);
@@ -141,28 +156,12 @@ public class SourceFoldersRelativePathSourceContainer extends CompositeSourceCon
return fProject;
}
- /**
- * Returns the project associated with this source container either directly or through
- * the current launch configuration.
- * @return an IProject instance or {@code null}.
- */
- private IProject getResolvedProject() {
- if (fProject != null)
- return fProject;
- ISourceLookupDirector director = getDirector();
- if (director != null) {
- return SourceUtils.getLaunchConfigurationProject(director);
- }
- return null;
- }
-
@Override
protected ISourceContainer[] createSourceContainers() throws CoreException {
- IProject project = getResolvedProject();
- if (project != null && project.isOpen()) {
+ if (fProject != null && fProject.isOpen()) {
if (isSearchReferencedProjects()) {
- IProject[] projects = SourceUtils.getAllReferencedProjects(project);
- ISourceContainer[] folders = createCompilationDirectoryContainers(project);
+ IProject[] projects = SourceUtils.getAllReferencedProjects(fProject);
+ ISourceContainer[] folders = createCompilationDirectoryContainers(fProject);
List<ISourceContainer> containers = new ArrayList<ISourceContainer>(folders.length + projects.length);
for (ISourceContainer folder : folders) {
containers.add(folder);
@@ -177,7 +176,7 @@ public class SourceFoldersRelativePathSourceContainer extends CompositeSourceCon
}
return containers.toArray(new ISourceContainer[containers.size()]);
}
- return createCompilationDirectoryContainers(project);
+ return createCompilationDirectoryContainers(fProject);
}
return new ISourceContainer[0];
}

Back to the top