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 2013/03/15 15:02:13 UTC
svn commit: r1456961 - in /struts/struts2/trunk:
core/src/main/java/org/apache/struts2/
core/src/main/java/org/apache/struts2/config/
core/src/main/java/org/apache/struts2/dispatcher/ core/src/main/resources/
plugins/embeddedjsp/src/test/java/org/apach...
Author: lukaszlenart
Date: Fri Mar 15 14:02:12 2013
New Revision: 1456961
URL: http://svn.apache.org/r1456961
Log:
WW-3998 Extracts interface and adds default implementation base on existing code
Added:
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/OgnlTextParser.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParser.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
struts/struts2/trunk/core/src/main/resources/struts-default.xml
struts/struts2/trunk/plugins/embeddedjsp/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java
struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java Fri Mar 15 14:02:12 2013
@@ -247,4 +247,6 @@ public final class StrutsConstants {
public static final String STRUTS_CONVERTER_CREATOR = "struts.converter.creator";
public static final String STRUTS_CONVERTER_HOLDER = "struts..converter.holder";
+ public static final String STRUTS_EXPRESSION_PARSER = "struts.expression.parser";
+
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java Fri Mar 15 14:02:12 2013
@@ -49,10 +49,7 @@ import com.opensymphony.xwork2.inject.Co
import com.opensymphony.xwork2.inject.Context;
import com.opensymphony.xwork2.inject.Factory;
import com.opensymphony.xwork2.inject.Scope;
-import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.PatternMatcher;
-import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.util.*;
import com.opensymphony.xwork2.util.location.LocatableProperties;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
@@ -276,6 +273,13 @@ import java.util.StringTokenizer;
* <td>singleton</td>
* <td>Holds user converters' instances</td>
* </tr>
+ * <tr>
+ * <td>com.opensymphony.xwork2.util.TextParser</td>
+ * <td>struts.expression.parser</td>
+ * <td>singleton</td>
+ * <td>Used to parse expressions like ${foo.bar} or %{bar.foo} but it is up tp the TextParser's
+ * implementation what kind of opening char to use (#, $, %, etc)</td>
+ * </tr>
* </table>
*
* <!-- END SNIPPET: extensionPoints -->
@@ -355,6 +359,8 @@ public class BeanSelectionProvider imple
alias(UnknownHandlerManager.class, StrutsConstants.STRUTS_UNKNOWN_HANDLER_MANAGER, builder, props);
alias(UrlHelper.class, StrutsConstants.STRUTS_URL_HELPER, builder, props);
+ alias(TextParser.class, StrutsConstants.STRUTS_EXPRESSION_PARSER, builder, props);
+
if ("true".equalsIgnoreCase(props.getProperty(StrutsConstants.STRUTS_DEVMODE))) {
props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD, "true");
props.setProperty(StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, "true");
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java Fri Mar 15 14:02:12 2013
@@ -197,13 +197,13 @@ public abstract class StrutsResultSuppor
if (parse && param != null && invocation != null) {
return TextParseUtil.translateVariables(param, invocation.getStack(),
new TextParseUtil.ParsedValueEvaluator() {
- public Object evaluate(Object parsedValue) {
+ public Object evaluate(String parsedValue) {
if (encode) {
if (parsedValue != null) {
try {
// use UTF-8 as this is the recommended encoding by W3C to
// avoid incompatibilities.
- return URLEncoder.encode(parsedValue.toString(), "UTF-8");
+ return URLEncoder.encode(parsedValue, "UTF-8");
}
catch(UnsupportedEncodingException e) {
if (LOG.isWarnEnabled()) {
Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original)
+++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Fri Mar 15 14:02:12 2013
@@ -100,6 +100,8 @@
<bean class="com.opensymphony.xwork2.ognl.OgnlUtil" />
+ <bean type="com.opensymphony.xwork2.util.TextParser" name="struts" class="com.opensymphony.xwork2.util.OgnlTextParser" scope="singleton"/>
+
<bean type="ognl.PropertyAccessor" name="com.opensymphony.xwork2.util.CompoundRoot" class="com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor" />
<bean type="ognl.PropertyAccessor" name="java.lang.Object" class="com.opensymphony.xwork2.ognl.accessor.ObjectAccessor" />
<bean type="ognl.PropertyAccessor" name="java.util.Iterator" class="com.opensymphony.xwork2.ognl.accessor.XWorkIteratorPropertyAccessor" />
Modified: struts/struts2/trunk/plugins/embeddedjsp/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/embeddedjsp/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/embeddedjsp/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java (original)
+++ struts/struts2/trunk/plugins/embeddedjsp/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java Fri Mar 15 14:02:12 2013
@@ -25,6 +25,8 @@ import com.opensymphony.xwork2.FileManag
import com.opensymphony.xwork2.FileManagerFactory;
import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
import com.opensymphony.xwork2.inject.Container;
+import com.opensymphony.xwork2.util.TextParser;
+import com.opensymphony.xwork2.util.OgnlTextParser;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate;
@@ -275,6 +277,8 @@ public class EmbeddedJSPResultTest exten
//mock container
Container container = EasyMock.createNiceMock(Container.class);
EasyMock.expect(container.getInstance(XWorkConverter.class)).andReturn(converter).anyTimes();
+ TextParser parser = new OgnlTextParser();
+ EasyMock.expect(container.getInstance(TextParser.class)).andReturn(parser).anyTimes();
EasyMock.expect(container.getInstanceNames(FileManager.class)).andReturn(new HashSet<String>()).anyTimes();
EasyMock.expect(container.getInstance(FileManager.class)).andReturn(fileManager).anyTimes();
Modified: struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java (original)
+++ struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java Fri Mar 15 14:02:12 2013
@@ -24,10 +24,12 @@ package org.apache.struts2.views.java.si
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
import com.opensymphony.xwork2.inject.Container;
+import com.opensymphony.xwork2.util.TextParser;
+import com.opensymphony.xwork2.util.OgnlTextParser;
import com.opensymphony.xwork2.util.ValueStack;
import junit.framework.TestCase;
-import org.apache.struts2.StrutsConstants;
import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.StrutsConstants;
import org.apache.struts2.components.Component;
import org.apache.struts2.components.UIBean;
import org.apache.struts2.components.template.Template;
@@ -107,6 +109,8 @@ public abstract class AbstractTest exten
XWorkConverter converter = new ConverterEx();
EasyMock.expect(container.getInstance(String.class, StrutsConstants.STRUTS_TAG_ALTSYNTAX)).andReturn("true").anyTimes();
EasyMock.expect(container.getInstance(XWorkConverter.class)).andReturn(converter).anyTimes();
+ TextParser parser = new OgnlTextParser();
+ EasyMock.expect(container.getInstance(TextParser.class)).andReturn(parser).anyTimes();
stackContext.put(ActionContext.CONTAINER, container);
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java Fri Mar 15 14:02:12 2013
@@ -52,10 +52,7 @@ import com.opensymphony.xwork2.ognl.acce
import com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor;
import com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor;
import com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor;
-import com.opensymphony.xwork2.util.CompoundRoot;
-import com.opensymphony.xwork2.util.PatternMatcher;
-import com.opensymphony.xwork2.util.ValueStackFactory;
-import com.opensymphony.xwork2.util.WildcardHelper;
+import com.opensymphony.xwork2.util.*;
import com.opensymphony.xwork2.util.fs.DefaultFileManager;
import com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory;
import com.opensymphony.xwork2.util.location.LocatableProperties;
@@ -137,6 +134,8 @@ public class XWorkConfigurationProvider
.factory(MethodAccessor.class, Object.class.getName(), XWorkMethodAccessor.class, Scope.SINGLETON)
.factory(MethodAccessor.class, CompoundRoot.class.getName(), CompoundRootAccessor.class, Scope.SINGLETON)
+ .factory(TextParser.class, OgnlTextParser.class, Scope.SINGLETON)
+
.factory(NullHandler.class, Object.class.getName(), InstantiatingNullHandler.class, Scope.SINGLETON)
.factory(ActionValidatorManager.class, AnnotationActionValidatorManager.class, Scope.SINGLETON)
.factory(ActionValidatorManager.class, "no-annotations", DefaultActionValidatorManager.class, Scope.SINGLETON)
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Fri Mar 15 14:02:12 2013
@@ -332,7 +332,7 @@ public class ParametersInterceptor exten
String developerNotification = LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification", ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", new Object[]{
"Unexpected Exception caught setting '" + name + "' on '" + action.getClass() + ": " + e.getMessage()
});
- LOG.error(developerNotification);
+ LOG.error(developerNotification, e);
if (action instanceof ValidationAware) {
((ValidationAware) action).addActionMessage(developerNotification);
}
Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/OgnlTextParser.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/OgnlTextParser.java?rev=1456961&view=auto
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/OgnlTextParser.java (added)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/OgnlTextParser.java Fri Mar 15 14:02:12 2013
@@ -0,0 +1,84 @@
+package com.opensymphony.xwork2.util;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * OGNL implementation of {@link TextParser}
+ */
+public class OgnlTextParser implements TextParser {
+
+ public Object evaluate(char[] openChars, String expression, TextParseUtil.ParsedValueEvaluator evaluator, int maxLoopCount) {
+ // deal with the "pure" expressions first!
+ //expression = expression.trim();
+ Object result = expression;
+ for (char open : openChars) {
+ int loopCount = 1;
+ int pos = 0;
+
+ //this creates an implicit StringBuffer and shouldn't be used in the inner loop
+ final String lookupChars = open + "{";
+
+ while (true) {
+ int start = expression.indexOf(lookupChars, pos);
+ if (start == -1) {
+ pos = 0;
+ loopCount++;
+ start = expression.indexOf(lookupChars);
+ }
+ if (loopCount > maxLoopCount) {
+ // translateVariables prevent infinite loop / expression recursive evaluation
+ break;
+ }
+ int length = expression.length();
+ int x = start + 2;
+ int end;
+ char c;
+ int count = 1;
+ while (start != -1 && x < length && count != 0) {
+ c = expression.charAt(x++);
+ if (c == '{') {
+ count++;
+ } else if (c == '}') {
+ count--;
+ }
+ }
+ end = x - 1;
+
+ if ((start != -1) && (end != -1) && (count == 0)) {
+ String var = expression.substring(start + 2, end);
+
+ Object o = evaluator.evaluate(var);
+
+ String left = expression.substring(0, start);
+ String right = expression.substring(end + 1);
+ String middle = null;
+ if (o != null) {
+ middle = o.toString();
+ if (StringUtils.isEmpty(left)) {
+ result = o;
+ } else {
+ result = left.concat(middle);
+ }
+
+ if (StringUtils.isNotEmpty(right)) {
+ result = result.toString().concat(right);
+ }
+
+ expression = left.concat(middle).concat(right);
+ } else {
+ // the variable doesn't exist, so don't display anything
+ expression = left.concat(right);
+ result = expression;
+ }
+ pos = (left != null && left.length() > 0 ? left.length() - 1: 0) +
+ (middle != null && middle.length() > 0 ? middle.length() - 1: 0) +
+ 1;
+ pos = Math.max(pos, 1);
+ } else {
+ break;
+ }
+ }
+ }
+ return result;
+ }
+}
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java Fri Mar 15 14:02:12 2013
@@ -22,8 +22,6 @@ import com.opensymphony.xwork2.inject.Co
import java.util.HashSet;
import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-
/**
* Utility class for text parsing.
@@ -153,84 +151,26 @@ public class TextParseUtil {
* @param evaluator
* @return Converted object from variable translation.
*/
- public static Object translateVariables(char[] openChars, String expression, ValueStack stack, Class asType, ParsedValueEvaluator evaluator, int maxLoopCount) {
- // deal with the "pure" expressions first!
- //expression = expression.trim();
- Object result = expression;
- for (char open : openChars) {
- int loopCount = 1;
- int pos = 0;
-
- //this creates an implicit StringBuffer and shouldn't be used in the inner loop
- final String lookupChars = open + "{";
-
- while (true) {
- int start = expression.indexOf(lookupChars, pos);
- if (start == -1) {
- pos = 0;
- loopCount++;
- start = expression.indexOf(lookupChars);
- }
- if (loopCount > maxLoopCount) {
- // translateVariables prevent infinite loop / expression recursive evaluation
- break;
- }
- int length = expression.length();
- int x = start + 2;
- int end;
- char c;
- int count = 1;
- while (start != -1 && x < length && count != 0) {
- c = expression.charAt(x++);
- if (c == '{') {
- count++;
- } else if (c == '}') {
- count--;
- }
- }
- end = x - 1;
+ public static Object translateVariables(char[] openChars, String expression, final ValueStack stack, final Class asType, final ParsedValueEvaluator evaluator, int maxLoopCount) {
- if ((start != -1) && (end != -1) && (count == 0)) {
- String var = expression.substring(start + 2, end);
- Object o = stack.findValue(var, asType);
- if (evaluator != null) {
- o = evaluator.evaluate(o);
- }
-
-
- String left = expression.substring(0, start);
- String right = expression.substring(end + 1);
- String middle = null;
- if (o != null) {
- middle = o.toString();
- if (StringUtils.isEmpty(left)) {
- result = o;
- } else {
- result = left.concat(middle);
- }
-
- if (StringUtils.isNotEmpty(right)) {
- result = result.toString().concat(right);
- }
-
- expression = left.concat(middle).concat(right);
- } else {
- // the variable doesn't exist, so don't display anything
- expression = left.concat(right);
- result = expression;
- }
- pos = (left != null && left.length() > 0 ? left.length() - 1: 0) +
- (middle != null && middle.length() > 0 ? middle.length() - 1: 0) +
- 1;
- pos = Math.max(pos, 1);
- } else {
- break;
+ ParsedValueEvaluator ognlEval = new ParsedValueEvaluator() {
+ public Object evaluate(String parsedValue) {
+ Object o = stack.findValue(parsedValue, asType);
+ if (evaluator != null) {
+ o = evaluator.evaluate(o.toString());
}
+ return o;
}
- }
+ };
+
+
+ TextParser parser = ((Container)stack.getContext().get(ActionContext.CONTAINER)).getInstance(TextParser.class);
XWorkConverter conv = ((Container)stack.getContext().get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class);
+
+ Object result = parser.evaluate(openChars, expression, ognlEval, maxLoopCount);
+
return conv.convertValue(stack.getContext(), result, asType);
}
@@ -279,6 +219,6 @@ public class TextParseUtil {
* @param parsedValue - value parsed by ognl value stack
* @return return the evaluted value.
*/
- Object evaluate(Object parsedValue);
+ Object evaluate(String parsedValue);
}
}
Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParser.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParser.java?rev=1456961&view=auto
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParser.java (added)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParser.java Fri Mar 15 14:02:12 2013
@@ -0,0 +1,11 @@
+package com.opensymphony.xwork2.util;
+
+/**
+ * Used to parse expressions like ${foo.bar} or %{bar.foo} but it is up tp the TextParser's
+ * implementation what kind of opening char to use (#, $, %, etc)
+ */
+public interface TextParser {
+
+ Object evaluate(char[] openChars, String expression, TextParseUtil.ParsedValueEvaluator evaluator, int maxLoopCount);
+
+}
Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java?rev=1456961&r1=1456960&r2=1456961&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java (original)
+++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java Fri Mar 15 14:02:12 2013
@@ -40,7 +40,7 @@ public class TextParseUtilTest extends X
});
TextParseUtil.ParsedValueEvaluator evaluator = new TextParseUtil.ParsedValueEvaluator() {
- public Object evaluate(Object parsedValue) {
+ public Object evaluate(String parsedValue) {
return parsedValue.toString()+"Something";
}
};
@@ -53,7 +53,7 @@ public class TextParseUtilTest extends X
public void testTranslateVariables() {
ValueStack stack = ActionContext.getContext().getValueStack();
- Object s = TextParseUtil.translateVariables("foo: ${{1, 2, 3}}, bar: ${1}", stack);
+ Object s = TextParseUtil.translateVariables("foo: ${{1, 2, 3}}, bar: %{1}", stack);
assertEquals("foo: [1, 2, 3], bar: 1", s);
s = TextParseUtil.translateVariables("foo: %{{1, 2, 3}}, bar: %{1}", stack);