package com.release11.klaus.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.release11.klaus.controller.KlausMvcController; import com.release11.klaus.mappers.MockedMessageMapper; import com.release11.klaus.model.MockedMessage; import com.release11.klaus.model.MockedMessageDto; import com.release11.klaus.repository.MockedResponseRepository; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; @Slf4j @Service @AllArgsConstructor public class KlausServiceImpl implements KlausService { private final MockedMessageMapper mockedMessageMapper; private final MockedResponseRepository mockedResponseRepository; private final ObjectMapper objectMapper; @Override public void deleteMockedResponse(UUID clientUUID, int mockedResponseId) { String key = clientUUID.toString() + "_" + mockedResponseId; mockedResponseRepository.deleteById(key); log.info("Message " + mockedResponseId + " has been removed."); } @Override public List getAllMockedResponses(UUID clientUUID) { return mockedResponseRepository.findAllByClientUUID(clientUUID).stream() .map(mockedMessageMapper::mockedMessageToMockedMessageDto) .collect(Collectors.toList()); } @SneakyThrows @Override public MockedMessageDto getMockedResponse(UUID clientUUID, int mockedResponseId){ String key = clientUUID.toString() + "_" + mockedResponseId; Optional optionalMockedMessage = mockedResponseRepository.findById(key); MockedMessageDto mockedMessageDto = KlausMvcController.getGlobalMockedMessageDto(); if (optionalMockedMessage.isPresent()) { mockedMessageDto = mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get()); log.info(mockedMessageDto.toString().replaceAll("\"", "\\\\\"")); return mockedMessageDto; } log.info(mockedMessageDto.toString().replaceAll("\"", "\\\\\"")); return mockedMessageDto; } @SneakyThrows @Override public ResponseEntity setMockedResponse(MockedMessageDto mockedMessageDto) { mockedResponseRepository.save(mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto)); String s = objectMapper.writeValueAsString(mockedMessageDto); String s1 = mockedMessageDto.toString(); String s2 = String.valueOf(mockedMessageDto); log.info(mockedMessageDto.toString().replaceAll("\"", "\\\\\"")); return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(), HttpStatus.ACCEPTED); } }