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

Reply via email to