[ 
https://issues.apache.org/jira/browse/HTTPCORE-122?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12547594
 ] 

Roland Weber commented on HTTPCORE-122:
---------------------------------------

Hi Oleg,

whether there is an underlying CharArrayBuffer or not depends on the kind of 
header one iterates over. Conversion is needed in one way or another, String to 
CAB or vice versa.
For the HeaderElementIterator, parsing is delegated to the parser framework, 
which internally uses CAB. It therefore makes sense to do the conversion in 
that direction. Otherwise, headers with an underlying CAB would be converted to 
String and back to a new CAB. I don't see a similar advantage for the 
BasicTokenIterator, which parses the strings directly. There is no continuation 
line joining when splitting header values.
The output of the TokenIterator are strings. IIRC, the implementation of 
java.lang.String.substring is optimized and reuses the char array of the 
original string, while conversion from CAB to String requires copying of the 
substring characters. All in all, I don't see what would be gained from using 
CAB in the BasicTokenIterator.
If you prefer that, I can rewrite the code to use CAB next weekend. In general, 
I don't expect a penalty. In most situations, the header will be that of a 
received message and therefore have a CAB. Converting substrings to String for 
each token will hardly be cheaper or more expensive than converting the whole 
header value once.

When we upgrade the JDK requirement for HttpCore 4.1, we can rewrite much of 
the parsing code to use java.lang.CharSequence and avoid the conversions 
altogether. Too bad they didn't have that idea for Java 1.3.

cheers,
  Roland


> new interface TokenIterator
> ---------------------------
>
>                 Key: HTTPCORE-122
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-122
>             Project: HttpComponents Core
>          Issue Type: Sub-task
>          Components: HttpCore
>    Affects Versions: 4.0-alpha5
>            Reporter: Roland Weber
>            Assignee: Roland Weber
>            Priority: Minor
>             Fix For: 4.0-beta1
>
>         Attachments: 2k7-11-30-token-iter.txt
>
>
> As discussed for HTTPCORE-112, a new interface and implementation for 
> iterating over String tokens in a header value would be useful.
> The implementation can be based on the HeaderIterator introduced with 
> HTTPCORE-120.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to