[
https://issues.apache.org/jira/browse/PLUTO-609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13104831#comment-13104831
]
Eric Dalquist commented on PLUTO-609:
-------------------------------------
I disagree, there is an explicit: PortletPreferences.reset(String) method which
is used to reset a preference to its default value, the API does not give any
way to remove a preference, only to reset it to its default value.
Also setValue states that only null keys are NOT allowed and more importantly
setValues states that "null values in the values parameter are allowed." which
means that if I store "new String[] {null}" that should actually be stored for
me by the portal and I should be able to retrieve that value. Further more
since setValue(key, value) is simply short hand for setValues(key, new String[]
{ value }) calling setValue(key, null) should also store a String array length
1 that contains a single null value.
This is further confirmed by PLT.17.1 which states "Preferences attributes can
be set to null." and if a value is set to null it is NOT the same as "no value
being associated", a null entry in an array is still a value that has been
associated with the key.
I can see reverting part of the change since getValue states that "A null value
is treated as a non-existent value". While getValues has the same statement I'd
assume that meant the array as a whole.
Taking the javadoc of getValue into account I believe the following behavior is
what should be happening:
Calling either setValue(key, null) OR setValues(key, new String[] {null})
should result in:
getValue(key, "DEFAULT") == "DEFAULT"
getValues(key, new String[] { "DEFAULT" }) = [null]
I believe this is the case since setValue(key, value) is simply short hand for
setValues(key, new String[] { value }) and since a String array of length 1 has
been stored getValues must return that array even though its only value is null.
> PortletPreferencesImpl doesn't handle null preferences correctly
> ----------------------------------------------------------------
>
> Key: PLUTO-609
> URL: https://issues.apache.org/jira/browse/PLUTO-609
> Project: Pluto
> Issue Type: Bug
> Affects Versions: 2.0.2
> Reporter: Eric Dalquist
> Assignee: Ate Douma
> Fix For: 2.0.3, 2.1.0
>
>
> PLT.17.1 states "Preference attributes are String array objects. Preferences
> attributes can be set to null." In Pluto if you call
> PortletPreference.setValue("name", null), PortletPreference.setValues("name",
> String[] {null}), or PortletPreference.setValues("name", null) the correct
> data is passed to the underlying preference storage SPI.
> The problem is when calling getValue("name", "DEFAULT") or getValues("name",
> new String[] { "DEFAULT" }) for any of the three previous cases "DEFAULT" is
> returned. From my reading of the spec this is not correct as in each case the
> preference has been set but with a single null value or a null values array.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira