Hi Thierry,

I also agree that such work like the proposal from Ramesh as well as your’s and 
hopefully upcoming from the community are really nice and good.
For this we have the open source mindset and approach with Olingo to engage 
people to contribute and build e.g. frameworks on top of Olingo.
So beside of my focus on core library (and key functions) I will support you on 
the framework as best as I can   ;o)

Kind regards,
Michael

> On 20 Feb 2015, at 19:00, Thierry Templier <[email protected]> wrote:
> 
> Hi Michael,
> Thanks very much for your answer! I understand well your approach and I agree 
> that the library stability is the most important thing. I think however that 
> it's great that such works like the Ramesh's one to simplify the service 
> developer life are done in parallel by the community. ;-)
> Thierry ______________________________________________
> -- Take a look at my blog: http://templth.wordpress.com/ 
> 
>     Le Vendredi 20 février 2015 14h32, mibo <[email protected]> a écrit :
> 
> 
> Hi Thierry,
> 
> I’am also a friend of a more framework like approach, at least as a service 
> developer.
> And your ideas with using Java annotations sounds also nice and promising 
> (and remember me a little bit at the Java annotation PoC in Olingo v2 and 
> OLINGO-129).
> But I also think that for Olingo 4.0 and the first stable core release focus 
> should be on implementation of OData Version 4 specification in a more 
> library point of view.
> Afterwards if the library is stable and supports the main OData 4 
> specification aspects the next steps could be to do more for the convenience 
> of a service developer with frameworks on top of the library (e.g. JPA and 
> Java-Annotation extensions in Olingo V2). 
> But this is just my current opinion and focus and I will not prevent anybody 
> in the community to start with a framework around of Olingo. Quite to the 
> contrary, I think it's good when proof of concepts and/or frameworks already 
> are started  ;o)
> 
> Back to OLINGO-573 I think we should check if the processor design is an 
> approach which should/could be merged into the core (or replace actual 
> design) or if it is the better way to see it as a framework/extension which 
> resides on top or beside the core library.
> Because at least with the next „beta-03“ release we should be stable with the 
> API (just smaller changes but not a greater redesign).
> 
> And for your questions, for me it is ok to discuss/comment in the issue. So 
> feel free to put your mail in OLINGO-537.
> And the TripPin service is implemented in the „TripPinHandler“ and 
> „TripPinServlet“ classes within the test module (packages), so you have 
> already found it  ;o)
> 
> Kind regards,
> Michael
> 
>> On 20 Feb 2015, at 11:45, Thierry Templier <[email protected]> wrote:
>> 
>> Hi Michael and Ramesh,
>> I definitively love such approach. It's clear that we need to use some 
>> "plumbing code" to implement OData applications with Olingo. I agree and 
>> also think that most of them can be integrated in Olingo itself and not use 
>> directly by the service developer. Having such processor interfaces (the 
>> Ramesh's ones below) are really valuable and are in the spirit of a 
>> framework approach rather than a library one. I think that we don't need in 
>> most cases to work on OData request and response objects of Olingo. This 
>> will contribute to reduce the amount of code and the complexity of 
>> processors.
>> EntitySet readEntitySet(EdmEntitySet es, UriInfoResource uriInfo)EntitySet 
>> readEntitySet(EdmFunction ef, UriInfoResource uriInfo)long 
>> readCount(EdmEntitySet es, UriInfoResource uriInfo)
>> 
>> However I wonder if we could go a bit further than static interfaces. Some 
>> frameworks (like Spring MVC / REST) leverages an approach where the method 
>> signatures to handle requests aren't static. The service developer is free 
>> to choose which parameters he wants to have. Such methods are defined and 
>> configured using annotations. I find this approach very valuable, flexible, 
>> convenient and efficient since it allows to get the hints you need very 
>> easy. For example, we can have:
>> @RequestMapping(method = RequestMethod.GET)public Map<String, Appointment> 
>> get() { (...) }
>> @RequestMapping(value="/{day}", method = RequestMethod.GET)public 
>> Map<String, Appointment> getForDay(@PathVariable 
>> @DateTimeFormat(iso=ISO.DATE) Date day, Model model) { (...) }
>> @RequestMapping(method = RequestMethod.POST)public String add(@Valid 
>> AppointmentForm appointment, BindingResult result) { (...) }
>> In the context of OData / Olingo, we could have something like that to 
>> implement processors.
>> @Processorpublic class MyProcessor {
>>     @ProcessorMethod(type = ProcessorMethodKind.READ_ENTITY_SET)
>>     public EntitySet readEntitySet(EdmEntitySet es, UriInfoResource uriInfo) 
>> { (...) }
>>     @ProcessorMethod(type = ProcessorMethodKind.READ_ENTITY_SET)    public 
>> EntitySet readEntitySet(EdmEntitySet es, ODataRequest request) { (...) }
>>     @ProcessorMethod(type = ProcessorMethodKind.READ_ENTITY)    public 
>> Entity readEntity(EdmEntitySet es, @KeyPredicates List<URIParameter> keys) { 
>> (...) }
>>     @ProcessorMethod(type = ProcessorMethodKind.UPDATE_ENTITY)    public 
>> Entity updateEntity(EdmEntitySet es, Entity entity, @KeyPredicates 
>> List<URIParameter> keys, HttpMethod method) {        boolean partial = 
>> request.getMethod().equals(HttpMethod.PATCH);        (...)    }}
>> 
>> This would be a layer upon the classic approach and / or the Ramesh's one. 
>> This also would bring auto-detecting and auto-configuration (based on 
>> annotations) of processors against the OData HTTP handler.
>> Notice that the field type in the annotation could be easily deduced from 
>> the method signature in most cases.
>> Otherwise honestly I can't find the TripPin service in the branch 
>> olingo-server-extension:
>> ./lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinHandler.java
>> ./lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServiceTest.java
>>  
>> ./lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServlet.java
>> 
>> Can you give me more hints to find out this sample? Thanks!
>> Thierry
> 
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to