Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Läubrich2022-02-18 11:45:24 +0000
committerVikas Chandra2022-02-21 13:14:06 +0000
commit13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0 (patch)
tree5209b2cd123687db7ffa6fe196aca1c3be1501ae
parentbaca612cf71d8574c544554c413e199adde7b9b4 (diff)
downloadeclipse.pde.ui-13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0.tar.gz
eclipse.pde.ui-13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0.tar.xz
eclipse.pde.ui-13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0.zip
Change-Id: Ic040aeb62e21431480833e86270cb7512a494a5e Signed-off-by: Christoph Läubrich <laeubi@laeubi-soft.de> Reviewed-on: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/190949 Tested-by: Vikas Chandra <Vikas.Chandra@in.ibm.com> Reviewed-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/RemoteTargetHandle.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/RemoteTargetHandle.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/RemoteTargetHandle.java
index ef04da5561..259af094c2 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/RemoteTargetHandle.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/RemoteTargetHandle.java
@@ -38,6 +38,8 @@ public class RemoteTargetHandle implements ITargetHandle {
UNKNWON, EXISTS, NOT_FOUND, FAILED;
}
+ private static final String FILE_SCHEMA = "file:"; //$NON-NLS-1$
+
private static final Map<URI, RemoteTargetHandle> REMOTE_HANDLES = new ConcurrentHashMap<>();
/**
* URI scheme for local targets
@@ -110,7 +112,7 @@ public class RemoteTargetHandle implements ITargetHandle {
Objects.requireNonNull(uri);
try {
IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
- URI resolvedUri = new URI(manager.performStringSubstitution(uri));
+ URI resolvedUri = new URI(convertRawToUri(manager.performStringSubstitution(uri)));
RemoteTargetHandle handle = REMOTE_HANDLES.computeIfAbsent(resolvedUri, RemoteTargetHandle::new);
synchronized (handle) {
if (handle.state != RemoteState.EXISTS) {
@@ -125,4 +127,15 @@ public class RemoteTargetHandle implements ITargetHandle {
}
}
+ static String convertRawToUri(String resolvePath) {
+ // We need to convert windows path separators here...
+ resolvePath = resolvePath.replace('\\', '/');
+ String lc = resolvePath.toLowerCase();
+ if (lc.startsWith(FILE_SCHEMA) && lc.charAt(FILE_SCHEMA.length()) != '/') {
+ // according to rfc a file URI must always start with a slash
+ resolvePath = FILE_SCHEMA + '/' + resolvePath.substring(FILE_SCHEMA.length());
+ }
+ return resolvePath;
+ }
+
}

Back to the top