blob: 13ce5377d1cb9538533e5bf47f2cdc96e81fff03 [file] [log] [blame]
package org.apache.wicket.bean.validation;
import java.util.Locale;
import jakarta.validation.MessageInterpolator;
import org.apache.wicket.Session;
import org.apache.wicket.util.lang.Args;
/**
* {@link MessageInterpolator} that adapts another to a locale from Wicket's {@link Session}
*
* @author igor
*/
public class SessionLocaleInterpolator implements MessageInterpolator
{
private final MessageInterpolator delegate;
/**
* Constructor
*
* @param delegate
* the MessageInterpolator to delegate to
*/
public SessionLocaleInterpolator(MessageInterpolator delegate)
{
Args.notNull(delegate, "delegate");
this.delegate = delegate;
}
@Override
public String interpolate(final String messageTemplate,
final MessageInterpolator.Context context)
{
final Locale locale = getLocale();
if (locale != null)
{
return interpolate(messageTemplate, context, locale);
}
else
{
return delegate.interpolate(messageTemplate, context);
}
}
@Override
public String interpolate(final String message, final MessageInterpolator.Context context,
final Locale locale)
{
return delegate.interpolate(message, context, locale);
}
private Locale getLocale()
{
return Session.exists() ? Session.get().getLocale() : null;
}
}