You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2012/09/06 15:44:34 UTC

svn commit: r1381599 - in /struts/struts2/trunk: core/src/main/java/org/apache/struts2/components/ core/src/main/java/org/apache/struts2/util/ core/src/main/java/org/apache/struts2/views/jsp/ core/src/main/java/org/apache/struts2/views/jsp/ui/ core/src...

Author: lukaszlenart
Date: Thu Sep  6 13:44:33 2012
New Revision: 1381599

URL: http://svn.apache.org/viewvc?rev=1381599&view=rev
Log:
WW-3875 extracts static util methods into separated class

Added:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ComponentUtils.java
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java
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/StrutsBodyTagSupport.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
    struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.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=1381599&r1=1381598&r2=1381599&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 13:44:33 2012
@@ -28,9 +28,9 @@ import org.apache.struts2.StrutsConstant
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
+import org.apache.struts2.util.ComponentUtils;
 import org.apache.struts2.util.FastByteArrayOutputStream;
 import org.apache.struts2.views.jsp.TagUtils;
-import org.apache.struts2.views.util.ContextUtil;
 import org.apache.struts2.views.util.UrlHelper;
 
 import javax.servlet.http.HttpServletRequest;
@@ -265,35 +265,7 @@ public class Component {
      * the parameter expression is returned as is.
      */
 	protected String stripExpressionIfAltSyntax(String expr) {
-		return stripExpressionIfAltSyntax(stack, expr);
-	}
-	
-    /**
-     * If altsyntax (%{...}) is applied, simply strip the "%{" and "}" off.
-     * @param stack the ValueStack where the context value is searched for. 
-     * @param expr the expression (must be not null)
-     * @return the stripped expression if altSyntax is enabled. Otherwise
-     * the parameter expression is returned as is.
-     */
-	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 (isExpression(expr)) {
-                return expr.substring(2, expr.length() - 1);
-            }
-        }
-		return expr;
-	}
-
-    /**
-     * Is the altSyntax enabled? [TRUE]
-     * <p/>
-     * @param stack the ValueStack where the context value is searched for.
-     * @return true if altSyntax is activated. False otherwise. 
-     * See <code>struts.properties</code> where the altSyntax flag is defined.
-     */
-	public static boolean altSyntax(ValueStack stack)  {
-        return ContextUtil.isUseAltSyntax(stack.getContext());
+		return ComponentUtils.stripExpressionIfAltSyntax(stack, expr);
 	}
 
     /**
@@ -302,7 +274,7 @@ public class Component {
      * See <code>struts.properties</code> where the altSyntax flag is defined.
      */
     public boolean altSyntax() {
-        return altSyntax(stack);
+        return ComponentUtils.altSyntax(stack);
     }
 
     /**
@@ -518,9 +490,4 @@ public class Component {
         return false;
     }
 
-    public static boolean isExpression(Object value) {
-        String expr = value.toString();
-        return expr.startsWith("%{") && expr.endsWith("}");
-    }
-
 }

Added: struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ComponentUtils.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ComponentUtils.java?rev=1381599&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ComponentUtils.java (added)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ComponentUtils.java Thu Sep  6 13:44:33 2012
@@ -0,0 +1,51 @@
+package org.apache.struts2.util;
+
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.views.util.ContextUtil;
+
+/**
+ * Various static methods used with components
+ */
+public class ComponentUtils {
+
+    /**
+     * If altSyntax (%{...}) is applied, simply strip the "%{" and "}" off.
+     *
+     * @param stack the ValueStack where the context value is searched for.
+     * @param expr  the expression (must be not null)
+     * @return the stripped expression if altSyntax is enabled. Otherwise
+     *         the parameter expression is returned as is.
+     */
+    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 (isExpression(expr)) {
+                return expr.substring(2, expr.length() - 1);
+            }
+        }
+        return expr;
+    }
+
+    /**
+     * Is the altSyntax enabled? [TRUE]
+     *
+     * @param stack the ValueStack where the context value is searched for.
+     * @return true if altSyntax is activated. False otherwise.
+     *         See <code>struts.properties</code> where the altSyntax flag is defined.
+     */
+    public static boolean altSyntax(ValueStack stack) {
+        return ContextUtil.isUseAltSyntax(stack.getContext());
+    }
+
+    /**
+     * Check if object is expression base on altSyntax
+     *
+     * @param value to treat as an expression
+     * @return true if it is an expression
+     */
+    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/StrutsBodyTagSupport.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/StrutsBodyTagSupport.java?rev=1381599&r1=1381598&r2=1381599&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/StrutsBodyTagSupport.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/StrutsBodyTagSupport.java Thu Sep  6 13:44:33 2012
@@ -25,7 +25,7 @@ import java.io.PrintWriter;
 
 import javax.servlet.jsp.tagext.BodyTagSupport;
 
-import org.apache.struts2.components.Component;
+import org.apache.struts2.util.ComponentUtils;
 import org.apache.struts2.util.FastByteArrayOutputStream;
 
 import com.opensymphony.xwork2.util.TextParseUtil;
