[ 
https://issues.apache.org/jira/browse/SIS-73?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Desruisseaux closed SIS-73.
----------------------------------


> Remove the automatic mapping of UUIDs to objects
> ------------------------------------------------
>
>                 Key: SIS-73
>                 URL: https://issues.apache.org/jira/browse/SIS-73
>             Project: Spatial Information Systems
>          Issue Type: Task
>          Components: Utilities
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>            Priority: Minor
>             Fix For: 0.3
>
>
> For every UUID (_Unique Universal Identifier_) assigned to an 
> {{IdentifiedObject}}, SIS automatically keeps the association using weak 
> references in an internal map. This allow to retrieve the object by UUID if 
> the object is still alive in the JVM. The rational was that if UUID are truly 
> unique, then there is few risk of ID clash even if we use a system-wide map. 
> However this cause a number of risks:
> * The "truly unique" hypothesis may not hold in practice. Consider for 
> example the case were the user reloads many times the same ISO 19139 
> document. If the document contains an object with {{gco:uuid}} attribute, 
> then the same UUID will be assigned many times - admitely to equivalent 
> objects, but the user could have edited a previously loaded instance.
> * In order to be truly effective, developers need to provide their own "UUID 
> to object" mapping anyway, because the universe of UUIDs is large and the 
> developers probably have some database for them. Our own management of "UUID 
> assigned in the current JVM" is likely to overlap with the developer's 
> database.
> Applying the prudential rule "_in case of doubt, leave it out_", the proposal 
> is to remove the automatic "UUIDs to objects" mapping, but keep this JIRA 
> task in the archive in order to make easier to find the Subversion revision 
> number to revert if this functionality is considered useful in a future SIS 
> version.
> As a minor side effect, the {{putIfAbsent}} method from {{WeakValueHashMap}} 
> should also be removed. It was added for supporting the feature documented in 
> this JIRA task at the cost of slight complication of implementation. Given 
> that {{WeakValueHashMap}} is not real concurrent map, we may be better to 
> avoid any {{ConcurrentMap}} method.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to