Skip to content

Commit

Permalink
Polishing
Browse files Browse the repository at this point in the history
  • Loading branch information
tomazfernandes committed Aug 20, 2024
1 parent c20a89a commit 9345438
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -226,11 +226,8 @@ public S fromMessagingMessage(Message<?> message, @Nullable MessageConversionCon
}

private Message<?> convertPayload(Message<?> message, Object payload) {
return Objects.requireNonNull(
this.payloadMessageConverter instanceof SmartMessageConverter smartConverter
? smartConverter.toMessage(payload, message.getHeaders(), String.class)
: this.payloadMessageConverter.toMessage(payload, message.getHeaders())
, () -> "payloadMessageConverter returned null message for message " + message);
return Objects.requireNonNull(this.payloadMessageConverter.toMessage(payload, message.getHeaders()),
() -> "payloadMessageConverter returned null message for message " + message);
}

private MessageHeaders getMessageHeaders(Message<?> message) {
Expand All @@ -244,12 +241,18 @@ private MessageHeaders getMessageHeaders(Message<?> message) {

private CompositeMessageConverter createDefaultCompositeMessageConverter() {
List<MessageConverter> messageConverters = new ArrayList<>();
messageConverters.add(new SimpleMessageConverter());
messageConverters.add(createClassMatchingMessageConverter());
messageConverters.add(createStringMessageConverter());
messageConverters.add(createDefaultMappingJackson2MessageConverter());
return new CompositeMessageConverter(messageConverters);
}

private SimpleClassMatchingMessageConverter createClassMatchingMessageConverter() {
SimpleClassMatchingMessageConverter matchingMessageConverter = new SimpleClassMatchingMessageConverter();
matchingMessageConverter.setSerializedPayloadClass(String.class);
return matchingMessageConverter;
}

private StringMessageConverter createStringMessageConverter() {
StringMessageConverter stringMessageConverter = new StringMessageConverter();
stringMessageConverter.setSerializedPayloadClass(String.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package io.awspring.cloud.sqs.support.converter;

import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.converter.AbstractMessageConverter;
import org.springframework.messaging.converter.SmartMessageConverter;

/**
* {@link SmartMessageConverter} implementation that returns the payload unchanged if the target class
* for Serialization / Deserialization matches the payload class.
*
* @author Tomaz Fernandes
* @since 3.3
*/
public class SimpleClassMatchingMessageConverter extends AbstractMessageConverter {

@Override
protected boolean supports(Class<?> clazz) {
return clazz.isAssignableFrom(getSerializedPayloadClass());
}

@Nullable
@Override
protected Object convertFromInternal(Message<?> message, Class<?> targetClass, @Nullable Object conversionHint) {
Object payload = message.getPayload();
return payload.getClass().isAssignableFrom(targetClass) ? payload : null;
}

@Nullable
@Override
protected Object convertToInternal(Object payload, @Nullable MessageHeaders headers, @Nullable Object conversionHint) {
return payload;
}
}

0 comments on commit 9345438

Please sign in to comment.