[
https://issues.apache.org/jira/browse/SIS-125?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Desruisseaux updated SIS-125:
------------------------------------
Description:
Despite its name, the {{ModifiableMetadata.nonNullCollection(...)}} method may
return {{null}} in the special case of XML marshalling if and only if the
marshalled element is optional. This is a hack for preventing JAXB to create
empty nodes for empty properties. However in current implementation, the
decision to return null or not is set by a thread-local flag, which apply to
the {{ModifiableMetadata}} instances being marshalled in that particular
thread. This approach does not work well when the user provides its own
metadata subclass which create new elements in the collection on the fly.
We may need to make the {{ModifiableMetadata.canReturnNull()}} method more
accurate in order to not only use a thread-local flag, but also check for the
particular metadata instance being marshalled. This would require storing
somewhere a reference to the element being marshalled, and cleaning that
reference after the marshalling of that particular element finished.
was:
Despite its name, the {{ModifiableMetadata.nonNullCollection(...)}} method may
return {{null}} in the special case of XML marshalling if and only if the
marshalled element is optional. This is a hack for preventing JAXB to create
empty nodes for empty properties. However in current implementation, the
decision to return null or not is set by a thread-local flag, which apply to
the {{ModifiableMetadata}} instances being marshalled in that particular
thread. This approach does not work well when the user provides its own
metadata subclass which create new elements on the collection on the fly.
We may need to make the {{ModifiableMetadata.canReturnNull()}} method more
accurate in order to not only use a thread-local flag, but also check for the
particular metadata instance being marshalled.
> ModifiableMetadata.nonNullCollection(...) should determine more accuratly if
> the metadata object is being marshalled
> --------------------------------------------------------------------------------------------------------------------
>
> Key: SIS-125
> URL: https://issues.apache.org/jira/browse/SIS-125
> Project: Spatial Information Systems
> Issue Type: Improvement
> Components: Metadata
> Affects Versions: 0.3, 0.4, 0.5, 0.6
> Reporter: Martin Desruisseaux
> Priority: Minor
>
> Despite its name, the {{ModifiableMetadata.nonNullCollection(...)}} method
> may return {{null}} in the special case of XML marshalling if and only if the
> marshalled element is optional. This is a hack for preventing JAXB to create
> empty nodes for empty properties. However in current implementation, the
> decision to return null or not is set by a thread-local flag, which apply to
> the {{ModifiableMetadata}} instances being marshalled in that particular
> thread. This approach does not work well when the user provides its own
> metadata subclass which create new elements in the collection on the fly.
> We may need to make the {{ModifiableMetadata.canReturnNull()}} method more
> accurate in order to not only use a thread-local flag, but also check for the
> particular metadata instance being marshalled. This would require storing
> somewhere a reference to the element being marshalled, and cleaning that
> reference after the marshalling of that particular element finished.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)