You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jw...@apache.org on 2007/09/25 22:44:58 UTC
svn commit: r579374 - in
/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu:
MenuNode.java MenuUtils.java
Author: jwaldman
Date: Tue Sep 25 13:44:58 2007
New Revision: 579374
URL: http://svn.apache.org/viewvc?rev=579374&view=rev
Log:
TRINIDAD-718
https://issues.apache.org/jira/browse/TRINIDAD-718
MenuNode.getLabel() does not handle complex EL expressions correctly
Checked into 1.2.2-branch for Gary Kind
Modified:
myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java
myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java
Modified: myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java?rev=579374&r1=579373&r2=579374&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java (original)
+++ myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java Tue Sep 25 13:44:58 2007
@@ -740,10 +740,13 @@
*/
private String _evalElStr(String str)
{
- String keystr =
- str.trim().replaceFirst(_bundleKey, _bundleKey + getHandlerId());
- String elVal = MenuUtils.getBoundValue(keystr, String.class);
- return elVal;
+ if (str == null)
+ return null;
+
+ String keystr = MenuUtils.stringReplaceFirst(str.trim(), _bundleKey,
+ _bundleKey + getHandlerId());
+ String elVal = MenuUtils.getBoundValue(keystr, String.class);
+ return elVal;
}
private String _label = null;
Modified: myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java?rev=579374&r1=579373&r2=579374&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java (original)
+++ myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java Tue Sep 25 13:44:58 2007
@@ -44,6 +44,64 @@
MenuUtils() {}
//=======================================================================
+ // String, Stringbuffer utilities
+ //=======================================================================
+ /**
+ * Returns a String with the first occurrence of str1 replaced with str2
+ * in fullstring
+ *
+ * @param fullstring - The full string
+ * @param str1 - String to be found in fullstring
+ * @param str2 - String to replace the first occurrence of str1
+ * @return String
+ */
+ static String stringReplaceFirst(String fullstring, String str1, String str2)
+ {
+ if (fullstring == null)
+ return null;
+
+ StringBuffer returnStr =
+ stringBufferReplaceFirst(new StringBuffer(fullstring), str1, str2);
+ return returnStr.toString();
+ }
+
+ /**
+ * Returns a StringBuffer with the first occurrence of str1 replaced with str2
+ * in fullBuf
+ *
+ * @param fullBuf - The full stringbuffer
+ * @param str1 - String to be found in fullBuf
+ * @param str2 - String to replace the first occurrence of str1
+ * @return StringBuffer
+ */
+ static StringBuffer stringBufferReplaceFirst(StringBuffer fullBuf, String str1,
+ String str2)
+ {
+ if (fullBuf == null)
+ return null;
+
+ String fullstr = fullBuf.toString();
+
+ // All Cases that just return fullBuf
+ if (str1 == null || str2 == null)
+ return fullBuf;
+ if ("".equals(fullstr) && !"".equals(str1))
+ return fullBuf;
+
+ // if the string being replaced is not found, return
+ int startIdx = fullBuf.indexOf(str1);
+ if (startIdx == -1)
+ return fullBuf;
+
+ // We are ok, now go ahead
+ int foundLen = str1.length();
+ int endIdx = startIdx + foundLen;
+
+ StringBuffer returnBuf = fullBuf.replace(startIdx, endIdx, str2);
+ return returnBuf;
+ }
+
+ //=======================================================================
// Bound Value/EL Expression utilities
//=======================================================================
@@ -394,5 +452,6 @@
private final static TrinidadLogger _LOG =
TrinidadLogger.createTrinidadLogger(MenuUtils.class);
}
+