@@ -49,17 +49,17 @@ public class StrutsBodyTagSupport extend
     }
 
     protected Object findValue(String expr) {
-    	expr = Component.stripExpressionIfAltSyntax(getStack(), expr);
+    	expr = ComponentUtils.stripExpressionIfAltSyntax(getStack(), expr);
 
         return getStack().findValue(expr);
     }
 
     protected Object findValue(String expr, Class toType) {
-        if (Component.altSyntax(getStack()) && toType == String.class) {
+        if (ComponentUtils.altSyntax(getStack()) && toType == String.class) {
         	return TextParseUtil.translateVariables('%', expr, getStack());
             //return translateVariables(expr, getStack());
         } else {
-        	expr = Component.stripExpressionIfAltSyntax(getStack(), expr);
+        	expr = ComponentUtils.stripExpressionIfAltSyntax(getStack(), expr);
 
             return getStack().findValue(expr, toType);
         }

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=1381599&r1=1381598&r2=1381599&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 13:44:33 2012
@@ -22,8 +22,8 @@
 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.util.ComponentUtils;
 import org.apache.struts2.views.jsp.ComponentTagSupport;
 
 import javax.servlet.jsp.JspException;
@@ -292,7 +292,7 @@ public abstract class AbstractUITag exte
     }
 
     public void setDynamicAttribute(String uri, String localName, Object value) throws JspException {
-        if (Component.altSyntax(getStack()) && Component.isExpression(value)) {
+        if (ComponentUtils.altSyntax(getStack()) && ComponentUtils.isExpression(value)) {
             dynamicAttributes.put(localName, String.valueOf(ObjectUtils.defaultIfNull(findValue(value.toString()), value)));
         } else {
             dynamicAttributes.put(localName, value);

Added: struts/struts2/trunk/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java?rev=1381599&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java (added)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java Thu Sep  6 13:44:33 2012
@@ -0,0 +1,104 @@
+package org.apache.struts2.util;
+
+import com.opensymphony.xwork2.config.Configuration;
+import com.opensymphony.xwork2.config.ConfigurationException;
+import com.opensymphony.xwork2.config.ConfigurationProvider;
+import com.opensymphony.xwork2.inject.ContainerBuilder;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.util.location.LocatableProperties;
+import org.apache.struts2.StrutsConstants;
+import org.apache.struts2.StrutsTestCase;
+
+public class ComponentUtilsTest extends StrutsTestCase {
+
+    public void testStripExpression() throws Exception {
+        // given
+        ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack();
+        String anExpression = "%{foo}";
+
+        // when
+        String actual = ComponentUtils.stripExpressionIfAltSyntax(stack, anExpression);
+
+        // then
+        assertEquals(actual, "foo");
+    }
+
+    public void testNoStripExpressionIfNoAltSyntax() throws Exception {
+        // given
+        loadConfigurationProviders(new MockConfigurationProvider());
+        ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack();
+        String anExpression = "%{foo}";
+
+        // when
+        String actual = ComponentUtils.stripExpressionIfAltSyntax(stack, anExpression);
+
+        // then
+        assertEquals(actual, "%{foo}");
+    }
+
+    public void testAltSyntaxIsTrue() throws Exception {
+        // given
+        ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack();
+
+        // when
+        boolean actual = ComponentUtils.altSyntax(stack);
+
+        // then
+        assertTrue(actual);
+    }
+
+    public void testAltSyntaxIsFalse() throws Exception {
+        // given
+        loadConfigurationProviders(new MockConfigurationProvider());
+        ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack();
+
+        // when
+        boolean actual = ComponentUtils.altSyntax(stack);
+
+        // then
+        assertFalse(actual);
+    }
+
+    public void testIsExpressionIsTrue() throws Exception {
+        // given
+        String anExpression = "%{foo}";
+
+        // when
+        boolean actual = ComponentUtils.isExpression(anExpression);
+
+        // then
+        assertTrue(actual);
+    }
+
+    public void testIsExpressionIsFalse() throws Exception {
+        // given
+        String anExpression = "foo";
+
+        // when
+        boolean actual = ComponentUtils.isExpression(anExpression);
+
+        // then
+        assertFalse(actual);
+    }
+}
+
+class MockConfigurationProvider implements ConfigurationProvider {
+
+    public void destroy() {
+    }
+
+    public void init(Configuration configuration) throws ConfigurationException {
+    }
+
+    public boolean needsReload() {
+        return false;
+    }
+
+    public void loadPackages() throws ConfigurationException {
+    }
+
+    public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
+        builder.constant(StrutsConstants.STRUTS_TAG_ALTSYNTAX, "false");
+    }
+}

Modified: struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java?rev=1381599&r1=1381598&r2=1381599&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java (original)
+++ struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java Thu Sep  6 13:44:33 2012
@@ -23,7 +23,7 @@ package org.apache.struts2.views.java.si
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
 import org.apache.struts2.components.template.TemplateRenderingContext;
-import org.apache.struts2.components.Component;
+import org.apache.struts2.util.ComponentUtils;
 import org.apache.struts2.views.java.Attributes;
 import org.apache.struts2.views.java.TagHandler;
 import org.apache.struts2.views.util.ContextUtil;
@@ -83,7 +83,7 @@ public abstract class AbstractTagHandler
         }
 
         ValueStack stack = context.getStack();
-        return stack.findValue(Component.stripExpressionIfAltSyntax(stack, expr));
+        return stack.findValue(ComponentUtils.stripExpressionIfAltSyntax(stack, expr));
     }
 
     private Object findValue(String expr, Class toType) {
@@ -92,7 +92,7 @@ public abstract class AbstractTagHandler
         if (altSyntax && toType == String.class) {
             return TextParseUtil.translateVariables('%', expr, stack);
         } else {
-            return stack.findValue(Component.stripExpressionIfAltSyntax(stack, expr), toType);
+            return stack.findValue(ComponentUtils.stripExpressionIfAltSyntax(stack, expr), toType);
         }
     }
 }