diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 32709347415..ae28695d6c2 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,13 @@ +2004-04-27 Alain Magloire + + Fix for PR 60182 + * model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java + * model/org/eclipse/cdt/internal/core/model/BinarContainer.java + * model/org/eclipse/cdt/internal/core/model/CContainer.java + * model/org/eclipse/cdt/internal/core/model/CProject.java + * model/org/eclipse/cdt/internal/core/model/IncludeReference.java + * model/org/eclipse/cdt/internal/core/model/Openable.java + 2004-04-26 Alain Magloire Changes in the PathEntryStore API diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java index 3099ca5f147..ad98fa73c2a 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java @@ -39,6 +39,7 @@ public class ArchiveContainer extends Openable implements IArchiveContainer { throws CModelException { // this will bootstrap/start the runner for the project. CModelManager.getDefault().getBinaryRunner(getCProject()); + CModelManager.getDefault().putInfo(this, info); return true; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java index 570d01e10ed..0112de9bdca 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java @@ -49,6 +49,7 @@ public class BinaryContainer extends Openable implements IBinaryContainer { throws CModelException { // this will bootstrap/start the runner for the project. CModelManager.getDefault().getBinaryRunner(getCProject()); + CModelManager.getDefault().putInfo(this, info); return true; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainer.java index bf7ad019115..b3285811160 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainer.java @@ -22,7 +22,6 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; @@ -165,10 +164,12 @@ public class CContainer extends Openable implements ICContainer { boolean validInfo = false; try { IResource res = getResource(); - if (res != null && (res instanceof IWorkspaceRoot || res.getProject().isOpen())) { + if (res != null && res.isAccessible()) { // put the info now, because computing the roots requires it CModelManager.getDefault().putInfo(this, info); validInfo = computeChildren(info, res); + } else { + throw newNotPresentException(); } } finally { if (!validInfo) { diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java index acf5925c293..2c05810360c 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java @@ -38,7 +38,6 @@ import org.eclipse.cdt.core.model.ISourceEntry; import org.eclipse.cdt.core.model.ISourceRoot; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; @@ -514,10 +513,12 @@ public class CProject extends Openable implements ICProject { boolean validInfo = false; try { IResource res = getResource(); - if (res != null && (res instanceof IWorkspaceRoot || res.getProject().isOpen())) { + if (res != null && res.isAccessible()) { // put the info now, because computing the roots requires it CModelManager.getDefault().putInfo(this, info); validInfo = computeSourceRoots(info, res); + } else { + throw newNotPresentException(); } } finally { if (!validInfo) { diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java index 409036b781f..1e180a557c1 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java @@ -74,6 +74,7 @@ public class IncludeReference extends Openable implements IIncludeReference { * @see org.eclipse.cdt.internal.core.model.Openable#generateInfos(org.eclipse.cdt.internal.core.model.OpenableInfo, org.eclipse.core.runtime.IProgressMonitor, java.util.Map, org.eclipse.core.resources.IResource) */ protected boolean generateInfos(OpenableInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws CModelException { + CModelManager.getDefault().putInfo(this, info); return computeChildren(info, underlyingResource); } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java index 0934f20024d..d0e96554470 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java @@ -6,6 +6,8 @@ */ package org.eclipse.cdt.internal.core.model; +import java.io.File; + import org.eclipse.cdt.core.IBinaryParser.IBinaryArchive; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ILibraryEntry; @@ -45,7 +47,11 @@ public class LibraryReferenceArchive extends Archive implements ILibraryReferenc * @see org.eclipse.cdt.core.model.ICElement#exists() */ public boolean exists() { - return getPath().toFile().exists(); + File f = getPath().toFile(); + if (f != null) { + return f.exists(); + } + return false; } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java index a8d146ad3c3..b7df01d1f65 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java @@ -6,6 +6,8 @@ */ package org.eclipse.cdt.internal.core.model; +import java.io.File; + import org.eclipse.cdt.core.IBinaryParser.IBinaryObject; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ILibraryEntry; @@ -29,7 +31,11 @@ public class LibraryReferenceShared extends Binary implements ILibraryReference * @see org.eclipse.cdt.internal.core.model.Binary#getModificationStamp() */ protected long getModificationStamp() { - return getPath().toFile().lastModified(); + File f = getPath().toFile(); + if (f != null) { + return f.lastModified(); + } + return 0; } /* (non-Javadoc) @@ -39,6 +45,17 @@ public class LibraryReferenceShared extends Binary implements ILibraryReference return null; } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.model.ICElement#exists() + */ + public boolean exists() { + File f = getPath().toFile(); + if (f != null) { + return f.exists(); + } + return false; + } + /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ICElement#getPath() */