Author: gvanmatre
Date: Sun Mar 18 08:22:22 2007
New Revision: 519626

URL: http://svn.apache.org/viewvc?view=rev&rev=519626
Log:
Fix for SHALE-426, Implicit mapping of <a> tag appears to be overriding 
explicit mapping.  Reported by Richard W. Eggert II.

Modified:
    
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
    
shale/framework/trunk/shale-clay/src/test/java/org/apache/shale/clay/config/ImplicitMappingTestCase.java
    
shale/framework/trunk/shale-clay/src/test/resources/org/apache/shale/clay/config/implicit.html

Modified: 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java?view=diff&rev=519626&r1=519625&r2=519626
==============================================================================
--- 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
 (original)
+++ 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
 Sun Mar 18 08:22:22 2007
@@ -86,12 +86,13 @@
      */
     protected void encodeBegin(Node node, ElementBean target, ComponentBean 
root) {
         super.encodeBegin(node, target, root);
-
-        AttributeBean attr = target.getAttribute("value");
-        SymbolBean symbol = target.getSymbol("href");
-        if ((symbol != null && attr != null)
-            && (attr.getValue() == null || attr.getValue().length() == 0)) {
-            createAttribute(attr, "@href", target);
+        if (getComponentType(node).equals(target.getComponentType())) {
+            AttributeBean attr = target.getAttribute("value");
+            SymbolBean symbol = target.getSymbol("href");
+            if ((symbol != null && attr != null)
+                    && (attr.getValue() == null || attr.getValue().length() == 
0)) {
+                createAttribute(attr, "@href", target);
+            }
         }
     }
 

Modified: 
shale/framework/trunk/shale-clay/src/test/java/org/apache/shale/clay/config/ImplicitMappingTestCase.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/test/java/org/apache/shale/clay/config/ImplicitMappingTestCase.java?view=diff&rev=519626&r1=519625&r2=519626
==============================================================================
--- 
shale/framework/trunk/shale-clay/src/test/java/org/apache/shale/clay/config/ImplicitMappingTestCase.java
 (original)
+++ 
shale/framework/trunk/shale-clay/src/test/java/org/apache/shale/clay/config/ImplicitMappingTestCase.java
 Sun Mar 18 08:22:22 2007
@@ -25,6 +25,7 @@
 import javax.faces.component.UISelectItem;
 import javax.faces.component.UISelectItems;
 import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlCommandLink;
 import javax.faces.component.html.HtmlInputText;
 import javax.faces.component.html.HtmlInputTextarea;
 import javax.faces.component.html.HtmlOutputLabel;
@@ -139,6 +140,22 @@
                 .getAttributes().get("value"));
         assertEquals("target", "_blank", widget.getAttributes().get("target"));
 
+    }
+
+    public void testAnchorOverride() {
+        UIComponent widget = findComponent(clay, "shaleSiteOverride");
+        assertNotNull("HtmlCommandLink", widget);
+        assertTrue("HtmlCommandLink", widget instanceof HtmlCommandLink);
+
+        MethodBinding mb = ((HtmlCommandLink) widget).getAction();
+        assertNotNull("MethodBinding", mb);
+        String exp = mb.getExpressionString();
+        assertNotNull("Expression String", exp);
+        assertEquals("action", "#{test.save}", exp);
+
+        assertNull("value", widget.getAttributes().get("value"));
+        
+        assertEquals("1 child", 1, widget.getChildCount());
     }
 
     public void testCheckBox() {

Modified: 
shale/framework/trunk/shale-clay/src/test/resources/org/apache/shale/clay/config/implicit.html
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/test/resources/org/apache/shale/clay/config/implicit.html?view=diff&rev=519626&r1=519625&r2=519626
==============================================================================
--- 
shale/framework/trunk/shale-clay/src/test/resources/org/apache/shale/clay/config/implicit.html
 (original)
+++ 
shale/framework/trunk/shale-clay/src/test/resources/org/apache/shale/clay/config/implicit.html
 Sun Mar 18 08:22:22 2007
@@ -42,6 +42,7 @@
       <input id="reset" type="RESET" value="reset"/> 
       <input id="password" type="password" size="16" value="[EMAIL 
PROTECTED]"/>
     -->
+    <a id="shaleSiteOverride" jsfid="h:commandLink" 
href="http://shale.apache.org/"; action="[EMAIL PROTECTED]">Test</a>
 
 </form>
 <!-- ### clay:remove ### -->


Reply via email to