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 2016/03/06 10:07:19 UTC
struts git commit: Reduces expression evaluation if there is no
expression
Repository: struts
Updated Branches:
refs/heads/support-2-3 9de0cf4c8 -> b15553231
Reduces expression evaluation if there is no expression
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b1555323
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b1555323
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b1555323
Branch: refs/heads/support-2-3
Commit: b155532314dda595bb42b03061784e60e9989d07
Parents: 9de0cf4
Author: Lukasz Lenart <lu...@apache.org>
Authored: Sun Mar 6 10:07:06 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Sun Mar 6 10:07:06 2016 +0100
----------------------------------------------------------------------
.../apache/struts2/components/Component.java | 6 ++-
.../org/apache/struts2/util/ComponentUtils.java | 9 ++--
.../struts2/views/jsp/ui/AbstractUITag.java | 2 +-
.../apache/struts2/util/ComponentUtilsTest.java | 44 ++++++++++++++++++++
4 files changed, 56 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/b1555323/core/src/main/java/org/apache/struts2/components/Component.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Component.java b/core/src/main/java/org/apache/struts2/components/Component.java
index 62e07ee..af78d30 100644
--- a/core/src/main/java/org/apache/struts2/components/Component.java
+++ b/core/src/main/java/org/apache/struts2/components/Component.java
@@ -373,7 +373,11 @@ public class Component {
*/
protected Object findValue(String expr, Class toType) {
if (altSyntax() && toType == String.class) {
- return TextParseUtil.translateVariables('%', expr, stack);
+ if (ComponentUtils.containsExpression(expr)) {
+ return TextParseUtil.translateVariables('%', expr, stack);
+ } else {
+ return expr;
+ }
} else {
expr = stripExpressionIfAltSyntax(expr);
http://git-wip-us.apache.org/repos/asf/struts/blob/b1555323/core/src/main/java/org/apache/struts2/util/ComponentUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/ComponentUtils.java b/core/src/main/java/org/apache/struts2/util/ComponentUtils.java
index 89a238f..01fbcd9 100644
--- a/core/src/main/java/org/apache/struts2/util/ComponentUtils.java
+++ b/core/src/main/java/org/apache/struts2/util/ComponentUtils.java
@@ -40,12 +40,15 @@ public class ComponentUtils {
/**
* Check if object is expression base on altSyntax
*
- * @param value to treat as an expression
+ * @param expr to treat as an expression
* @return true if it is an expression
*/
- public static boolean isExpression(Object value) {
- String expr = value.toString();
+ public static boolean isExpression(String expr) {
return expr.startsWith("%{") && expr.endsWith("}");
}
+ public static boolean containsExpression(String expr) {
+ return expr.contains("%{") && expr.contains("}");
+ }
+
}
http://git-wip-us.apache.org/repos/asf/struts/blob/b1555323/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
index 65b80cf..0a122a3 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
@@ -306,7 +306,7 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam
}
public void setDynamicAttribute(String uri, String localName, Object value) throws JspException {
- if (ComponentUtils.altSyntax(getStack()) && ComponentUtils.isExpression(value)) {
+ if (ComponentUtils.altSyntax(getStack()) && ComponentUtils.isExpression(value.toString())) {
dynamicAttributes.put(localName, String.valueOf(ObjectUtils.defaultIfNull(findValue(value.toString()), value)));
} else {
dynamicAttributes.put(localName, value);
http://git-wip-us.apache.org/repos/asf/struts/blob/b1555323/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java b/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java
index 6689352..095176a 100644
--- a/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java
+++ b/core/src/test/java/org/apache/struts2/util/ComponentUtilsTest.java
@@ -71,6 +71,17 @@ public class ComponentUtilsTest extends StrutsInternalTestCase {
assertTrue(actual);
}
+ public void testIsExpressionIsFalseWhenCombined() throws Exception {
+ // given
+ String anExpression = "bar%{foo}";
+
+ // when
+ boolean actual = ComponentUtils.isExpression(anExpression);
+
+ // then
+ assertFalse(actual);
+ }
+
public void testIsExpressionIsFalse() throws Exception {
// given
String anExpression = "foo";
@@ -81,6 +92,39 @@ public class ComponentUtilsTest extends StrutsInternalTestCase {
// then
assertFalse(actual);
}
+
+ public void testContainsExpressionIsTrue() throws Exception {
+ // given
+ String anExpression = "%{foo}";
+
+ // when
+ boolean actual = ComponentUtils.containsExpression(anExpression);
+
+ // then
+ assertTrue(actual);
+ }
+
+ public void testIsContainsIsTrueWhenCombined() throws Exception {
+ // given
+ String anExpression = "bar%{foo}";
+
+ // when
+ boolean actual = ComponentUtils.containsExpression(anExpression);
+
+ // then
+ assertTrue(actual);
+ }
+
+ public void testContainsExpressionIsFalse() throws Exception {
+ // given
+ String anExpression = "foo";
+
+ // when
+ boolean actual = ComponentUtils.containsExpression(anExpression);
+
+ // then
+ assertFalse(actual);
+ }
}
class MockConfigurationProvider implements ConfigurationProvider {