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);
 }
+