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 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/>
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
