You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by we...@apache.org on 2004/07/13 23:01:30 UTC
cvs commit: jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request JetspeedRequestContext.java
weaver 2004/07/13 14:01:30
Modified: portal/src/java/org/apache/jetspeed/request
JetspeedRequestContext.java
Log:
Added a getPreferedLanguage(PortletDefinition) method to assist in retreiving localized title information.
See: http://nagoya.apache.org/jira/browse/JS2-95
Revision Changes Path
1.20 +148 -75 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
Index: JetspeedRequestContext.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- JetspeedRequestContext.java 25 May 2004 01:37:12 -0000 1.19
+++ JetspeedRequestContext.java 13 Jul 2004 21:01:30 -0000 1.20
@@ -15,41 +15,52 @@
*/
package org.apache.jetspeed.request;
+import java.util.Enumeration;
+import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.StringTokenizer;
+import java.util.WeakHashMap;
import javax.security.auth.Subject;
+import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.ServletConfig;
+import javax.servlet.http.HttpSession;
-import org.apache.jetspeed.profiler.ProfileLocator;
import org.apache.jetspeed.aggregator.ContentDispatcher;
-import org.apache.jetspeed.om.page.Page;
-import org.apache.jetspeed.services.factory.FactoryManager;
import org.apache.jetspeed.capabilities.CapabilityMap;
import org.apache.jetspeed.container.session.NavigationalState;
import org.apache.jetspeed.container.session.NavigationalStateComponent;
import org.apache.jetspeed.container.url.PortalURL;
import org.apache.jetspeed.engine.servlet.ServletRequestFactory;
import org.apache.jetspeed.engine.servlet.ServletResponseFactory;
+import org.apache.jetspeed.om.common.MutableLanguage;
+import org.apache.jetspeed.om.impl.LanguageImpl;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.profiler.ProfileLocator;
+import org.apache.jetspeed.services.factory.FactoryManager;
import org.apache.jetspeed.userinfo.UserInfoManager;
-
+import org.apache.pluto.om.common.Language;
+import org.apache.pluto.om.common.LanguageSet;
import org.apache.pluto.om.common.ObjectID;
import org.apache.pluto.om.portlet.PortletDefinition;
import org.apache.pluto.om.window.PortletWindow;
/**
- * Jetspeed Request Context is associated with each portal request.
- * The request holds the contextual information shared amongst components
- * in the portal, accessed through a common valve pipeline.
- *
- * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
- * @version $Id$
+ * Jetspeed Request Context is associated with each portal request. The request
+ * holds the contextual information shared amongst components in the portal,
+ * accessed through a common valve pipeline.
+ *
+ * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor </a>
+ * @version $Id: JetspeedRequestContext.java,v 1.19 2004/05/25 01:37:12 taylor
+ * Exp $
*/
public class JetspeedRequestContext implements RequestContext
{
+ public static final String PREFERED_LANGUAGE_SESSION_KEY = "org.apache.jetspeed.prefered.language";
+ public static final String PREFERED_LOCALE_SESSION_KEY = "org.apache.jetspeed.prefered.locale";
+
private HttpServletRequest request;
private HttpServletResponse response;
private ServletConfig config;
@@ -70,23 +81,19 @@
private String requestPath = null;
/** The user info manager. */
private UserInfoManager userInfoMgr;
-
-
+
public final static String REQUEST_PORTALENV = "org.apache.jetspeed.request.RequestContext";
/**
* Create a new Request Context
- *
+ *
* @param pc
* @param request
* @param response
* @param config
*/
- public JetspeedRequestContext(HttpServletRequest request,
- HttpServletResponse response,
- ServletConfig config,
- NavigationalStateComponent navcomponent,
- UserInfoManager userInfoMgr)
+ public JetspeedRequestContext( HttpServletRequest request, HttpServletResponse response, ServletConfig config,
+ NavigationalStateComponent navcomponent, UserInfoManager userInfoMgr )
{
this.request = request;
this.response = response;
@@ -98,13 +105,14 @@
{
this.request.setAttribute(REQUEST_PORTALENV, this);
}
-
+
if (navcomponent != null)
{
url = navcomponent.createURL(this);
- navstate = navcomponent.create(this);
+ navstate = navcomponent.create(this);
}
-
+
+
}
private JetspeedRequestContext()
@@ -131,7 +139,7 @@
return locator;
}
- public void setProfileLocator(ProfileLocator locator)
+ public void setProfileLocator( ProfileLocator locator )
{
this.locator = locator;
}
@@ -141,7 +149,7 @@
return this.page;
}
- public void setPage(Page page)
+ public void setPage( Page page )
{
this.page = page;
}
@@ -151,7 +159,7 @@
return portletDefinition;
}
- public void setPortletDefinition(PortletDefinition portletDefinition)
+ public void setPortletDefinition( PortletDefinition portletDefinition )
{
this.portletDefinition = portletDefinition;
}
@@ -161,56 +169,62 @@
return dispatcher;
}
- public void setContentDispatcher(ContentDispatcher dispatcher)
+ public void setContentDispatcher( ContentDispatcher dispatcher )
{
this.dispatcher = dispatcher;
}
- /** Set the capabilityMap. Used by the CapabilityValve
- *
- * @param capabilityMap
- */
- public void setCapabilityMap(CapabilityMap map)
+ /**
+ * Set the capabilityMap. Used by the CapabilityValve
+ *
+ * @param capabilityMap
+ */
+ public void setCapabilityMap( CapabilityMap map )
{
this.capabilityMap = map;
}
- /** get the Capability Map
- *
+ /**
+ * get the Capability Map
+ *
*/
public CapabilityMap getCapabilityMap()
{
return this.capabilityMap;
}
- /** Set the Mimetype. Used by the CapabilityValve
- *
+ /**
+ * Set the Mimetype. Used by the CapabilityValve
+ *
* @param mimeType
*/
- public void setMimeType(String mimeType)
+ public void setMimeType( String mimeType )
{
this.mimeType = mimeType;
}
- /** get the mimeType for the request
- *
+ /**
+ * get the mimeType for the request
+ *
*/
public String getMimeType()
{
return this.mimeType;
}
- /** Set the mediaType. Used by the CapabilityValve
- *
+ /**
+ * Set the mediaType. Used by the CapabilityValve
+ *
* @param mediaType
*/
- public void setMediaType(String mediaType)
+ public void setMediaType( String mediaType )
{
this.mediaType = mediaType;
}
- /** get the Media Type
- *
+ /**
+ * get the Media Type
+ *
*/
public String getMediaType()
{
@@ -221,10 +235,10 @@
{
return navstate;
}
-
+
/**
* Get the target Portlet Action Window
- *
+ *
* @return PortletWindow The target portlet window
*/
public PortletWindow getActionWindow()
@@ -234,18 +248,18 @@
/**
* Sets the target Portlet Action Window
- *
+ *
* @param window
*/
- public void setActionWindow(PortletWindow portletWindow)
+ public void setActionWindow( PortletWindow portletWindow )
{
this.actionWindow = portletWindow;
}
/**
* get the character encoding
- *
- *
+ *
+ *
*/
public String getCharacterEncoding()
{
@@ -254,10 +268,10 @@
/**
* set character encoding
- *
+ *
* @param enc
*/
- public void setCharacterEncoding(String enc)
+ public void setCharacterEncoding( String enc )
{
this.encoding = enc;
}
@@ -266,15 +280,15 @@
* <p>
* getRequestForWindow
* </p>
- *
+ *
* @see org.apache.jetspeed.request.RequestContext#getRequestForWindow(org.apache.pluto.om.window.PortletWindow)
* @param window
* @return
*/
- public HttpServletRequest getRequestForWindow(PortletWindow window)
+ public HttpServletRequest getRequestForWindow( PortletWindow window )
{
- ServletRequestFactory reqFac =
- (ServletRequestFactory) FactoryManager.getFactory(javax.servlet.http.HttpServletRequest.class);
+ ServletRequestFactory reqFac = (ServletRequestFactory) FactoryManager
+ .getFactory(javax.servlet.http.HttpServletRequest.class);
HttpServletRequest requestWrapper = reqFac.getServletRequest(request, window);
return requestWrapper;
}
@@ -283,12 +297,12 @@
* <p>
* getResponseForWindow
* </p>
- *
+ *
* @see org.apache.jetspeed.request.RequestContext#getResponseForWindow(org.apache.pluto.om.window.PortletWindow)
* @param window
* @return
*/
- public HttpServletResponse getResponseForWindow(PortletWindow window)
+ public HttpServletResponse getResponseForWindow( PortletWindow window )
{
ServletResponseFactory rspFac = (ServletResponseFactory) FactoryManager.getFactory(HttpServletResponse.class);
HttpServletResponse wrappedResponse = rspFac.getServletResponse(response);
@@ -306,7 +320,7 @@
/**
* @see org.apache.jetspeed.request.RequestContext#setSubject(javax.security.auth.Subject)
*/
- public void setSubject(Subject subject)
+ public void setSubject( Subject subject )
{
this.subject = subject;
}
@@ -322,15 +336,23 @@
/**
* @see org.apache.jetspeed.request.RequestContext#setLocale(java.util.Locale)
*/
- public void setLocale(Locale locale)
+ public void setLocale( Locale locale )
{
+ Locale preferedLocale = (Locale) request.getSession().getAttribute(PREFERED_LOCALE_SESSION_KEY);
+
+ if(preferedLocale == null || !locale.equals(preferedLocale))
+ {
+ request.getSession().setAttribute(PREFERED_LANGUAGE_SESSION_KEY, new WeakHashMap());
+ request.getSession().setAttribute(PREFERED_LOCALE_SESSION_KEY, locale);
+ }
+
this.locale = locale;
}
/**
* @see org.apache.jetspeed.request.RequestContext#getRequestParameter(java.lang.String)
*/
- public String getRequestParameter(String key)
+ public String getRequestParameter( String key )
{
return request.getParameter(key);
}
@@ -346,32 +368,33 @@
/**
* @see org.apache.jetspeed.request.RequestContext#getRequestAttribute(java.lang.String)
*/
- public Object getRequestAttribute(String key)
+ public Object getRequestAttribute( String key )
{
return request.getAttribute(key);
}
-
/**
* @see org.apache.jetspeed.request.RequestContext#getSessionAttribute(java.lang.String)
*/
- public Object getSessionAttribute(String key)
+ public Object getSessionAttribute( String key )
{
return request.getSession().getAttribute(key);
}
/**
- * @see org.apache.jetspeed.request.RequestContext#setSessionAttribute(java.lang.String, java.lang.Object)
+ * @see org.apache.jetspeed.request.RequestContext#setSessionAttribute(java.lang.String,
+ * java.lang.Object)
*/
- public void setSessionAttribute(String key, Object value)
+ public void setSessionAttribute( String key, Object value )
{
request.getSession().setAttribute(key, value);
}
/**
- * @see org.apache.jetspeed.request.RequestContext#setAttribute(java.lang.String, java.lang.Object)
+ * @see org.apache.jetspeed.request.RequestContext#setAttribute(java.lang.String,
+ * java.lang.Object)
*/
- public void setAttribute(String key, Object value)
+ public void setAttribute( String key, Object value )
{
request.setAttribute(key, value);
}
@@ -379,8 +402,8 @@
/**
* @see org.apache.jetspeed.request.RequestContext#getAttribute(java.lang.String)
*/
- public Object getAttribute(String key)
- {
+ public Object getAttribute( String key )
+ {
return request.getAttribute(key);
}
@@ -409,12 +432,12 @@
String token = tokenizer.nextToken();
if (this.url.isNavigationalParameter(token))
{
- break;
+ break;
}
if (count > 0)
{
path.append("/");
- }
+ }
path.append(token);
count++;
}
@@ -427,18 +450,68 @@
this.requestPath = result;
return this.requestPath;
}
-
+
public PortalURL getPortalURL()
{
return url;
}
-
+
/**
* @see org.apache.jetspeed.request.RequestContext#getUserInfoMap(org.apache.pluto.om.common.ObjectID)
*/
- public Map getUserInfoMap(ObjectID oid)
+ public Map getUserInfoMap( ObjectID oid )
{
return userInfoMgr.getUserInfoMap(oid, this);
}
+
+ /**
+ *
+ * <p>
+ * getPreferedLanguage
+ * </p>
+ *
+ * @see org.apache.jetspeed.request.RequestContext#getPreferedLanguage(org.apache.pluto.om.portlet.PortletDefinition)
+ * @param portlet
+ * @return
+ */
+ public Language getPreferedLanguage( PortletDefinition portlet )
+ {
+ HttpSession session = request.getSession();
+ Map languageMap = (Map) session.getAttribute(PREFERED_LANGUAGE_SESSION_KEY);
+ Language language = (Language) languageMap.get(portlet);
+ if(language != null)
+ {
+ return language;
+ }
+
+ LanguageSet languageSet = portlet.getLanguageSet();
+ language = languageSet.get(locale);
+
+ Enumeration locales = request.getLocales();
+ while (locales.hasMoreElements() && language != null)
+ {
+ Locale aLocale = (Locale) locales.nextElement();
+ language = languageSet.get(aLocale);
+ }
+
+ Iterator langItr = languageSet.iterator();
+ if (langItr.hasNext() && language != null)
+ {
+ language = (Language) langItr.next();
-}
+ }
+
+ if(language == null)
+ {
+ MutableLanguage languageCtl = new LanguageImpl();
+ languageCtl.setLocale(locale);
+ languageCtl.setShortTitle(portlet.getName());
+ languageCtl.setTitle(portlet.getName());
+ language = languageCtl;
+ }
+
+ languageMap.put(portlet, language);
+ return language;
+ }
+
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org