All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gh.mygreen.xlsmapper.validation.beanvalidation.MessageInterpolatorAdapter Maven / Gradle / Ivy

There is a newer version: 2.2
Show newest version
package com.gh.mygreen.xlsmapper.validation.beanvalidation;

import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;

import javax.validation.metadata.ConstraintDescriptor;

import com.gh.mygreen.xlsmapper.ArgUtils;
import com.gh.mygreen.xlsmapper.validation.MessageInterpolator;
import com.gh.mygreen.xlsmapper.validation.MessageResolver;


/**
 * XlsMapperの{@link MessageInterpolator}とBeanValidationの{@link javax.validation.MessageInterpolator}のAdaptor。
 * 

BeanValidatorのメッセ-時処理時、特に式言語の実装切り替えする場合に利用する。 * * @author T.TSUCHIE * */ public class MessageInterpolatorAdapter implements javax.validation.MessageInterpolator { private final MessageResolver messageResolver; private final MessageInterpolator sheetMessageInterpolator; public MessageInterpolatorAdapter(final MessageResolver messageResolver, final MessageInterpolator sheetMessageInterpolator) { ArgUtils.notNull(messageResolver, "messageResolver"); ArgUtils.notNull(sheetMessageInterpolator, "sheetMessageInterpolator"); this.messageResolver = messageResolver; this.sheetMessageInterpolator = sheetMessageInterpolator; } @Override public String interpolate(final String messageTemplate, final Context context) { return sheetMessageInterpolator.interpolate(messageTemplate, createMessageVars(context), true, messageResolver); } @Override public String interpolate(final String messageTemplate, final Context context, final Locale locale) { return sheetMessageInterpolator.interpolate(messageTemplate, createMessageVars(context), true, messageResolver); } protected Map createMessageVars(final Context context) { final Map vars = new LinkedHashMap(); final ConstraintDescriptor descriptor = context.getConstraintDescriptor(); for(Map.Entry entry : descriptor.getAttributes().entrySet()) { final String attrName = entry.getKey(); final Object attrValue = entry.getValue(); vars.put(attrName, attrValue); } // 検証対象の値 vars.put("validatedValue", context.getValidatedValue()); // デフォルトのメッセージ final String defaultCode = String.format("%s.message", descriptor.getAnnotation().annotationType().getCanonicalName()); final String defaultMessage = messageResolver.getMessage(defaultCode); if(defaultMessage == null) { throw new RuntimeException(String.format("not found message code '%s'", defaultCode)); } vars.put(defaultCode, defaultMessage); return vars; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy