[
https://issues.apache.org/jira/browse/OLINGO-1328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joel Aelwyn updated OLINGO-1328:
--------------------------------
Attachment: 0001-OLINGO-1328-Make-OData-instance-visible-to-descendan.patch
> ODataHttpHandlerImpl should not be tightly coupled to ODataHandlerImpl
> ----------------------------------------------------------------------
>
> Key: OLINGO-1328
> URL: https://issues.apache.org/jira/browse/OLINGO-1328
> Project: Olingo
> Issue Type: Improvement
> Components: odata4-server
> Affects Versions: (Java) V4 4.6.0
> Reporter: Joel Aelwyn
> Priority: Minor
> Attachments:
> 0001-OLINGO-1328-Make-OData-instance-visible-to-descendan.patch
>
>
> The constructor of ODataHttpHandlerImpl creates an instance of
> ODataHandlerImpl directly, which forces a tight coupling and requires that
> anything which wishes to provide an alternative implementation of
> ODataHandler must also provide an alternative implementation of
> ODataHttpHandler, even if the custom implementation extends the existing
> ODataHandlerImpl class and no changes to ODataHttpHandlerImpl are otherwise
> required.
> There are multiple ways in which this could be resolved:
> * Use the OData instance passed to the constructor to obtain the handler
> instance, which would require addressing the visibility of the
> getLastThrownException, handleException, and getUriInfo methods on the
> handler by either:
> ** Parameterizing the OData class with the type of the handler implementation
> and requiring that the instance passed be parameterized appropriately
> (probably not a great answer).
> ** Exposing the methods as part of the ODataHandler interface.
> * Providing a protected, non-final method to obtain the handler instance, so
> that extenders of ODataHttpHandlerImpl can control what implementation of
> ODataHandlerImpl is generated and used.
> There might also be other alternatives I'm missing that would be preferable,
> but the only example of this that I could find in the current project is the
> Netty approach, which results in large amounts of duplicate code.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)