in deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleInvocationHandler.java [59:127]
public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable
{
if (method.getDeclaringClass().equals(Object.class))
{
// this sometimes gets invoked directly by the container
// there is no perfect solution for those methods,
// so we try to use the best info we have atm.
if ("hashCode".equals(method.getName()))
{
return proxy.getClass().hashCode();
}
if ("toString".equals(method.getName()))
{
return proxy.getClass().toString();
}
if ("equals".equals(method.getName()))
{
return proxy.getClass().equals(args[0].getClass());
}
return null;
}
final MessageTemplate messageTemplate = method.getAnnotation(MessageTemplate.class);
String messageTemplateValue;
if (messageTemplate != null)
{
messageTemplateValue = messageTemplate.value();
}
else
{
messageTemplateValue = "{" + method.getName() + "}";
}
MessageContext messageContext = resolveMessageContextFromArguments(args);
List<Serializable> arguments = resolveMessageArguments(args);
if (messageContext == null)
{
messageContext = baseMessageContext.clone();
MessageContextConfig messageContextConfig =
method.getDeclaringClass().getAnnotation(MessageContextConfig.class);
if (messageContextConfig != null)
{
applyMessageContextConfig(messageContext, messageContextConfig);
}
}
String messageBundleName = method.getDeclaringClass().getName();
Message message = messageContext
.messageSource(messageBundleName).message()
.template(messageTemplateValue)
.argument(arguments.toArray(new Serializable[arguments.size()]));
if (String.class.isAssignableFrom(method.getReturnType()))
{
return message.toString();
}
return message;
}