Thanks for the update Vidura!

On Tue, Mar 14, 2017 at 3:50 PM, Vidura Nanayakkara <[email protected]>
wrote:

> Hi Sanjeewa and Malintha,
>
> Myself and Azeez had a discussion on the discussed enhancement in MSF4J
> and we agreed to deliver it. We will be releasing MSF4J along with this
> change, Carbon Metrics and Interceptors. We will let you know the ETA
> probably in this week.
>
> Thank you,
> Vidura Nanayakkara
>
> On Tue, Mar 14, 2017 at 1:20 PM, Sanjeewa Malalgoda <[email protected]>
> wrote:
>
>> Hi All,
>> Appreciate your urgent attention on this as we are depend on this feature
>> for our M2 release.
>>
>> Thanks,
>> sanjeewa.
>>
>> On Thu, Mar 9, 2017 at 6:18 PM, Malintha Amarasinghe <[email protected]>
>> wrote:
>>
>>> Hi Azeez,
>>>
>>> We would be very grateful if you can review the suggested approach above
>>> by Vidura.
>>>
>>> Thanks!and
>>> Malintha
>>>
>>> On Thu, Mar 2, 2017 at 12:41 PM, Vidura Nanayakkara <[email protected]>
>>> wrote:
>>>
>>>> Hi Azeez,
>>>>
>>>> We had a discussion regarding this. Following are the solutions we
>>>> decided
>>>>
>>>>    - Set object handler as a property in the Request instance (just
>>>>    like we are setting the HTTP method according to [1]
>>>>    <https://github.com/wso2/msf4j/pull/338>)
>>>>
>>>> With this change you can access the handler through the Request
>>>> instance just like as shown below:
>>>>
>>>> request.getProperty("HANDLER")
>>>>
>>>>
>>>>    - Include method arguments in the Request instance.
>>>>
>>>> As for what we suggested in the previous discussion,
>>>>
>>>> *I have also tried is to build the Request inside the Interceptor and
>>>> get the Java method and the args from the Request (which was suggested
>>>> during the offline discussion)*
>>>>
>>>> With the pull request [1] <https://github.com/wso2/msf4j/pull/338> we
>>>> are building the Request before the interceptors are executed. So this is
>>>> handled.
>>>>
>>>> WDYT?
>>>>
>>>> [1] Interceptors pull request <https://github.com/wso2/msf4j/pull/338>
>>>>
>>>> On Thu, Mar 2, 2017 at 10:33 AM, Vidura Nanayakkara <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi Malintha,
>>>>>
>>>>> As for the questions, you asked regarding the 1st approach I suggested:
>>>>>
>>>>>
>>>>> * - Write a custom context provider of your own which will describe
>>>>> how the injected value is generated by implementing a certain interface.In
>>>>> the custom context provider, will we have access to the internal objects
>>>>> like [1] so that we can use them to generate the custom context object?*
>>>>>
>>>>> As per my understanding using approach 1 (custom context providers) it
>>>>> would be a no. As I mentioned in the previous response, by default we can
>>>>> access the Request, Response, HttpStreamer, FormParamIterator and
>>>>> MultivaluedMap instances using the @Context annotation. If you need access
>>>>> to the MSF4J internal objects like [1]
>>>>> <https://github.com/wso2/msf4j/blob/v2.1.1/core/src/main/java/org/wso2/msf4j/internal/MSF4JMessageProcessor.java#L129>,
>>>>> we need to make it accessible by default using the @Context annotation.
>>>>>
>>>>> The purpose of the custom context provider is to help you inject
>>>>> custom values by specifying the logic on how the value are generated
>>>>> (probably to feed the arguments to your interceptors and the HTTP 
>>>>> methods).
>>>>>
>>>>>    - *Register the custom context provider to the MSF4J*
>>>>>    - *Inject the value using @Context annotation (Ex:-
>>>>>    @Context(String key) Object[] arguments)*
>>>>>
>>>>> *Will it be possible to access the injected values within
>>>>> Interceptors? Since one of our requirement is to come up with an
>>>>> Interceptor to validate ETags in a central place, we need to access them
>>>>> within the Interceptor.*
>>>>>
>>>>> Yes, this would be an enhancement to MSF4J (with or without custom
>>>>> context provider implementation).
>>>>>
>>>>> However, it would be great if we can have a discussion regarding this.
>>>>>
>>>>> [1] HttpResourceModel MSF4J internal object
>>>>> <https://github.com/wso2/msf4j/blob/v2.1.1/core/src/main/java/org/wso2/msf4j/internal/MSF4JMessageProcessor.java#L129>
>>>>>
>>>>>
>>>>> On Wed, Mar 1, 2017 at 10:41 AM, Malintha Amarasinghe <
>>>>> [email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Mar 1, 2017 at 9:19 AM, Thusitha Thilina Dayaratne <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Malintha,
>>>>>>>
>>>>>>> ATM if you try to access the request payload at the interceptor
>>>>>>> level, you won't be able to access that again in the service level and 
>>>>>>> it
>>>>>>> will cause the particular thread to get wait.
>>>>>>> Shall we have a quick discussion on that today? That will help to
>>>>>>> come up with a solution for this.
>>>>>>>
>>>>>> Sure Thusitha. Let's have a discussion today. That would be great.
>>>>>>
>>>>>> Thanks!
>>>>>> Malintha
>>>>>>
>>>>>>>
>>>>>>> Thanks
>>>>>>> Thusitha
>>>>>>>
>>>>>>> On Tue, Feb 28, 2017 at 10:29 PM, Malintha Amarasinghe <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> + NuwanD, Sanjeewa
>>>>>>>>
>>>>>>>> On Tue, Feb 28, 2017 at 10:28 PM, Malintha Amarasinghe <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Vidura,
>>>>>>>>>
>>>>>>>>> I went through the links and the approaches you suggested and I
>>>>>>>>> have a couple of questions. I have also tried is to build the
>>>>>>>>> Request inside the Interceptor and get the Java method and the args 
>>>>>>>>> from
>>>>>>>>> the Request (which was suggested during the offline discussion). For 
>>>>>>>>> that,
>>>>>>>>> I tried to get this block of code [1] (which builds the request) 
>>>>>>>>> inside the
>>>>>>>>> Interceptor. And that was successful, but I needed access to some of 
>>>>>>>>> the
>>>>>>>>> internal objects in MSF4J request path. Ex: HttpResourceModel object 
>>>>>>>>> [2].
>>>>>>>>> They are not currently available in Interceptor level, so I had to 
>>>>>>>>> modify
>>>>>>>>> ms4fj-core bit locally (just to check) to get them inside the 
>>>>>>>>> Interceptor.
>>>>>>>>>
>>>>>>>>> Let's say we are following the approach 1.
>>>>>>>>>
>>>>>>>>>    - *Write a custom context provider of your own which will
>>>>>>>>>    describe how the injected value is generated by implementing a 
>>>>>>>>> certain
>>>>>>>>>    interface.*
>>>>>>>>>
>>>>>>>>> In the custom context provider, will we have access to the
>>>>>>>>> internal objects like [1] so that we can use them to generate the 
>>>>>>>>> custom
>>>>>>>>> context object?
>>>>>>>>>
>>>>>>>>>    - *Register the custom context provider to the MSF4J*
>>>>>>>>>    - *Inject the value using @Context annotation (Ex:-
>>>>>>>>>    @Context(String key) Object[] arguments)*
>>>>>>>>>
>>>>>>>>> Will it be possible to access the injected values within
>>>>>>>>> Interceptors? Since one of our requirement is to come up with an
>>>>>>>>> Interceptor to validate ETags in a central place, we need to access 
>>>>>>>>> them
>>>>>>>>> within the Interceptor.
>>>>>>>>>
>>>>>>>>> [1] https://github.com/wso2/msf4j/blob/v2.1.1/core/src/main/
>>>>>>>>> java/org/wso2/msf4j/internal/MSF4JMessageProcessor.java#L137-L144
>>>>>>>>> [2] https://github.com/wso2/msf4j/blob/v2.1.1/core/src/main/java
>>>>>>>>> /org/wso2/msf4j/internal/MSF4JMessageProcessor.java#L129
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>> Malintha
>>>>>>>>>
>>>>>>>>> On Mon, Feb 27, 2017 at 3:08 PM, Malintha Amarasinghe <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Thusitha and all,
>>>>>>>>>>
>>>>>>>>>> Thank you very much for considering this.
>>>>>>>>>>
>>>>>>>>>> @Vidura, Thanks a lot for the detailed response. I will go
>>>>>>>>>> through it and get back to you.
>>>>>>>>>>
>>>>>>>>>> Thanks!
>>>>>>>>>> Malintha
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Feb 27, 2017 at 2:54 PM, Vidura Nanayakkara <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> [Adding Azeez]
>>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> In relation to the offline discussion we had, it was clear that
>>>>>>>>>>> the above functionality is not sufficient for your requirement. As 
>>>>>>>>>>> per the
>>>>>>>>>>> offline discussion, the suggested approach was to use custom 
>>>>>>>>>>> contexts.
>>>>>>>>>>> [1] <http:///>, [2]
>>>>>>>>>>> <https://www.blackpepper.co.uk/blog/custom-context-providers-for-cxf-with-the-context-annotation>
>>>>>>>>>>>  describes
>>>>>>>>>>> an Apache CXF example of using custom contexts.
>>>>>>>>>>>
>>>>>>>>>>> Currently in MSF4J using @Context annotation we can inject the
>>>>>>>>>>> Request, Response, HttpStreamer, FormParamIterator and 
>>>>>>>>>>> MultivaluedMap
>>>>>>>>>>> instances. However, these are not accessible via interceptors as 
>>>>>>>>>>> per the
>>>>>>>>>>> current implementation. The approach we were using to inject values 
>>>>>>>>>>> is by
>>>>>>>>>>> using the approach I have explained in the previous email.
>>>>>>>>>>>
>>>>>>>>>>> Therefore to solve the above problem, there are 2 solutions we
>>>>>>>>>>> can introduce to MSF4J.
>>>>>>>>>>>
>>>>>>>>>>>    1. *Introduce custom injection and lifecycle management [1]
>>>>>>>>>>>    <https://jersey.java.net/documentation/latest/ioc.html>, [2]
>>>>>>>>>>>    
>>>>>>>>>>> <https://www.blackpepper.co.uk/blog/custom-context-providers-for-cxf-with-the-context-annotation>
>>>>>>>>>>>    to MSF4J.*
>>>>>>>>>>>
>>>>>>>>>>> Using this approach what you should basically do is:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>    - Write a custom context provider of your own which will
>>>>>>>>>>>       describe how the injected value is generated by implementing 
>>>>>>>>>>> a certain
>>>>>>>>>>>       interface.
>>>>>>>>>>>       - Register the custom context provider to the MSF4J
>>>>>>>>>>>       - Inject the value using @Context annotation (Ex:-
>>>>>>>>>>>       @Context(String key) Object[] arguments)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>    1. *Have a Map<String, Object> map that could be injected
>>>>>>>>>>>    using @Context annotation*
>>>>>>>>>>>
>>>>>>>>>>> Using this approach what you basically do is:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>    - Add the arguments you need to inject using the @Context
>>>>>>>>>>>       annotation using @SetContext(String key, Object value). This 
>>>>>>>>>>> can be done
>>>>>>>>>>>       inside interceptors or HTTP methods
>>>>>>>>>>>       - Inject the value to using @Context(String key)
>>>>>>>>>>>
>>>>>>>>>>> WDYT?
>>>>>>>>>>>
>>>>>>>>>>> [1] Custom Injection and Lifecycle Management
>>>>>>>>>>> <https://jersey.java.net/documentation/latest/ioc.html>
>>>>>>>>>>> [2] Custom Context Providers for CXF with the Context Annotation
>>>>>>>>>>> <https://www.blackpepper.co.uk/blog/custom-context-providers-for-cxf-with-the-context-annotation>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Feb 27, 2017 at 9:59 AM, Vidura Nanayakkara <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Malintha,
>>>>>>>>>>>>
>>>>>>>>>>>> You can access the `Request` instance from the interceptors.
>>>>>>>>>>>> You also can access the same Request instance from the HTTP 
>>>>>>>>>>>> resource by
>>>>>>>>>>>> injecting the request to the HTTP method (`@Context Request 
>>>>>>>>>>>> request`). You
>>>>>>>>>>>> also can set any argument in the request using 
>>>>>>>>>>>> `request.setProperty(String
>>>>>>>>>>>> key, Object value)` method and retrieve the value using
>>>>>>>>>>>> `request.getProperty(String key)` method. Will this be sufficient 
>>>>>>>>>>>> for your
>>>>>>>>>>>> requirement?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Feb 27, 2017 at 5:55 AM, Thusitha Thilina Dayaratne <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Malintha,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thank you very much for the PR. We did some restructuring for
>>>>>>>>>>>>> the interceptors to cater product requirementsts[1]. Therefore we 
>>>>>>>>>>>>> won't be
>>>>>>>>>>>>> able to directly merge this. But surely we will check what we can 
>>>>>>>>>>>>> do with
>>>>>>>>>>>>> this.
>>>>>>>>>>>>>
>>>>>>>>>>>>> [1] - https://github.com/wso2/msf4j/pull/338
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>> Thusitha
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 26, 2017 at 4:04 PM, Malintha Amarasinghe <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Currently in MSF4J Interceptor level, we can get the HTTP
>>>>>>>>>>>>>> handler method which would be invoked by calling
>>>>>>>>>>>>>>  serviceMethodInfo.getMethod().
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Additionally, It will be useful to have request parameters as
>>>>>>>>>>>>>> well in order to perform various types of request validations in
>>>>>>>>>>>>>> Interceptor level such as Bean validation and ETag validation.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Tried to do a fix which adds a new field to ServiceMethodInfo
>>>>>>>>>>>>>> class as args[] [1]. But this required some API changes.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> [1] https://github.com/wso2/msf4j/pull/356
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Malintha Amarasinghe
>>>>>>>>>>>>>> Software Engineer
>>>>>>>>>>>>>> *WSO2, Inc. - lean | enterprise | middleware*
>>>>>>>>>>>>>> http://wso2.com/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Mobile : +94 712383306P
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Thusitha Dayaratne
>>>>>>>>>>>>> Software Engineer
>>>>>>>>>>>>> WSO2 Inc. - lean . enterprise . middleware |  wso2.com
>>>>>>>>>>>>>
>>>>>>>>>>>>> Mobile  +94712756809 <+94%2071%20275%206809>
>>>>>>>>>>>>> Blog      alokayasoya.blogspot.com
>>>>>>>>>>>>> About    http://about.me/thusithathilina
>>>>>>>>>>>>> <http://wso2.com/signature>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Dev mailing list
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>
>>>>>>>>>>>> *Vidura Nanayakkara*
>>>>>>>>>>>> Software Engineer
>>>>>>>>>>>>
>>>>>>>>>>>> Email : [email protected]
>>>>>>>>>>>> Mobile : +94 (0) 717 919277 <+94%2071%20791%209277>
>>>>>>>>>>>> Web : http://wso2.com
>>>>>>>>>>>> Blog : https://medium.com/@viduran <http://wso2.com/>
>>>>>>>>>>>> Twitter : http://twitter.com/viduranana
>>>>>>>>>>>> LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara
>>>>>>>>>>>> <http://wso2.com/>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Best Regards,
>>>>>>>>>>>
>>>>>>>>>>> *Vidura Nanayakkara*
>>>>>>>>>>> Software Engineer
>>>>>>>>>>>
>>>>>>>>>>> Email : [email protected]
>>>>>>>>>>> Mobile : +94 (0) 717 919277 <+94%2071%20791%209277>
>>>>>>>>>>> Web : http://wso2.com
>>>>>>>>>>> Blog : https://medium.com/@viduran <http://wso2.com/>
>>>>>>>>>>> Twitter : http://twitter.com/viduranana
>>>>>>>>>>> LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara
>>>>>>>>>>> <http://wso2.com/>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Malintha Amarasinghe
>>>>>>>>>> Software Engineer
>>>>>>>>>> *WSO2, Inc. - lean | enterprise | middleware*
>>>>>>>>>> http://wso2.com/
>>>>>>>>>>
>>>>>>>>>> Mobile : +94 712383306 <+94%2071%20238%203306>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Malintha Amarasinghe
>>>>>>>>> Software Engineer
>>>>>>>>> *WSO2, Inc. - lean | enterprise | middleware*
>>>>>>>>> http://wso2.com/
>>>>>>>>>
>>>>>>>>> Mobile : +94 712383306 <+94%2071%20238%203306>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Malintha Amarasinghe
>>>>>>>> Software Engineer
>>>>>>>> *WSO2, Inc. - lean | enterprise | middleware*
>>>>>>>> http://wso2.com/
>>>>>>>>
>>>>>>>> Mobile : +94 712383306 <+94%2071%20238%203306>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Thusitha Dayaratne
>>>>>>> Software Engineer
>>>>>>> WSO2 Inc. - lean . enterprise . middleware |  wso2.com
>>>>>>>
>>>>>>> Mobile  +94712756809 <+94%2071%20275%206809>
>>>>>>> Blog      alokayasoya.blogspot.com
>>>>>>> About    http://about.me/thusithathilina
>>>>>>> <http://wso2.com/signature>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Malintha Amarasinghe
>>>>>> Software Engineer
>>>>>> *WSO2, Inc. - lean | enterprise | middleware*
>>>>>> http://wso2.com/
>>>>>>
>>>>>> Mobile : +94 712383306 <+94%2071%20238%203306>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best Regards,
>>>>>
>>>>> *Vidura Nanayakkara*
>>>>> Software Engineer
>>>>>
>>>>> Email : [email protected]
>>>>> Mobile : +94 (0) 717 919277 <+94%2071%20791%209277>
>>>>> Web : http://wso2.com
>>>>> Blog : https://medium.com/@viduran <http://wso2.com/>
>>>>> Twitter : http://twitter.com/viduranana
>>>>> LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara
>>>>> <http://wso2.com/>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best Regards,
>>>>
>>>> *Vidura Nanayakkara*
>>>> Software Engineer
>>>>
>>>> Email : [email protected]
>>>> Mobile : +94 (0) 717 919277 <+94%2071%20791%209277>
>>>> Web : http://wso2.com
>>>> Blog : https://medium.com/@viduran <http://wso2.com/>
>>>> Twitter : http://twitter.com/viduranana
>>>> LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara
>>>> <http://wso2.com/>
>>>>
>>>
>>>
>>>
>>> --
>>> Malintha Amarasinghe
>>> Software Engineer
>>> *WSO2, Inc. - lean | enterprise | middleware*
>>> http://wso2.com/
>>>
>>> Mobile : +94 712383306 <071%20238%203306>
>>>
>>
>>
>>
>> --
>>
>> *Sanjeewa Malalgoda*
>> WSO2 Inc.
>> Mobile : +94713068779 <+94%2071%20306%208779>
>>
>> <http://sanjeewamalalgoda.blogspot.com/>blog
>> :http://sanjeewamalalgoda.blogspot.com/
>> <http://sanjeewamalalgoda.blogspot.com/>
>>
>>
>>
>
>
> --
> Best Regards,
>
> *Vidura Nanayakkara*
> Software Engineer
>
> Email : [email protected]
> Mobile : +94 (0) 717 919277 <+94%2071%20791%209277>
> Web : http://wso2.com
> Blog : https://medium.com/@viduran <http://wso2.com/>
> Twitter : http://twitter.com/viduranana
> LinkedIn : https://lk.linkedin.com/in/vidura-nanayakkara
> <http://wso2.com/>
>



-- 
Malintha Amarasinghe
Software Engineer
*WSO2, Inc. - lean | enterprise | middleware*
http://wso2.com/

Mobile : +94 712383306
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to