1
16
17 package org.springframework.cloud.aws.messaging.support;
18
19 import org.springframework.cloud.aws.messaging.config.annotation.NotificationSubject;
20 import org.springframework.cloud.aws.messaging.support.converter.NotificationRequestConverter;
21 import org.springframework.core.MethodParameter;
22 import org.springframework.messaging.Message;
23 import org.springframework.messaging.converter.MessageConverter;
24 import org.springframework.messaging.converter.StringMessageConverter;
25 import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
26 import org.springframework.util.ClassUtils;
27
28
31 public class NotificationSubjectArgumentResolver
32 implements HandlerMethodArgumentResolver {
33
34 private final MessageConverter converter;
35
36 public NotificationSubjectArgumentResolver() {
37 this.converter = new NotificationRequestConverter(new StringMessageConverter());
38 }
39
40 @Override
41 public boolean supportsParameter(MethodParameter parameter) {
42 return (parameter.hasParameterAnnotation(NotificationSubject.class)
43 && ClassUtils.isAssignable(String.class, parameter.getParameterType()));
44 }
45
46 @Override
47 public Object resolveArgument(MethodParameter parameter, Message<?> message)
48 throws Exception {
49 return ((NotificationRequestConverter.NotificationRequest) this.converter
50 .fromMessage(message, String.class)).getSubject();
51 }
52
53 }
54