portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shinsuke SUGAYA <shins...@yahoo.co.jp>
Subject Re: cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/util/parser DefaultJetspeedParameterParser.java
Date Sat, 15 Feb 2003 04:57:10 GMT
Hi all,

I have Japanese(L10n) Jetspeed project at sourceforge.jp in Japan.
The target of this project is to add a feature/fix for Japanese environment.
DefaultJetspeedParameterParser and JetspeedTemplatePage patch were created
as I18n fix in the project. I describe it below.

Jetspeed 1.4b3 has 2 issue:

 1) The page encoding is specified by content.defaultencoding in JetspeedResources.properties.
    Applying the JetspeedTemplatePage patch, Jetspeed uses the encoding by the following
    priorities.

     1. character-set parameter in media.xreg
     2. content.defaultencoding in JetspeedResources.properties
     3. UTF-8

    Using this encoding order, Jetspeed uses UTF-8 when media-type is text/html.
    Therefore Jetspeed can display a multibyte character(ex. Japanese) correctly in the
    default environment. (For Jetspeed 1.4b3, user must change content.defaultencoding
    in order to display the multibyte character correctly.)

 2) The form data is not parsed correctly.
    For example, in the HelloVelocity portlet, a multibyte character is displayed as
    "?" or garbage if user submits it. So the portlet developer needs to add a code
    for handling the correct encoding into the portlet. The cause is to parse the form
    data by 8859_1. Therefore, using DefaultJetspeedParameterParser, the form data
    is parsed by correct encoding.(The portlet developer does not need to add the special
    code) DefaultJetspeedParameterParser applies the following priorities when determining
    a encoding information.

     1. the character encoding used in the body of the request.
     2. character-set parameter in media.xreg
     3. content.defaultencoding in JetspeedResources.properties
     4. US-ASCII

    In many cases, it will use the character-set parameter in media.xreg.

 Please let me know if you have any comment about DefaultJetspeedParameterParser and
 JetspeedTemplatePage patch.

I think that Jetspeed has the I18n issues, such as #14464, #13286(Please fix this bugzilla
bugs.
I attached info for fixing it.) and the L10n properties file(since all messages are not picked
up
to the properties file, I cannot localize Jetspeed...).

Japanese Jetspeed project would like to contribute to Jetspeed from the point of view of I18n
and L10n.

Best regards,
 shinsuke
--
Jetspeed for Japanese (sorry, Japanese only...)
 http://sourceforge.jp/projects/jetspeed-japan/


