Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [linuxtools-dev] connection names embedded in URI's

On 01/04/2012 02:00 PM, Corey Ashford wrote:
> On 01/04/2012 01:41 PM, Jeff Johnston wrote:
>> On 01/04/2012 02:55 PM, Corey Ashford wrote:
>>> On 01/04/2012 11:46 AM, Jeff Johnston wrote:
>>>> On 01/04/2012 02:10 PM, Corey Ashford wrote:
>>>>> Hi Jeff,
>>>>>
>>>>> I ran across an interesting problem with using the URI's that are
>>>>> formed
>>>>> in the linuxtools plug-in.  I wonder if you have any thoughts on
>>>>> this...
>>>>>
>>>>> We end up with URI's that look something like:
>>>>>
>>>>> remotetools://<connection-name>/<path-to-something>
>>>>>
>>>>> The problem that I ran into is that if I instantiate a URI object based
>>>>> on one of these strings, I get a URISyntaxException thrown if the
>>>>> <connection-name>   contains any embedded blanks, or characters
>>>>> other than
>>>>> a-zA-Z0-9, hyphen, and dots.  The syntax is defined by RFC-952 and
>>>>> RFC-1123.  RFC-952 states:
>>>>>
>>>>>      A "name" (Net, Host, Gateway, or Domain name) is a text string up
>>>>>      to 24 characters drawn from the alphabet (A-Z), digits (0-9),
>>>>> minus
>>>>>      sign (-), and period (.).  Note that periods are only allowed when
>>>>>      they serve to delimit components of "domain style names".
>>>>>
>>>>> RFC-1123 relaxed the above rules, allowing up to 255 characters, and
>>>>> allowing the first character to be a digit (so as to allow for IP
>>>>> addresses).
>>>>>
>>>>>
>>>>> It seems to me that there are a two solutions to this problem:
>>>>>
>>>>> 1) Create our own URI-like class that is more forgiving of the
>>>>> characters in the "host" field.
>>>>>
>>>>
>>>> I am definitely not in favour of this.
>>>>
>>>>> 2) Request that the upstream Remote Tools and RSE folks restrict the
>>>>> connection names according to the above limitation (e.g. no embedded
>>>>> blanks, etc.).  My hunch is that this would be a no go.
>>>>>
>>>>
>>>> This would be my take.  If one cannot represent the name as a URI, then
>>>> it should be restricted at creation time.  I would suggest a bug be
>>>> opened.
>>>>
>>>>> Any others?
>>>>>
>>>>> Have you run into this issue before?  What do you think?
>>>>>
>>>>
>>>> I have never run into the situation because all my host names are
>>>> sensible (either http addresses or simple all-character names).  I
>>>> believe that should be the over-whelming majority of cases, if not 100%.
>>>
>>> Actually, if you create a Remote Tools connection, the default name is
>>> "Remote Host" (notice the embedded blank).  So if you don't change the
>>> name, you get an error when you instantiate a URI based on this name.
>>>
>>
>> Hmm, are we talking connection name or host name?  The host name has to
>> be a legitimate host to connect to.  You presumably don't have a machine
>> on the network called "Remote Host".
> 
> Ok, I had assumed that Remote Tools and RSE formulate their URI's in the
> same way, but apparently they don't (according to you and Greg Watson).
>  For Remote Tools, the connection name (not the hostname/IP address)
> gets placed into the URI's <host> field.  For example, if I leave the
> connection name as "Remote Host", but specify a working hostname for
> that connection, I get a URI that looks like this:
> 
> remotetools://Remote Host/<path-to-resource>
> 
> Note that the actual hostname is not encoded into the URI.
> 
> For rse, I guess you get something like:
> 
> rse://<hostname>/<path-to-resource>?connection="Remote Host"
> 
> That said, when I use the file selector from RSE, it gives me a URI that
> looks similar to the one used for Remote Tools.  I need to look into how
> I wrote the file selector for RSE to make sure that's not my error, though.

I have a follow up on this one.  This is my error... I instantiated a
URI based on the path that was returned from the browseFile method, a
host based on the connection name, and no "query" containing the
connection name at the end.

URI selectedURI = new URI(scheme, connectionName, selectedPath, null);

So we have the situation that Remote Tools and RSE really do use two
different URI schemes.  As an example, I created a project in ~/xnew on
a remote machine (elm3b4.beaverton.ibm.com) using RSE and Remote Tools
using the connection name "Remote Host".

On RSE I get:

rse://elm3b4.beaverton.ibm.com/home/corey/xnew?Remote%20Host

Using Remote Tools I get:

remotetools://Remote%20Host/home/corey/xnew


I was able to use IRemoteFileManager.toURI() to fix the problem in my
resource selector widgets.

So unless I run into some other hang-up, I think this is a non-issue now.

Thanks for your help!

- Corey



Back to the top