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]