On Tue, Nov 12, 2013 at 6:44 AM, Sergiu Dumitriu <sergiu(a)xwiki.com> wrote:
On 11/11/2013 05:48 PM, Marius Dumitru Florea wrote:
Hi devs,
I just reported
http://jira.xwiki.org/browse/XCOMMONS-494 . It seems
the following generates a NPE:
$escapetool.url({
'foo': $null,
'bar': ['one', $null, 'three'],
$null: 'value'
})
I see 3 possible results:
(1) Skip null parameter key and value
bar=one&bar=three
(2) Use 'null' for both the key and the value
foo=null&bar=one&bar=null&bar=three&null=value
(3) Use empty string for null value
foo=&bar=one&bar=&bar=three&null=value
I'm going to implement (1) if no one is against it.
It is legal to have parameters without values, like ?foo&bar=baz, and
this signifies that a parameter is present, although it's exact value is
irrelevant, it's just a marker for something. So I'd say that a null
value should output just the key.
If that null is part of a longer list of values, is it important to
represent each null? Possibly, if the presence of nulls in the array of
values is meaningful. But back on the server, reading such a parameter
outputs an empty string instead of null, so it's not idempotent; we'd be
replacing nulls with empty strings. Anyway, an empty string is better
than a "null" string which could actually mean something.
A null key, on the other hand, looks like an error. Without the proper
key, the value is not that valuable (pun intended). What's it supposed
to represent? So a null key should be skipped (right now it's included
in the output, and it uses "null" as the key name).
So, in conclusion, I vote for:
(4) Skip null keys and use empty string for null value.
(4) foo&bar=one&bar&bar=three
Now, you can always pass '' as the value of the parameter, which is
shorter than $null, if you wish to use the parameter just as a flag
(i.e. present or not on the request). The use case we're dealing with
is this:
$escapetool.url({'key': $value})
where $value is computed previously and it can sometimes be null
(either as a valid use case or because the evaluation failed).
We agree about skipping null keys. You prefer using empty string for
null values. I'm fine with this.
Thanks,
Marius
--
Sergiu Dumitriu
http://purl.org/net/sergiu
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs