You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Alessio Soldano <as...@redhat.com> on 2014/03/24 13:08:39 UTC

Propagating client endpoint properties in the Message

Hi,
I'm wondering if there's a specific reason for not copying the 
properties set in the Endpoint reference in the Client to the Message 
being constructed in ClientImpl::doInvoke. Something like:

---------------------------------------------------------
diff --git a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
index 77522fb..2a100a9 100644
--- a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
+++ b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
@@ -495,6 +495,7 @@ public class ClientImpl
                  LOG.fine("Invoke, operation info: " + oi + ", params: " + Arrays.toString(params));
              }
              Message message = endpoint.getBinding().createMessage();
+            message.putAll(endpoint);
              
              // Make sure INVOCATION CONTEXT, REQUEST_CONTEXT and RESPONSE_CONTEXT are present
              // on message
---------------------------------------------------------

WDYT?

Thanks
Alessio

-- 
Alessio Soldano
Web Service Lead, JBoss


Re: Propagating client endpoint properties in the Message

Posted by Daniel Kulp <dk...@apache.org>.
I would just flip these to getContextualPropery….

Dan


On Mar 24, 2014, at 10:02 AM, Alessio Soldano <as...@redhat.com> wrote:

> Thanks for the reply Dan, I didn't think about the contextual props thing.
> 
> In the scenario that led to this question, the props that is not "found" is "javax.xml.ws.client.receiveTimeout" (org.apache.cxf.message.Message.RECEIVE_TIMEOUT). That is read in org.apache.cxf.transport.http.HTTPConduit#determineReceiveTimeout:
> 
> if (message.get(Message.RECEIVE_TIMEOUT) != null) {
>  Object obj = message.get(Message.RECEIVE_TIMEOUT);
>  ...
> }
> 
> Similar thing for the connection timeout.
> 
> Alessio
> 
> On 24/03/14 14:40, Daniel Kulp wrote:
>> On Mar 24, 2014, at 8:08 AM, Alessio Soldano <as...@redhat.com> wrote:
>> 
>>> Hi,
>>> I'm wondering if there's a specific reason for not copying the properties set in the Endpoint reference in the Client to the Message being constructed in ClientImpl::doInvoke. Something like:
>>> 
>> What would we gain by doing that?    That is already automatically done (kind of) when you call the getContextualProperty on the message.
>> 
>> 
>> We currently have two “scopes” of properties on the message:
>> 
>> 1) Actual message scope: these are properties directly set on the message
>> 
>> 2) Contextual - these properties are “searched” through the hierarchy including the endpoint, bus, etc….
>> 
>> 
>> What this does is move the endpoint properties from category 2 into category 1.    I’m not sure what value that has.   Is there a particular use case or something we need?   More specifically, is there someplace we are calling just “get(…)” where a "getContextualProperty(…)” should be done instead?
>> 
>> Dan
>> 
>> 
>> 
>>> ---------------------------------------------------------
>>> diff --git a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
>>> index 77522fb..2a100a9 100644
>>> --- a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
>>> +++ b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
>>> @@ -495,6 +495,7 @@ public class ClientImpl
>>>                 LOG.fine("Invoke, operation info: " + oi + ", params: " + Arrays.toString(params));
>>>             }
>>>             Message message = endpoint.getBinding().createMessage();
>>> +            message.putAll(endpoint);
>>>                          // Make sure INVOCATION CONTEXT, REQUEST_CONTEXT and RESPONSE_CONTEXT are present
>>>             // on message
>>> ---------------------------------------------------------
>>> 
>>> WDYT?
>>> 
>>> Thanks
>>> Alessio
>>> 
>>> -- 
>>> Alessio Soldano
>>> Web Service Lead, JBoss
>>> 
> 
> 
> -- 
> Alessio Soldano
> Web Service Lead, JBoss

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Re: Propagating client endpoint properties in the Message

Posted by Alessio Soldano <as...@redhat.com>.
Thanks for the reply Dan, I didn't think about the contextual props thing.

