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
