You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mf...@apache.org on 2010/01/07 23:38:23 UTC
svn commit: r897041 - in /myfaces/portlet-bridge/core/trunk_2.0.x:
api/src/main/java/javax/portlet/faces/
impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/
impl/src/main/java/org/apache/myfaces/portlet/faces/context/
Author: mfreedman
Date: Thu Jan 7 22:38:22 2010
New Revision: 897041
URL: http://svn.apache.org/viewvc?rev=897041&view=rev
Log:
PORTLETBRIDGE-105: encodeResourceURL mishandles encoding portlet:render
PORTLETBRIDGE-104: GFP reads DEFAULT_CHARACTERSET_ENCODING/CHARENCODING from wrong initParam
PORTLETBRIDGE-103: Bridge.destroy fails to release ELContextListener.
Modified:
myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java
myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java
myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java
Modified: myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java?rev=897041&r1=897040&r2=897041&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java (original)
+++ myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java Thu Jan 7 22:38:22 2010
@@ -424,7 +424,7 @@
/**
* Returns the default content type for this portlet request. Subclasses override to
- * alter the default behavior. Default implementation returns value of the portlet context init
+ * alter the default behavior. Default implementation returns value of the portlet init
* parameter: javax.portlet.faces.DefaultContentType. If it doesn't exist the portlet
* request's preferred response content type is returned.
*
@@ -436,7 +436,7 @@
public String getResponseContentType(PortletRequest request)
{
String contentType =
- getPortletConfig().getPortletContext().getInitParameter(DEFAULT_CONTENT_TYPE);
+ getPortletConfig().getInitParameter(DEFAULT_CONTENT_TYPE);
if (contentType == null || !isInRequestedContentTypes(request, contentType))
{
@@ -460,7 +460,7 @@
/**
* Returns the character set encoding used for this portlet response. Subclasses override to
- * alter the default behavior. Default implementation returns value of the portlet context init
+ * alter the default behavior. Default implementation returns value of the portlet init
* parameter: javax.portlet.faces.DefaultCharacterSetEncoding. If it doesn't exist null
* is returned.
*
@@ -471,7 +471,7 @@
*/
public String getResponseCharacterSetEncoding(PortletRequest request)
{
- return getPortletConfig().getPortletContext().getInitParameter(DEFAULT_CHARACTERSET_ENCODING);
+ return getPortletConfig().getInitParameter(DEFAULT_CHARACTERSET_ENCODING);
}
Modified: myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java?rev=897041&r1=897040&r2=897041&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java (original)
+++ myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java Thu Jan 7 22:38:22 2010
@@ -1059,6 +1059,10 @@
return;
mInitialized = false;
+
+ // Remove the context listener
+ ((ApplicationFactory)FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY))
+ .getApplication().removeELContextListener(this);
// remove any scopes being managed for this portlet
// Each scope has a per portlet prefix -- pass in the prefix
Modified: myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java?rev=897041&r1=897040&r2=897041&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java (original)
+++ myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java Thu Jan 7 22:38:22 2010
@@ -630,28 +630,39 @@
@Override
public String encodeResourceURL(String s)
{
- if (isOpaqueURL(s))
+ if (isPortletURL(s))
{
- return s;
+ return urlEncode(encodeResourceAsViewNavigationURL(s));
}
- if (isExternalURL(s))
+ else if (isOpaqueURL(s))
{
- return encodeResourceURL(s, false);
+ // spec says return this unchanged
+ return s;
+ }
+ else if (isExternalURL(s))
+ {
+ return urlEncode(encodeResourceURL(s, false));
}
- else if (isViewLink(s) || isPortletURL(s))
+ else if (isViewLink(s))
{
- return encodeResourceAsViewNavigationURL(s);
+ return urlEncode(encodeResourceAsViewNavigationURL(s));
}
else if (!isInProtocolResourceLink(s))
{
- return encodeResourceURL(s, true);
+ return urlEncode(encodeResourceURL(s, true));
}
else
{
- return encodePortletServedResourceURL(s);
+ return urlEncode(encodePortletServedResourceURL(s));
}
}
+ private String urlEncode(String s)
+ {
+ // replace all spaces in the url with %20 to avoid Faces from encoding with a +
+ return s.replace(" ", "%20");
+ }
+
private String encodeResourceURL(String s, boolean targetInApp)
{
if (targetInApp)