Those may not work on the client side.  If that’s the case, I’d scrap using
client proxies and I’d just use the JAX-RS client api directly, unless
you’re using this as a tinkering opportunity.

On Tue, Mar 5, 2019 at 6:46 AM James Carman <[email protected]>
wrote:

> Did you try using @HeaderParam and @DefaultValue?
> On Tue, Mar 5, 2019 at 1:40 AM Pablo Caballero <[email protected]> wrote:
>
>> Hi folks!
>>
>> I'm writing a REST client to interact with a service exposed by my home
>> router (*1).
>>
>> The service consist of a set of operations exposed in a unique URI (
>> https://xxx.xxx.xxx.xxx/JNAP/). The operation being called depends on the
>> value of a special http header (X-JNAP-Action). Some operations require
>> authentication and some don't (authentication works as http basic auth but
>> using a custom header called X-JNAP-Authorization). You can read about
>> this
>> API in https://github.com/reujab/linksys.
>>
>> My idea is to use two custom annotations to:
>> - map the interface method to the correlated X-JNAP-Action value
>> - mark operations that need authentication
>>
>> and use an/two interceptor/interceptors to implement the logic.
>>
>> Something like this:
>>
>> @Path("/JNAP/")
>> @Consumes({ "application/json" })
>> @Produces({ "application/json" })
>> public interface JNAPClient {
>>
>>     @POST
>>     @Path("")
>>     @JNAPAction(value="router/GetWANStatus3")
>>     @JNAPAuthorization
>>     public WanStatus3 getWanStatus3();
>>
>>     @POST
>>     @Path("")
>>     @JNAPAction(value="router/blah")
>>     @JNAPAuthorization
>>     public BlahResponse doBlah();
>>
>> and so on...
>>
>> I read about using message.getExchange().get(OperationResourceInfo.class)
>> (*2) to get access to the target method inside an interceptor and I wrote
>> a
>> bit of code to test it but I couldn't make it work (I get a null value as
>> a
>> result of calling message.getExchange()... ). So, I decided to take a
>> deeper look at the Message parameter inspecting its value and I figured
>> out
>> that there was a OperationResourceInfo element in the MessageImpl's
>> "contents" member. At this point I'm wondering if it's ok to cast the
>> "message" parameter to MessageImpl and use the getContent method to access
>> the ori's info or if should find another solution.
>>
>> Thank you very much!
>>
>> Best regards
>>
>> (*1) https://www.linksys.com/us/p/P-EA9300/
>> (*2)
>>
>> https://stackoverflow.com/questions/4219093/determine-target-service-method-from-cxf-interceptor
>>
>

Reply via email to