taylor@apache.org wrote:
> taylor      2003/02/12 21:56:02
> 
>   Modified:    src/java/org/apache/jetspeed/modules/pages
>                         JetspeedTemplatePage.java
>   Added:       src/java/org/apache/jetspeed/util/parser
>                         DefaultJetspeedParameterParser.java
>   Log:
>   Added new Parameter Parser for i18n support
>   Patch to JetspeedTemplatePage for i18n support
>   
>   Revision  Changes    Path
>   1.20      +16 -3     jakarta-jetspeed/src/java/org/apache/jetspeed/modules/pages/JetspeedTemplatePage.java
>   
>   Index: JetspeedTemplatePage.java
>   ===================================================================
>   RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/pages/JetspeedTemplatePage.java,v
>   retrieving revision 1.19
>   retrieving revision 1.20
>   diff -u -r1.19 -r1.20
>   --- JetspeedTemplatePage.java	11 Nov 2002 13:01:17 -0000	1.19
>   +++ JetspeedTemplatePage.java	13 Feb 2003 05:56:00 -0000	1.20
>   @@ -68,6 +68,9 @@
>    import org.apache.turbine.services.*;
>    
>    // Jetspeed Classes
>   +import org.apache.jetspeed.util.MimeType;
>   +import org.apache.jetspeed.om.registry.MediaTypeEntry;
>   +import org.apache.jetspeed.services.Registry;
>    import org.apache.jetspeed.capability.CapabilityMap;
>    import org.apache.jetspeed.services.TemplateLocator;
>    import org.apache.jetspeed.services.rundata.JetspeedRunData;
>   @@ -156,8 +159,18 @@
>    
>            //Set the ContentType of the page
>            CapabilityMap cm = ((JetspeedRunData)data).getCapability();
>   -        data.setContentType( cm.getPreferredType().getContentType() );
>   -        data.setCharSet( JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY,"utf-8")
);
>   +        MimeType mime = cm.getPreferredType();
>   +        String characterSet = JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY,"utf-8");
>   +        data.setContentType( mime.getContentType());
>   +        if ( mime != null )
>   +        {
>   +            MediaTypeEntry media = (MediaTypeEntry)Registry.getEntry(Registry.MEDIA_TYPE,
mime.getCode());
>   +            if ( media != null && media.getCharacterSet() != null)
>   +            {
>   +                characterSet = media.getCharacterSet();
>   +            }
>   +        }
>   +        data.setCharSet( characterSet );
>    
>            if (Log.getLogger().isDebugEnabled())
>            {
>   
>   
>   
>   1.1                  jakarta-jetspeed/src/java/org/apache/jetspeed/util/parser/DefaultJetspeedParameterParser.java
>   
>   Index: DefaultJetspeedParameterParser.java
>   ===================================================================
>   /* ====================================================================
>    * The Apache Software License, Version 1.1
>    *
>    * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
>    * reserved.
>    *
>    * Redistribution and use in source and binary forms, with or without
>    * modification, are permitted provided that the following conditions
>    * are met:
>    *
>    * 1. Redistributions of source code must retain the above copyright
>    *    notice, this list of conditions and the following disclaimer.
>    *
>    * 2. Redistributions in binary form must reproduce the above copyright
>    *    notice, this list of conditions and the following disclaimer in
>    *    the documentation and/or other materials provided with the
>    *    distribution.
>    *
>    * 3. The end-user documentation included with the redistribution,
>    *    if any, must include the following acknowledgment:
>    *       "This product includes software developed by the
>    *        Apache Software Foundation (http://www.apache.org/)."
>    *    Alternately, this acknowledgment may appear in the software itself,
>    *    if and wherever such third-party acknowledgments normally appear.
>    *
>    * 4. The names "Apache" and "Apache Software Foundation" and
>    *     "Apache Jetspeed" must not be used to endorse or promote products
>    *    derived from this software without prior written permission. For
>    *    written permission, please contact apache@apache.org.
>    *
>    * 5. Products derived from this software may not be called "Apache" or
>    *    "Apache Jetspeed", nor may "Apache" appear in their name, without
>    *    prior written permission of the Apache Software Foundation.
>    *
>    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
>    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
>    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
>    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>    * SUCH DAMAGE.
>    * ====================================================================
>    *
>    * This software consists of voluntary contributions made by many
>    * individuals on behalf of the Apache Software Foundation.  For more
>    * information on the Apache Software Foundation, please see
>    * <http://www.apache.org/>.
>    */
>   package org.apache.jetspeed.util.parser;
>   
>   import javax.servlet.http.HttpServletRequest;
>   
>   import org.apache.turbine.util.Log;
>   import org.apache.turbine.util.parser.DefaultParameterParser;
>   
>   import org.apache.jetspeed.om.registry.MediaTypeEntry;
>   import org.apache.jetspeed.services.Registry;
>   import org.apache.jetspeed.capability.CapabilityMap;
>   import org.apache.jetspeed.capability.CapabilityMapFactory;
>   import org.apache.jetspeed.services.resources.JetspeedResources;
>   
>   /**
>    * DefaultJetspeedParameterParser is a utility object to handle parsing and
>    * retrieving the data passed via the GET/POST/PATH_INFO arguments.
>    *
>    * <p>NOTE: The name= portion of a name=value pair may be converted
>    * to lowercase or uppercase when the object is initialized and when
>    * new data is added.  This behaviour is determined by the url.case.folding
>    * property in TurbineResources.properties.  Adding a name/value pair may
>    * overwrite existing name=value pairs if the names match:
>    *
>    * <pre>
>    * ParameterParser pp = data.getParameters();
>    * pp.add("ERROR",1);
>    * pp.add("eRrOr",2);
>    * int result = pp.getInt("ERROR");
>    * </pre>
>    *
>    * In the above example, result is 2.
>    *
>    * @author <a href="mailto:shinsuke@yahoo.co.jp">Shinsuke SUGAYA</a>
>   */
>   public class DefaultJetspeedParameterParser extends DefaultParameterParser {
>   
>       /**
>        * Sets the servlet request to be parser.  This requires a
>        * valid HttpServletRequest object.  It will attempt to parse out
>        * the GET/POST/PATH_INFO data and store the data into a Hashtable.
>        * There are convenience methods for retrieving the data as a
>        * number of different datatypes.  The PATH_INFO data must be a
>        * URLEncoded() string.
>        *
>        * <p>To add name/value pairs to this set of parameters, use the
>        * <code>add()</code> methods.
>        *
>        * @param req An HttpServletRequest.
>        */
>       public void setRequest(HttpServletRequest req)
>       {
>           super.setRequest(req);
>   
>           String enc = JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY,"US-ASCII");
>           CapabilityMap cm = CapabilityMapFactory.getCapabilityMap( req.getHeader("User-Agent")
);
>           String mimeCode = cm.getPreferredType().getCode();
>           if ( mimeCode != null )
>           {
>               MediaTypeEntry media = (MediaTypeEntry)Registry.getEntry(Registry.MEDIA_TYPE,
mimeCode);
>               if ( media != null && media.getCharacterSet() != null)
>               {
>                   enc = media.getCharacterSet();
>               }
>   
>           }
>           if ( req.getCharacterEncoding() != null )
>           {
>               enc = req.getCharacterEncoding();
>           }
>           setCharacterEncoding( enc );
>       }
>   
>       /**
>        * Return a String for the given name.  If the name does not
>        * exist, return null.
>        *
>        * @param name A String with the name.
>        * @return A String.
>        */
>       public String getString(String name)
>       {
>           String str = super.getString(name);
>           if (str == null) return null;
>   
>           try
>           {
>               return new String(str.getBytes("8859_1"), getCharacterEncoding());
>           }
>           catch (Exception e)
>           {
>               Log.warn("DefaultJetspeedParameterParser: Exception: " + e.toString());
>               return str;
>           }
>   
>       }
>   
>   }
>   
>   
>   
>   
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org
> 


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/


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


Mime
View raw message