You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ar...@apache.org on 2007/11/14 23:33:07 UTC
svn commit: r595100 -
/myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
Author: arobinson74
Date: Wed Nov 14 14:33:06 2007
New Revision: 595100
URL: http://svn.apache.org/viewvc?rev=595100&view=rev
Log:
TRINIDAD-821 -- RenderUtils.getRelativeId does not support the "::" method of relative referencing
Added code to support the same functionality as
org.apache.myfaces.trinidad.util.ComponentUtils.findRelativeComponent(UIComponent, String)
Modified:
myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
Modified: myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java?rev=595100&r1=595099&r2=595100&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java Wed Nov 14 14:33:06 2007
@@ -24,7 +24,6 @@
import javax.faces.component.NamingContainer;
import javax.faces.component.UIComponent;
import javax.faces.component.UIForm;
-
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.component.UIXForm;
@@ -116,13 +115,40 @@
{
if ((relativeId == null) || (relativeId.length() == 0))
return null;
-
+
+ UIComponent parentNC;
if (relativeId.charAt(0) == NamingContainer.SEPARATOR_CHAR)
- return relativeId.substring(1);
-
- UIComponent parentNC = _getParentNamingContainer(from.getParent());
- if (parentNC == null)
- return relativeId;
+ {
+ if (relativeId.length() > 1 && relativeId.charAt(1)
+ == NamingContainer.SEPARATOR_CHAR)
+ {
+ parentNC = _getParentNamingContainer(from.getParent());
+ int index = 2;
+ for (; index < relativeId.length() && relativeId.charAt(index)
+ == NamingContainer.SEPARATOR_CHAR && parentNC != null; ++index)
+ {
+ parentNC = _getParentNamingContainer(parentNC.getParent());
+ }
+ if (parentNC == null || index >= relativeId.length())
+ {
+ // TODO: would it be better to return null from here?
+ return relativeId;
+ }
+ relativeId = relativeId.substring(index);
+ }
+ else
+ {
+ return relativeId.substring(1);
+ }
+ }
+ else
+ {
+ parentNC = _getParentNamingContainer(from.getParent());
+ if (parentNC == null)
+ {
+ return relativeId;
+ }
+ }
return (parentNC.getClientId(context) +
NamingContainer.SEPARATOR_CHAR + relativeId);