in chatterbox-nats/chatterbox-nats-impl/src/main/java/org/apache/tomee/chatterbox/nats/adapter/NATSResourceAdapter.java [169:195]
public void onMessage(final Message msg) {
try {
try {
messageEndpoint.beforeDelivery(ONMESSAGE);
final NATSMessage message = (NATSMessage) Proxy.newProxyInstance(
getClass().getClassLoader(),
new Class[]{NATSMessage.class},
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
final Method m = Message.class.getMethod(method.getName(), method.getParameterTypes());
return m.invoke(msg, args);
}
}
);
((InboundListener) messageEndpoint).onMessage(message);
} catch (Exception e) {
e.printStackTrace();
} finally {
messageEndpoint.afterDelivery();
}
} catch (Throwable t) {
LOGGER.log(Level.SEVERE, "Error dispatching message from NATS to MDB endpoint", t);
}
}