You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DeliveryCallbackInterceptor.java 904B

1234567891011121314151617181920212223242526272829303132
  1. import java.util.Map;
  2. import org.aspectj.lang.annotation.AfterThrowing;
  3. import org.aspectj.lang.annotation.Aspect;
  4. import org.aspectj.lang.annotation.Pointcut;
  5. @Aspect
  6. //@Goo("abc")
  7. @SuppressWarnings("unchecked")
  8. public class DeliveryCallbackInterceptor {
  9. @Pointcut("execution(boolean org.springframework.integration.message.MessageHandler+.handleMessage(Message))&& args(message)")
  10. public void handleMethod(Message message) {
  11. }
  12. @AfterThrowing(pointcut = "handleMethod(message, e)", throwing = "e")
  13. public void invokeDeliveryCallback(Message message, Throwable e) {
  14. ((DeliveryFailureCallback) message.getHeaders().get("errorcallback")).onDeliveryFailed(message, e);
  15. }
  16. }
  17. class DeliveryFailureCallback {
  18. public void onDeliveryFailed(Object o, Object p) {
  19. }
  20. }
  21. class Message {
  22. public Map<String, DeliveryFailureCallback> getHeaders() {
  23. return null;
  24. }
  25. }
  26. @interface Goo { String value(); }