You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by Gary Gregory <ga...@gmail.com> on 2018/04/06 16:02:36 UTC

Add equals() and hashCode() to org.apache.http.NameValuePair?

Hi All:

I have cases where I want to use a Set of org.apache.http.NameValuePair
instead of a list of NameValuePair (to track what headers I need to remove
for example.).

But, since NameValuePair  does not specify equals() and hashCode() it feels
like I am using an undocumented feature of the implementation of Basic
NameValuePair.

Adding these two method would tell call sites: Yes, you can use NameValuePair
in a Set, Map, and so on. This assumes that all implementation already
support the two methods... so if a 3rd party does not, the changes are
misleading.

Thought?

Gary

Re: Add equals() and hashCode() to org.apache.http.NameValuePair?

Posted by Michael Osipov <mi...@apache.org>.
Am 2018-04-06 um 18:19 schrieb Oleg Kalnichevski:
> On Fri, 2018-04-06 at 10:02 -0600, Gary Gregory wrote:
>> Hi All:
>>
>> I have cases where I want to use a Set of
>> org.apache.http.NameValuePair
>> instead of a list of NameValuePair (to track what headers I need to
>> remove
>> for example.).
>>
>> But, since NameValuePair  does not specify equals() and hashCode() it
>> feels
>> like I am using an undocumented feature of the implementation of
>> Basic
>> NameValuePair.
>>
>> Adding these two method would tell call sites: Yes, you can use
>> NameValuePair
>> in a Set, Map, and so on. This assumes that all implementation
>> already
>> support the two methods... so if a 3rd party does not, the changes
>> are
>> misleading.
>>
>> Thought?
>>
>> Gary
> 
> I am not sure I understand. NameValuePair is an interface, is it not?
> It cannot implement #equals and #hashCode. Besides we are back to the
> same fundamental question: what constitutes equality of two HTTP
> headers if we are to mandate Header to implement #equals and #hashCode.

Correct!


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Re: Add equals() and hashCode() to org.apache.http.NameValuePair?

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Fri, 2018-04-06 at 10:02 -0600, Gary Gregory wrote:
> Hi All:
> 
> I have cases where I want to use a Set of
> org.apache.http.NameValuePair
> instead of a list of NameValuePair (to track what headers I need to
> remove
> for example.).
> 
> But, since NameValuePair  does not specify equals() and hashCode() it
> feels
> like I am using an undocumented feature of the implementation of
> Basic
> NameValuePair.
> 
> Adding these two method would tell call sites: Yes, you can use
> NameValuePair
> in a Set, Map, and so on. This assumes that all implementation
> already
> support the two methods... so if a 3rd party does not, the changes
> are
> misleading.
> 
> Thought?
> 
> Gary

I am not sure I understand. NameValuePair is an interface, is it not?
It cannot implement #equals and #hashCode. Besides we are back to the
same fundamental question: what constitutes equality of two HTTP
headers if we are to mandate Header to implement #equals and #hashCode.

Oleg

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Re: Add equals() and hashCode() to org.apache.http.NameValuePair?

Posted by Michael Osipov <mi...@apache.org>.
Am 2018-04-06 um 18:02 schrieb Gary Gregory:
> Hi All:
> 
> I have cases where I want to use a Set of org.apache.http.NameValuePair
> instead of a list of NameValuePair (to track what headers I need to remove
> for example.).
> 
> But, since NameValuePair  does not specify equals() and hashCode() it feels
> like I am using an undocumented feature of the implementation of Basic
> NameValuePair.
> 
> Adding these two method would tell call sites: Yes, you can use NameValuePair
> in a Set, Map, and so on. This assumes that all implementation already
> support the two methods... so if a 3rd party does not, the changes are
> misleading.
> 
> Thought?

This will cause problems. Since Header interface derives from it, you 
will have to implement both for it. I do remember an issue where exactly 
this was requested for comparing them, but Oleg rejected to implement it 
because it is impossible to compare w/o knowing the semantic meaning.

So this has to stay an implementation detail and cannot be enforced.

Michael

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org