[
https://issues.apache.org/jira/browse/HTTPCLIENT-904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12799166#action_12799166
]
Ortwin Glück commented on HTTPCLIENT-904:
-----------------------------------------
Oleg, the point is that text.getBytes(charset.name()) can never throw the
UnsupportedEncodingException. Because it's not possible to obtain Charset
instances of unsupported encodings. However due to API compatibility we have to
leave the Exception declararion in place unfortunately anyway.
> HttpMime StringBody constructor throws specification unnecessarily declares
> UnsupportedEncodingException
> --------------------------------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-904
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-904
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpMime
> Affects Versions: 4.0.1
> Reporter: Mark Sinke
>
> The string body constructors that take a charset unnecessarily throw
> UnsupportedEncodingException - if you have Charset, the encoding is by
> definition supported:
> public StringBody(
> final String text,
> final String mimeType,
> Charset charset) throws UnsupportedEncodingException {
> super(mimeType);
> if (text == null) {
> throw new IllegalArgumentException("Text may not be null");
> }
> if (charset == null) {
> charset = Charset.defaultCharset();
> }
> this.content = text.getBytes(charset.name());
> this.charset = charset;
> }
>
> public StringBody(final String text, Charset charset) throws
> UnsupportedEncodingException {
> this(text, "text/plain", charset);
> }
>
> I suggest to change this to
> public StringBody(
> final String text,
> final String mimeType,
> Charset charset) {
> super(mimeType);
> if (text == null) {
> throw new IllegalArgumentException("Text may not be null");
> }
> if (charset == null) {
> charset = Charset.defaultCharset();
> }
> this.content = text.getBytes(charset);
> this.charset = charset;
> }
>
> public StringBody(final String text, Charset charset) {
> this(text, "text/plain", charset);
> }
> The important change is to change
> this.content = text.getBytes(charset.name());
> to
> this.content = text.getBytes(charset);
> which will not throw and hence the throws specifications can be removed.
--
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]