Hi Igor,
On 05 Aug 2011, at 11:07, Igor Stasenko wrote:
> The problem is in:
>
> ScriptLoader new installingInstaller.
>
> without default scheme this thing is broken, since it using url
> without scheme. :(
>
> Of course i could use gofer for loading it.. but i found this is most
> easy way to load installer.
I studied this a bit, but the base problem is the specification of the MC
location. If you replace:
mc := Smalltalk globals
at: #MCHttpRepository
fPresent: [ :repoClass | repoClass location:
'www.squeaksource.com/Installer' user: 'squeak' password: 'squeak' ].
with
mc := Smalltalk globals
at: #MCHttpRepository
ifPresent: [ :repoClass | repoClass location:
'http://www.squeaksource.com/Installer' user: 'squeak' password: 'squeak' ].
in ScriptLoader>>#installingInstaller,
it should work. Note that all MCHttpRepository are created like this, the
template specifies it as well:
MCHttpRepository
location: 'http://www.squeaksource.com/'
user: ''
password: ''
I could make this into a patch/slice if you want.
Concering ZnUrl parsing, I am not sure that something has to change. ZnUrl is
based on WAUrl that behaves the same. I just checked java.net.URL and they even
throw an exception when you don't specify a scheme ;-) (because of the
ambiguity).
Consider also relative URLs: for example, in the context of
http://www.example.com:8080/examples/index.html, the relative URL about.html
should be resolvable/composable to
http://www.example.com:8080/examples/about.html. The current ZnUrl
implementation sees about.html (but also foo.com) as a path, which is OK in
this absolute/relative idea. The older Url class turns about.html into a host
specification instead, which would be wrong from this prespective.
On the other hand, most browsers (and curl for example), will consider a string
like 'foo' to mean a host as in http://foo
With the scheme prefix 'http://' you actually indicate what you want, maybe
some extra API can support this default behavior programmatically, I am still
thinking about this.
Regards,
Sven