[ 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