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

Martin Desruisseaux updated SIS-416:
------------------------------------
    Fix Version/s:     (was: 1.3)

> Consider adding StoreResource interface
> ---------------------------------------
>
>                 Key: SIS-416
>                 URL: https://issues.apache.org/jira/browse/SIS-416
>             Project: Spatial Information Systems
>          Issue Type: Task
>          Components: Storage
>    Affects Versions: 0.8, 1.0, 1.1, 1.2
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>            Priority: Major
>
> The {{org.apache.sis.storage}} package contains a {{Resource}} interface 
> which is the root of all resources loaded by a data store ({{FeatureSet}}, 
> {{Aggregate}}, _etc._). The resources do not tell us which data store created 
> them. In some case we need this information, for example in order to fetch 
> the parameters used for opening the data store.
> We could add {{getOriginatingStore()}} method in {{Resource}} interface, but 
> not all resources are produced by a data store (a resource could be computed 
> by a model for example). We could use an {{Optional<DataStore>}} return type, 
> but {{Optional}} is not convenient with objects making extensive use of 
> checked exceptions, because lambda functions are difficult to use in that 
> context.
> A an alternative would be to define the {{getOriginatingStore()}} method in a 
> {{StoreResource}} sub-interface, to be implemented only by resources produced 
> by data stores. It would be the only method of that interface.
> Inconvenient of {{StoreResource}} sub-interface:
> * it is very easy to forget to implement it.
> * It is more difficult to implement by wrappers (need to prepare many 
> sub-classes for different combination of implemented interfaces).
> * Adding a type expands the API in a more intrusive way than adding a method.
> Inconvenient of method with {{Optional<DataStore>}} return type:
> * Most {{Optional}} methods are unusable because of checked exceptions.
> * This method make little sense in {{DataStore}} (which is itself a 
> {{Resource}}).



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to