Martin Desruisseaux created SIS-73:
--------------------------------------

             Summary: 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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to