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 2008/02/28 21:36:58 UTC
svn commit: r632113 -
/myfaces/portlet-bridge/core/trunk/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java
Author: mfreedman
Date: Thu Feb 28 12:36:57 2008
New Revision: 632113
URL: http://svn.apache.org/viewvc?rev=632113&view=rev
Log:
Fixes PORTLETBRIDGE-29 : ViewLink support is now implemented properly.
Modified:
myfaces/portlet-bridge/core/trunk/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java
Modified: myfaces/portlet-bridge/core/trunk/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/trunk/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java?rev=632113&r1=632112&r2=632113&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/trunk/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java (original)
+++ myfaces/portlet-bridge/core/trunk/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java Thu Feb 28 12:36:57 2008
@@ -411,7 +411,7 @@
@Override
public String encodeResourceURL(String s)
{
- boolean containsBackLinkMarker = false, containsViewLinkMarker = false;
+ boolean containsBackLinkMarker = false, isViewLink = false;
if (s.indexOf(Bridge.BACK_LINK) != -1)
{
containsBackLinkMarker = true;
@@ -420,10 +420,7 @@
if (!isExternalURL(s))
{
// Only non-external URLs can be viewLinks
- if (s.indexOf(Bridge.VIEW_LINK) != -1)
- {
- containsViewLinkMarker = true;
- }
+ isViewLink = isViewLink(s);
if (!s.startsWith("/"))
{
@@ -461,12 +458,12 @@
}
// Check for backlink and viewlink markers -- if they exist replace
- if (containsBackLinkMarker || containsViewLinkMarker)
+ if (containsBackLinkMarker || isViewLink)
{
- s = replaceResourceQueryStringMarkers(s, containsBackLinkMarker, containsViewLinkMarker);
+ s = replaceResourceQueryStringMarkers(s, containsBackLinkMarker, isViewLink);
}
- if (!containsViewLinkMarker)
+ if (!isViewLink)
{
s = mPortletResponse.encodeURL(s);
}
@@ -1126,39 +1123,40 @@
queryStr = new QueryString(s.substring(queryStart + 1), "UTF8");
path = s.substring(0, queryStart);
- Enumeration<String> list = queryStr.getParameterNames();
- while (list.hasMoreElements())
+ if (hasBackLink)
{
- String param = list.nextElement().toString();
- if (hasBackLink && param.equals(Bridge.BACK_LINK))
+ Enumeration<String> list = queryStr.getParameterNames();
+ while (list.hasMoreElements())
{
- try
+ String param = list.nextElement().toString();
+ if (hasBackLink && param.equals(Bridge.BACK_LINK))
{
- // Set backlink as parameter using value as param name
- queryStr.setParameter(queryStr.getParameter(param),
+ try
+ {
+ // Set backlink as parameter using value as param name
+ queryStr.setParameter(queryStr.getParameter(param),
encodeActionURL(context.getApplication().getViewHandler().getActionURL(context,
context.getViewRoot().getViewId())));
- ;
- }
- catch (Exception e)
- {
- ; // do nothing -- just ignore
- }
- // remove the backLink param.
- queryStr.removeParameter(Bridge.BACK_LINK);
- }
- else if (hasViewLink && param.equals(Bridge.VIEW_LINK))
- {
- try
- {
- queryStr.removeParameter(Bridge.VIEW_LINK);
- }
- catch (Exception e)
- {
- ; // do nothing -- just ignore
+ ;
+ }
+ catch (Exception e)
+ {
+ ; // do nothing -- just ignore
+ }
}
}
}
+
+ // Now make sure the parameters are removed
+ try
+ {
+ queryStr.removeParameter(Bridge.BACK_LINK);
+ queryStr.removeParameter(Bridge.VIEW_LINK);
+ }
+ catch (Exception e)
+ {
+ ; // do nothing -- just ignore
+ }
// Now put the string back together
String qs = queryStr.toString();
@@ -1171,14 +1169,7 @@
s = path;
}
- // Now transform the URL into an actionURL if this is a ViewLink
- if (hasViewLink)
- {
- return encodeActionURL(s);
- } else
- {
- return s;
- }
+ return s;
}
private void mapPathsFromViewId(String viewId, List<String> mappings)
@@ -1481,15 +1472,25 @@
private boolean isDirectLink(String url)
{
+ return isTokenLink(Bridge.DIRECT_LINK, url);
+ }
+
+ private boolean isViewLink(String url)
+ {
+ return isTokenLink(Bridge.VIEW_LINK, url);
+ }
+
+ private boolean isTokenLink(String token, String url)
+ {
int queryStart = url.indexOf('?');
QueryString queryStr = null;
- String directLink = null;
+ String tokenParam = null;
if (queryStart != -1)
{
queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
- directLink = queryStr.getParameter(Bridge.DIRECT_LINK);
- return Boolean.parseBoolean(directLink);
+ tokenParam = queryStr.getParameter(token);
+ return Boolean.parseBoolean(tokenParam);
}
return false;
@@ -1497,26 +1498,26 @@
private String removeDirectLink(String url)
{
+ return removeTokenLink(Bridge.DIRECT_LINK, url);
+ }
+
+ private String removeTokenLink(String token, String url)
+ {
int queryStart = url.indexOf('?');
QueryString queryStr = null;
- String directLink = null;
if (queryStart != -1)
{
queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
- directLink = queryStr.getParameter(Bridge.DIRECT_LINK);
- if (!Boolean.parseBoolean(directLink))
+ queryStr.removeParameter(token);
+ String query = queryStr.toString();
+ if (query != null && query.length() != 0)
{
- queryStr.removeParameter(Bridge.DIRECT_LINK);
- String query = queryStr.toString();
- if (query != null && query.length() != 0)
- {
- url = url.substring(0, queryStart + 1) + query;
- }
- else
- {
- url = url.substring(0, queryStart);
- }
+ url = url.substring(0, queryStart + 1) + query;
+ }
+ else
+ {
+ url = url.substring(0, queryStart);
}
}