/*
 * Hibernate Validator, declare and validate application constraints
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
 */
package org.hibernate.validator.internal.engine.messageinterpolation;

import java.util.Locale;

import javax.el.ExpressionFactory;
import javax.validation.MessageInterpolator;

Helper class dealing with the interpolation of a single message parameter or expression extracted from a message descriptor.
Author:Hardy Ferentschik
/** * Helper class dealing with the interpolation of a single message parameter or expression extracted from a message * descriptor. * * @author Hardy Ferentschik */
public class InterpolationTerm {
Meta character to designate an EL expression.
/** * Meta character to designate an EL expression. */
private static final String EL_DESIGNATION_CHARACTER = "$";
The actual expression (parameter or EL expression).
/** * The actual expression (parameter or EL expression). */
private final String expression;
The type of the expression.
/** * The type of the expression. */
private final InterpolationTermType type;
The resolver for the expression.
/** * The resolver for the expression. */
private final TermResolver resolver;
Create an interpolation term for an expression.
Params:
  • expression – the expression.
  • locale – the locale.
  • expressionFactory – the expression factory to use if the expression uses EL.
/** * Create an interpolation term for an expression. * @param expression the expression. * @param locale the locale. * @param expressionFactory the expression factory to use if the expression uses EL. */
public InterpolationTerm(String expression, Locale locale, ExpressionFactory expressionFactory) { this.expression = expression; if ( isElExpression( expression ) ) { this.type = InterpolationTermType.EL; this.resolver = new ElTermResolver( locale, expressionFactory ); } else { this.type = InterpolationTermType.PARAMETER; this.resolver = new ParameterTermResolver(); } } public static boolean isElExpression(String expression) { return expression.startsWith( EL_DESIGNATION_CHARACTER ); } public String interpolate(MessageInterpolator.Context context) { return resolver.interpolate( context, expression ); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append( "InterpolationExpression" ); sb.append( "{expression='" ).append( expression ).append( '\'' ); sb.append( ", type=" ).append( type ); sb.append( '}' ); return sb.toString(); } }