In the scenario that led to this question, the props that is not "found" 
is "javax.xml.ws.client.receiveTimeout" 
(org.apache.cxf.message.Message.RECEIVE_TIMEOUT). That is read in 
org.apache.cxf.transport.http.HTTPConduit#determineReceiveTimeout:

if (message.get(Message.RECEIVE_TIMEOUT) != null) {
   Object obj = message.get(Message.RECEIVE_TIMEOUT);
   ...
}

Similar thing for the connection timeout.

Alessio

On 24/03/14 14:40, Daniel Kulp wrote:
> On Mar 24, 2014, at 8:08 AM, Alessio Soldano <as...@redhat.com> wrote:
>
>> Hi,
>> I'm wondering if there's a specific reason for not copying the properties set in the Endpoint reference in the Client to the Message being constructed in ClientImpl::doInvoke. Something like:
>>
> What would we gain by doing that?    That is already automatically done (kind of) when you call the getContextualProperty on the message.
>
>
> We currently have two “scopes” of properties on the message:
>
> 1) Actual message scope: these are properties directly set on the message
>
> 2) Contextual - these properties are “searched” through the hierarchy including the endpoint, bus, etc….
>
>
> What this does is move the endpoint properties from category 2 into category 1.    I’m not sure what value that has.   Is there a particular use case or something we need?   More specifically, is there someplace we are calling just “get(…)” where a "getContextualProperty(…)” should be done instead?
>
> Dan
>
>
>
>> ---------------------------------------------------------
>> diff --git a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
>> index 77522fb..2a100a9 100644
>> --- a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
>> +++ b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
>> @@ -495,6 +495,7 @@ public class ClientImpl
>>                  LOG.fine("Invoke, operation info: " + oi + ", params: " + Arrays.toString(params));
>>              }
>>              Message message = endpoint.getBinding().createMessage();
>> +            message.putAll(endpoint);
>>                           // Make sure INVOCATION CONTEXT, REQUEST_CONTEXT and RESPONSE_CONTEXT are present
>>              // on message
>> ---------------------------------------------------------
>>
>> WDYT?
>>
>> Thanks
>> Alessio
>>
>> -- 
>> Alessio Soldano
>> Web Service Lead, JBoss
>>


-- 
Alessio Soldano
Web Service Lead, JBoss


Re: Propagating client endpoint properties in the Message

Posted by Daniel Kulp <dk...@apache.org>.
On Mar 24, 2014, at 8:08 AM, Alessio Soldano <as...@redhat.com> wrote:

> Hi,
> I'm wondering if there's a specific reason for not copying the properties set in the Endpoint reference in the Client to the Message being constructed in ClientImpl::doInvoke. Something like:
> 

What would we gain by doing that?    That is already automatically done (kind of) when you call the getContextualProperty on the message.


We currently have two “scopes” of properties on the message:

1) Actual message scope: these are properties directly set on the message

2) Contextual - these properties are “searched” through the hierarchy including the endpoint, bus, etc….


What this does is move the endpoint properties from category 2 into category 1.    I’m not sure what value that has.   Is there a particular use case or something we need?   More specifically, is there someplace we are calling just “get(…)” where a "getContextualProperty(…)” should be done instead?

Dan



> ---------------------------------------------------------
> diff --git a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
> index 77522fb..2a100a9 100644
> --- a/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
> +++ b/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
> @@ -495,6 +495,7 @@ public class ClientImpl
>                 LOG.fine("Invoke, operation info: " + oi + ", params: " + Arrays.toString(params));
>             }
>             Message message = endpoint.getBinding().createMessage();
> +            message.putAll(endpoint);
>                          // Make sure INVOCATION CONTEXT, REQUEST_CONTEXT and RESPONSE_CONTEXT are present
>             // on message
> ---------------------------------------------------------
> 
> WDYT?
> 
> Thanks
> Alessio
> 
> -- 
> Alessio Soldano
> Web Service Lead, JBoss
> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com