Re: org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() does not use Charset
On Tue, Mar 6, 2018 at 11:01 PM, Apachewrote: > But I would expect getContentType to return a mime type, not a charset. > A content type can contain a charset parameter, for example: Content-type: text/plain; charset=us-ascii See https://www.w3.org/Protocols/rfc1341/4_Content-Type.html Gary > Ralph > > > On Mar 6, 2018, at 9:17 PM, Gary Gregory wrote: > > > >> On Tue, Mar 6, 2018 at 6:01 PM, Remko Popma > wrote: > >> > >> Sorry, I don’t follow. > >> Why not get the appender’s layout and get the charset by calling > >> getCharset()? > >> > > > > Right now, I have this ugly non-OO code: > > > >final Layout layout = > > appender.getLayout(); > >final Charset charset; > >if (layout instanceof StringLayout) { > >charset = ((StringLayout) layout).getCharset(); > >} else { > >charset = > > ContentType.parse(layout.getContentType()).getCharset(); > >} > > > > If getContentType() always returned the right thing, I would not need a > > conditional. > > > > Gary > > > > > >> > >> > >> > >>> On Mar 7, 2018, at 7:21, Gary Gregory wrote: > >>> > >>> Here is my current use case: I'd like to be able to query > >> getContentType() > >>> on an FILE appender (File, RollingFile, RAF, ...) and get the proper > >>> charset if the layout for that appender defines it. > >>> > >>> Gary > >>> > On Tue, Mar 6, 2018 at 3:16 PM, Matt Sicker wrote: > > Not all MIME types actually use the encoding parameter. For example, > "application/json;charset=UTF-8" is technically an invalid MIME type > >> (it's > supposed to be "application/json", and it's assumed to be UTF-8 > because > that's the only official charset for JSON). Providing the charset > separately makes semantic sense to me. > > > On 6 March 2018 at 16:04, Gary Gregory > wrote: > > > > Right. AbstractStringLayout says: > > > > @Override > > public Charset getCharset() { > > return charset; > > } > > > > /** > >* @return The default content type for Strings. > >*/ > > @Override > > public String getContentType() { > > return "text/plain"; > > } > > > > Gary > > > > > > > > On Tue, Mar 6, 2018 at 2:52 PM, Remko Popma > wrote: > > > >> (Away from pc) by “use”, do you mean that the string returned by > >> getContentType() doesn’t include a charset? > >> > >> From memory, I remember the only place this method is used is in the > >> HtmlAppender. Are there other places? > >> > >> (Shameless plug) Every java main() method deserves > >> http://picocli.info > >> > >>> On Mar 7, 2018, at 1:37, Gary Gregory > wrote: > >>> > >>> Hi All, > >>> > >>> It looks > >>> like org.apache.logging.log4j.core.layout.AbstractStringLayout. > >> getContentType() > >>> does NOT use its charset. > >>> > >>> Can anyone foresee a problem with fixing this? > >>> > >>> Gary > >> > > > > > > -- > Matt Sicker > > >> > > >
Re: org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() does not use Charset
But I would expect getContentType to return a mime type, not a charset. Ralph > On Mar 6, 2018, at 9:17 PM, Gary Gregorywrote: > >> On Tue, Mar 6, 2018 at 6:01 PM, Remko Popma wrote: >> >> Sorry, I don’t follow. >> Why not get the appender’s layout and get the charset by calling >> getCharset()? >> > > Right now, I have this ugly non-OO code: > >final Layout layout = > appender.getLayout(); >final Charset charset; >if (layout instanceof StringLayout) { >charset = ((StringLayout) layout).getCharset(); >} else { >charset = > ContentType.parse(layout.getContentType()).getCharset(); >} > > If getContentType() always returned the right thing, I would not need a > conditional. > > Gary > > >> >> >> >>> On Mar 7, 2018, at 7:21, Gary Gregory wrote: >>> >>> Here is my current use case: I'd like to be able to query >> getContentType() >>> on an FILE appender (File, RollingFile, RAF, ...) and get the proper >>> charset if the layout for that appender defines it. >>> >>> Gary >>> On Tue, Mar 6, 2018 at 3:16 PM, Matt Sicker wrote: Not all MIME types actually use the encoding parameter. For example, "application/json;charset=UTF-8" is technically an invalid MIME type >> (it's supposed to be "application/json", and it's assumed to be UTF-8 because that's the only official charset for JSON). Providing the charset separately makes semantic sense to me. > On 6 March 2018 at 16:04, Gary Gregory wrote: > > Right. AbstractStringLayout says: > > @Override > public Charset getCharset() { > return charset; > } > > /** >* @return The default content type for Strings. >*/ > @Override > public String getContentType() { > return "text/plain"; > } > > Gary > > > > On Tue, Mar 6, 2018 at 2:52 PM, Remko Popma wrote: > >> (Away from pc) by “use”, do you mean that the string returned by >> getContentType() doesn’t include a charset? >> >> From memory, I remember the only place this method is used is in the >> HtmlAppender. Are there other places? >> >> (Shameless plug) Every java main() method deserves >> http://picocli.info >> >>> On Mar 7, 2018, at 1:37, Gary Gregory wrote: >>> >>> Hi All, >>> >>> It looks >>> like org.apache.logging.log4j.core.layout.AbstractStringLayout. >> getContentType() >>> does NOT use its charset. >>> >>> Can anyone foresee a problem with fixing this? >>> >>> Gary >> > -- Matt Sicker >>
Re: org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() does not use Charset
On Tue, Mar 6, 2018 at 6:01 PM, Remko Popmawrote: > Sorry, I don’t follow. > Why not get the appender’s layout and get the charset by calling > getCharset()? > Right now, I have this ugly non-OO code: final Layout layout = appender.getLayout(); final Charset charset; if (layout instanceof StringLayout) { charset = ((StringLayout) layout).getCharset(); } else { charset = ContentType.parse(layout.getContentType()).getCharset(); } If getContentType() always returned the right thing, I would not need a conditional. Gary > > > > > On Mar 7, 2018, at 7:21, Gary Gregory wrote: > > > > Here is my current use case: I'd like to be able to query > getContentType() > > on an FILE appender (File, RollingFile, RAF, ...) and get the proper > > charset if the layout for that appender defines it. > > > > Gary > > > >> On Tue, Mar 6, 2018 at 3:16 PM, Matt Sicker wrote: > >> > >> Not all MIME types actually use the encoding parameter. For example, > >> "application/json;charset=UTF-8" is technically an invalid MIME type > (it's > >> supposed to be "application/json", and it's assumed to be UTF-8 because > >> that's the only official charset for JSON). Providing the charset > >> separately makes semantic sense to me. > >> > >>> On 6 March 2018 at 16:04, Gary Gregory wrote: > >>> > >>> Right. AbstractStringLayout says: > >>> > >>>@Override > >>>public Charset getCharset() { > >>>return charset; > >>>} > >>> > >>>/** > >>> * @return The default content type for Strings. > >>> */ > >>>@Override > >>>public String getContentType() { > >>>return "text/plain"; > >>>} > >>> > >>> Gary > >>> > >>> > >>> > >>> On Tue, Mar 6, 2018 at 2:52 PM, Remko Popma > >> wrote: > >>> > (Away from pc) by “use”, do you mean that the string returned by > getContentType() doesn’t include a charset? > > From memory, I remember the only place this method is used is in the > HtmlAppender. Are there other places? > > (Shameless plug) Every java main() method deserves > http://picocli.info > > > On Mar 7, 2018, at 1:37, Gary Gregory > >> wrote: > > > > Hi All, > > > > It looks > > like org.apache.logging.log4j.core.layout.AbstractStringLayout. > getContentType() > > does NOT use its charset. > > > > Can anyone foresee a problem with fixing this? > > > > Gary > > >>> > >> > >> > >> > >> -- > >> Matt Sicker > >> >
Re: org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() does not use Charset
Sorry, I don’t follow. Why not get the appender’s layout and get the charset by calling getCharset()? > On Mar 7, 2018, at 7:21, Gary Gregorywrote: > > Here is my current use case: I'd like to be able to query getContentType() > on an FILE appender (File, RollingFile, RAF, ...) and get the proper > charset if the layout for that appender defines it. > > Gary > >> On Tue, Mar 6, 2018 at 3:16 PM, Matt Sicker wrote: >> >> Not all MIME types actually use the encoding parameter. For example, >> "application/json;charset=UTF-8" is technically an invalid MIME type (it's >> supposed to be "application/json", and it's assumed to be UTF-8 because >> that's the only official charset for JSON). Providing the charset >> separately makes semantic sense to me. >> >>> On 6 March 2018 at 16:04, Gary Gregory wrote: >>> >>> Right. AbstractStringLayout says: >>> >>>@Override >>>public Charset getCharset() { >>>return charset; >>>} >>> >>>/** >>> * @return The default content type for Strings. >>> */ >>>@Override >>>public String getContentType() { >>>return "text/plain"; >>>} >>> >>> Gary >>> >>> >>> >>> On Tue, Mar 6, 2018 at 2:52 PM, Remko Popma >> wrote: >>> (Away from pc) by “use”, do you mean that the string returned by getContentType() doesn’t include a charset? From memory, I remember the only place this method is used is in the HtmlAppender. Are there other places? (Shameless plug) Every java main() method deserves http://picocli.info > On Mar 7, 2018, at 1:37, Gary Gregory >> wrote: > > Hi All, > > It looks > like org.apache.logging.log4j.core.layout.AbstractStringLayout. getContentType() > does NOT use its charset. > > Can anyone foresee a problem with fixing this? > > Gary >>> >> >> >> >> -- >> Matt Sicker >>
Re: org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() does not use Charset
Right. AbstractStringLayout says: @Override public Charset getCharset() { return charset; } /** * @return The default content type for Strings. */ @Override public String getContentType() { return "text/plain"; } Gary On Tue, Mar 6, 2018 at 2:52 PM, Remko Popmawrote: > (Away from pc) by “use”, do you mean that the string returned by > getContentType() doesn’t include a charset? > > From memory, I remember the only place this method is used is in the > HtmlAppender. Are there other places? > > (Shameless plug) Every java main() method deserves http://picocli.info > > > On Mar 7, 2018, at 1:37, Gary Gregory wrote: > > > > Hi All, > > > > It looks > > like org.apache.logging.log4j.core.layout.AbstractStringLayout. > getContentType() > > does NOT use its charset. > > > > Can anyone foresee a problem with fixing this? > > > > Gary >
Re: org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() does not use Charset
(Away from pc) by “use”, do you mean that the string returned by getContentType() doesn’t include a charset? From memory, I remember the only place this method is used is in the HtmlAppender. Are there other places? (Shameless plug) Every java main() method deserves http://picocli.info > On Mar 7, 2018, at 1:37, Gary Gregorywrote: > > Hi All, > > It looks > like > org.apache.logging.log4j.core.layout.AbstractStringLayout.getContentType() > does NOT use its charset. > > Can anyone foresee a problem with fixing this? > > Gary