class MessageConveyor implements IMessageConveyor {

	public <E extends Enum<?>> String getMessage(E key, Object... args)
			throws MessageConveyorException {

		String declararingClassName = key.getDeclaringClass().getName();
		CAL10NResourceBundle rb = cache.get(declararingClassName);
		if (rb == null || rb.hasChanged()) {
			rb = lookup(key);
			cache.put(declararingClassName, rb);
		}

		String keyAsStr = key.toString();
		String value = rb.getString(keyAsStr);
		if (value == null) {
			return "No key found for " + keyAsStr;
		} else {
			if (args == null || args.length == 0) {
				return value;
			} else {
				return MessageFormat.format(value, args);
			}
		}
	}

	public  MessageConveyor(Locale locale);

}