larryi 01/12/31 14:26:34 Modified: src/share/org/apache/tomcat/modules/generators StaticInterceptor.java Log: In preparation for Japanese resource strings, allow a character set for directory listings other than ISO-8859-1. Submitted by: Kazuhiro Kazama Some attributes and handling was added so locale and character set used for directory listings can be configured. Revision Changes Path 1.17 +61 -8 jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java Index: StaticInterceptor.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- StaticInterceptor.java 20 Dec 2001 03:38:36 -0000 1.16 +++ StaticInterceptor.java 31 Dec 2001 22:26:34 -0000 1.17 @@ -76,6 +76,8 @@ */ public class StaticInterceptor extends BaseInterceptor { int realFileNote=-1; + boolean useAcceptLanguage=true; + String charset=null; public StaticInterceptor() { } @@ -94,6 +96,14 @@ this.listings = listings; } + public void setUseAcceptLanguage(boolean use) { + useAcceptLanguage=use; + } + + public void setUseCharset(String charset) { + this.charset=charset; + } + public void engineInit(ContextManager cm) throws TomcatException { // if( debug>0 ) log("Engine init " ); @@ -120,6 +130,8 @@ dirHandler.setNoteId( realFileNote ); dirHandler.setContext( ctx ); dirHandler.setModule( this ); + dirHandler.setUseAcceptLanguage(useAcceptLanguage); + dirHandler.setCharset(charset); if (listings) ctx.addServlet( dirHandler ); } @@ -396,7 +408,10 @@ int realFileNote; int sbNote=0; Context context; - + Locale defLocale=null; + String defCharset=null; + StringManager defSM=null; + DirHandler() { // setOrigin( Handler.ORIGIN_INTERNAL ); name="tomcat.dirHandler"; @@ -409,16 +424,49 @@ public void setContext(Context ctx) { this.context=ctx; } + + public void setUseAcceptLanguage(boolean use) { + if( use ) { + defLocale=null; + defSM=null; + } else { + defLocale=Locale.getDefault(); + defSM=StringManager. + getManager("org.apache.tomcat.resources",defLocale); + } + } + + public void setCharset(String charset) { + defCharset=charset; + } public void doService(Request req, Response res) throws Exception { - // this is how get locale is implemented. Ugly, but it's in - // the next round of optimizations - String acceptL=req.getMimeHeaders().getHeader( "Accept-Language"); - Locale locale=AcceptLanguage.getLocale(acceptL);; - StringManager sm=StringManager. - getManager("org.apache.tomcat.resources",locale); + Locale locale; + StringManager sm; + String charset=null; + + // if default locale not specified, use Accept-Language header + if( defLocale == null) { + // this is how get locale is implemented. Ugly, but it's in + // the next round of optimizations + String acceptL=req.getMimeHeaders().getHeader( "Accept-Language"); + locale=AcceptLanguage.getLocale(acceptL); + sm=StringManager. + getManager("org.apache.tomcat.resources",locale); + } else { + locale=defLocale; + sm=defSM; + } + + if( defCharset != null ) { + if( "locale".equals(defCharset)) + charset=LocaleToCharsetMap.getCharset(locale); + else + charset=defCharset; + } + DateFormat dateFormat = new SimpleDateFormat(datePattern,locale ); @@ -468,7 +516,12 @@ } if (! inInclude) { - res.setContentType("text/html"); + if (charset == null || charset.equalsIgnoreCase("ISO-8859-1")) + res.setContentType("text/html"); + else { + res.setContentType("text/html; charset=" + charset); + res.setUsingWriter(true); + } buf.write("<html>\r\n"); buf.write("<head>\r\n"); buf.write("<title>");
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>