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 2005/06/13 20:08:08 UTC
svn commit: r190464 -
/portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
Author: weaver
Date: Mon Jun 13 11:08:07 2005
New Revision: 190464
URL: http://svn.apache.org/viewcvs?rev=190464&view=rev
Log: (empty)
Added:
portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
Added: portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java?rev=190464&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java (added)
+++ portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java Mon Jun 13 11:08:07 2005
@@ -0,0 +1,569 @@
+/*
+ * Copyright 2000-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.jetspeed.request;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import javax.security.auth.Subject;
+import javax.servlet.ServletConfig;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.jetspeed.Jetspeed;
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.aggregator.ContentDispatcher;
+import org.apache.jetspeed.aggregator.ContentDispatcherCtrl;
+import org.apache.jetspeed.capabilities.CapabilityMap;
+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.ContentPage;
+import org.apache.jetspeed.om.page.Fragment;
+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: JetspeedRequestContext.java,v 1.19 2004/05/25 01:37:12 taylor
+ * Exp $
+ */
+public class JetspeedRequestContext implements RequestContext
+{
+ private static final String ACTION_ERROR_ATTR = "org.apache.jetspeed.action.error:";
+ private HttpServletRequest request;
+ private HttpServletResponse response;
+ private ServletConfig config;
+ private Map locators;
+ private ContentPage page;
+ private PortletDefinition portletDefinition;
+ private Subject subject;
+ private Locale locale;
+ private ContentDispatcher dispatcher;
+
+ private CapabilityMap capabilityMap;
+ private String mimeType;
+ private String mediaType;
+ private PortalURL url;
+ private PortletWindow actionWindow;
+ private String encoding;
+ private String requestPath = null;
+ /** The user info manager. */
+ private UserInfoManager userInfoMgr;
+ private Map requestsForWindows;
+ private Map responsesForWindows;
+
+ private Fragment rootFragment;
+ private Map fragments;
+
+ /**
+ * Create a new Request Context
+ *
+ * @param pc
+ * @param request
+ * @param response
+ * @param config
+ */
+ public JetspeedRequestContext( HttpServletRequest request, HttpServletResponse response, ServletConfig config,
+ UserInfoManager userInfoMgr )
+ {
+ this.request = request;
+ this.response = response;
+ this.config = config;
+ this.userInfoMgr = userInfoMgr;
+ this.requestsForWindows = new HashMap();
+ this.responsesForWindows = new HashMap();
+ this.fragments = new LinkedHashMap();
+
+ // set context in Request for later use
+ if (null != this.request)
+ {
+ this.request.setAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE, this);
+ }
+ }
+
+
+ public HttpServletRequest getRequest()
+ {
+ return request;
+ }
+
+ public HttpServletResponse getResponse()
+ {
+ return response;
+ }
+
+ public ServletConfig getConfig()
+ {
+ return config;
+ }
+
+ public Map getProfileLocators()
+ {
+ return locators;
+ }
+
+ public void setProfileLocators( Map locators )
+ {
+ this.locators = locators;
+ }
+
+ public ContentPage getPage()
+ {
+ return this.page;
+ }
+
+ public void setPage( ContentPage page )
+ {
+ this.page = page;
+ }
+
+ public PortletDefinition getPortletDefinition()
+ {
+ return portletDefinition;
+ }
+
+ public void setPortletDefinition( PortletDefinition portletDefinition )
+ {
+ this.portletDefinition = portletDefinition;
+ }
+
+ public ContentDispatcher getContentDispatcher()
+ {
+ return dispatcher;
+ }
+
+ public void setContentDispatcher( ContentDispatcher dispatcher )
+ {
+ this.dispatcher = dispatcher;
+ }
+
+ /**
+ * get the Capability Map
+ *
+ */
+ public CapabilityMap getCapabilityMap()
+ {
+ return this.capabilityMap;
+ }
+
+ /**
+ * Set the Mimetype. Used by the CapabilityValve
+ *
+ * @param mimeType
+ */
+ public void setMimeType( String mimeType )
+ {
+ this.mimeType = mimeType;
+ }
+
+ /**
+ * get the mimeType for the request
+ *
+ */
+ public String getMimeType()
+ {
+ return this.mimeType;
+ }
+
+ /**
+ * Set the mediaType. Used by the CapabilityValve
+ *
+ * @param mediaType
+ */
+ public void setMediaType( String mediaType )
+ {
+ this.mediaType = mediaType;
+ }
+
+ /**
+ * get the Media Type
+ *
+ */
+ public String getMediaType()
+ {
+ return this.mediaType;
+ }
+
+ /**
+ * Get the target Portlet Action Window
+ *
+ * @return PortletWindow The target portlet window
+ */
+ public PortletWindow getActionWindow()
+ {
+ return actionWindow;
+ }
+
+ /**
+ * Sets the target Portlet Action Window
+ *
+ * @param window
+ */
+ public void setActionWindow( PortletWindow portletWindow )
+ {
+ this.actionWindow = portletWindow;
+ }
+
+
+ /**
+ * Set the capabilityMap. Used by the CapabilityValve
+ *
+ * @param capabilityMap
+ */
+ public void setCapabilityMap( CapabilityMap map )
+ {
+ this.capabilityMap = map;
+ }
+
+ /**
+ * get the character encoding
+ *
+ *
+ */
+ public String getCharacterEncoding()
+ {
+ return this.encoding;
+ }
+
+ /**
+ * set character encoding
+ *
+ * @param enc
+ */
+ public void setCharacterEncoding( String enc )
+ {
+ String preferedEnc = (String) request.getSession().getAttribute(PortalReservedParameters.PREFERED_CHARACTERENCODING_ATTRIBUTE);
+
+ if (preferedEnc == null || !enc.equals(preferedEnc))
+ {
+ request.setAttribute(PortalReservedParameters.PREFERED_CHARACTERENCODING_ATTRIBUTE, enc);
+ }
+
+ this.encoding = enc;
+ }
+
+ /**
+ * <p>
+ * getRequestForWindow
+ * </p>
+ *
+ * @see org.apache.jetspeed.request.RequestContext#getRequestForWindow(org.apache.pluto.om.window.PortletWindow)
+ * @param window
+ * @return
+ */
+ public HttpServletRequest getRequestForWindow( PortletWindow window )
+ {
+ if (!requestsForWindows.containsKey(window.getId()))
+ {
+ ServletRequestFactory reqFac = (ServletRequestFactory) Jetspeed.getEngine().getFactory(
+ javax.servlet.http.HttpServletRequest.class);
+ HttpServletRequest requestWrapper = reqFac.getServletRequest(request, window);
+ requestsForWindows.put(window.getId(), requestWrapper);
+ return requestWrapper;
+ }
+ else
+ {
+ return (HttpServletRequest) requestsForWindows.get(window.getId());
+ }
+
+ }
+
+ /**
+ * <p>
+ * getResponseForWindow
+ * </p>
+ *
+ * @see org.apache.jetspeed.request.RequestContext#getResponseForWindow(org.apache.pluto.om.window.PortletWindow)
+ * @param window
+ * @return
+ */
+ public HttpServletResponse getResponseForWindow( PortletWindow window )
+ {
+ HttpServletResponse wrappedResponse = null;
+
+ if (!responsesForWindows.containsKey(window.getId()))
+ {
+ if (getContentDispatcher() != null)
+ {
+ wrappedResponse = ((ContentDispatcherCtrl) getContentDispatcher()).getResponseForWindow(window, this);
+ }
+ else
+ {
+ ServletResponseFactory rspFac = (ServletResponseFactory) Jetspeed.getEngine().getFactory(
+ HttpServletResponse.class);
+ wrappedResponse = rspFac.getServletResponse(this.response);
+
+ }
+
+ responsesForWindows.put(window.getId(), wrappedResponse);
+ return wrappedResponse;
+
+ }
+ else
+ {
+ return (HttpServletResponse) responsesForWindows.get(window.getId());
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getSubject()
+ */
+ public Subject getSubject()
+ {
+ return this.subject;
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#setSubject(javax.security.auth.Subject)
+ */
+ public void setSubject( Subject subject )
+ {
+ this.subject = subject;
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getLocale()
+ */
+ public Locale getLocale()
+ {
+ return this.locale;
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#setLocale(java.util.Locale)
+ */
+ public void setLocale( Locale locale )
+ {
+ Locale preferedLocale = (Locale) request.getSession().getAttribute(PortalReservedParameters.PREFERED_LOCALE_ATTRIBUTE);
+
+ if (preferedLocale == null || !locale.equals(preferedLocale))
+ {
+ request.getSession().setAttribute(PortalReservedParameters.PREFERED_LANGUAGE_ATTRIBUTE, new WeakHashMap());
+ request.getSession().setAttribute(PortalReservedParameters.PREFERED_LOCALE_ATTRIBUTE, locale);
+ request.setAttribute(PortalReservedParameters.PREFERED_LOCALE_ATTRIBUTE, locale);
+ }
+
+ this.locale = locale;
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getRequestParameter(java.lang.String)
+ */
+ public String getRequestParameter( String key )
+ {
+ return request.getParameter(key);
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getParameterMap()
+ */
+ public Map getParameterMap()
+ {
+ return request.getParameterMap();
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getRequestAttribute(java.lang.String)
+ */
+ public Object getRequestAttribute( String key )
+ {
+ return request.getAttribute(key);
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getSessionAttribute(java.lang.String)
+ */
+ public Object getSessionAttribute( String key )
+ {
+ return request.getSession().getAttribute(key);
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#setSessionAttribute(java.lang.String,
+ * java.lang.Object)
+ */
+ 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)
+ */
+ public void setAttribute( String key, Object value )
+ {
+ request.setAttribute(key, value);
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getAttribute(java.lang.String)
+ */
+ public Object getAttribute( String key )
+ {
+ return request.getAttribute(key);
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getPath()
+ */
+ public String getPath()
+ {
+ if (this.requestPath == null)
+ {
+ this.requestPath = getPortalURL().getPath();
+ }
+ return this.requestPath;
+ }
+
+ public void setPortalURL(PortalURL url)
+ {
+ if ( this.url != null )
+ throw new IllegalStateException("PortalURL already set");
+ if ( url == null )
+ throw new IllegalArgumentException("PortalURL may not be nullified");
+ this.url = url;
+ }
+
+ public PortalURL getPortalURL()
+ {
+ return url;
+ }
+
+ /**
+ * @see org.apache.jetspeed.request.RequestContext#getUserInfoMap(org.apache.pluto.om.common.ObjectID)
+ */
+ 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 )
+ {
+ // TODO cannot get a proper Language when changing a locale by Locale
+ // Selector
+ // 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 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)
+ {
+ language = languageSet.get(languageSet.getDefaultLocale());
+ }
+
+ 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;
+ }
+
+ /**
+ * <p>
+ * setPath
+ * </p>
+ *
+ * @see org.apache.jetspeed.request.RequestContext#setPath(java.lang.String)
+ * @param path
+ */
+ public void setPath( String path )
+ {
+ this.requestPath = path;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.request.RequestContext#getActionFailure()
+ */
+ public Throwable popActionFailure(PortletWindow window)
+ {
+
+ String key = ACTION_ERROR_ATTR + window.getId();
+ Throwable t = (Throwable) request.getSession().getAttribute(key);
+ request.getSession().removeAttribute(key);
+ return t;
+
+ }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.request.RequestContext#setActionFailed(java.lang.Throwable)
+ */
+ public void setActionFailure(PortletWindow window, Throwable actionFailure)
+ {
+ setSessionAttribute(ACTION_ERROR_ATTR + window.getId(),
+ actionFailure);
+
+ }
+
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org