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 dl...@apache.org on 2004/09/14 08:47:42 UTC
cvs commit: jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces RequestHeaderMap.java RequestHeaderValuesMap.java PortletExternalContextImpl.java FacesPortlet.java
dlestrat 2004/09/13 23:47:42
Modified: portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces
PortletExternalContextImpl.java FacesPortlet.java
Added: portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces
RequestHeaderMap.java RequestHeaderValuesMap.java
Log:
MyFaces tree component.
Fixes to the MyFaces bridge.
Revision Changes Path
1.3 +6 -3 jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/PortletExternalContextImpl.java
Index: PortletExternalContextImpl.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/PortletExternalContextImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PortletExternalContextImpl.java 11 Sep 2004 18:43:26 -0000 1.2
+++ PortletExternalContextImpl.java 14 Sep 2004 06:47:42 -0000 1.3
@@ -21,7 +21,6 @@
import java.net.URL;
import java.security.Principal;
import java.util.Enumeration;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
@@ -272,10 +271,10 @@
*/
public Map getRequestHeaderMap()
{
- // TODO Hack to fix issue with MyFaces 1.0.6
if (this.requestHeaderMap == null)
{
- requestHeaderMap = new HashMap();
+ requestHeaderMap = new RequestHeaderMap(this.portletRequest);
+ // TODO Hack to fix issue with MyFaces 1.0.6
requestHeaderMap.put("Content-Type", portletRequest.getResponseContentType());
}
return requestHeaderMap;
@@ -286,6 +285,10 @@
*/
public Map getRequestHeaderValuesMap()
{
+ if (this.requestHeaderValuesMap == null)
+ {
+ requestHeaderValuesMap = new RequestHeaderValuesMap(this.portletRequest);
+ }
return requestHeaderValuesMap;
}
1.3 +22 -2 jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/FacesPortlet.java
Index: FacesPortlet.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/FacesPortlet.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FacesPortlet.java 11 Sep 2004 18:43:26 -0000 1.2
+++ FacesPortlet.java 14 Sep 2004 06:47:42 -0000 1.3
@@ -57,6 +57,10 @@
/** The VIEW_ID used for externalContext.getRequestServletPath(). */
public static final String VIEW_ID = "org.apache.portals.bridges.myfaces.VIEW_ID";
+
+ /** The JSF_VIEW_ID used to maintain the state of the view action. */
+ // TODO Is this myfaces specific?
+ public static final String JSF_VIEW_ID = "jsf_viewid";
/** Name of portlet preference for Action page. */
public static final String PARAM_ACTION_PAGE = "ActionPage";
@@ -461,22 +465,38 @@
PortletRequest portletRequest = (PortletRequest) facesContext.getExternalContext().getRequest();
if (portletRequest instanceof ActionRequest)
{
+ String actionView = null;
+
+ // Used by Myfaces (specific?) to provide the state of the current
+ // page. How do we know when to stay on a page or when to navigate?
+ //if (null != portletRequest.getParameter(JSF_VIEW_ID))
+ //{
+ // actionView = portletRequest.getParameter(JSF_VIEW_ID);
+ //}
if ((null != facesContext.getViewRoot()) && (null != facesContext.getViewRoot().getViewId()))
{
+ actionView = facesContext.getViewRoot().getViewId();
+ }
+
+ if (null != actionView)
+ {
((ActionResponse) facesContext.getExternalContext().getResponse()).setRenderParameter(
- FacesPortlet.VIEW_ID, facesContext.getViewRoot().getViewId());
+ FacesPortlet.VIEW_ID, actionView);
}
}
if ((portletRequest instanceof RenderRequest) && (null != portletRequest.getParameter(FacesPortlet.VIEW_ID)))
{
defaultView = portletRequest.getParameter(FacesPortlet.VIEW_ID);
}
+
+ // Return if we alreay have the viewid for the RenderRequest.
if ((null != portletRequest.getAttribute(FacesPortlet.VIEW_ID))
&& (!portletRequest.getAttribute(FacesPortlet.VIEW_ID).equals(defaultView)))
{
return;
}
- if (facesContext.getViewRoot() == null)
+
+ if (null == facesContext.getViewRoot())
{
facesContext.setViewRoot(new UIViewRoot());
if (log.isDebugEnabled())
1.1 jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/RequestHeaderMap.java
Index: RequestHeaderMap.java
===================================================================
/*
* Copyright 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.portals.bridges.myfaces;
import java.util.Enumeration;
import javax.portlet.PortletRequest;
/**
* <p>
* This must be the set of properties available via the javax.portlet.PortletRequest methods getProperty()
* and getPropertyNames(). As such, HTTP headers will only be included if they were provided by the portlet container,
* and additional properties provided by the portlet container may also be included.
* </p>
* <p>
* See MyFaces project for servlet implementation.
* </p>
*
* @author <a href="dlestrat@apache.org">David Le Strat </a>
*/
public class RequestHeaderMap extends AbstractAttributeMap
{
/** The portlet request. */
private final PortletRequest portletRequest;
/**
* @param portletRequest The {@link PortletRequest}.
*/
RequestHeaderMap(PortletRequest portletRequest)
{
this.portletRequest = portletRequest;
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#getAttribute(java.lang.String)
*/
protected Object getAttribute(String key)
{
return portletRequest.getProperty(key);
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#setAttribute(java.lang.String, java.lang.Object)
*/
protected void setAttribute(String key, Object value)
{
throw new UnsupportedOperationException(
"Cannot set PortletRequest Property");
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#removeAttribute(java.lang.String)
*/
protected void removeAttribute(String key)
{
throw new UnsupportedOperationException(
"Cannot remove PortletRequest Property");
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#getAttributeNames()
*/
protected Enumeration getAttributeNames()
{
return portletRequest.getPropertyNames();
}
}
1.1 jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/RequestHeaderValuesMap.java
Index: RequestHeaderValuesMap.java
===================================================================
/*
* Copyright 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.portals.bridges.myfaces;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.portlet.PortletRequest;
/**
* <p>
* This must be the set of properties available via the javax.portlet.PortletRequest methods getProperties()
* and getPropertyNames(). As such, HTTP headers will only be included if they were provided by the portlet
* container, and additional properties provided by the portlet container may also be included.
* </p>
* <p>
* See MyFaces project for servlet implementation.
* </p>
*
* @author <a href="dlestrat@apache.org">David Le Strat </a>
*/
public class RequestHeaderValuesMap extends AbstractAttributeMap
{
/** The portlet request. */
private final PortletRequest portletRequest;
/** Value cache. */
private final Map valueCache = new HashMap();
/**
* @param portletRequest The {@link PortletRequest}.
*/
RequestHeaderValuesMap(PortletRequest portletRequest)
{
this.portletRequest = portletRequest;
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#getAttribute(java.lang.String)
*/
protected Object getAttribute(String key)
{
Object ret = valueCache.get(key);
if (ret == null)
{
valueCache.put(key, ret = toArray(portletRequest.getProperties(key)));
}
return ret;
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#setAttribute(java.lang.String, java.lang.Object)
*/
protected void setAttribute(String key, Object value)
{
throw new UnsupportedOperationException(
"Cannot set PortletRequest Properties");
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#removeAttribute(java.lang.String)
*/
protected void removeAttribute(String key)
{
throw new UnsupportedOperationException(
"Cannot remove PortletRequest Properties");
}
/**
* @see org.apache.portals.bridges.myfaces.AbstractAttributeMap#getAttributeNames()
*/
protected Enumeration getAttributeNames()
{
return portletRequest.getPropertyNames();
}
/**
* @param e The enumeration.
* @return An array of strings.
*/
private String[] toArray(Enumeration e)
{
List ret = new ArrayList();
while (e.hasMoreElements())
{
ret.add(e.nextElement());
}
return (String[]) ret.toArray(new String[ret.size()]);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org