tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vic <...@friendvu.com>
Subject Re: IP issues
Date Wed, 12 Jan 2005 12:51:12 GMT

Is it all cleared up now?

tia,
.V


Remy Maucherat wrote:

> Davanum Srinivas wrote:
>
>> +1 to rewrite the code and go past this problem.
>
>
> Since the consensus was on rewriting/removing, I have done the following:
>
> - removed the locale to encoding list (which will have to be 
> reconstructed based on contributions); this opens up a relatively 
> small compatibility issue with some web applications (in particluar, 
> Servlet 2.3 webapps assuming setLocale would magically set the 
> encoding, and Servlet 2.4 webapps without proper locale to encoding 
> declarations)
>
> - replaced the original "algorithm" with this one:
>     public String getCharset(Locale locale) {
>         // Match full language_country_variant first, then 
> language_country,
>         // then language only
>         String charset = map.getProperty(locale.toString());
>         if (charset == null) {
>             charset = map.getProperty(locale.getLanguage() + "_"
>                     + locale.getCountry());
>             if (charset == null) {
>                 charset = map.getProperty(locale.getLanguage());
>             }
>         }
>         return (charset);
>     }
>
> - removed the other file (LocaleToCharsetMap), which isn't used in 
> Tomcat 5.x
>
> The old tainted Tomcat 3 version is attached (LocaleToCharsetMap).
> The version now used in TC 5.5 is attached as well (CharsetMapper). 
> The class had been heavily rewritten by Craig already in the Tomcat 
> 4.0 branch, and the locale->encoding list was externalized to a file 
> (good move by Craig, as usual).
>
> This should hopefully clear the problem.
>
> Rémy
>
>> On Wed, 5 Jan 2005 01:40:13 +0100, Oliver Zeigermann
>> <oliver.zeigermann@gmail.com> wrote:
>>
>>> On Tue, 4 Jan 2005 18:59:16 -0500 (EST), Henri Yandell
>>> <bayard@generationjava.com> >
>>>
>>>> If the code is legally intricate, ie) ours but not under his CLA, 
>>>> then it
>>>> seems quite easy for anyone to rewrite the method based on the method
>>>> signature and the JDK file.
>>>
>>>
>>> Looking at the code it really would be hard to rewrite it - not
>>> because it is too complicated, but because it is pretty hard to think
>>> of another way of doing it as it is so obvious.
>>>
>>> Oliver
>>
>
>------------------------------------------------------------------------
>
>/*
> *  Copyright 1999-2004 The Apache Software Foundation
> *
> *  Licensed under the Apache License, Version 2.0 (the "License");
> *  you may not use this file except in compliance with the License.
> *  You may obtain a copy of the License at
> *
> *      http://www.apache.org/licenses/LICENSE-2.0
> *
> *  Unless required by applicable law or agreed to in writing, software
> *  distributed under the License is distributed on an "AS IS" BASIS,
> *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> *  See the License for the specific language governing permissions and
> *  limitations under the License.
> */
>
>package org.apache.tomcat.util.http;
>
>import java.util.*;
>
>/** 
> * A mapping to determine the (somewhat arbitrarily) preferred charset for 
> * a given locale.  Supports all locales recognized in JDK 1.1.
> * 
> * @author Jason Hunter
> */
>public class LocaleToCharsetMap {
>
>  private static Hashtable map;
>
>  static {
>    map = new Hashtable();
>
>    map.put("ar", "ISO-8859-6");
>    map.put("be", "ISO-8859-5");
>    map.put("bg", "ISO-8859-5");
>    map.put("ca", "ISO-8859-1");
>    map.put("cs", "ISO-8859-2");
>    map.put("da", "ISO-8859-1");
>    map.put("de", "ISO-8859-1");
>    map.put("el", "ISO-8859-7");
>    map.put("en", "ISO-8859-1");
>    map.put("es", "ISO-8859-1");
>    map.put("et", "ISO-8859-1");
>    map.put("fi", "ISO-8859-1");
>    map.put("fr", "ISO-8859-1");
>    map.put("hr", "ISO-8859-2");
>    map.put("hu", "ISO-8859-2");
>    map.put("is", "ISO-8859-1");
>    map.put("it", "ISO-8859-1");
>    map.put("iw", "ISO-8859-8");
>    map.put("ja", "Shift_JIS");
>    map.put("ko", "EUC-KR");     // Requires JDK 1.1.6
>    map.put("lt", "ISO-8859-2");
>    map.put("lv", "ISO-8859-2");
>    map.put("mk", "ISO-8859-5");
>    map.put("nl", "ISO-8859-1");
>    map.put("no", "ISO-8859-1");
>    map.put("pl", "ISO-8859-2");
>    map.put("pt", "ISO-8859-1");
>    map.put("ro", "ISO-8859-2");
>    map.put("ru", "ISO-8859-5");
>    map.put("sh", "ISO-8859-5");
>    map.put("sk", "ISO-8859-2");
>    map.put("sl", "ISO-8859-2");
>    map.put("sq", "ISO-8859-2");
>    map.put("sr", "ISO-8859-5");
>    map.put("sv", "ISO-8859-1");
>    map.put("tr", "ISO-8859-9");
>    map.put("uk", "ISO-8859-5");
>    map.put("zh", "GB2312");
>    map.put("zh_TW", "Big5");
>
>  }
>
>  /**
>   * Gets the preferred charset for the given locale, or null if the locale
>   * is not recognized.
>   *
>   * @param loc the locale
>   * @return the preferred charset
>   */
>  public static String getCharset(Locale loc) {
>    String charset;
>
>    // Try for an full name match (may include country)
>    charset = (String) map.get(loc.toString());
>    if (charset != null) return charset;
>
>    // If a full name didn't match, try just the language
>    charset = (String) map.get(loc.getLanguage());
>    return charset;  // may be null
>  }
>}
>  
>
>------------------------------------------------------------------------
>
>/*
> * Copyright 1999,2004 The Apache Software Foundation.
> * 
> * Licensed under the Apache License, Version 2.0 (the "License");
> * you may not use this file except in compliance with the License.
> * You may obtain a copy of the License at
> * 
> *      http://www.apache.org/licenses/LICENSE-2.0
> * 
> * Unless required by applicable law or agreed to in writing, software
> * distributed under the License is distributed on an "AS IS" BASIS,
> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> * See the License for the specific language governing permissions and
> * limitations under the License.
> */
>
>package org.apache.catalina.util;
>
>
>import java.io.InputStream;
>import java.util.Locale;
>import java.util.Properties;
>
>
>
>/**
> * Utility class that attempts to map from a Locale to the corresponding
> * character set to be used for interpreting input text (or generating
> * output text) when the Content-Type header does not include one.  You
> * can customize the behavior of this class by modifying the mapping data
> * it loads, or by subclassing it (to change the algorithm) and then using
> * your own version for a particular web application.
> *
> * @author Craig R. McClanahan
> * @version $Date: 2005/01/05 10:00:45 $ $Version$
> */
>
>public class CharsetMapper {
>
>
>    // ---------------------------------------------------- Manifest Constants
>
>
>    /**
>     * Default properties resource name.
>     */
>    public static final String DEFAULT_RESOURCE =
>      "/org/apache/catalina/util/CharsetMapperDefault.properties";
>
>
>    // ---------------------------------------------------------- Constructors
>
>
>    /**
>     * Construct a new CharsetMapper using the default properties resource.
>     */
>    public CharsetMapper() {
>        this(DEFAULT_RESOURCE);
>    }
>
>
>    /**
>     * Construct a new CharsetMapper using the specified properties resource.
>     *
>     * @param name Name of a properties resource to be loaded
>     *
>     * @exception IllegalArgumentException if the specified properties
>     *  resource could not be loaded for any reason.
>     */
>    public CharsetMapper(String name) {
>        try {
>            InputStream stream =
>              this.getClass().getResourceAsStream(name);
>            map.load(stream);
>            stream.close();
>        } catch (Throwable t) {
>            throw new IllegalArgumentException(t.toString());
>        }
>    }
>
>
>    // ---------------------------------------------------- Instance Variables
>
>
>    /**
>     * The mapping properties that have been initialized from the specified or
>     * default properties resource.
>     */
>    private Properties map = new Properties();
>
>
>    // ------------------------------------------------------- Public Methods
>
>
>    /**
>     * Calculate the name of a character set to be assumed, given the specified
>     * Locale and the absence of a character set specified as part of the
>     * content type header.
>     *
>     * @param locale The locale for which to calculate a character set
>     */
>    public String getCharset(Locale locale) {
>        // Match full language_country_variant first, then language_country, 
>        // then language only
>        String charset = map.getProperty(locale.toString());
>        if (charset == null) {
>            charset = map.getProperty(locale.getLanguage() + "_" 
>                    + locale.getCountry());
>            if (charset == null) {
>                charset = map.getProperty(locale.getLanguage());
>            }
>        }
>        return (charset);
>    }
>
>    
>    /**
>     * The deployment descriptor can have a
>     * locale-encoding-mapping-list element which describes the
>     * webapp's desired mapping from locale to charset.  This method
>     * gets called when processing the web.xml file for a context
>     *
>     * @param locale The locale for a character set
>     * @param charset The charset to be associated with the locale
>     */
>    public void addCharsetMappingFromDeploymentDescriptor(String locale, String charset)
{
>        map.put(locale, charset);
>    }
>
>
>}
>
>  
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
>


-- 
RiA-SoA w/JDNC <http://www.SandraSF.com> forums
- help develop a community
My blog <http://www.sandrasf.com/adminBlog>


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Mime
View raw message