Handler Enhancers
// 1
public class ExampleHandlerDefinition implements HandlerEnhancerDefinition {
@Override // 2
public <T> MessageHandlingMember<T> wrapHandler(MessageHandlingMember<T> original) {
return original.annotationAttributes(MyAnnotation.class) // 3
.map(attr -> (MessageHandlingMember<T>)
new ExampleMessageHandlingMember<>(original, attr))
.orElse(original); // 5
}
private static class ExampleMessageHandlingMember<T>
extends WrappedMessageHandlingMember<T>{
private final String metaDataKey;
private final String expectedValue;
private ExampleMessageHandlingMember(
MessageHandlingMember<T> delegate,
Map<String, Object> annotationAttributes) {
super(delegate);
metaDataKey = (String) annotationAttributes.get("metaDataKey");
expectedValue = (String) annotationAttributes.get("expectedValue");
}
@Override
public boolean canHandle(Message<?> message) {
return super.canHandle(message) && expectedValue.equals(message.getMetaData().get(metaDataKey)); // 4
}
}
}Last updated
Was this helpful?