From 201db42fc525fd6e2164e97f893f0ad9b0aa6d4a Mon Sep 17 00:00:00 2001 From: Mikolaj Widla Date: Mon, 26 Jun 2023 10:26:17 +0200 Subject: [PATCH] Fixed message restting after page refresh (#234) Co-authored-by: widlam Reviewed-on: https://gitea.release11.com/R11/release11-tools/pulls/234 Reviewed-by: Adam Bem Co-authored-by: Mikolaj Widla Co-committed-by: Mikolaj Widla --- .../r11/tools/controller/MockController.java | 41 ++---------- .../com/r11/tools/model/MockedMessage.java | 2 +- .../com/r11/tools/model/MockedMessageDto.java | 2 +- .../repository/MockedResponseRepository.java | 14 +---- .../com/r11/tools/service/KlausService.java | 3 +- .../r11/tools/service/KlausServiceImpl.java | 63 ++++++++++++------- .../src/components/mock/SaveComponent.vue | 4 +- 7 files changed, 54 insertions(+), 75 deletions(-) diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java index 108815b..e76c808 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java @@ -1,6 +1,5 @@ package com.r11.tools.controller; -import com.fasterxml.jackson.databind.ObjectMapper; import com.r11.tools.model.MockedMessageDto; import com.r11.tools.service.KlausService; import lombok.AllArgsConstructor; @@ -9,12 +8,12 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.time.LocalDateTime; -import java.util.*; +import java.util.Arrays; +import java.util.Objects; +import java.util.UUID; /** * Returns the homepage and provides the api for javascript async requests. @@ -57,40 +56,10 @@ public class MockController { MockedMessageDto message ; if(uuidValue == null || uuidValue.equals("")) clientUUID = UUID.randomUUID(); else clientUUID = UUID.fromString(uuidValue); - message = klausService - .getMockedMessageByClientUUID(clientUUID) - .orElse( buildDefaultMessage(clientUUID) ); - + message = klausService.getMockedResponse(clientUUID.toString()); return message; } - - /** - * Constructs message with default set of data - * @param uuid the key-uuid of given set of messages - * @return message with default dataset - */ - private MockedMessageDto buildDefaultMessage(UUID uuid){ - Map headers = new HashMap<>(); - headers.put("Keep-Alive", "timeout=60"); - headers.put("Connection", "keep-alive"); - headers.put("Date", LocalDateTime.now().toString()); - MockedMessageDto mockedMessageDto = MockedMessageDto.builder() - .clientUUID(uuid) - .contentType(MediaType.APPLICATION_XML_VALUE) - .messageBody("\n" + - "\n" + - " Tove\n" + - " Jani\n" + - " Reminder\n" + - " Don't forget me this weekend!\n" + - "") - .httpHeaders(headers) - .httpStatus(200) - .build(); - klausService.setMockedResponse(mockedMessageDto); - return mockedMessageDto; - } /** * It's one of the most important features - the bread and butter of the Mocked Service. It's link that allows * to receive mocked response from the server and use it to mock! @@ -99,7 +68,7 @@ public class MockController { */ @RequestMapping(value = "/r/{clientUUID}") public ResponseEntity getMockedResponse( - @PathVariable UUID clientUUID) { + @PathVariable String clientUUID) { MockedMessageDto mockedMessageDto = klausService.getMockedResponse(clientUUID); HttpHeaders httpHeaders = new HttpHeaders(); if (mockedMessageDto.getHttpHeaders() != null) mockedMessageDto.getHttpHeaders().forEach(httpHeaders::set); diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java index a0b6d0e..efbe3aa 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java @@ -26,7 +26,7 @@ import java.util.UUID; public class MockedMessage implements Serializable { @Indexed @Id - private UUID clientUUID; + private String clientUUID; private String contentType; private String messageBody; private Map httpHeaders; diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessageDto.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessageDto.java index d3206ed..0f5f078 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessageDto.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessageDto.java @@ -18,7 +18,7 @@ import java.util.UUID; @NoArgsConstructor @AllArgsConstructor public class MockedMessageDto implements Serializable{ - private UUID clientUUID; + private String clientUUID; private String contentType; private String messageBody; private Map httpHeaders; diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/repository/MockedResponseRepository.java b/Backend/mocked-services/src/main/java/com/r11/tools/repository/MockedResponseRepository.java index f9296fa..b3fb3b6 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/repository/MockedResponseRepository.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/repository/MockedResponseRepository.java @@ -1,24 +1,16 @@ package com.r11.tools.repository; import com.r11.tools.model.MockedMessage; -import java.util.List; -import java.util.Optional; -import java.util.UUID; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; + /** * Spring repository that allows to retrieve message list by key-uuid from redis database * @author Rafał Żukowicz */ @Repository @Transactional -public interface MockedResponseRepository extends CrudRepository { - /** - * Finds all messages by their uuid - * @param clientUUID the key-uuid of given set of messages - * @return Optional of list of {@link com.r11.tools.model.MockedMessage} - */ - Optional findAllByClientUUID(UUID clientUUID); -} +public interface MockedResponseRepository extends CrudRepository {} diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausService.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausService.java index 1c5079a..c0b7dcd 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausService.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausService.java @@ -13,7 +13,6 @@ import org.springframework.stereotype.Service; */ @Service public interface KlausService { - Optional getMockedMessageByClientUUID(UUID clientUUID); - MockedMessageDto getMockedResponse(UUID clientUUID); + MockedMessageDto getMockedResponse(String clientUUID); ResponseEntity setMockedResponse(MockedMessageDto mockedMessageDto); } diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java index 08f3569..a2d33a0 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java @@ -10,11 +10,14 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; import java.util.Optional; -import java.util.UUID; /** * Service for {@link com.r11.tools.controller.MockController} and {@link com.r11.tools.controller.MockController} @@ -31,18 +34,6 @@ public class KlausServiceImpl implements KlausService { private final MockedResponseRepository mockedResponseRepository; - /** - * Returns all messages of given key-uuid - * @param clientUUID the key-uuid of given set of messages - * @return List of {@link MockedMessageDto} - */ - @Override - public Optional getMockedMessageByClientUUID(UUID clientUUID){ - Optional mockedMessageOptional = mockedResponseRepository.findAllByClientUUID(clientUUID); - log.info("Message for UUID: "+clientUUID+" has been fetched from DB."); - return mockedMessageMapper.optionalMockedMessageToOptionalMockedMessageDTO(mockedMessageOptional); - } - /** * Returns {@link MockedMessageDto} of given id and key-uuid. If message doesn't then empty message is returned * @param clientUUID the key-uuid of given set of messages @@ -50,18 +41,44 @@ public class KlausServiceImpl implements KlausService { */ @SneakyThrows @Override - public MockedMessageDto getMockedResponse(UUID clientUUID){ + public MockedMessageDto getMockedResponse(String clientUUID){ Optional optionalMockedMessage = mockedResponseRepository.findById(clientUUID); - MockedMessageDto mockedMessageDto = MockedMessageDto.builder() - .clientUUID(clientUUID) - .build(); + MockedMessageDto mockedMessageDto; if (optionalMockedMessage.isPresent()) { mockedMessageDto = mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get()); - //log.info(mockedMessageDto.toString().replaceAll("\"", "\\\\\"")); return mockedMessageDto; + } else { + MockedMessageDto defaultMessage = buildDefaultMessage(clientUUID); + setMockedResponse(defaultMessage); + return defaultMessage; } - //log.info(mockedMessageDto.toString().replaceAll("\"", "\\\\\"")); - return mockedMessageDto; + } + + /** + * Constructs message with default set of data + * @param uuid the key-uuid of given set of messages + * @return message with default dataset + */ + + + private MockedMessageDto buildDefaultMessage(String uuid){ + Map headers = new HashMap<>(); + headers.put("Keep-Alive", "timeout=60"); + headers.put("Connection", "keep-alive"); + headers.put("Date", LocalDateTime.now().toString()); + return MockedMessageDto.builder() + .clientUUID(uuid) + .contentType(MediaType.APPLICATION_XML_VALUE) + .messageBody("\n" + + "\n" + + " Tove\n" + + " Jani\n" + + " Reminder\n" + + " Don't forget me this weekend!\n" + + "") + .httpHeaders(headers) + .httpStatus(200) + .build(); } /** @@ -72,8 +89,10 @@ public class KlausServiceImpl implements KlausService { @SneakyThrows @Override public ResponseEntity setMockedResponse(MockedMessageDto mockedMessageDto) { - mockedResponseRepository.save(mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto)); - //log.info(mockedMessageDto.toString().replaceAll("\"", "\\\\\"")); + MockedMessage message = mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto); + message.setCreatedAt(LocalDateTime.now()); + log.info("SAVE:"+message.toString().replace("\n"," ")); + mockedResponseRepository.save(message); return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(), HttpStatus.ACCEPTED); } diff --git a/Frontend/src/components/mock/SaveComponent.vue b/Frontend/src/components/mock/SaveComponent.vue index 897ec98..3b8d103 100644 --- a/Frontend/src/components/mock/SaveComponent.vue +++ b/Frontend/src/components/mock/SaveComponent.vue @@ -12,7 +12,7 @@ const props = defineProps( const message = ref(''); const visible = ref('hidden'); -const fetchLink = window.location.protocol + "//" + window.location.hostname + "/mock/api/mock" +const fetchLink = window.location.protocol + "//" + window.location.hostname + "/mock/api/mock"; function prepareAndSendData(){ if (props.messageData != null|| props.messageData != undefined ){ @@ -27,7 +27,7 @@ function prepareAndSendData(){ function showToast(){ visible.value = "visible"; - setTimeout( () => { visible.value = "opacity-0" } , 1500 ) + setTimeout( () => { visible.value = "opacity-0" } , 1000 ) } function hideToast(){