If the user home folder of a user uses a UNC (Universal Naming Convention) path, then the FluidShell connect command fails. See attached screenshot.
We need to review to see if there are any other connect related commands that fail.
|
73 KB
|
125 KB
|
100 KB
|
99 KB
|
73 KB
ADS invokes CommandLineInterpreter.getConnectionsDirectory()
to get connection directory.
The implementation of CommandLineInterpreter.getConnectionsDirectory()
is as follows:
(1) get current value of the CONNECTIONS shell variable.
(2) pass the value retrieved from (1) to ShellTools.dequote(value)
to remove undesired contents where ShellTools.dequote(value)
actually calls FilePathParser(value).parse()
to perform its job.
The root cause of the problem described in this issue is FilePathParser().parse()
takes "\\server\path\name" as input but returns it as "\server\path\name", i.e. the very first backslash is removed.
FilePathParser().parse()
is only referenced by ShellTools.dequote(String)
, but ShellTools.dequote(String)
is referenced in several places.
It seems that modifying FilePathParser().parse()
will be difficult.
Perhaps we can work around this problem by just modifying CommandLineInterpreter.getConnectionsDirectory()
and I will work on this tomorrow.
>> Perhaps we can work around this problem by just modifying CommandLineInterpreter.getConnectionsDirectory()
I agree. In .getConnectionsDirectory(), instead of calling .dequote(), we can just put it inline and say, :
if ( !name.startsWith("\\\\") && (AQStringUtils.containsAny("'\"\\", name)) {
name = new FilePathParser(name).parse();
}
Or something like that.
>> Perhaps we can work around this problem by just modifying CommandLineInterpreter.getConnectionsDirectory()
I agree. In .getConnectionsDirectory(), instead of calling .dequote(), we can just put it inline and say, :
if ( !name.startsWith("\\\\") && (AQStringUtils.containsAny("'\"\\", name)) {
name = new FilePathParser(name).parse();
}
Or something like that.
Fixed:
16.0.8-6/SVN r46273
17.0.0-rc-9/SVN r46274
18.0.0-dev-2/SVN r46276
See this screenshot for more info.
Fixed:
16.0.8-6/SVN r46273
17.0.0-rc-9/SVN r46274
18.0.0-dev-2/SVN r46276
See this screenshot for more info.
Verified in ADS-16.0.9 and ADS-17.0-RC-14. Refer updated screenshot '13771_updated_all environment.png
Verified in ADS-16.0.9 and ADS-17.0-RC-14. Refer updated screenshot '13771_updated_all environment.png
Issue #13771 |
Closed |
Fixed |
Resolved |
Completion |
No due date |
Fixed Build ADS 16.0.8-6/17.0.0-rc-9/18.0.0-dev-2 |
No time estimate |
ADS invokes
CommandLineInterpreter.getConnectionsDirectory()
to get connection directory.The implementation of
CommandLineInterpreter.getConnectionsDirectory()
is as follows:(1) get current value of the CONNECTIONS shell variable.
(2) pass the value retrieved from (1) to
ShellTools.dequote(value)
to remove undesired contents whereShellTools.dequote(value)
actually callsFilePathParser(value).parse()
to perform its job.The root cause of the problem described in this issue is
FilePathParser().parse()
takes "\\server\path\name" as input but returns it as "\server\path\name", i.e. the very first backslash is removed.FilePathParser().parse()
is only referenced byShellTools.dequote(String)
, butShellTools.dequote(String)
is referenced in several places.It seems that modifying
FilePathParser().parse()
will be difficult.Perhaps we can work around this problem by just modifying
CommandLineInterpreter.getConnectionsDirectory()
and I will work on this tomorrow.