diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/ExpressionParser.java b/spring-binding/src/main/java/org/springframework/binding/expression/ExpressionParser.java index bd3496e9..d14367cf 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/ExpressionParser.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/ExpressionParser.java @@ -23,6 +23,17 @@ package org.springframework.binding.expression; */ public interface ExpressionParser { + /** + * Is the provided expression string an "eval" expression: meaning an expression that validates to a dynamic value, + * and not a literal expression? "Eval" expressions are normally enclosed in delimiters like #{}, where literal + * expressions are not delimited. + * + * TODO - candidate for removal in a future milestone: is this really needed? + * @param string the string + * @return true if the expression is an eval expression string, false otherwise. + */ + public boolean isEvalExpressionString(String string); + /** * Parse the provided expression string, returning an expression evaluator capable of evaluating it. * @param expressionString the parseable expression string; cannot be null diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/el/ELExpressionParser.java b/spring-binding/src/main/java/org/springframework/binding/expression/el/ELExpressionParser.java index e4a402b6..b9b569cf 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/el/ELExpressionParser.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/el/ELExpressionParser.java @@ -22,6 +22,16 @@ import org.springframework.binding.expression.ParserException; */ public class ELExpressionParser implements ExpressionParser { + /** + * The expression prefix. + */ + private static final String EXPRESSION_PREFIX = "#{"; + + /** + * The expression suffix. + */ + private static final String EXPRESSION_SUFFIX = "}"; + /** * The ExpressionFactory for constructing EL expressions */ @@ -45,6 +55,10 @@ public class ELExpressionParser implements ExpressionParser { this.contextFactories.put(expressionTargetType, contextFactory); } + public boolean isEvalExpressionString(String expressionString) { + return expressionString.startsWith(EXPRESSION_PREFIX) && expressionString.endsWith(EXPRESSION_SUFFIX); + } + public Expression parseExpression(String expressionString, Class expressionTargetType, Class expectedEvaluationResultType, ExpressionVariable[] expressionVariables) throws ParserException { if (expectedEvaluationResultType == null) { diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/support/AbstractExpressionParser.java b/spring-binding/src/main/java/org/springframework/binding/expression/support/AbstractExpressionParser.java index e62b9b95..aa9626bb 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/support/AbstractExpressionParser.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/support/AbstractExpressionParser.java @@ -80,6 +80,10 @@ public abstract class AbstractExpressionParser implements ExpressionParser { this.expressionSuffix = expressionSuffix; } + public boolean isEvalExpressionString(String string) { + return string.startsWith(expressionPrefix) && string.endsWith(expressionSuffix); + } + public Expression parseExpression(String expressionString, Class expressionTargetType, Class expectedEvaluationResultType, ExpressionVariable[] expressionVariables) throws ParserException { Assert.notNull(expressionString, "The expression string to parse is required"); diff --git a/spring-faces/src/main/java/org/springframework/faces/webflow/FlowFacesContext.java b/spring-faces/src/main/java/org/springframework/faces/webflow/FlowFacesContext.java index 616341e9..ccc13d02 100644 --- a/spring-faces/src/main/java/org/springframework/faces/webflow/FlowFacesContext.java +++ b/spring-faces/src/main/java/org/springframework/faces/webflow/FlowFacesContext.java @@ -29,8 +29,7 @@ import javax.faces.context.ResponseWriter; import javax.faces.render.RenderKit; import org.springframework.binding.message.Message; -import org.springframework.binding.message.MessageResolver; -import org.springframework.binding.message.Messages; +import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.Severity; import org.springframework.context.MessageSource; import org.springframework.util.ClassUtils; @@ -75,7 +74,7 @@ public class FlowFacesContext extends FacesContext { * Translates a FacesMessage to an SWF Message and adds it to the current MessageContext */ public void addMessage(String clientId, FacesMessage message) { - MessageResolver messageResolver; + MessageBuilder builder = new MessageBuilder(); StringBuffer msgText = new StringBuffer(); if (StringUtils.hasText(message.getSummary())) { msgText.append(message.getSummary()); @@ -87,13 +86,13 @@ public class FlowFacesContext extends FacesContext { } if (message.getSeverity() == FacesMessage.SEVERITY_INFO) { - messageResolver = Messages.text(source, msgText.toString(), Severity.INFO); + builder.source(source).defaultText(msgText.toString()).info(); } else if (message.getSeverity() == FacesMessage.SEVERITY_WARN) { - messageResolver = Messages.text(source, msgText.toString(), Severity.WARNING); + builder.source(source).defaultText(msgText.toString()).warning(); } else { - messageResolver = Messages.text(source, msgText.toString(), Severity.ERROR); + builder.source(source).defaultText(msgText.toString()).error(); } - context.getMessageContext().addMessage(messageResolver); + context.getMessageContext().addMessage(builder.build()); } /** diff --git a/spring-webflow/src/main/java/org/springframework/webflow/core/expression/DefaultExpressionParserFactory.java b/spring-webflow/src/main/java/org/springframework/webflow/core/expression/DefaultExpressionParserFactory.java index 4de5de52..cc03e901 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/core/expression/DefaultExpressionParserFactory.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/core/expression/DefaultExpressionParserFactory.java @@ -54,10 +54,6 @@ public final class DefaultExpressionParserFactory { return getDefaultExpressionParser().isEvalExpressionString(string); } - public String parseEvalExpressionString(String string) throws ParserException { - return getDefaultExpressionParser().parseEvalExpressionString(string); - } - public Expression parseExpression(String expressionString, Class expressionTargetType, Class expectedEvaluationResultType, ExpressionVariable[] expressionVariables) throws ParserException {