diff options
author | Christoph Läubrich | 2022-02-18 11:45:24 +0000 |
---|---|---|
committer | Vikas Chandra | 2022-02-21 13:14:06 +0000 |
commit | 13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0 (patch) | |
tree | 5209b2cd123687db7ffa6fe196aca1c3be1501ae | |
parent | baca612cf71d8574c544554c413e199adde7b9b4 (diff) | |
download | eclipse.pde.ui-13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0.tar.gz eclipse.pde.ui-13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0.tar.xz eclipse.pde.ui-13fdea8ed9d7f8160fb1d3cc6f98baeac6a25bc0.zip |
Bug 577184 - fix URI for windows systems in Target refsS4_23_0_RC1I20220228-1800I20220228-0600I20220227-1800I20220227-0600I20220226-1800I20220226-0600I20220225-1800I20220223-1800I20220223-0600I20220222-1800I20220222-1350I20220221-1800
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.java | 15 |
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; + } + } |