weaver      2004/09/08 13:46:45

  Modified:    portal/src/java/org/apache/jetspeed/localization/impl
                        LocalizationValveImpl.java
               portal/src/java/org/apache/jetspeed/engine/servlet
                        ServletRequestImpl.java
  Log:
  Fix l10n issue whose syptoms were the JSTL fmt tag not picking up the correct locale 
and whose cause was incorrect logic
  in ServletRequestImpl.getLocales() method
  
  Revision  Changes    Path
  1.6       +3 -2      
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/localization/impl/LocalizationValveImpl.java
  
  Index: LocalizationValveImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/localization/impl/LocalizationValveImpl.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LocalizationValveImpl.java        24 Aug 2004 14:24:56 -0000      1.5
  +++ LocalizationValveImpl.java        8 Sep 2004 20:46:45 -0000       1.6
  @@ -67,7 +67,8 @@
   
           request.setLocale(locale);
           
request.getRequest().setAttribute(RequestContext.PREFERED_LOCALE_SESSION_KEY, locale);
  -
  +        
request.getRequest().getSession().setAttribute(RequestContext.PREFERED_LOCALE_SESSION_KEY,
 locale);
  +       
           // Pass control to the next Valve in the Pipeline
           context.invokeNext(request);
   
  
  
  
  1.28      +59 -22    
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
  
  Index: ServletRequestImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- ServletRequestImpl.java   3 Sep 2004 19:45:32 -0000       1.27
  +++ ServletRequestImpl.java   8 Sep 2004 20:46:45 -0000       1.28
  @@ -25,25 +25,22 @@
   import java.util.Map;
   
   import javax.portlet.PortletRequest;
  -
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletRequestWrapper;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  -
   import org.apache.jetspeed.container.url.PortalURL;
   import org.apache.jetspeed.request.JetspeedRequestContext;
   import org.apache.jetspeed.request.RequestContext;
  -
   import org.apache.pluto.om.common.SecurityRole;
   import org.apache.pluto.om.common.SecurityRoleRef;
   import org.apache.pluto.om.common.SecurityRoleRefSet;
   import org.apache.pluto.om.common.SecurityRoleSet;
  -import org.apache.pluto.om.portlet.PortletDefinition;
   import org.apache.pluto.om.entity.PortletApplicationEntity;
   import org.apache.pluto.om.entity.PortletEntity;
   import org.apache.pluto.om.portlet.PortletApplicationDefinition;
  +import org.apache.pluto.om.portlet.PortletDefinition;
   import org.apache.pluto.om.window.PortletWindow;
   import org.apache.pluto.util.Enumerator;
   import org.apache.pluto.util.NamespaceMapper;
  @@ -58,6 +55,7 @@
    */
   public class ServletRequestImpl extends HttpServletRequestWrapper
   {
  +    public static final String ACCEPT_LANGUAGE = "Accept_Language";
       /** Logger */
       private static final Log log = LogFactory.getLog(ServletRequestImpl.class);
   
  @@ -70,7 +68,7 @@
       {
           super(servletRequest);
           nameSpaceMapper = NamespaceMapperAccess.getNamespaceMapper();
  -        this.portletWindow = window;
  +        this.portletWindow = window;        
       }
   
       protected HttpServletRequest _getHttpServletRequest()
  @@ -266,7 +264,9 @@
        */
       public Locale getLocale()
       {
  -        Locale preferedLocale = (Locale) 
getSession().getAttribute(RequestContext.PREFERED_LOCALE_SESSION_KEY);
  +        //Locale preferedLocale = (Locale) 
getSession().getAttribute(RequestContext.PREFERED_LOCALE_SESSION_KEY);
  +        RequestContext requestContext = (RequestContext) 
_getHttpServletRequest().getAttribute(RequestContext.REQUEST_PORTALENV);
  +        Locale preferedLocale = requestContext.getLocale();
           if (preferedLocale != null)
           {
               return preferedLocale;
  @@ -280,31 +280,50 @@
        */
       public Enumeration getLocales()
       {
  -        Locale preferedLocale = (Locale) 
getSession().getAttribute(RequestContext.PREFERED_LOCALE_SESSION_KEY);
  +        RequestContext requestContext = (RequestContext) 
_getHttpServletRequest().getAttribute(RequestContext.REQUEST_PORTALENV);
  +        Locale preferedLocale = requestContext.getLocale();
           if (preferedLocale != null)
           {
  -            ArrayList locales = new ArrayList();
  -            locales.add(preferedLocale);
  -            Enumeration enum = super.getLocales();
  -            while (enum.hasMoreElements())
  -            {
  -                locales.add(enum.nextElement());
  -            }
  -            Iterator i = locales.iterator();
  -            return new Enumerator(locales);
  +            return getLocaleEnum(preferedLocale);
           }
   
           return super.getLocales();
       }
   
       /**
  +     * <p>
  +     * getLocaleEnum
  +     * </p>
  +     *
  +     * @param preferedLocale
  +     * @return
  +     */
  +    protected Enumeration getLocaleEnum( Locale preferedLocale )
  +    {
  +        ArrayList locales = new ArrayList();
  +        locales.add(preferedLocale);
  +        Enumeration enum = super.getLocales();
  +        while (enum.hasMoreElements())
  +        {
  +            locales.add(enum.nextElement());
  +        }
  +        Iterator i = locales.iterator();
  +        return new Enumerator(locales);
  +    }
  +
  +    /**
        * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String)
        */
       public String getHeader( String name )
       {
  -        // TODO: replace accept-language header
  -
  -        return super.getHeader(name);
  +        if(name.equals(ACCEPT_LANGUAGE))
  +        {
  +            return getLocale().getLanguage();   
  +        }
  +        else
  +        {
  +            return super.getHeader(name);
  +        }
       }
   
       /**
  @@ -312,9 +331,15 @@
        */
       public Enumeration getHeaders( String name )
       {
  -        // TODO: replace accept-language header
  +        if(name.equals(ACCEPT_LANGUAGE))
  +        {      
  +            return getLocaleEnum(getLocale());         
  +        }
  +        else
  +        {
  +            return super.getHeaders(name);
  +        }        
   
  -        return super.getHeaders(name);
       }
   
       /**
  @@ -349,5 +374,17 @@
               }
           }
           super.setAttribute(name, value);
  +    }
  +    /**
  +     * <p>
  +     * getHeaderNames
  +     * </p>
  +     *
  +     * @see javax.servlet.http.HttpServletRequest#getHeaderNames()
  +     * @return
  +     */
  +    public Enumeration getHeaderNames()
  +    {
  +        return super.getHeaderNames();
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to