Author: lukaszlenart
Date: Thu Sep  6 12:54:48 2012
New Revision: 1381585

URL: http://svn.apache.org/viewvc?rev=1381585&view=rev
Log:
WW-3644 changes support for expression as a dynamic attribute to parse only 
values enclosed in %{ and }

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java?rev=1381585&r1=1381584&r2=1381585&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java
 Thu Sep  6 12:54:48 2012
@@ -278,7 +278,7 @@ public class Component {
        public static String stripExpressionIfAltSyntax(ValueStack stack, 
String expr) {
                if (altSyntax(stack)) {
             // does the expression start with %{ and end with }? if so, just 
cut it off!
-            if (expr.startsWith("%{") && expr.endsWith("}")) {
+            if (isExpression(expr)) {
                 return expr.substring(2, expr.length() - 1);
             }
         }
@@ -511,10 +511,16 @@ public class Component {
     }
 
     /**
-     * Overwrite to set if body shold be used.
+     * Overwrite to set if body should be used.
      * @return always false for this component.
      */
     public boolean usesBody() {
         return false;
     }
+
+    public static boolean isExpression(Object value) {
+        String expr = value.toString();
+        return expr.startsWith("%{") && expr.endsWith("}");
+    }
+
 }

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java?rev=1381585&r1=1381584&r2=1381585&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
 Thu Sep  6 12:54:48 2012
@@ -22,6 +22,7 @@
 package org.apache.struts2.views.jsp.ui;
 
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.struts2.components.Component;
 import org.apache.struts2.components.UIBean;
 import org.apache.struts2.views.jsp.ComponentTagSupport;
 
@@ -291,10 +292,11 @@ public abstract class AbstractUITag exte
     }
 
     public void setDynamicAttribute(String uri, String localName, Object 
value) throws JspException {
-        if (value != null && value instanceof String) {
+        if (Component.altSyntax(getStack()) && Component.isExpression(value)) {
             dynamicAttributes.put(localName, 
String.valueOf(ObjectUtils.defaultIfNull(findValue(value.toString()), value)));
         } else {
             dynamicAttributes.put(localName, value);
         }
     }
+
 }

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java?rev=1381585&r1=1381584&r2=1381585&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
 Thu Sep  6 12:54:48 2012
@@ -44,6 +44,8 @@ import java.io.File;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 
+import static org.apache.struts2.views.jsp.AbstractUITagTest.normalize;
+
 /**
  * Test case for FreeMarkerResult.
  *
@@ -262,7 +264,7 @@ public class FreeMarkerResultTest extend
                 + "\n"
                 + "<input type=\"radio\" name=\"car\" id=\"carford\" 
value=\"ford\"/><label for=\"carford\">Ford Motor Co</label>\n"
                 + "<input type=\"radio\" name=\"car\" id=\"cartoyota\" 
value=\"toyota\"/><label for=\"cartoyota\">Toyota</label>\n";
-        assertEquals(expected, stringWriter.toString());
+        assertEquals(normalize(expected), normalize(stringWriter.toString()));
     }
 
     public void testDynamicAttributesInTheme() throws Exception {

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java?rev=1381585&r1=1381584&r2=1381585&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
 Thu Sep  6 12:54:48 2012
@@ -71,7 +71,7 @@ public class AnchorTest extends Abstract
         AnchorTag tag = createTag();
         tag.setHref("a");
 
-        tag.setDynamicAttribute("uri", "placeholder", "foo");
+        tag.setDynamicAttribute("uri", "placeholder", "%{foo}");
 
         tag.doStartTag();
         tag.doEndTag();


Reply via email to