WARNING: This server is unstable and will be retired in the next days. If you want to keep this forum available, please request immediately a migration on the Nabble Support forum. Forums that don't receive any migration request will be deleted forever.

 « Return to Thread: [jira] [Created] (PLUTO-609) PortletPreferencesImpl doesn't handle null preferences correctly

[jira] [Commented] (PLUTO-609) PortletPreferencesImpl doesn't handle null preferences correctly

by JIRA jira@apache.org :: Rate this Message:

| View in Thread


    [ https://issues.apache.org/jira/browse/PLUTO-609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13104812#comment-13104812 ]

Ate Douma commented on PLUTO-609:
---------------------------------

Looking further into both the code for the test *and* the javadoc for the PortletPreferences#getValue and #getValues methods, I think the previous behavior, returning the provided defaultValue(s) when either no *or* null values were retrieved for the preference, actually was correct. That is: according to the specification.

The javadoc says (for both methods):
  "If there are no preference values associated with the given key, or the backing preference database is unavailable, it returns the given default value. A null value is treated as a non-existent value."

This can be read as: if existing preference values are overridden with a null value array, this should be treated as "removing" the current values for the preference (making it "non-existent").

The current TCK tests use a "default" portletpreference configuration in the portlet.xml where the key (preferredLanguage or preferredLanguages) is defined, but without any value (e.g. non-existent *or* null, no way to distinguish these two), and expect the provided default value(s) on the #getValue and #getValues methods to be returned then instead.  

While this could be debated if it actually is the desired behavior, as this effectively makes it impossible to explicitly store a NULL value for a preference, not to be "overridden" by a provided default value,
that use-case isn't supported by the specification. And, as we at least should abide to the specification, I think the change implemented by the issue should be reverted.  

 

> 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

       

 « Return to Thread: [jira] [Created] (PLUTO-609) PortletPreferencesImpl doesn't handle null preferences correctly