You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2014/03/17 11:35:28 UTC

svn commit: r1578292 - in /myfaces/tobago/branches/tobago-1.0.x/core/src: main/java/org/apache/myfaces/tobago/renderkit/html/ main/java/org/apache/myfaces/tobago/taglib/decl/ main/java/org/apache/myfaces/tobago/util/ test/java/org/apache/myfaces/tobago...

Author: lofwyr
Date: Mon Mar 17 10:35:27 2014
New Revision: 1578292

URL: http://svn.apache.org/r1578292
Log:
TOBAGO-1374: link attribute contains faces mapping

Modified:
    myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CommandRendererHelper.java
    myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/taglib/decl/HasLink.java
    myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/util/StringUtils.java
    myfaces/tobago/branches/tobago-1.0.x/core/src/test/java/org/apache/myfaces/tobago/util/StringUtilsUnitTest.java

Modified: myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CommandRendererHelper.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CommandRendererHelper.java?rev=1578292&r1=1578291&r2=1578292&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CommandRendererHelper.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CommandRendererHelper.java Mon Mar 17 10:35:27 2014
@@ -206,11 +206,10 @@ public class CommandRendererHelper {
       }
     } else if (component.getAttributes().get(ATTR_ACTION_LINK) != null) {
 
-      String link = (String) component.getAttributes().get(ATTR_ACTION_LINK);
+      final String link = (String) component.getAttributes().get(ATTR_ACTION_LINK);
       if (link.startsWith("/")) { // internal absolute link
-        url = viewHandler.getActionURL(facesContext, link);
-        url = externalContext.encodeActionURL(url);
-      } else if (link.contains(":")) { // external link
+        url = externalContext.encodeResourceURL(externalContext.getRequestContextPath() + link);
+      } else if (org.apache.myfaces.tobago.util.StringUtils.isUrl(link)) { // external link
         url = link;
       } else { // internal relative link
         url = externalContext.encodeResourceURL(link);

Modified: myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/taglib/decl/HasLink.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/taglib/decl/HasLink.java?rev=1578292&r1=1578291&r2=1578292&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/taglib/decl/HasLink.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/taglib/decl/HasLink.java Mon Mar 17 10:35:27 2014
@@ -31,7 +31,7 @@ public interface HasLink {
    *   <dd>Starts with a slash '/' character. The context path will be added.
    *       A session id will be added, if needed.</dd>
    *   <dt>external link</dt>
-   *   <dd>Contains a colon ':' character.
+   *   <dd>Starts with protocol followed by ':' character.
    *       The link will not be modified.</dd>
    *   <dt>internal relative link</dt>
    *   <dd>Any other strings. A session id will be added, if needed.</dd>

Modified: myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/util/StringUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/util/StringUtils.java?rev=1578292&r1=1578291&r2=1578292&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/util/StringUtils.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/util/StringUtils.java Mon Mar 17 10:35:27 2014
@@ -85,4 +85,22 @@ public class StringUtils {
         String.valueOf(LabelWithAccessKey.INDICATOR), LabelWithAccessKey.ESCAPED_INDICATOR);
   }
 
+  /**
+   * Checks if the String starts like a url, e.g. http: or xyz:
+   */
+  public static boolean isUrl(final String link) {
+    if (link == null) {
+      return false;
+    }
+    int colon = link.indexOf(':');
+    if (colon < 1) {
+      return false;
+    }
+    for (int i = 0; i < colon; i++) {
+      if (!Character.isLetter(link.charAt(i))) {
+        return false;
+      }
+    }
+    return true;
+  }
 }

Modified: myfaces/tobago/branches/tobago-1.0.x/core/src/test/java/org/apache/myfaces/tobago/util/StringUtilsUnitTest.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/core/src/test/java/org/apache/myfaces/tobago/util/StringUtilsUnitTest.java?rev=1578292&r1=1578291&r2=1578292&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/core/src/test/java/org/apache/myfaces/tobago/util/StringUtilsUnitTest.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/core/src/test/java/org/apache/myfaces/tobago/util/StringUtilsUnitTest.java Mon Mar 17 10:35:27 2014
@@ -33,4 +33,17 @@ public class StringUtilsUnitTest extends
     assertEquals("Xxx", StringUtils.firstToUpperCase("Xxx"));
     assertEquals(" x ", StringUtils.firstToUpperCase(" x "));
   }
+
+  public void testIsUrl() {
+    assertTrue(StringUtils.isUrl("http://www.apache.org/"));
+    assertTrue(StringUtils.isUrl("http:"));
+    assertTrue(StringUtils.isUrl("ftp:"));
+    assertTrue(StringUtils.isUrl("abc:fjdskal:fdsa"));
+
+    assertFalse(StringUtils.isUrl(null));
+    assertFalse(StringUtils.isUrl("null"));
+    assertFalse(StringUtils.isUrl("/test"));
+    assertFalse(StringUtils.isUrl("test.xhtml?id=#page:input"));
+    assertFalse(StringUtils.isUrl(":test"));
+  }
 }