[ 
https://issues.apache.org/jira/browse/OLINGO-482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14286361#comment-14286361
 ] 

Ramesh Reddy commented on OLINGO-482:
-------------------------------------

Oops, the dependency is reversed between EntityRequest and ODataRequest in my 
earlier comment's picture (sorry)

[~mirbo] Thank you for your responses.

>In earlier discussion about the Processor design it seems a good architecture 
>to focus on the return type of an request and create according to this the 
>Processor interfaces (see also >the concept in the wiki) and In Olingo V2 a 
>similar (not identical) architecture was a good decision.

I never looked at Olingo V2 before, but yes, Olingo v2 is better design. The 
reason is it has captured the context of the request into the different request 
objects _GetSimplePropertyUriInfo_, _GetEntitySetUriInfo_, 
_GetFunctionImportUriInfo_ etc, which is good. Where it falls short is on 
response part, instead of capturing response type on method signature, it 
captured on method name. The interface names coincide with request types not 
necessarily reflect response type. To be fair in V2 the Functions were much 
simpler, and there were no Actions :)

I did post a question to OData mailing list over clarification of Functions 
usage with PUT, POST, PATCH or DELETE.

> Refactoring of {{Processor}} interfaces
> ---------------------------------------
>
>                 Key: OLINGO-482
>                 URL: https://issues.apache.org/jira/browse/OLINGO-482
>             Project: Olingo
>          Issue Type: Improvement
>          Components: odata4-server
>    Affects Versions: V4 4.0.0-beta-01
>            Reporter: Michael Bolz
>            Assignee: Michael Bolz
>         Attachments: processor.png, request_model.png, response_model.png
>
>
> h2. Idea
> During the introduction of the {{RepresentationType}} a discussion has 
> started about re-factoring of the {{Processor}} interfaces.
> The new idea is to create an own {{*Processor}} interface for each 
> {{RepresentationType}} which then has the according HTTP methods (in form of 
> read/write/..).
> As a result we don’t have explicit {{ProcedureProcessor}} because during the 
> dispatching the {{ReturnType}} of an e.g. Function is evaluated and the call 
> is than processed by the according e.g. {{EntityProcessor}} or 
> {{EntitySetProcessor}} or {{SomeOtherProcessor}}.
> For the {{ProcessorInterfaces}} the return type ({{RepresentationType}}) and 
> its content is leading (and NOT the format). According to this each return 
> type (RepresentationType) results in an own {{*Processor}} Interface with 
> methods for the possible HTTP Requests (see Mapping HTTP Request -> Processor 
> Method). For some exception the return types should be added as method to an 
> existing {{Processor}} Interface.
> As example the {{readPrimitiveAsValue(..)}} method should be added at 
> {{EntityProcessor}}. On the other side for the {{countXX(...)}} methods an 
> own {{Processor}} should be created because the result is not the content of 
> the entity (in a different format).
> h2. Mapping HTTP Request -> Processor Methode
> * HTTP GET -> read_XX(...)
> * HTTP POST -> create_XX(...)
> * HTTP PUT -> update_XX(...)
> ** HTTP PATCH -> update_XX(...)
> * HTTP DELETE -> delete_XX(...)
> h2. Processor Interfaces
> * ServiceDocument - R
> * Metadata - R
> * Error - P rocess
> * Batch - P rocess
> * Entity - CRUD
> * EntityCollection - R
> * Primitive - RUD
> * PrimitiveCollection - RUD
> * Complex - RUD
> * ComplexCollection - RUD
> * Count Processor als
> **  Count - R
>      oder
> ** CountEntityCollection - R
> ** CountPrimitiveCollection - R
> ** CountComplexCollection - R
> * Media - CRUD => Create Media at {{EntityProcessor}}
> * -Binary - CRUD-
> * -Value - CRUD- => Added as  {{readPrimitiveAsValue(...)}} Methode at the 
> {{PrimitiveTypeProcessor}}
> * Reference - CRUD
> * ReferenceCollection - RU\[?\]
> * Difference (Delte/Tombstone) - R



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to