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