[
https://issues.apache.org/jira/browse/HTTPCORE-316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCORE-316.
----------------------------------------
Resolution: Fixed
Fix Version/s: 4.2.3
Good catch. Thank you, Markus. Fixed committed to both trunk and 4.2.x branch.
Oleg
> HeaderGroup clone removes headers from original
> -----------------------------------------------
>
> Key: HTTPCORE-316
> URL: https://issues.apache.org/jira/browse/HTTPCORE-316
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Affects Versions: 4.2.2
> Environment: All platforms
> Reporter: Markus Thies
> Labels: HeaderGroup, patch
> Fix For: 4.2.3
>
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> The class org.apache.http.message.HeaderGroup provides a method clone().
> If clone is called the original object's headers are removed.
> The root cause of this is, that the class HeaderGroup has only one attribute
> (headers) which is a List.
> As clone does a shallow copy the List is not cloned (that is correct).
> But within the method clone(), the headers of the newly created clone are
> removed (by calling clear()) but they actually also clear the headers of the
> original object (since it is not a copy).
> So this leads to very tricky problems in code where the headers are essential
> to be available in the clone and in the original object.
> Original code:
> public Object clone() throws CloneNotSupportedException {
> HeaderGroup clone = (HeaderGroup) super.clone();
> clone.headers.clear();
> clone.headers.addAll(this.headers);
> return clone;
> }
> Corrected code:
> public Object clone() throws CloneNotSupportedException {
> HeaderGroup clone = (HeaderGroup) super.clone();
> //BUG: would also clear the headers original
> //clone.headers.clear();
> //clone.headers.addAll(this.headers);
> return clone;
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]