package net.asfun.jangod.lib.tag; import net.asfun.jangod.interpret.InterpretException; import net.asfun.jangod.interpret.JangodInterpreter; import net.asfun.jangod.interpret.VariableFilter; import net.asfun.jangod.lib.Tag; import net.asfun.jangod.tree.NodeList; import net.asfun.jangod.util.HelperStringTokenizer; import org.springframework.context.MessageSource; public class MessageTag implements Tag { final String TAGNAME = "message"; @Override public String interpreter(NodeList carries, String helpers, JangodInterpreter interpreter) throws InterpretException { String key; String[] args; String[] tokens = new HelperStringTokenizer(helpers).allTokens(); if (tokens.length < 1) { throw new InterpretException( "Tag 'message' expects at least 1 helper >>> " + tokens.length); } else { key = resolveToken(tokens[0], interpreter); if (tokens.length == 1) { args = new String[0]; } else { args = new String[tokens.length - 1]; System.arraycopy(tokens, 1, args, 0, tokens.length - 1); } } for (int i = 0; i < args.length; i++) { args[i] = resolveToken(args[i], interpreter); } String message = key; MessageSource messageSource = interpreter.getApplication() .getMessageSource(); if (messageSource != null) { message = messageSource.getMessage(key, args, interpreter.getLocale()); } return message; } private String resolveToken(String token, JangodInterpreter interpreter) throws InterpretException { Object val = VariableFilter.compute(token, interpreter); return (val == null) ? token : String.valueOf(val); } @Override public String getEndTagName() { return null; } @Override public String getName() { return TAGNAME; } }