diff options
author | Andrey Loskutov | 2018-10-11 20:58:53 +0000 |
---|---|---|
committer | Andrey Loskutov | 2018-10-11 20:58:53 +0000 |
commit | f6a107d3bbee6b3bf3da01547bbaf1ab5e41734d (patch) | |
tree | 330a4820ffc5fcd56e496e82eac0e5a8ce9b416d | |
parent | e4fef6cd6de2fee92810503f8bc61604a753bcb8 (diff) | |
download | eclipse.jdt.core-f6a107d3bbee6b3bf3da01547bbaf1ab5e41734d.tar.gz eclipse.jdt.core-f6a107d3bbee6b3bf3da01547bbaf1ab5e41734d.tar.xz eclipse.jdt.core-f6a107d3bbee6b3bf3da01547bbaf1ab5e41734d.zip |
Bug 537666 - fix test for not existing class folders on WindowsI20181012-1800
On Windows, external class folders are always encoded with a device part
in the path. Assume that if the device part is missing on Windows, the
path to check can't represent external folder. Of course this could be a
path encoded on Linux, but in this case the project classpath is not
portable anyway.
Change-Id: I3fbd8546809176e33d4d9828310b0980a4b4e70a
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java index 1fb75315ad..77ac23c416 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java @@ -55,8 +55,10 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.internal.core.DeltaProcessor.RootInfo; import org.eclipse.jdt.internal.core.util.Messages; import org.eclipse.jdt.internal.core.util.Util; +import org.eclipse.osgi.service.environment.Constants; public class ExternalFoldersManager { + private static final boolean WINDOWS = Platform.getOS().equals(Constants.OS_WIN32); private static final String EXTERNAL_PROJECT_NAME = ".org.eclipse.jdt.core.external.folders"; //$NON-NLS-1$ private static final String LINKED_FOLDER_NAME = ".link"; //$NON-NLS-1$ private Map<IPath, IFolder> folders; @@ -118,11 +120,12 @@ public class ExternalFoldersManager { if (externalPath == null || externalPath.isEmpty()) { return false; } + JavaModelManager manager = JavaModelManager.getJavaModelManager(); if (manager.isExternalFile(externalPath) || manager.isAssumedExternalFile(externalPath)) { return false; } - if (!externalPath.isAbsolute()) { + if (!externalPath.isAbsolute() || (WINDOWS && externalPath.getDevice() == null)) { // can be only project relative path return false; } @@ -142,12 +145,14 @@ public class ExternalFoldersManager { if (isInternalContainerPath(externalPath)) { return false; } + // From here on the legacy code assumes that not existing resource must be external. + // We just follow the old assumption. if (externalPath.getFileExtension() != null/*likely a .jar, .zip, .rar or other file*/) { manager.addAssumedExternalFile(externalPath); - // not existing external file + // assume not existing external (?) file (?) (can also be a folder with dotted name!) return false; } - // not existing external folder + // assume not existing external (?) folder (?) return true; } |