Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov2018-10-11 20:58:53 +0000
committerAndrey Loskutov2018-10-11 20:58:53 +0000
commitf6a107d3bbee6b3bf3da01547bbaf1ab5e41734d (patch)
tree330a4820ffc5fcd56e496e82eac0e5a8ce9b416d
parente4fef6cd6de2fee92810503f8bc61604a753bcb8 (diff)
downloadeclipse.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.java11
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;
}

Back to the top