PayloadMapper.java

package uk.gov.dhsc.htbhf.claimant.message;

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import uk.gov.dhsc.htbhf.claimant.entity.Message;

import java.io.IOException;

/**
 * Utility class that encapsulated transforming a message payload into the required payload class.
 */
@Component
@AllArgsConstructor
public class PayloadMapper {

    private ObjectMapper objectMapper;

    public <T> T getPayload(Message message, Class<T> payloadClass) {
        try {
            return objectMapper.readValue(message.getMessagePayload(), payloadClass);
        } catch (IOException e) {
            throw new MessageProcessingException(
                    String.format("Unable to create message payload for message with id: %s, payload is: %s", message.getId(), message.getMessagePayload()),
                    e);
        }
    }
}