From db625b650b6a762586b79d47b7e72c3cdae7903d Mon Sep 17 00:00:00 2001 From: Szakalakamaka Date: Tue, 22 Sep 2020 10:05:11 +0200 Subject: [PATCH] - finishing etrack - new buttons for main page - swagger --- .../Maven__com_google_guava_guava_18_0.xml | 13 + ...ven__io_springfox_springfox_core_2_7_0.xml | 13 + ...n__io_springfox_springfox_schema_2_7_0.xml | 13 + ...aven__io_springfox_springfox_spi_2_7_0.xml | 13 + ...o_springfox_springfox_spring_web_2_7_0.xml | 13 + ..._io_springfox_springfox_swagger2_2_7_0.xml | 13 + ...ringfox_springfox_swagger_common_2_7_0.xml | 13 + ...o_springfox_springfox_swagger_ui_2_7_0.xml | 13 + ..._io_swagger_swagger_annotations_1_5_13.xml | 13 + ...aven__io_swagger_swagger_models_1_5_13.xml | 13 + ...ven__org_javassist_javassist_3_21_0_GA.xml | 13 + ...en__org_reflections_reflections_0_9_11.xml | 13 + ...lugin_spring_plugin_core_1_2_0_RELEASE.xml | 13 + ...n_spring_plugin_metadata_1_2_0_RELEASE.xml | 13 + .../shelved.patch | 114 ------- ..._09_09_2020_11_06__Default_Changelist_.xml | 4 + .idea/workspace.xml | 312 +++++++++++------- Klaus.iml | 20 +- README.md | 4 + pom.xml | 10 + .../com/release11/klaus/KlausApplication.java | 6 +- .../release11/klaus/config/SwaggerConfig.java | 24 ++ .../klaus/controller/EventController.java | 65 +++- .../klaus/controller/KlausController.java | 12 +- .../klaus/controller/KlausMvcController.java | 48 ++- .../klaus/controller/MainController.java | 20 ++ .../java/com/release11/klaus/model/Event.java | 7 +- .../release11/klaus/model/MockedMessage.java | 7 +- .../klaus/model/MockedMessageDto.java | 12 +- .../klaus/repository/EventRepositoryImpl.java | 9 +- .../klaus/service/KlausServiceImpl.java | 13 +- .../klaus/utilis/TrackingClient.java | 3 +- src/main/resources/data-access.properties | 2 +- src/main/resources/logback.xml | 5 +- src/main/resources/static/css/styles.css | 29 ++ .../static/img/icons8-down-arrow-40.png | Bin 0 -> 392 bytes .../resources/static/js/etrackPaggination.js | 178 ++++++++++ src/main/resources/static/js/paggination.js | 125 ++++++- src/main/resources/templates/etrack.html | 68 ++++ src/main/resources/templates/index.html | 126 +++---- src/main/resources/templates/tools.html | 128 +++++++ .../MockedResponseRedisRepositoryTest.java | 36 -- .../release11/klaus/KlausApplication.class | Bin 742 -> 742 bytes .../klaus/config/SwaggerConfig.class | Bin 0 -> 1533 bytes .../klaus/controller/EventController.class | Bin 1725 -> 4657 bytes .../klaus/controller/KlausController.class | Bin 6255 -> 6415 bytes .../klaus/controller/KlausMvcController.class | Bin 8347 -> 7558 bytes .../klaus/controller/MainController.class | Bin 0 -> 1036 bytes .../mappers/MockedMessageMapperImpl.class | Bin 3636 -> 3567 bytes .../klaus/model/Event$EventBuilder.class | Bin 2429 -> 2710 bytes .../com/release11/klaus/model/Event.class | Bin 4543 -> 5636 bytes .../release11/klaus/model/MockedMessage.class | Bin 5846 -> 6112 bytes ...edMessageDto$MockedMessageDtoBuilder.class | Bin 2975 -> 2933 bytes .../klaus/model/MockedMessageDto.class | Bin 5291 -> 5953 bytes .../repository/EventRepositoryImpl.class | Bin 8027 -> 8024 bytes .../klaus/service/KlausServiceImpl.class | Bin 5321 -> 5134 bytes .../klaus/utilis/TrackingClient.class | Bin 1450 -> 1509 bytes target/classes/logback.xml | 5 +- target/classes/static/css/styles.css | 29 ++ .../static/img/icons8-down-arrow-40.png | Bin 0 -> 392 bytes target/classes/static/img/update-button.png | Bin 0 -> 1444 bytes target/classes/static/js/etrackPaggination.js | 178 ++++++++++ target/classes/static/js/paggination.js | 125 ++++++- target/classes/templates/etrack.html | 68 ++++ target/classes/templates/index.html | 126 +++---- target/classes/templates/tools.html | 128 +++++++ .../mappers/MockedMessageMapperImpl.java | 2 +- .../MockedResponseRedisRepositoryTest.class | Bin 5108 -> 923 bytes 68 files changed, 1736 insertions(+), 494 deletions(-) create mode 100644 .idea/libraries/Maven__com_google_guava_guava_18_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_core_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_schema_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_spi_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_spring_web_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_swagger2_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_swagger_common_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_7_0.xml create mode 100644 .idea/libraries/Maven__io_swagger_swagger_annotations_1_5_13.xml create mode 100644 .idea/libraries/Maven__io_swagger_swagger_models_1_5_13.xml create mode 100644 .idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml create mode 100644 .idea/libraries/Maven__org_reflections_reflections_0_9_11.xml create mode 100644 .idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml delete mode 100644 .idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06_[Default_Changelist]/shelved.patch create mode 100644 .idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06__Default_Changelist_.xml create mode 100644 src/main/java/com/release11/klaus/config/SwaggerConfig.java create mode 100644 src/main/java/com/release11/klaus/controller/MainController.java create mode 100644 src/main/resources/static/img/icons8-down-arrow-40.png create mode 100644 src/main/resources/static/js/etrackPaggination.js create mode 100644 src/main/resources/templates/etrack.html create mode 100644 src/main/resources/templates/tools.html create mode 100644 target/classes/com/release11/klaus/config/SwaggerConfig.class create mode 100644 target/classes/com/release11/klaus/controller/MainController.class create mode 100644 target/classes/static/img/icons8-down-arrow-40.png create mode 100644 target/classes/static/img/update-button.png create mode 100644 target/classes/static/js/etrackPaggination.js create mode 100644 target/classes/templates/etrack.html create mode 100644 target/classes/templates/tools.html diff --git a/.idea/libraries/Maven__com_google_guava_guava_18_0.xml b/.idea/libraries/Maven__com_google_guava_guava_18_0.xml new file mode 100644 index 0000000..bbd71d7 --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_18_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_core_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_core_2_7_0.xml new file mode 100644 index 0000000..abb3fd9 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_core_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_schema_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_schema_2_7_0.xml new file mode 100644 index 0000000..706ae46 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_schema_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_spi_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_spi_2_7_0.xml new file mode 100644 index 0000000..4d0a278 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_spi_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_7_0.xml new file mode 100644 index 0000000..0813776 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_7_0.xml new file mode 100644 index 0000000..117d4ee --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_7_0.xml new file mode 100644 index 0000000..e6679b3 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_7_0.xml b/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_7_0.xml new file mode 100644 index 0000000..b1342e2 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_13.xml b/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_13.xml new file mode 100644 index 0000000..1fd5fc3 --- /dev/null +++ b/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_swagger_swagger_models_1_5_13.xml b/.idea/libraries/Maven__io_swagger_swagger_models_1_5_13.xml new file mode 100644 index 0000000..fa7a4b3 --- /dev/null +++ b/.idea/libraries/Maven__io_swagger_swagger_models_1_5_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml new file mode 100644 index 0000000..09c4cf0 --- /dev/null +++ b/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_reflections_reflections_0_9_11.xml b/.idea/libraries/Maven__org_reflections_reflections_0_9_11.xml new file mode 100644 index 0000000..d8b2fb5 --- /dev/null +++ b/.idea/libraries/Maven__org_reflections_reflections_0_9_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml new file mode 100644 index 0000000..fbc0452 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml new file mode 100644 index 0000000..7e6f096 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06_[Default_Changelist]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06_[Default_Changelist]/shelved.patch deleted file mode 100644 index 2973e3c..0000000 --- a/.idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06_[Default_Changelist]/shelved.patch +++ /dev/null @@ -1,114 +0,0 @@ -Index: src/main/java/com/release11/klaus/mappers/MockedMessageMapper.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/main/java/com/release11/klaus/mappers/MockedMessageMapper.java (date 1599560197073) -+++ src/main/java/com/release11/klaus/mappers/MockedMessageMapper.java (date 1599560197073) -@@ -0,0 +1,13 @@ -+package com.release11.klaus.mappers; -+ -+import com.release11.klaus.model.MockedMessage; -+import com.release11.klaus.model.MockedMessageDto; -+import org.mapstruct.*; -+ -+@Mapper -+public interface MockedMessageMapper { -+ @Mapping( target = "compositePrimaryKey", expression = "java(mockedMessageDto.getClientUUID() + \"_\"" + -+ " + mockedMessageDto.getMockedResponseId())") -+ MockedMessage mockedMessageDtoToMockedMessage(MockedMessageDto mockedMessageDto); -+ MockedMessageDto mockedMessageToMockedMessageDto(MockedMessage mockedMessage); -+} -Index: src/main/java/com/release11/klaus/model/MockedMessage.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/main/java/com/release11/klaus/model/MockedMessage.java (date 1599557591277) -+++ src/main/java/com/release11/klaus/model/MockedMessage.java (date 1599557591277) -@@ -0,0 +1,53 @@ -+package com.release11.klaus.model; -+ -+import com.release11.klaus.model.constraints.HttpCode; -+import lombok.*; -+import org.springframework.data.annotation.Id; -+import org.springframework.data.redis.core.RedisHash; -+import org.springframework.data.redis.core.index.Indexed; -+ -+import javax.validation.constraints.Positive; -+import java.io.Serializable; -+import java.util.Map; -+import java.util.UUID; -+ -+@Data -+@ToString -+@RedisHash("mockedMessage") -+@NoArgsConstructor -+@AllArgsConstructor -+public class MockedMessage implements Serializable { -+ @Id -+ private String compositePrimaryKey; -+ @Indexed -+ private UUID clientUUID; -+ @Positive -+ private int mockedResponseId; -+ private String mediaType; -+ private String messageBody; -+ private Map httpHeaders; -+ @HttpCode -+ private Integer httpStatus; -+ -+ public MockedMessage(MockedMessage mockedMessage) { -+ this.compositePrimaryKey = mockedMessage.getClientUUID().toString() + "_" + mockedMessage.getMockedResponseId(); -+ this.clientUUID = mockedMessage.getClientUUID(); -+ this.mockedResponseId = mockedMessage.getMockedResponseId(); -+ this.mediaType = mockedMessage.getMediaType(); -+ this.messageBody = mockedMessage.getMessageBody(); -+ this.httpHeaders = mockedMessage.getHttpHeaders(); -+ this.httpStatus = mockedMessage.getHttpStatus(); -+ } -+ public MockedMessage(UUID clientUUID, int mockedResponseId, String mediaType, -+ String messageBody, Map httpHeaders, Integer httpStatus) { -+ this.compositePrimaryKey = clientUUID.toString() + "_" + mockedResponseId; -+ this.clientUUID = clientUUID; -+ this.mockedResponseId = mockedResponseId; -+ this.mediaType = mediaType; -+ this.messageBody = messageBody; -+ this.httpHeaders = httpHeaders; -+ this.httpStatus = httpStatus; -+ } -+} -+ -+ -Index: src/main/java/com/release11/klaus/model/MockedMessageDto.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/main/java/com/release11/klaus/model/MockedMessageDto.java (date 1599553108395) -+++ src/main/java/com/release11/klaus/model/MockedMessageDto.java (date 1599553108395) -@@ -0,0 +1,24 @@ -+package com.release11.klaus.model; -+ -+import com.release11.klaus.model.constraints.HttpCode; -+import lombok.*; -+ -+import javax.validation.constraints.Positive; -+import java.util.Map; -+import java.util.UUID; -+ -+@Data -+@Builder -+@ToString -+@NoArgsConstructor -+@AllArgsConstructor -+public class MockedMessageDto { -+ private UUID clientUUID; -+ @Positive -+ private int mockedResponseId; -+ private String mediaType; -+ private String messageBody; -+ private Map httpHeaders; -+ @HttpCode -+ private Integer httpStatus; -+} diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06__Default_Changelist_.xml new file mode 100644 index 0000000..93a97a9 --- /dev/null +++ b/.idea/shelf/Uncommitted_changes_before_Update_at_09_09_2020_11_06__Default_Changelist_.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 98b688f..d361a94 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,5 +1,8 @@ + + @@ -20,14 +23,10 @@ - - - - - - + + + - @@ -51,6 +51,13 @@ + + + @@ -63,29 +70,34 @@ + + - - - - - - - - - - - + + + + + + + + + + + + + + @@ -115,7 +127,6 @@ @@ -132,7 +143,6 @@ @@ -149,7 +159,6 @@ @@ -166,14 +175,6 @@ - - @@ -186,6 +187,7 @@ + @@ -414,9 +416,89 @@ + + @@ -467,9 +549,10 @@ - - + + + @@ -480,68 +563,81 @@ - + - - - + + + - - - - - + + + + + + - - - - - + + + + + + - - - - - + + + + + + - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + - - - + + + + + + + + + + + + @@ -555,38 +651,28 @@ - - + + - + + - - + + - + + file://$PROJECT_DIR$/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java - 56 - - - file://$PROJECT_DIR$/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java - 55 - - - file://$PROJECT_DIR$/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java - 52 - - - file://$PROJECT_DIR$/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java - 64 - diff --git a/Klaus.iml b/Klaus.iml index 76d99e0..94c81e3 100644 --- a/Klaus.iml +++ b/Klaus.iml @@ -30,7 +30,6 @@ - @@ -73,7 +72,7 @@ - + @@ -89,7 +88,6 @@ - @@ -110,5 +108,21 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 700220d..fa56879 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,7 @@ Available scripts: ### docker-compose up -d --build Builds and launches Redis service and the application. Performs unit testing on the code and run the application. + +Plugins: +settings -> plugins -> install lombok plugin +settings -> annotation processors -> enable annotation processing \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4ec24d6..fa92d0d 100644 --- a/pom.xml +++ b/pom.xml @@ -85,6 +85,16 @@ jedis ${jedis.version} + + io.springfox + springfox-swagger2 + 2.7.0 + + + io.springfox + springfox-swagger-ui + 2.7.0 + diff --git a/src/main/java/com/release11/klaus/KlausApplication.java b/src/main/java/com/release11/klaus/KlausApplication.java index 145bd70..827d7eb 100644 --- a/src/main/java/com/release11/klaus/KlausApplication.java +++ b/src/main/java/com/release11/klaus/KlausApplication.java @@ -2,6 +2,7 @@ package com.release11.klaus; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @@ -12,10 +13,5 @@ public class KlausApplication { } } -//TODO //TODO JedisPool jedisPool = new JedisPool(jedisPoolConfig, redisHost, redisPort, timeout, redisPassword) //TODO JedisPool optimalization https://partners-intl.aliyun.com/help/doc-detail/98726.htm -// logging, security, account creation -// tracking clients activity, admin panel -// use a centralized logging collection tool like logstash for admin panel -//TODO swagger \ No newline at end of file diff --git a/src/main/java/com/release11/klaus/config/SwaggerConfig.java b/src/main/java/com/release11/klaus/config/SwaggerConfig.java new file mode 100644 index 0000000..ae54b88 --- /dev/null +++ b/src/main/java/com/release11/klaus/config/SwaggerConfig.java @@ -0,0 +1,24 @@ +package com.release11.klaus.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import static springfox.documentation.builders.PathSelectors.regex; + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2).select() + .apis(RequestHandlerSelectors.basePackage("com.release11.klaus.controller")) + .paths(regex("/klaus/v1.*")) + .build(); + } +} + + diff --git a/src/main/java/com/release11/klaus/controller/EventController.java b/src/main/java/com/release11/klaus/controller/EventController.java index 5e995f9..18ec6c5 100644 --- a/src/main/java/com/release11/klaus/controller/EventController.java +++ b/src/main/java/com/release11/klaus/controller/EventController.java @@ -1,16 +1,22 @@ package com.release11.klaus.controller; +import com.release11.klaus.model.Event; import com.release11.klaus.model.EventRequestDto; import com.release11.klaus.service.EtrackService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; @Slf4j @Controller @@ -19,11 +25,54 @@ import javax.validation.Valid; public class EventController { private final EtrackService etrackService; - - @PostMapping("/eventsForm") - @ResponseBody - public String getLogs(@Valid EventRequestDto eventsDto, BindingResult bindingResult){ - return String.valueOf(etrackService.getEventsByDateTimeAndBusinessKeys(eventsDto)); + private final String sortBy = "messageId"; + private final List eventList = new LinkedList<>(); + + @GetMapping("/etrack/{uuid}") + public String showEtrack(@Valid EventRequestDto eventRequestDto, @PathVariable UUID uuid, final Model model, + BindingResult bindingResult){ + model.addAttribute("clientUUID", uuid); + model.addAttribute("eventRequestDto", eventRequestDto); + return "etrack"; } + + @PostMapping("/etrack/{uuid}") + public String getLogs(@Valid EventRequestDto eventRequestDto, final Model model, BindingResult bindingResult, + @PathVariable UUID uuid){ + model.addAttribute("clientUUID", uuid); + populateModelWithLists(model, eventRequestDto, true); + return "etrack"; + } + + @PostMapping(value = "/etrack/{uuid}", params = {"sortBy"}) + public String sortBy(@Valid EventRequestDto eventRequestDto, final Model model, BindingResult bindingResult, + @PathVariable UUID uuid){ + model.addAttribute("clientUUID", uuid); + populateModelWithLists(model, eventRequestDto, false); + return "etrack"; + } + + private void populateModelWithLists(Model model, EventRequestDto eventRequestDto, boolean updateList){ + if (updateList){ + eventList.clear(); + eventList.addAll(etrackService.getEventsByDateTimeAndBusinessKeys(eventRequestDto)); + } + model.addAttribute("eventList", eventList); + } + + @ModelAttribute("eventRequestDto") + public EventRequestDto eventRequestDto() { + return EventRequestDto.builder() + .mockedResponseId(1) + .localDateTimeFrom(LocalDateTime.of(LocalDate.now(), LocalTime.MIN)) + .localDateTimeTo(LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIDNIGHT)) + .build(); + } + + @ModelAttribute("eventList") + public List eventList() { + return eventList; + } + } diff --git a/src/main/java/com/release11/klaus/controller/KlausController.java b/src/main/java/com/release11/klaus/controller/KlausController.java index 12ee6ee..92dea81 100644 --- a/src/main/java/com/release11/klaus/controller/KlausController.java +++ b/src/main/java/com/release11/klaus/controller/KlausController.java @@ -12,10 +12,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @@ -29,7 +26,7 @@ public class KlausController { private final KlausService klausService; - @RequestMapping(value = "klaus/v1/delete/{clientUUID}/{mockedResponseId}") + @DeleteMapping(value = "klaus/v1/delete/{clientUUID}/{mockedResponseId}") public ResponseEntity deleteMockedResponse(@PathVariable UUID clientUUID, @PathVariable int mockedResponseId){ TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "deleteMockedResponse", @@ -38,9 +35,10 @@ public class KlausController { klausService.deleteMockedResponse(clientUUID, mockedResponseId); return new ResponseEntity<>("message has been deleted", HttpStatus.OK); } - @RequestMapping(value = "klaus/v1/getAll/{clientUUID}") + + @GetMapping(value = "klaus/v1/getAll/{clientUUID}") public ResponseEntity getAllMockedResponses(@PathVariable UUID clientUUID){ - TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse", + TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getAllMockedResponse", BusinessKey.CLIENT_UUID, String.valueOf(clientUUID), BusinessKey.MESSAGE_ID, "all")); List mockedMessages = klausService.getAllMockedResponses(clientUUID); diff --git a/src/main/java/com/release11/klaus/controller/KlausMvcController.java b/src/main/java/com/release11/klaus/controller/KlausMvcController.java index aa6b684..b263bc0 100644 --- a/src/main/java/com/release11/klaus/controller/KlausMvcController.java +++ b/src/main/java/com/release11/klaus/controller/KlausMvcController.java @@ -1,6 +1,5 @@ package com.release11.klaus.controller; -import com.release11.klaus.model.EventRequestDto; import com.release11.klaus.model.MockedMessageDto; import com.release11.klaus.service.KlausService; import com.release11.klaus.utilis.BusinessKey; @@ -16,9 +15,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.net.InetAddress; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; import java.util.*; @Slf4j @@ -29,11 +25,6 @@ public class KlausMvcController { private final KlausService klausService; private final Set globalMockedMessageDtoList = new HashSet<>(); - @GetMapping("/login") - public String login() { - return "login"; - } - @SneakyThrows @GetMapping({"/home", "/home/{uuid}"}) public String showHome(final MockedMessageDto mockedMessageDto, final Model model, @@ -45,15 +36,28 @@ public class KlausMvcController { return "index"; } - @PostMapping("/home/{clientUUID}") + @PostMapping("/home/{uuid}") public String showHomePost(@Valid final MockedMessageDto mockedMessageDto, BindingResult bindingResult, final Model model) { TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse", BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()), BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId()))); + if (bindingResult.hasErrors()){ + populateModelWithLists(model, mockedMessageDto,false); + return "index"; + } klausService.setMockedResponse(mockedMessageDto); populateModelWithLists(model, mockedMessageDto,true); model.addAttribute("mockSaved", "true"); + model.addAttribute("canTest", "true"); + return "index"; + } + + @PostMapping(value="/home/{uuid}", params={"newMessage"}) + public String newMessage(final Model model, @RequestParam UUID clientUUID) { + MockedMessageDto mockedMessageDto = new MockedMessageDto(clientUUID, new LinkedHashMap<>()); + populateModelWithLists(model, mockedMessageDto, true); + model.addAttribute("mockedMessageDto", mockedMessageDto); return "index"; } @@ -67,7 +71,7 @@ public class KlausMvcController { mockedMessageDto.getMockedResponseId()).toString(); } - @RequestMapping(value = "/home/{clientUUID}", params = {"addHeader"} ) + @PostMapping(value = "/home/{uuid}", params = {"addHeader"} ) public String addHeader(final MockedMessageDto mockedMessageDto, @RequestParam String headerKey, @RequestParam String headerValue, final Model model) { populateModelWithLists(model, mockedMessageDto,false); @@ -75,23 +79,27 @@ public class KlausMvcController { return "index"; } - @RequestMapping(value="/home/{clientUUID}", params={"removeHeader"}) + @PostMapping(value="/home/{uuid}", params={"removeHeader"}) public String removeHeader(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) { populateModelWithLists(model, mockedMessageDto,false); mockedMessageDto.getHttpHeaders().remove(req.getParameter("removeHeader")); return "index"; } - @RequestMapping(value="/home/{clientUUID}", params={"updateMessage"}) + @PostMapping(value="/home/{uuid}", params={"updateMessage"}) public String updateMessage(final HttpServletRequest req, final MockedMessageDto mockedMessageDto, final Model model) { model.addAttribute("mockedMessageDto", klausService.getMockedResponse(mockedMessageDto.getClientUUID(), Integer.parseInt(req.getParameter("updateMessage")))); populateModelWithLists(model, mockedMessageDto, false); + model.addAttribute("canTest", "true"); return "index"; } - @RequestMapping(value="/home/{clientUUID}", params={"removeMessage"}) + @PostMapping(value="/home/{uuid}", params={"removeMessage"}) public String removeMessage(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) { + TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "deleteMockedResponse", + BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()), + BusinessKey.MESSAGE_ID, String.valueOf(Integer.parseInt(req.getParameter("removeMessage"))))); klausService.deleteMockedResponse(mockedMessageDto.getClientUUID(), Integer.parseInt(req.getParameter("removeMessage"))); populateModelWithLists(model, mockedMessageDto, true); @@ -111,17 +119,7 @@ public class KlausMvcController { @ModelAttribute("mockedMessageDto") public MockedMessageDto mockedMessageDto() { - return new MockedMessageDto(UUID.randomUUID(), 1, - "application/xml", "body", new LinkedHashMap<>(), 200); - } - - @ModelAttribute("eventRequestDto") - public EventRequestDto eventRequestDto() { - return EventRequestDto.builder() - .mockedResponseId(1) - .localDateTimeFrom(LocalDateTime.of(LocalDate.now(), LocalTime.MIN)) - .localDateTimeTo(LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIDNIGHT)) - .build(); + return new MockedMessageDto(UUID.randomUUID(), new LinkedHashMap<>()); } private void populateModelWithLists(Model model, MockedMessageDto mockedMessageDto, boolean updateList){ diff --git a/src/main/java/com/release11/klaus/controller/MainController.java b/src/main/java/com/release11/klaus/controller/MainController.java new file mode 100644 index 0000000..96c266a --- /dev/null +++ b/src/main/java/com/release11/klaus/controller/MainController.java @@ -0,0 +1,20 @@ +package com.release11.klaus.controller; + +import com.release11.klaus.model.MockedMessageDto; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Slf4j +@Controller +@RequestMapping +@AllArgsConstructor +public class MainController { + + @GetMapping("/home/tools") + public String showGetMockedResponse(final MockedMessageDto mockedMessageDto) { + return "tools"; + } +} diff --git a/src/main/java/com/release11/klaus/model/Event.java b/src/main/java/com/release11/klaus/model/Event.java index 8fdfe66..a453453 100644 --- a/src/main/java/com/release11/klaus/model/Event.java +++ b/src/main/java/com/release11/klaus/model/Event.java @@ -16,12 +16,15 @@ public class Event { @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss") private LocalDateTime dateTimeStamp; @Nullable - private String[] businessKeys; + private String interfaceName; + @Nullable + private String clientUUID; + @Nullable + private Integer messageId; private String thread; private String level; @Nullable private String message; } - //{"date" : "%d{yyyy-MM-dd}", "timestamp":"%d{HH:mm:ss}", "businessKeys": {"interfaceName": "%X{interfaceName}", // "clientUUID": "%X{clientUUID}", "messageId": "%X{messageId}"},"thread":"%t","level":"%-5level", "message":"%msg"}%n diff --git a/src/main/java/com/release11/klaus/model/MockedMessage.java b/src/main/java/com/release11/klaus/model/MockedMessage.java index 99f5e5b..3446bd4 100644 --- a/src/main/java/com/release11/klaus/model/MockedMessage.java +++ b/src/main/java/com/release11/klaus/model/MockedMessage.java @@ -1,7 +1,10 @@ package com.release11.klaus.model; import com.release11.klaus.model.constraints.HttpCode; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; import org.springframework.data.annotation.Id; import org.springframework.data.redis.core.RedisHash; import org.springframework.data.redis.core.index.Indexed; @@ -22,7 +25,7 @@ public class MockedMessage implements Serializable { @Indexed private UUID clientUUID; @Positive - private int mockedResponseId; + private Integer mockedResponseId; private String mediaType; private String messageBody; private Map httpHeaders; diff --git a/src/main/java/com/release11/klaus/model/MockedMessageDto.java b/src/main/java/com/release11/klaus/model/MockedMessageDto.java index c47d7cf..4baa8fe 100644 --- a/src/main/java/com/release11/klaus/model/MockedMessageDto.java +++ b/src/main/java/com/release11/klaus/model/MockedMessageDto.java @@ -3,6 +3,7 @@ package com.release11.klaus.model; import com.release11.klaus.model.constraints.HttpCode; import lombok.*; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Positive; import java.util.Map; import java.util.UUID; @@ -14,11 +15,20 @@ import java.util.UUID; @AllArgsConstructor public class MockedMessageDto { private UUID clientUUID; + @NotNull @Positive - private int mockedResponseId; + private Integer mockedResponseId; private String mediaType; private String messageBody; private Map httpHeaders; @HttpCode private Integer httpStatus; + + public MockedMessageDto(UUID clientUUID) { + this.clientUUID = clientUUID; + } + public MockedMessageDto(UUID clientUUID, Map httpHeaders) { + this.clientUUID = clientUUID; + this.httpHeaders = httpHeaders; + } } diff --git a/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java b/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java index 244f930..9be7cfb 100644 --- a/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java +++ b/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java @@ -50,14 +50,11 @@ public class EventRepositoryImpl implements EventRepository { } private List businessKeysFilter(List events, Map businessKeys) { - List resultList = new ArrayList<>(); for (Map.Entry entry : businessKeys.entrySet()) { - String stringPattern = "\"" + entry.getKey() + ":" + entry.getValue() + "\""; - String u; - u = "das"; - resultList = events.stream().filter(s -> s.contains(stringPattern)).collect(Collectors.toList()); + String stringPattern = entry.getKey().getReasonPhrase()+ "\"" + ":" + "\"" + entry.getValue() + "\""; + events = events.stream().filter(s -> s.contains(stringPattern)).collect(Collectors.toList()); } - return resultList; + return events; } private List parseEvents(List eventStrings) { diff --git a/src/main/java/com/release11/klaus/service/KlausServiceImpl.java b/src/main/java/com/release11/klaus/service/KlausServiceImpl.java index 73e3aa5..4d67cf9 100644 --- a/src/main/java/com/release11/klaus/service/KlausServiceImpl.java +++ b/src/main/java/com/release11/klaus/service/KlausServiceImpl.java @@ -28,6 +28,7 @@ public class KlausServiceImpl implements KlausService { public void deleteMockedResponse(UUID clientUUID, int mockedResponseId) { String key = clientUUID.toString() + "_" + mockedResponseId; mockedResponseRepository.deleteById(key); + log.info("Message " + mockedResponseId + " has been removed."); } @Override @@ -39,20 +40,22 @@ public class KlausServiceImpl implements KlausService { @Override public MockedMessageDto getMockedResponse(UUID clientUUID, int mockedResponseId) { - log.info("KlausServiceImpl, operation getMockedResponse, clientId {}, mockedResponseId {} ", - clientUUID, mockedResponseId); String key = clientUUID.toString() + "_" + mockedResponseId; Optional optionalMockedMessage = mockedResponseRepository.findById(key); + MockedMessageDto mockedMessageDto = new MockedMessageDto(); if (optionalMockedMessage.isPresent()) { - return mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get()); + mockedMessageDto = mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get()); + log.info(mockedMessageDto.toString()); + return mockedMessageDto; } - return new MockedMessageDto(); + log.info(mockedMessageDto.toString()); + return mockedMessageDto; } @Override public ResponseEntity setMockedResponse(MockedMessageDto mockedMessageDto) { mockedResponseRepository.save(mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto)); - log.info("KlausServiceImpl, operation setMockedResponse, mockedMessage {} ", mockedMessageDto.toString()); + log.info(mockedMessageDto.toString()); return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(), HttpStatus.ACCEPTED); } diff --git a/src/main/java/com/release11/klaus/utilis/TrackingClient.java b/src/main/java/com/release11/klaus/utilis/TrackingClient.java index 0c9e522..172d3b7 100644 --- a/src/main/java/com/release11/klaus/utilis/TrackingClient.java +++ b/src/main/java/com/release11/klaus/utilis/TrackingClient.java @@ -10,7 +10,8 @@ public final class TrackingClient { public static void setBusinessKeys(Map businessKeysMap){ for (Map.Entry entry : businessKeysMap.entrySet()) { - MDC.put(entry.getKey().toString(), entry.getValue()); + String s= entry.getKey().getReasonPhrase(); + MDC.put(entry.getKey().getReasonPhrase(), entry.getValue()); } } diff --git a/src/main/resources/data-access.properties b/src/main/resources/data-access.properties index 03646f0..13dab99 100644 --- a/src/main/resources/data-access.properties +++ b/src/main/resources/data-access.properties @@ -1,2 +1,2 @@ -redis.host = redis-server +redis.host = reidis-server redis.port = 6379 \ No newline at end of file diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 2087fd3..ecfe542 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -3,13 +3,14 @@ - redis-server + localhost + 6379 logstash - {"dateTimeStamp" : "%d{yyyy-MM-dd}T%d{HH:mm:ss}", "businessKeys":["INTERFACE_NAME:%X{INTERFACE_NAME}", "CLIENT_UUID:%X{CLIENT_UUID}", "MESSAGE_ID:%X{MESSAGE_ID}"],"thread":"%t","level":"%-5level", "message":"%msg"}%n + {"dateTimeStamp" : "%d{yyyy-MM-dd}T%d{HH:mm:ss}", "eventId":"%X{eventId}", "interfaceName":"%X{interfaceName}", "clientUUID":"%X{clientUUID}", "messageId":"%X{messageId}", "thread":"%t","level":"%-5level", "message":"%msg"}%n diff --git a/src/main/resources/static/css/styles.css b/src/main/resources/static/css/styles.css index 12825a8..f953669 100644 --- a/src/main/resources/static/css/styles.css +++ b/src/main/resources/static/css/styles.css @@ -46,6 +46,10 @@ button:focus { } +tr[name="tr-button"]:hover{ +background-color: #ddd; +cursor: pointer; +} #pagination-wrapper button { background: none; @@ -80,3 +84,28 @@ button[name="removeHeader"] { transition: background-color 0.3s, color 0.3s; } + + +.btn-sort { + border: 0; + padding: 0 20px; + text-align: center; + color: #fff; + text-shadow: 1px 1px 1px #000; + border-radius: 10px; + background-color: rgb(0, 102, 255); + background-image: linear-gradient(to top left, + rgba(0, 0, 0, .2), + rgba(0, 0, 0, .2) 30%, + rgba(0, 0, 0, 0)); +} + +.btn-sort:hover { + background-color: rgb(153, 194, 255); + cursor: pointer; +} + +.active { + background-color: rgb(153, 194, 255); + } + diff --git a/src/main/resources/static/img/icons8-down-arrow-40.png b/src/main/resources/static/img/icons8-down-arrow-40.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9c67b13b3f31cc0f02dfb4083e3ce928ae30e7 GIT binary patch literal 392 zcmV;30eAk1P)1HXgdq=O)Iuug&w zBEdlyq2MHIA$4%6fq))T7pDaT(jgg~HV{xlvN#F|{ERe#qk%v&(iF}J5crPleMFz8 maK@`O{Cch7*Z= 0; i--) { + document.querySelector('#btn-sort-' + i).addEventListener('click', function() { + addButtonListeners(i) + }) +} + +function addButtonListeners(i) { + var buttons = document.querySelectorAll('.btn-sort'); + for (var j = buttons.length - 1; j >= 0; j--) { + buttons[j].classList.remove('active'); + } + document.querySelector('#btn-sort-' + i).classList.add('active'); + buildTable(); +} + + +function pagination(querySet, page, rows) { + + var trimStart = (page - 1) * rows + var trimEnd = trimStart + rows + var trimmedData = querySet.slice(trimStart, trimEnd) + var pages = Math.ceil(querySet.length / rows); + if (pages === 0) { + pages = 1 + } + return { + 'querySet': trimmedData, + 'pages': pages, + } +} + + +function pageButtons(pages) { + var wrapper = document.getElementById('pagination-wrapper'); + + wrapper.innerHTML = ``; + var maxLeft = (state.page - Math.floor(state.window / 2)) + var maxRight = (state.page + Math.ceil(state.window / 2)) + if (maxLeft < 1) { + maxLeft = 1 + maxRight = state.window + } + + if (maxRight > pages) { + maxLeft = pages - (state.window - 1) + + if (maxLeft < 1) { + maxLeft = 1 + } + maxRight = pages + } + + for (var page = maxLeft; page <= maxRight; page++) { + if (page === state.page) { + wrapper.innerHTML += `` + } else { + wrapper.innerHTML += `` + } + } + if (state.page != 1) { + wrapper.innerHTML = `` + wrapper.innerHTML + } + if (state.page != pages) { + wrapper.innerHTML += `` + } + $('.page').on('click', function() { + $('#table-body').empty() + + state.page = Number($(this).val()) + + buildPage() + }) + +} + +function showBody(elt){ + $("#" + elt.id + "-body").toggle(); +} + +function showTable() { + var table = $('#table-body') + table.empty(); + var color; + for (var i = 1; i <= myList.length; i++) { + var j = i + (state.page - 1) * 10; + i % 2 === 0 ? color = "#b3ffff" : color="#e6ffff"; + var row = ` + ` + j + ` + ${myList[i-1].messageId} + ${myList[i-1].dateTimeStamp} + ${myList[i-1].interfaceName} + + + "${myList[i-1].message}" + ` + table.append(row) + } + for (var i = myList.length + 1; i <= state.rows; i++) { + i % 2 === 0 ? color = "#b3ffff" : color="#e6ffff"; + var j = i + (state.page - 1) * 10; + var row = ` + ` + j + ` + + + + ` + table.append(row) + } + + pageButtons(data.pages) +} + + +function sortTable() { + var sortBy = document.querySelector('.active').textContent + switch (sortBy) { + case "MessageId": + if (previousSort === "MessageId") { + state.querySet.sort((a, b) => (a.messageId > b.messageId) ? -1 : ((b.messageId > a.messageId) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.messageId > b.messageId) ? 1 : ((b.messageId > a.messageId) ? -1 : 0)); + } + break; + case "TimeStamp": + if (previousSort === "TimeStamp") { + state.querySet.sort((a, b) => (a.dateTimeStamp > b.dateTimeStamp) ? -1 : ((b.dateTimeStamp > a.dateTimeStamp) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.dateTimeStamp > b.dateTimeStamp) ? 1 : ((b.dateTimeStamp > a.dateTimeStamp) ? -1 : 0)); + } + break; + case "Action": + if (previousSort === "Action") { + state.querySet.sort((a, b) => (a.interfaceName > b.interfaceName) ? -1 : ((b.interfaceName > a.interfaceName) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.interfaceName > b.interfaceName) ? 1 : ((b.interfaceName > a.interfaceName) ? -1 : 0)); + } + break; + } + if (previousSort === sortBy) { + previousSort = "" + } else previousSort = sortBy; +} + +function prepareTable() { + data = pagination(state.querySet, state.page, state.rows) + myList = data.querySet +} + +function buildTable() { + sortTable(); + prepareTable(); + showTable(); +} + +function buildPage() { + prepareTable(); + showTable(); +} \ No newline at end of file diff --git a/src/main/resources/static/js/paggination.js b/src/main/resources/static/js/paggination.js index bc62f6d..39a249c 100644 --- a/src/main/resources/static/js/paggination.js +++ b/src/main/resources/static/js/paggination.js @@ -1,21 +1,47 @@ var state = { - 'querySet': [{"clientUUID":"436c4774-038f-4540-9c18-2691ca9b53d4","mockedResponseId":1908998,"mediaType":"application/xml","messageBody":"body","httpHeaders":null,"httpStatus":200}], + 'querySet': [{ + "clientUUID": "436c4774-038f-4540-9c18-2691ca9b53d4", + "mockedResponseId": 1908998, + "mediaType": "application/xml", + "messageBody": "body", + "httpHeaders": null, + "httpStatus": 200 + }], 'page': 1, 'rows': 10, 'window': 5, } -state.querySet = mockedMessageDtoList; +var myList, data, previousSort; + + +state.querySet = listForPagination; buildTable(); +for (let i = 3; i >= 0; i--) { + document.querySelector('#btn-sort-' + i).addEventListener('click', function() { + addButtonListeners(i) + }) +} + +function addButtonListeners(i) { + var buttons = document.querySelectorAll('.btn-sort'); + for (var j = buttons.length - 1; j >= 0; j--) { + buttons[j].classList.remove('active'); + } + document.querySelector('#btn-sort-' + i).classList.add('active'); + buildTable(); +} + + function pagination(querySet, page, rows) { var trimStart = (page - 1) * rows var trimEnd = trimStart + rows var trimmedData = querySet.slice(trimStart, trimEnd) var pages = Math.ceil(querySet.length / rows); - + if(pages === 0){pages = 1} return { 'querySet': trimmedData, 'pages': pages, @@ -44,12 +70,11 @@ function pageButtons(pages) { } for (var page = maxLeft; page <= maxRight; page++) { - if(page === state.page){ + if (page === state.page) { wrapper.innerHTML += `` - } - else{ + } else { wrapper.innerHTML += `` - } + } } if (state.page != 1) { @@ -65,20 +90,18 @@ function pageButtons(pages) { state.page = Number($(this).val()) - buildTable() + buildPage() }) + } - -function buildTable() { +function showTable() { var table = $('#table-body') - - var data = pagination(state.querySet, state.page, state.rows) - var myList = data.querySet - for(var i = 1; i<=myList.length; i++){ - var j = i + (state.page-1) * 10; - if(i%2 === 0){ + table.empty(); + for (var i = 1; i <= myList.length; i++) { + var j = i + (state.page - 1) * 10; + if (i % 2 === 0) { var row = ` ` + j + ` ${myList[i-1].mockedResponseId} @@ -95,7 +118,7 @@ function buildTable() { ` - }else{ + } else { var row = ` ` + j + ` ${myList[i-1].mockedResponseId} @@ -112,10 +135,76 @@ function buildTable() { ` - } + } table.append(row) } + for (var i = myList.length + 1; i <= state.rows; i++) { + var j = i + (state.page - 1) * 10; + if (i % 2 === 0) { + var row = ` + ` + j + ` + + + + ` + } else { + var row = ` + ` + j + ` + + + + ` + } + table.append(row) + } pageButtons(data.pages) } + +function sortTable() { + var sortBy = document.querySelector('.active').textContent + switch (sortBy) { + case "MessageId": + if (previousSort === "MessageId") { + state.querySet.sort((a, b) => (a.mockedResponseId > b.mockedResponseId) ? -1 : ((b.mockedResponseId > a.mockedResponseId) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.mockedResponseId > b.mockedResponseId) ? 1 : ((b.mockedResponseId > a.mockedResponseId) ? -1 : 0)); + } + break; + case "Media Type": + if (previousSort === "Media Type") { + state.querySet.sort((a, b) => (a.mediaType > b.mediaType) ? -1 : ((b.mediaType > a.mediaType) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.mediaType > b.mediaType) ? 1 : ((b.mediaType > a.mediaType) ? -1 : 0)); + } + break; + case "Http Status": + if (previousSort === "Http Status") { + state.querySet.sort((a, b) => (a.httpStatus > b.httpStatus) ? -1 : ((b.httpStatus > a.httpStatus) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.httpStatus > b.httpStatus) ? 1 : ((b.httpStatus > a.httpStatus) ? -1 : 0)); + } + break; + } + if (previousSort === sortBy) { + previousSort = "" + } else previousSort = sortBy; + myList = state.querySet; +} + +function prepareTable() { + data = pagination(state.querySet, state.page, state.rows) + myList = data.querySet +} + +function buildTable() { + sortTable(); + prepareTable(); + showTable(); +} + +function buildPage(){ + prepareTable(); + showTable(); +} diff --git a/src/main/resources/templates/etrack.html b/src/main/resources/templates/etrack.html new file mode 100644 index 0000000..70d1504 --- /dev/null +++ b/src/main/resources/templates/etrack.html @@ -0,0 +1,68 @@ + + + + + + R11 Klaus + + + + + + + +
+
+
+
+
To see your activity history use the form below +
+ +

+ + mockedResponseId + error + +

+ + localDateTimeFrom + Error + +

+ + localDateTimeTo + Error + +
+

...

+
+ +
+
+
+
+ + + + + + + + + + + +

#

MessageId

TimeStamp

Action

+
+
+
+
+
+
+
+ + + + diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index dc2f4e7..b62720f 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -10,30 +10,31 @@
-
+
-
+

In order to set mockup response please fill the form below: -
- - +
+ + - + - + - + @@ -54,7 +55,7 @@ @@ -68,47 +69,65 @@ - + + -
Mocked response id: Id Error
Mocked response body: Body Error
Mocked response http code status: HttpStatus Error
-
+ +
-
+ +
-

Mock has been saved

+
+

+
-

+

+

Mock has been saved


-
- - - - - - - - - - - -
#MessageIdMedia TypeHttp Status
+ + + + + + + + + + + + + +
+

#

+
+

MessageId

+
+

Media Type

+
+

Http Status

+
-
-
@@ -118,45 +137,28 @@
-
In order to set or get responses through curl or http tools you can use urls below. -
When you set your response simply set headers and media type of your request that you expect to get in the - response from the next step. -
http://localhost:8097/klaus/v1/delete/clientUUID should be here/{mockedResponseId} -
http://localhost:8097/klaus/v1/set/ clientUUID should be here/{mockedResponseId}?httpStatus={httpStatus} -
http://localhost:8097/klaus/v1/get/clientUUID should be here/{mockedResponseId} -
http://localhost:8097/klaus/v1/getAll/clientUUID should be here +
If you are keen to use the mocking service with bigger amount of messages or automate the process by inserting high amount of random messages please consider using the tools below: + +
http://[[${localhost}]]:8097/swagger-ui.html +
+
http://[[${localhost}]]:8097/klaus/v1/delete/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId} +
http://[[${localhost}]]:8097/klaus/v1/set/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}?httpStatus={httpStatus} +
http://[[${localhost}]]:8097/klaus/v1/get/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId} +
http://[[${localhost}]]:8097/klaus/v1/getAll/[[${mockedMessageDto.clientUUID}]] + +

- -
-
To see your activity history use the form below -
- -

- - mockedResponseId error -

- - localDateTimeFrom Error -

- - localDateTimeTo Error -
-

...

-
- -
-

+ \ No newline at end of file diff --git a/src/main/resources/templates/tools.html b/src/main/resources/templates/tools.html new file mode 100644 index 0000000..29ae2fc --- /dev/null +++ b/src/main/resources/templates/tools.html @@ -0,0 +1,128 @@ + + + + Blog - Release11 - nowoczesne technologie IT.2 + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+

Blog

  • Tytuł Artykul 4

    Tekst 100 znaków

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

  • Tytuł Artykul 3

    Tekst 100 znaków

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

  • Tytuł Artykul 2

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

  • Tytuł Artykul 1

    Tekst 100 znaków

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

+ +
+
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java b/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java index 8d68d5d..df9dfe2 100644 --- a/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java +++ b/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java @@ -2,16 +2,10 @@ package com.release11.klaus.repository; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.release11.klaus.model.Event; -import com.release11.klaus.model.MockedMessageDto; -import com.release11.klaus.utilis.BusinessKey; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import java.time.LocalDateTime; -import java.util.*; - @SpringBootTest class MockedResponseRedisRepositoryTest { @Autowired @@ -20,42 +14,12 @@ class MockedResponseRedisRepositoryTest { @Test void getMockedResponse() throws JsonProcessingException { - Map businessKeys = new HashMap<>(); - String[] businessKeys1 = {"fdsa", "Dsa", "dsa"}; - businessKeys.put(BusinessKey.CLIENT_UUID, "xxx"); - businessKeys.put(BusinessKey.INTERFACE_NAME, "interfaceName"); - businessKeys.put(BusinessKey.MESSAGE_ID, "2323"); - Event event = Event.builder() - .dateTimeStamp(LocalDateTime.now()) - .businessKeys(businessKeys1) - .message("hello") - .level("INFO") - .thread("main") - .build(); - String eventString = objectMapper.writeValueAsString(event); - - String ddd = "{\"dateTimeStamp\" : \"2020-09-04T15:31:48\", \"businessKeys\":[\"INTERFACE_NAME:setMockedResponse\", \"CLIENT_UUID:436c4774-038f-4540-9c18-2691ca9b53d4\", \"MESSAGE_ID:1\"],\"thread\":\"http-nio-8097-exec-6\",\"level\":\"INFO \", \"message\":\"mockedMessage(compositePrimaryKey=null, clientUUID=436c4774-038f-4540-9c18-2691ca9b53d4, mockedResponseId=1, mediaType=application/xml, messageBody=body, httpHeaders=null, httpStatus=200)\" dsads}das"; - objectMapper.readValue(eventString, Event.class); } @Test void setMockedResponse() throws JsonProcessingException { - List mockedMessageDtoList = new LinkedList<>(); - mockedMessageDtoList.add(new MockedMessageDto(UUID.randomUUID(), 1, - "application/xml", "body", new LinkedHashMap<>(), 200)); - mockedMessageDtoList.add(new MockedMessageDto(UUID.randomUUID(), 1, - "application/xml", "body", new LinkedHashMap<>(), 200)); - mockedMessageDtoList.add(new MockedMessageDto(UUID.randomUUID(), 1, - "application/xml", "body", new LinkedHashMap<>(), 200)); - mockedMessageDtoList.add(new MockedMessageDto(UUID.randomUUID(), 1, - "application/xml", "body", new LinkedHashMap<>(), 200)); - List mockedMessageDtoList1 = new LinkedList<>(); - for (MockedMessageDto mockedMessageDto : mockedMessageDtoList){ - mockedMessageDtoList1.add(objectMapper.writeValueAsString(mockedMessageDto)); - } - mockedMessageDtoList1.forEach(System.out::println); } diff --git a/target/classes/com/release11/klaus/KlausApplication.class b/target/classes/com/release11/klaus/KlausApplication.class index 3c14ac56ade1497b269a71d91438e65149bfcd55..3c7716cac8c294132dd71d3ae4f13ad516946151 100644 GIT binary patch delta 23 ecmaFH`iyl$9up(yZZ^sPPaiM6Eiv%Qft<@3I5=u=cZ{KwJD_uZ z*}4z8IF1uUB9cLhWFeRTi;!jW2ZM#Cs-~XWJV;bfm!^COBMfIf-6$B^5s@qw3+sVM zqJpQx*ytdTCWBF&a&X$k8H_Q^bh>w~r5W)h`7V)B{7i&(a{nDNVi>4Vghk=43!i9C z=PJ9eT#aqI<$Q&5;l9>>AUXYQ&}&*JzG!4!c_Nks@*K`P7xt&UQETzFuIh4v1-U= z6)BQk2t(a!0i-%v(Z+ALf)yhga#Ndis;MxRTQL_qNBILOLMvR=iSgtUm8Sd0y$ZHY zsbKf3*rJh`v>TE1T<5Q}g|DBngUDh8Ll~oWbe`6`fyUc`X6c+wqn!HQO~*NE^Pv9Qg?XCq G0lxr&_re1J literal 0 HcmV?d00001 diff --git a/target/classes/com/release11/klaus/controller/EventController.class b/target/classes/com/release11/klaus/controller/EventController.class index e1a520e67eff7a875d14898f1e866442e9a42cff..291e036d01d7bc6b3dd799732205bf353d6fddcf 100644 GIT binary patch literal 4657 zcmcIo`Bxj)75*L)NQg1UiiPn)8XPA@fSEYPsU6u)0ND->*sj6Q*iG9(8pN2&NWZLZRwtLClH z^n+sHrlARRn1N@MRx;?u?i6}7>_JvwwB%NG&$La$H;*0DS8OBn^^)rZo@?8tr=OFO zCL42s-kMtrZ6h!hhy^QHp0@nJ7nm7*uw~P6nyQkCNJ-P&!u9-oC(YceA%|XpP6bD* z5$K5+2?NX4MF`)R4yzoi0PnW~}Y62bW@IQu?+OSgupZUr!^K!BLE+plf&r z$L@nCR=GfGF|_QmNrH=m`JG#RL~+n``9vh8kil_`rEo&SbNH0No@PQ!Ie}S`dQz)~ z9h#Sy7>a{ab?_=>>TgiSDLkJ-LBnaB5qL4qJF#f)V-$m~>Xuf_@>SEXxsGp6l?4`B zlXX+`|Ac@S@L~$%8YVC)@R%YXV36q3ZppA^$S{^2cTHd)36I$>bmAP&r*J{TOPIP> zgp4?fn3=jHklQXmZj!*4F`dGUhD*3iJuylmA#E%Wd+SY;f+Mh3Nv&5;haoRZ zYz9@7Gq?pW1z$sekTIbyA$w`;CgZZgygYA|0@tJHP8PUmN#Lp0B$>1g-`~8xT27M8 zZmel|4LqH&-HJ4CyZ8bNHg6$6Fq~js=06q9S{26#LXYF)+iKwHhgG7&SxU_K%kElK z*#$m)l$zV3PG0+khunN|H#V!7RW@V|)+a2d%*&qTCA8%Q-*j!g3lK<7@}gu|P4kwx z6jm2aZ_Ze>xk9Q~7Um7llJojvGFY}4zR$$6aR1All*HeHvDK1qC&SQUEo{A$6&;Lm zbwuFt2Qx#jF1CVaKN5T3zGPAPj2SGu<zBdzQpT_KBSX zbo~~ObkwBB2`>}Ym`7&R9*XM>so8*iE`3+ehLbziFeAIsMn_H(vzu3JqoL&DiF+1z zR&GY)D@<&oSjf-wW;x9-3t7?$a@GyKl6l^eIlp&XQ$8vShRoeK-}%f5(+wDxdb5ou zik-7k@6wvdpiMcB>8W~d(gD5ky&MKu*Gv3PO5%Vl?i^)h>#cry9YNrW9Jisub@ut3 zzpmzALYm_@@MW~)D_psS1V_NWqggR>7l{NGj%GWDqfxf&&+5>d{M*eJ!PY#3C$Set z@Kw&nqNDg4zRnqiaQ7P&FGp|TZK{`}Z{l0(>^^)O-=V?Z|0{37OQ8FTM49FqLi`#-=FLx00# zcd<`E4*2vl3J2P77oTjy!fi!e`X{#yURN%$oz~;K^}Hn4rW-+Fr!d{D{bNP3DjmNv_)~ z!={TXAM$y}=K+33;1@Jf@}_ep&1jdLG&OXn#fvS{+UwGyl>em)#ulkL9$3P!>fmlr zx+LY`(8pLD%2w{c8u|ySuY3&m4m~n_2mO-yHpP5avD?SLhiF_sjq6i-dm|AI)(@&; zBowjjf|DNBonP~iP)G)p$;|C+_XcWz#j4aGl!gdRjz;}PY5lFTK12Dxm{UPgw!>|_*?#7WopeHKO_np32 z(_^=$-?_PRdfK;u+en1>qW+%1y1CCj3I}hZ-XOday?Wo&N^OfeYnSu`Z#?3UB_{xV z#WcZF(Yz!v1%WeICOb>kGVe^x`JW+zZ?GixksUK4u|l7r8mw`Selby^iW(Vn;3Jsc z=dgThq)nJ^ufn?re8kQ89!8s=Et)LkN)&ne1%%zwfuQYgANK6#mXU?wz@F8DKzgT%!3fAIQ8Mmpp9d|HHpdy|8NNNgqSjsK6xJ$)4+|BDP7g+B_rHuO+ z^2C*ld0KO;zkYSQCK9Yy@c9sD|ix5$=IY~GoI!rtaZ|} zDz@Oc=yYWrW7E2&QG7>QrZh(jY8_hiPuot$%92i{lIr)jx3{(h_@+PjR`*8(d;cFS+s5pUdqZ`sq%=A6OL_SN-P7X|dJrXRr;EF3?O6yGMlbrvmtr7Cj5f@kFqn> z;z&Sh=>c`O?1%e6t{xCXpdnf-G~gLtPiUNrACPMc%aa;l(;CP_MA)YDW&$D zhXPDPF{WcK&PN0Ny9CIJc9kW7>g{UL+tre6R{`<8A8%0pVv2hcZ&8s4DAES@4;IXo z;gv~sBbqwg%!4{#Z;xnZvX@cuU+ zxU(1ci0%D@NJ+Z7C--4PxmhskH1EZu34xj7Y)l{?fC_rfCN|~}8x_RHB_!2Kl;Bc& zt3nNNBAA$&_`1%750PQz`jS)-I1J$sQ6YAR@h(wOL*fzim~|l~&fZJXWCU}?*-1C) zk{_b@!?Y6WdS6%92Rd6v1X~e|G3n}xPXIoo_oF_1M8S;yr#>dN3hri-HIP+2ec0$J z+5=Z2wNQi@VqkQ<#;n9Gy+$QI=q!$p6z?XIEcgWV6hdhi(TIy!8dpa_3{OPyj7ZDk y)F#qqQX>e0j7(F+6c`tdn32jn}X{)1jOH-)d1%+(yRnrz7KcU($?&j+43XyYGAVe)oLmoSXHP z$IsLcoah?>P=#N2>VKM*%$9Jc;7XUnj#AWdRAVl~4Dq|kEsiMV%7qLCVq=C!lv^C9 z`7w{<9Mm(Iy(JAg0$8A-fg^~E8GNG7;S*~u#r8%l)Nl#MrC20-EcNPT9L=~~IMkrJ zm?MlOVwpNo4WN}{so1QJwFa=9qYYPz0o7;kzzPjlajZl{{GpcUt2i=nHG|hHHrVsT z4$UsQ&5C-hL~@-7YAtNF*rR1zJ8+|1d6O8{a-C~%vxZwZ*5X!%B5EL493EpA6RcHM zKW^u^19ysc>ooN)%+_$X=(ZMH*Wg}``>$$CG$UaJ^pL%<(jy zi7nRGF*a2kvW*pWnYm)vsmF@>HYOD3_SiA!bhGnw9be!}4PSA5jp10OOJT|gL$PRL zg`&xAv45+>kMB5+;Hc34N3qzXqeEAofMt4@D&=dgcur(oST&wtu@2n4}U0ui>j2eIOgxeDKdDJP%lEkJ~V;Q zTwy{#Dnj(3#UocOi=(|4owQ;QlM=Y5n~IttW$;0#=Va>nERtag$uOB@m`Z}2P2E?a zhMczm)6hbZWQk%@5>Z;0*0e6IDP0PQ*a7UJ17v|gyiVP`L5JAE{z8q0fJTNoNxXlH z_U1{VB{lPq<=>K`QN7>DQ_@30$X3DG(~n^C)pdUo5?Ud-lO+}jd-6nGZOLxGN)v)nxcuK?n~fNUuh2t zqz)#719@kGT%*VAG-45af=}s#yhxuBVc*~|zQ+%g(J6BbKj9a6{swVfJ>mcW diff --git a/target/classes/com/release11/klaus/controller/KlausMvcController.class b/target/classes/com/release11/klaus/controller/KlausMvcController.class index bae3459fd6d131274e92dbb5fd7f58f61cfdbf8a..55159cb123629d99b1b58b774e9c430476c9c8f7 100644 GIT binary patch literal 7558 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 literal 8347 zcmb_h33yc189g^M$xJ4XZ6t(1KnROTCSe2uEl$F$mV;OY%qtCiCLVn~=EF zmDaX)wY5d({Cybb(Cyljh!-ryeDj6O$`;1t) z-RwPN^tBtwq~33|Sf;?Nq+vD3qDI`h?6OFUz*$vo2lZh+oU)>^uxx6m?hYV;5+5`T zvoKp=t=s&)X531cv6ztv?~n_&5BD}_ngkXMnM0|VZW-+o$DXJ)&=yTvNr8^4HZ##5 zP7Woa@%{q|eb6{;CJu#DQDSA!hBmjw+>L42SKaN$T(T04_ZcHT1Zj>kCZ@;x!(9Uj z^RV6%GXj{8QXdv*D8oWB5HkmR%tPTe^(9b}j2rr)QPo{wy~9WT6b;ojOR9BuDsDvw zjn-MfdYHnwL4AZR=XyF0m~W+r?uS5AhSlP^bUdILFTbeec0&pW0!!}N~DYu z>_(>#T^cS!w?M^AS%sA7eSM7<)!UP@NJ&es790&t^}IXEOsewZat7fP)k+TcX}BC$ z2yDr9l*+DDuN$e;@FWBGN)0c@egVH_ro(T3I%ZWqa`4N(x`rO~GP4lXcCxwM(EE%8 z6*DhALPfchj0_n=!vQdyJwqu=;QU-trVWSO=yN*x5hcS3W6&Hn>=jFJ2r(Z9HN?S9 zXO)b{k+4)w%&@}B&k~-L9UFEVSEr055om}b0C{tG{i0X2wv*L%QW1Em$Q$8 z6DPM3{%h>(OAxiqXPeop$F`f2-i2uqOzOzwbOf)|aJ!UQiIfhzchCy~yc)0Z;k6oG zC%2B-*|cgG4}pXp?=uJGjURU~Q|UuPv1qR@cg66?V9bv=qY*8In;Bp$|?4<|H?V`AzQU7UqM`YXfE-AUsY52S} zVNRY2U8a2YMGarVQ>??4(go_yMCV*GfUjuyD!wMLs6S@*=rKD5W{)lM?7*dM=2f6} z8Wwl3Z{V9gd`rW(W#-5!`uLP+dU+yB$OQXc4d27}sRyRE#+WmETJB_{a!THC$Wcql z#noCr)bJzxm?=uu60w*-dG5Goc^K+d=Yi^de*Bb4dGfX*XA0nH9QEPnd1bY|8Ts&w z^v0qVmf4Y(1n>-w2JmbA#)sc(_#J*v(W+`EcA)+s1E-(6&sM$HG7~&g6w^k#iQBG& zPgM!cF+G`N3{M`Z`2VAZKjF`e8=fy&UQX@Ai94hHaotKK7+x3Udt%cJiD9xU8#Xs^ zOK9d816qtIT)~P#u1#gRnY{GfWRS8nSt_1*PHW7VeVw0 zba*Ni<+d`b)8f&FOgf&O+iq9`W?!b{qfZLM1BysZeTT1=16glX=DRU7BF~>2U17TU z)7hWZH1w!H!3s2*F#0@v*8+jlpJ=rmJ_USn%i z?)_y`-y^S)+zW(U2}|-Ffni!q8{zDmXWFPm;&CIP${mBsTQKPu zGiB|=tDt;)roLH=au@guuM6;3%;9wb_Ve>Mw$$-X@Y@p<$5e;E^M8?Qs>DBdt=W(9 zPyCB_|K?{lTmHk(vsXYQ@f@%I%Ne|Cx_kLu#6HW)y^o`)+}lz2IQ*fyF?ecfL*6kI z2j?8Su&})FF^+k_><^l#5Z1v# zygnNn$;^3Ji}QKryFhVLV=tRwVoQdJEn>bXRZMJAoOsec6bs0K@}Vdb3%N=$*aT6| zkL03+Ov)Sir);0)QMS+LE$!#SMPf0Dm3H4oyCvE6((XN{u$z=fGA6LsgE71)YwT)5 zAb0$KF^z4cv0G?t6ROZm88q>Ado#^%QU))u*UK1O?-(ov8sxK#Kt+XE;uugUqyYrJ zRGdw|B=D>GEtOVQQ|=9Us81rhs1AS> zSgsJ3iAr8c`IRa9ZTXRUv4YRj^skhmL|Bq{N{o1^!1RBceMfoA*jmYt@&I2{u5vsO zqaku&1@)A%BRDXDg9Vtt5QUa2E8Ch~{K4%~vb;M-LKPWnDl*noh}Gg8Wlcqngj{VP zA{i!*R94%eLY*BJRSwWwoDd1s1uYo{wNehjVFh#?BT5x^9Msg+N=tHa+i77BQ_$s1 z5qp^R_EH`Da`1;T_(KY{Ofw;6iPUH4l=u%j_yw`2L!J0<$Pj&vLv*EzVS=v>z9b9& zMh~2To(g+EN^lj0y`R}kr?7i+U{_{fS7vCh%+OwWO4v8J(k`kqdA^%QNCpDqxOEJ# zIMx=jQ*aSAkWRr&``gk9IG}nD@Ts9-%6OB%*~+9VISn{~WxSP8t~G3ZHpvAA6QdN1 zjIK3ol%2ifcvUvc?cHTiO>6HiUiZml$CL;;lkMdCay{kF3M%f)6ZkrR0^>zGb|&y08R0)*golDZvAf7!tauNE$>PzXk3RVF&Z2 z#4M#&T5|$Ft2v2h=%HUeOvIsw(IR2lTbu2m#YD4|HOXRy!p`cY85E_eh7oE-X78eEx^|Mai7?LVzE{t5bM-7NR^BA I9I^uVA0NKw9smFU diff --git a/target/classes/com/release11/klaus/controller/MainController.class b/target/classes/com/release11/klaus/controller/MainController.class new file mode 100644 index 0000000000000000000000000000000000000000..1f0987f45fb42392838fc92c8b0edde4634da785 GIT binary patch literal 1036 zcmZ`&T~AX%5IqYm{h&xK0^&C+TKw9OkZ6P$4F+FYHDGx0X?r`|F6_Nq?`|RdD~%5t zAN&FSDC2BPTGaBeyK`n|=A50({`&pnCxGXu7cn7__tqL$Mh^J`rYb0)C{R66M@kx% z#`0b3fFdt2wW(9>UkFUrSN94i3p|c&A~Q0i9IdU%L!)|5MmF`CHHI?TR65-n!ZIqD zDd0i{v#1Iz+ANmN?5`ilhK*y&wpHY9b|O%U$q!rtEA_@m$(B*hZLBu_&D`$0LaWgWfGgRKSy)2?_9eOnP_nxDqCatx2}$vB2jdqo<4}g106< z^D%+Tyic(cs9}lsg~2taUu6{1ui-l1-(Wj07*uhS%?s?h#cTN^gu`vN_^0t6I3%B; zVE(~3OnzbGEXz!vr7{ROWhvs$FnPIu1C(l|@0k9Ii=luxBeTrq?)HnW^pymBkMVur E4_^ES*Z=?k literal 0 HcmV?d00001 diff --git a/target/classes/com/release11/klaus/mappers/MockedMessageMapperImpl.class b/target/classes/com/release11/klaus/mappers/MockedMessageMapperImpl.class index ab2ad8d97049f277364358c783e81b7c4ee86173..5a6aa0bf7ac39409c75d808ff664cd04e1b84d1e 100644 GIT binary patch delta 866 zcmZWoSx-|z7(LVN;=LDwjfJoXA%TdtP>nGt1s6o*$|4q_f`}GcOQ9R|76lc=eHR>; zXMcex=4vqU$w*@KADC!-)0p@RG=6hkQscwSeBb%Db7nG6OTU%KZ+FGemprm77qEt=~Ob24r?L)-aeQsVXX`eJt}$;;48L7 zm4<#5hY?^<;^A~U7zsBeLsMd&TVxKZIErJu-yZj97*-Jyz2%WCr5cW_h+u@lK9q^Z zLJYOl>v@G#urTkk`6P_;8OK&zjKRz29NwkRj!%ruEWOPcXL(m;T*Gww^xw1W(9LuC6+~aYj#ubGH3}bYMRyyr)&>rWHl!A2$!h{E`Mv`{b zwCzY?oIHjJq^UN}zbd`O+dOUqGOabsXaEfC^ej@64GBJ=`esG>2J(Qx-{r#6k)bwu z=)xpUP^-;w<0Pht$TVe&alepLgq$`Ji{m>QBuEm@V3rU&qb7pOSP?HFF=uj&YIWA_q;%DU(GXYG;qWW2Mr7b zJO;vl6b0fr3g!VH`jxLIoA6QVU26r2~pLyrXzS zj`tt%6@nQICdLP&iN5#+Ccf%}KOn|E1r_7N+1GXUUhACig)iLNho6hD0aW4HoR-UE z$y2I}ZETYyd-VB!wu$9bGGxV~W`k)Cx0w-hG$jg{yE4F0jT&mDR<{_|dm0BKV-f#g zBoXuL2{Rgtjs!|Oa%sg*j$Nn~ZyfHmB`c^=vwzUv-mcdLbit&2c{fL$a7)F?UXFS+ zh+3&D+d!j=CXQz8X9$W`DJZ^4@eBhYjy4<+J#wB@@6p8nJ^K=SntV+}Ot-KvY_n{!(3%d~Ep()VE(?dk)ah<6e}^@`SJ>QHzJM(jj;7nk zE%b(c7W#fGD$3fvN>S*KqEK1~{V5uV*0r>v;{O!cm46l0s4!M38YlKLu9J0O5;w@( hzi^ZM6rBu;Z=sOkJ_Mz?1Tx^l17zYM9^)xC`~ng5urdGu diff --git a/target/classes/com/release11/klaus/model/Event$EventBuilder.class b/target/classes/com/release11/klaus/model/Event$EventBuilder.class index 198c7e2ea6ad21c1e23dd1629a8b8bb90ceb7c5d..2e999ac3135426d0bc2fc9606094edf13e2b08a0 100644 GIT binary patch delta 733 zcmZ`#O-~b16g_w7Ff%Ym5KKaP5oZnoOjPV@4R#G_xS7N%j4MCL8qs>dqG3hgSH~X zUwuhGixNf}tpnBRZEx4^IDph;)@pZFa z*(nQ5PSJriDzDQ8l14$av_Bn*;;r*Hqhr3DDpA|qrvvlV57o0F#5(=7!h0)HI`KtV z^gZFa832Y}t*g8cYm$B^{+P2c=$BlKG7y;Ns>O#vnv*Q}3lWzVSPfPgJvxOOQO6#l zT5@1m+ucIhE|g=)q~qkGbLT5ZpY0%Ag5+)>xP<>UI$^gH^l|iaxE#Z0$g_1Y7vM3T zaHGI8Jm*)Bu*|2{aGo2x;5o+bvKJ@-n)dQHbPwjZ-@rVNuhpko%Iov71e@JfunO-# DtH)}B diff --git a/target/classes/com/release11/klaus/model/Event.class b/target/classes/com/release11/klaus/model/Event.class index 29c3fdfe22c8d941ccd138de84c9b78df91fca94..1225857667014a344db64639e46c478f1a56d29c 100644 GIT binary patch literal 5636 zcmbVQ>vI#=75`mZ(yru{EdvI&CV+|4V%bK4mb9!*NH7rG+71N+P0|O8wAjLWIMSMw zzTa)qN7BbkJDE;DmYEJSeM}8AX(!WsNoV@GpW09TEBd80{hhnJ)=HMasmIcud(Q9t z?%s3Hx%b$A`|n$C190#&13d~8#d@{S@G73$^o|}atW?~!W}#Xyd6mN1TVBl{)!(Pr z%9WDW$Uq@sA&HbiYPwu2`%f$M9v-`rhKaO+jDNbHQ#I8aEso8TlExn1YQ-lwp6&}H_Ejo4c}p5 zr@%ACN|{Tze0lbaunbw)jXetKs@H6~OWtfrVP}kCmgGxbLsQrmJ|Gk+f4SkgC2`+p z;W1GqE8Z=yBANph4vNMI2{Y6kvhX-Y70jYrJNxpQTTvJ~9Gm3%>o>ikKQ;EEfIn#A zLpZFETk`y9!C^p#507mbk__?~H!xvgQl`r3(CHuq?0jucrf$j{1q)B&XfTJYFc!XD z(H!vriqD5Fd_;V*e6N{}7>ea73m?VD6f9ciTVWh(V~PSP4vvK>p-R(XQO8oWCoMcJ zT9ev238yHZvGA-YGc9ge>5PRlI7{rZ+gzSuX6lri-N7V&&cb=jD(tDcE8a}KR&@QV zWuKs0(|2orQ{l}p_FWPywkcumJX8}c>Y<=5iNein4|E<0X8y&sn!MeWa1_KkrnlPLsrscO}+ux3E^JxO@>|xgM0g!js(JN7QuNK|$w4uvG(d<(jv! zR=w^u7KK)dR_gnT+bGL8R3`l8GT&?DQL~UZ*W6Sr`?lWYu`BeL_x$C0>4GaEWLP+n zkaSc-TbYI%Dc*p_nz*1WnBbIkF|Y($?h2~j ze$s_U2v4HAzw9+=l;DkaoTxjsu~QpB%kAet2<^}gXx7#d%Af_5aaF$t#SYYg029;n zX-II6GBANX8fLUnpQs9bfh`uY|UJ% zuQiI^xw4d6Mql1Xw2H~ogY8Wcx!AcgN_@Lhb*z^ihszNRqR zx>(A!TlEz$ykvuu_MBVv>y6tAzlbMy2nnm%kQx9ELo8#i`Rj&*D zr5HnWk;YUZ#f)32Tq^tCl!+fGT+=Z)+*TbY)x^QJJP<`I4`j5F2QmoqKqQ?9G5bk1 z#+;t5)x5?`#ceh{hSt(EhAoqUHx!=O6v%GzG4K8CUq^C4{3y zbvkD|op*L|me52IP}19UAsXx?8hRuVTcIvQyE=*XJd%hl5*OIHw7s1~d%F-R>7=?i z4|h7-U7gu+by>pxPUqn+&h0_Hicf_^4xf?=sr>jljNem=?`>K$?G6y(-pb|#Is5|A zNuE_Y*IvX+=+#kaqs(rXGRXdrQU;$UyCHcem7wsM?)-z>JZtuTq zyZk{_hWxuX^Izlp2L;gXPzHnR-J`sJyOhDX6TYPk zI-<IX{uVhY>xb@WjFdznsM6U(shL z-o@Y@Sd(_*9>yZX5hqE=5hrCQ1(SLgJMJKBC+$=Wbj&dbI_8+RAs{mZ8MYY%9e2_M z9d|NzT0of)l(sW5&Zw#a_ew5Bd$553t)np1-DgK&=+j|F0O; zM3M6(0e1TGu`>>2JQc7{V=kX;<242T8e3_Do->_@>3Z=9p zgIYrWdsHM0m`X7LpwxS$ZH;?GF@$6Uh%kwERR~MPU@c^)HUt~(;1<4%A#^b}xwO2x z+d@bFpDkD*@$p~1-h})cuDdyO&un3D&HgY1Nw|Gq-RL;xxFOP|9g@_QH09?QKganw z!Ot{5r`}>oqqC#vi**!-HhMh%YcZ&dSc7;UAMd;?teA6DYm!x8&6# z&bkfBPpl)GpIpaa-cGDzSKdypV{hJ0tz$TE8|&C~A7%9%7XzN?P{c&osE}KC*K!<8 z=$^V)OLAu?v?Ld5QcH3VrnDs2m!VIW#|+)%NLM1AgWT@oAkgTJJ7CZ!>Q#b{MZV=H s&?fM8%02i7>jj)uw&q)uOg_KO&-d{|j&=~iKUeW1*2(KUhJOnCf9mW**Z=?k literal 4543 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 diff --git a/target/classes/com/release11/klaus/model/MockedMessage.class b/target/classes/com/release11/klaus/model/MockedMessage.class index 44ba22a1ebaa57126a620baf643614af9e51f56a..bfd5348f1c768b890011902a6f6d6f0a0bbbd1ac 100644 GIT binary patch literal 6112 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 aiee{wS^7E{-=^HBn(jDG`VzS!3Q diff --git a/target/classes/com/release11/klaus/model/MockedMessageDto$MockedMessageDtoBuilder.class b/target/classes/com/release11/klaus/model/MockedMessageDto$MockedMessageDtoBuilder.class index 5d4554ab79fbc0e34dfc241ea8702c934cd196d2..7dfc1f6244fe9d2d5cd862f3574a982b930e21d8 100644 GIT binary patch delta 984 zcmb7DT~8B16g{(cyJcIX(8AUtEeawoYQ=9YiU=yj`k)5Yhk0 ze_Kk%1?)K~U)`6UT&!B?7I0Np$Q`ti#o-uC^azyui_g6!FSjV?%el$P!dO1A%U)$R zSE$I+Z0U7g)r?;C$q1_%qpLX8#!N?I=)+L~=cV_eG`diE=E(>1a*kS6dKFm}c=JER zt24&5P4*I+#lSHl zgE;jj!bBLnDYYD>&>nXUqE5xY09U;Y#BkhS{R23Gle7e)3^LfJdL;Gs@3S4;0j#aF zT8olJ;1s>44vo`j!JsCfD^KYMxC0;1?7pLGd;aa5Ej|r7OPVyW5;(mRY3rUz6G;9p zG~s7(0!~$HN)7FPQ|C_t$0tbR4EC{A!cI-?PLM_?D>%z0=$7f`r8&1o^U|aYhIx+8 zOwdHNVDDuLdh`vVz&MW!bm=KfAVLl3-az(|`yLk2Otcd1M2a}LhC@4#Cx&)ExbZ$N z;*us-ozcFhy}-YsbWmn1D8z56N1w-#FSEEpsjIq5jNvA&Htt9GD{t`ykF(|?4r~Hk Copy`> delta 1029 zcma)*-%b-j6vn^Vw!5%YF;rwPE}tO4IC1%<#^amnMmVE6cO|b zJj@2M3*O9JZeqe2EjseE)-S(lx?Iu@7Vh=%uz@I!A}bJo?#@<6Ueunr-u)SGn%=zU z);yj#`)|zJlJ-c1N?Au%!lkvLa9PMNp-K5Vvak3abS?SA7_J|q7!5Xug%tfxjtF!J4ARTd3bkWzK&;ZyaGbOH40PcH=V%as zlMDv^F60@dl8dw&tzi$Yb9zI!CB2T`Af}PeXc83j6vHD5w}*>voMzZoXx}<^wTHH0 zcKetHGg!oM1{$F<*O{nquc}p54152oiut&>B5YH|QupmxRs0XLu1byj&?L?xkC?AAj$qVFEq(hf~KG6riBZtgr|(&(yjwLu0cJUCfxE% zxQHQcscx0gK@Uj3L;8XIX(sX;INbIjG{mNx@2EgQgvjsaz~c1B-J4)*^BLrirD diff --git a/target/classes/com/release11/klaus/model/MockedMessageDto.class b/target/classes/com/release11/klaus/model/MockedMessageDto.class index e0a97d3ad01424081fe8e5cd47c78748a9280b02..928a19e6a5e5247f6b4db42947ed8c49903c8274 100644 GIT binary patch literal 5953 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 delta 2403 zcmZWqdsI|q5dY2H-Fxrey~47xtE(x9fUtmI3F@MVl3~8`WT#H{hb_iIhyw+SX<4iG zu&}3JZ&S-2^ib0f6fE_WWm)zvEqj_-KC&#!G9S%%ciDV!&fYtBX1?Fd{ARvkXUVP- zW82BjjR1l)evR?CYSYjlHt9WkUyrbfCe#qr;nj83;Sv`TaD$0im@QVR{aiO;j)t2} z+=7VsQY~`L!+Z_5nz#+Oi{9D*eI6E=xD$7Yaa!uMg@o=kp_!rlrf_v_{>0FA>0|1` z4YOTn#yuwP#a$ewsxmyj(o)@T;sL4BS#^1+wy9EsAh<1n+E86p{*-V-bzPMQ4m@Py zVLT$T^la^tikiyl;bO5+_otlZRjlJNg6*16qX#M$o5;fxVu46Hf7BCMfJTy1!JtRpyU>#G{Wp~e~0WWWv+o!B7mHq!M)c+JE{ zY!d5@BJ~XuTkxhhViXl_HSspyVG6?a(P9b7S=kfLrl8mZ4ev@0-Xmm+X1$m1^wJG1 z$NMHez=vX%t5E&e#3%Svw7P=ydFvsUW>=_5{E?XEG8!ryn`*-osvE%e3?`Bo;X)W?8MeN9Rrmzz=v=~*Hvv0wM>sccJ=w*Dp=(v~6Scym(* zNL7|e8tHD**(XOTa!s<6!%YLlR&OA)z(s>FK%?`y!v9C4tiHCEyIEad=cd7g9I=r4 zh-ODZ5`z>OG=zp~G>q$}pqS#@QaGI8NTVR7vAIOX7-S&#e+)`IXEZ1Bh)vAl!thJtqf9*r`VJ#tw1ZLn=8zF^NU1@)Xu zyTtsS`H`>KQo?fv)Z=S>!*3~li|^Q5O5d}jSki9%z-JQ>!XEqxJF-xYy(~HK6WdeS zCjEEg=eXCtxYvI6I>7b>D94eiA@ev2_=$u4S=r6T@xYP5r-5Jir{EC(TrjO{r}%H> zYZwb!eQF+ku&c4%|ox+Wqzp%q2XA2~xU)uo=xkhu_hGy9x4jpHwaC z#Dlz+RL`S9EvEw+Y*IV%I3f&_uV6h2J5a2!W9FomQ>*h%PrF|?-(vcjMBXv;s2if%g6la z6{FP2Ayl@PM`D~#WKxz8CgsJ*EMURna#7Hp8(52_e!FLRJD%B$(CnTw6|e>Ag2wbf!sDMUBd>& znv?{~$;YYt`9Axs$%x)OZ@dt%b?;^Gz1GcFB3<1Y4L57tZbPmb4le@-8CjO7<^WX+I)f$GN6(LH3YRw)yKqZ^pG>pS*F@_^|h{Q1hInHEkZpZ6#zOAeyY?A2|oCaoC z*O!$rNVUKexpd=T6a~v^$6KA)2E@T)SovpQbuBJ~oN@thV!YF1Sd$TnR+z+K+quY( zmO!(&z;2Vp+ALb5`DLGmnPe?KnO_o_)Qz!Z#~n}-OC>!2JBh=eg}(S4^hgvw^9*>o zVddYs@UT-N8x(R=62JK{d3Zy0XL%g|qezC0deeE75|jGHq;$%pY)h9;0m_R>`E&v0 i6*5F|%zXrvlKdV`7c!uSX>LXWjZvL+5sjsB@c#$9RMp)8 diff --git a/target/classes/com/release11/klaus/service/KlausServiceImpl.class b/target/classes/com/release11/klaus/service/KlausServiceImpl.class index 73661472f1995947185627a914fb3f167df73f7c..48fcf23ee1956b93853999c857676250af221978 100644 GIT binary patch delta 1656 zcmZWo>sM4&6#tz&k2{Y8GY%RI3XX!n43EK_BnB`8D-qBs5F{cS^fK}qh#|7)_~>0) zc6!;vq=%W6$(w;9Gt0CueXZ51Rp0sx`ckg;xx<3eb=SK4oW0N4`?r6;eJ*>C7TB&_ zot*~|#1EskBP?zOM+S!*nGA;B{s@DszJD;{kM(v2y8ZS2k%%@};R3@d4lA-4Rut5F z>$}6lVSjHp8u2#{4R%E%6?UwKN5vYBwa8&`UYml!*cI*Um)HMy`B>bcE~B1+9?9X5nuknV1d9`uU!>H%kzqaS6&O)NaDskmQkwiL0L=(Civ z2gC`BH*E-wR_w<^Djw!|1dlT0h!IPc_{&mZ8NlNbVO#{Qk-URwRB?!iUs7gAN4K_T z$c88Iq>86Fp2jock~PGh8_%$!>mXA$eYJ6q_|k>m<{8YP%$Y5 zpAvthUM!!X=Gks$!7Rhd1}zo~M>G%f>^LQud!+mhB9+}JXUnr0dC$=eCH^0P zxmb>M^q%riO!Xze8oo2Pn%u_t6q=7CPa<_2r*O}C+?PNH9WoJ_ZqpR@>0G)^=dRsTexnXPkH!WlB&v## zPS8ClK>_@zASJhwmUY;GT?pt6ZA#)=Y^W{1$avc#LZ+9&}x8^NUZ`=E8j#MB_vpv6s%7{3pGic zC3~L3K&xwT4nxG%@E9JP#$&oSH1zzB3FKg`(G$@eyZ8(ak0X7wiM&kjC|M+p82yxd3O>VGveNrGS=o68l^&)2wEj!07BC0^ delta 1757 zcmaJ=>sM4&6#tz&mpPZYM+S$7iipEYV1}1v_yQ&E0SZc*5Si%!*9jPBkQu0a;iK$f zYIG{o9%k={6^IH0rc(C6>}8+&*6M42K%Z*0&kPG|u~zG@nSIVa`|SPOzx_MM3MYyj z*Z&^93}6|48FU-O&{&c89vGZeOH56mnjWRg8s7F zV8rrU-3+|f7wEAH*KcP?FRU%9n-;R%L>=lm)(NafgZzVKvZehyQ)GFP$=A1ZSgn!e za-l87Y*b`!5ZH+O<%C`_!+}OLaXcW{3fgHCNB%5eK zD@U7v1p-k<&NTU(mLZ+?J$8;q7%@I>_vAX@M~6Ts0u1)b_F#Kt1%s`yi0ZZ=C=f!I zJZ0bC(k&2%hd~efdMyJz4AuWfYj`@XaVG1naMg2$TRJl^5*bMBIO}t$1V`n z48Q#dIyjz_{YIL3497X17wE?ea?ohdUt}mG0#f@gr4E%O{>kKavy*))Z<>c>p1F#3 z$}9FV=@kV-XN8L;U2@=aT;{kUkcg}D#*AyTzaW~}R_3(hngd_qYmRROzQx4QM3TBSXGq&U~7|&kR|#%%Z03b)isaPZzRDzDK|yVMB&e zF}*66dMz>QL^4@Boxg;aq2UDWwv*M#rh6}fWsZUa>pbUSmP9dA!yuh#c!mCxC?hZr zCbE!5Pw^z}Jn@@VIE7bfOG)q=UZ?bG^#)GURg=CqafU9xMczb>0zgNgptlL34JRa< znbJ2)LlkpKQ|FQ0Jc9hDQFuYFG7TfRBZ}o3t|D`Q?#0o#VwH1|N}c5(pPqbf3{g6r z1Eo`dN+$uS;t4EP{GC{mcL~6Ic%Q-*34Om(z64s-oWn}jYH#KU?v7%uj_IV_r(u~s zN56D*rxE`d z1{CoW*G)AQVSN>9#+n$8i_$yq3A#b+@DQgA2EPY$D=tkRm(GmK|F-V4a~6kmXO zONvUsAQ37Fy5pf!MVv9Qt8*uP$&_lc{ao58hk*+SPy*F{b}SLevdJYzaC8VORS_1O wTf9gL5qgn)8iq-T@wXEtJ4!zndB-Sv9A6TM>-Y{g@ICn*qsnw)4MWtS#M7(Tlp{pu*zf`R?711ZiB1B7x&=hy#L%8x4+?9e5 z7b1utzK1U%MI04eoSDNn|IFdPw?Ay_{p;}wSfSCinv!$EpmQ4d@nv*!-uC05cP(|9 zkXRV?n*NnvZuwDIKI^nEqHwkMYB)ya1p`x0)D{!cLPA#XiV0)F9ThcG!ZU?NDZ%}5 zvk%N4-}cSvo42m6nJj6|lhT^OB}<7BsyG~wV_E481Ii{@V_lug0vl{*^e7w-5>p;SCOd1E#hxOaK4? delta 255 zcmYj~%Su9F6otS2m$!2~1sPETIUo%rb6QYYTG~Zx)WAmw9TbG~CcT7DU^EjUIt|2e z^By652MKf8ARMf{KK9z1_3gj<-skjV2prJpdu>Z4I}f*=$JYJb;MwXn7`wndz2I2V z&EZZ&!iWfr>q11v=#m#~86&bcyAk1>a&K&l^K&k|Q|$eI_4U5Yp5~ey(u4%;v!dcv zIc%sTWRoLGB9(E>iM&j6F|7QDrwY#`ANNB#!TN+ERV`wsSExyjbLrxbF1eC>7+I3k G - redis-server + localhost + 6379 logstash - {"dateTimeStamp" : "%d{yyyy-MM-dd}T%d{HH:mm:ss}", "businessKeys":["INTERFACE_NAME:%X{INTERFACE_NAME}", "CLIENT_UUID:%X{CLIENT_UUID}", "MESSAGE_ID:%X{MESSAGE_ID}"],"thread":"%t","level":"%-5level", "message":"%msg"}%n + {"dateTimeStamp" : "%d{yyyy-MM-dd}T%d{HH:mm:ss}", "eventId":"%X{eventId}", "interfaceName":"%X{interfaceName}", "clientUUID":"%X{clientUUID}", "messageId":"%X{messageId}", "thread":"%t","level":"%-5level", "message":"%msg"}%n diff --git a/target/classes/static/css/styles.css b/target/classes/static/css/styles.css index 12825a8..f953669 100644 --- a/target/classes/static/css/styles.css +++ b/target/classes/static/css/styles.css @@ -46,6 +46,10 @@ button:focus { } +tr[name="tr-button"]:hover{ +background-color: #ddd; +cursor: pointer; +} #pagination-wrapper button { background: none; @@ -80,3 +84,28 @@ button[name="removeHeader"] { transition: background-color 0.3s, color 0.3s; } + + +.btn-sort { + border: 0; + padding: 0 20px; + text-align: center; + color: #fff; + text-shadow: 1px 1px 1px #000; + border-radius: 10px; + background-color: rgb(0, 102, 255); + background-image: linear-gradient(to top left, + rgba(0, 0, 0, .2), + rgba(0, 0, 0, .2) 30%, + rgba(0, 0, 0, 0)); +} + +.btn-sort:hover { + background-color: rgb(153, 194, 255); + cursor: pointer; +} + +.active { + background-color: rgb(153, 194, 255); + } + diff --git a/target/classes/static/img/icons8-down-arrow-40.png b/target/classes/static/img/icons8-down-arrow-40.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9c67b13b3f31cc0f02dfb4083e3ce928ae30e7 GIT binary patch literal 392 zcmV;30eAk1P)1HXgdq=O)Iuug&w zBEdlyq2MHIA$4%6fq))T7pDaT(jgg~HV{xlvN#F|{ERe#qk%v&(iF}J5crPleMFz8 maK@`O{Cch7*Z1Bf~IAMXM+v5FrSHlul=4Nfc5Ta33#aKIrY-HvF%^jcpez zHH`WbHKSTzR#s*)8I6b_h$UkcMS#`M7K6dCqRM2IOeSH#I~Wmp{&>%kx)Zs+?T0TPQWWurB@$xP%3eKfGMQW4t|}uU z3S!P@!5D^yhU3#yQy15v>$_Q&Rd%pfIKUumveoHy8tzO4kl+#! z2~SLM9LHltkpLkeNkXO97pbjQi&?MNEjqwxU@RF5ht4Zl37AdhJv6OCe&MUZx# zJGLcsxAHc<-s@CrnI4D3UTwG8at@CHV+05R_=iX0!SO)LT#ITM=0lg;Rk8q@3Pn#YOYo%W<3%42Ev5 zgP)#ZSyovNnghX;KzWA$^iQTzGkK#Z005F8pS9VotFuOo0es$}h$2Y4*kgr2XSE6h z*1XDGtkr7s#>_Ssf+t5tMk6Es0G@pWLX_l7D=F_n?O?BTnoZ_CZnxXCu)MkYXMfT> zdiubn7l1_XYc-k}#!JUYlBDKEspVdB|JQ$0sOez;<7%2ZPf--VWB>w~NvBO9hx4+isped@MX2Zj!S=;2~lsq)#{~X}&k-3y+W@cb|I(mB= zRBWM8kEe?ybgD01Yh9LHdngo|lzH)syMlE(EmTyLTUH~f8vw6((6B5^C=ZyJbn z^PZ3(e(C?Hfd>GnWxu10VzP!(Y4*`1xyiNGZ7DM7@2HU1I~e5!{!sR|005}Dy|>n8 zbDkGP0mq{8lYqc!vs$;8IUV|iH%cZ`5DJB&sbq>5C0PW(K#(L^Y|t|$mXcLPMMaCM z;P(d-k#OWfcgN=4xpoQwARG>92}Hiz-Ld%)%d*6+@J7T7LQ_>`#U0C@UateU+hty^ z= 0; i--) { + document.querySelector('#btn-sort-' + i).addEventListener('click', function() { + addButtonListeners(i) + }) +} + +function addButtonListeners(i) { + var buttons = document.querySelectorAll('.btn-sort'); + for (var j = buttons.length - 1; j >= 0; j--) { + buttons[j].classList.remove('active'); + } + document.querySelector('#btn-sort-' + i).classList.add('active'); + buildTable(); +} + + +function pagination(querySet, page, rows) { + + var trimStart = (page - 1) * rows + var trimEnd = trimStart + rows + var trimmedData = querySet.slice(trimStart, trimEnd) + var pages = Math.ceil(querySet.length / rows); + if (pages === 0) { + pages = 1 + } + return { + 'querySet': trimmedData, + 'pages': pages, + } +} + + +function pageButtons(pages) { + var wrapper = document.getElementById('pagination-wrapper'); + + wrapper.innerHTML = ``; + var maxLeft = (state.page - Math.floor(state.window / 2)) + var maxRight = (state.page + Math.ceil(state.window / 2)) + if (maxLeft < 1) { + maxLeft = 1 + maxRight = state.window + } + + if (maxRight > pages) { + maxLeft = pages - (state.window - 1) + + if (maxLeft < 1) { + maxLeft = 1 + } + maxRight = pages + } + + for (var page = maxLeft; page <= maxRight; page++) { + if (page === state.page) { + wrapper.innerHTML += `` + } else { + wrapper.innerHTML += `` + } + } + if (state.page != 1) { + wrapper.innerHTML = `` + wrapper.innerHTML + } + if (state.page != pages) { + wrapper.innerHTML += `` + } + $('.page').on('click', function() { + $('#table-body').empty() + + state.page = Number($(this).val()) + + buildPage() + }) + +} + +function showBody(elt){ + $("#" + elt.id + "-body").toggle(); +} + +function showTable() { + var table = $('#table-body') + table.empty(); + var color; + for (var i = 1; i <= myList.length; i++) { + var j = i + (state.page - 1) * 10; + i % 2 === 0 ? color = "#b3ffff" : color="#e6ffff"; + var row = ` + ` + j + ` + ${myList[i-1].messageId} + ${myList[i-1].dateTimeStamp} + ${myList[i-1].interfaceName} + + + "${myList[i-1].message}" + ` + table.append(row) + } + for (var i = myList.length + 1; i <= state.rows; i++) { + i % 2 === 0 ? color = "#b3ffff" : color="#e6ffff"; + var j = i + (state.page - 1) * 10; + var row = ` + ` + j + ` + + + + ` + table.append(row) + } + + pageButtons(data.pages) +} + + +function sortTable() { + var sortBy = document.querySelector('.active').textContent + switch (sortBy) { + case "MessageId": + if (previousSort === "MessageId") { + state.querySet.sort((a, b) => (a.messageId > b.messageId) ? -1 : ((b.messageId > a.messageId) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.messageId > b.messageId) ? 1 : ((b.messageId > a.messageId) ? -1 : 0)); + } + break; + case "TimeStamp": + if (previousSort === "TimeStamp") { + state.querySet.sort((a, b) => (a.dateTimeStamp > b.dateTimeStamp) ? -1 : ((b.dateTimeStamp > a.dateTimeStamp) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.dateTimeStamp > b.dateTimeStamp) ? 1 : ((b.dateTimeStamp > a.dateTimeStamp) ? -1 : 0)); + } + break; + case "Action": + if (previousSort === "Action") { + state.querySet.sort((a, b) => (a.interfaceName > b.interfaceName) ? -1 : ((b.interfaceName > a.interfaceName) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.interfaceName > b.interfaceName) ? 1 : ((b.interfaceName > a.interfaceName) ? -1 : 0)); + } + break; + } + if (previousSort === sortBy) { + previousSort = "" + } else previousSort = sortBy; +} + +function prepareTable() { + data = pagination(state.querySet, state.page, state.rows) + myList = data.querySet +} + +function buildTable() { + sortTable(); + prepareTable(); + showTable(); +} + +function buildPage() { + prepareTable(); + showTable(); +} \ No newline at end of file diff --git a/target/classes/static/js/paggination.js b/target/classes/static/js/paggination.js index bc62f6d..39a249c 100644 --- a/target/classes/static/js/paggination.js +++ b/target/classes/static/js/paggination.js @@ -1,21 +1,47 @@ var state = { - 'querySet': [{"clientUUID":"436c4774-038f-4540-9c18-2691ca9b53d4","mockedResponseId":1908998,"mediaType":"application/xml","messageBody":"body","httpHeaders":null,"httpStatus":200}], + 'querySet': [{ + "clientUUID": "436c4774-038f-4540-9c18-2691ca9b53d4", + "mockedResponseId": 1908998, + "mediaType": "application/xml", + "messageBody": "body", + "httpHeaders": null, + "httpStatus": 200 + }], 'page': 1, 'rows': 10, 'window': 5, } -state.querySet = mockedMessageDtoList; +var myList, data, previousSort; + + +state.querySet = listForPagination; buildTable(); +for (let i = 3; i >= 0; i--) { + document.querySelector('#btn-sort-' + i).addEventListener('click', function() { + addButtonListeners(i) + }) +} + +function addButtonListeners(i) { + var buttons = document.querySelectorAll('.btn-sort'); + for (var j = buttons.length - 1; j >= 0; j--) { + buttons[j].classList.remove('active'); + } + document.querySelector('#btn-sort-' + i).classList.add('active'); + buildTable(); +} + + function pagination(querySet, page, rows) { var trimStart = (page - 1) * rows var trimEnd = trimStart + rows var trimmedData = querySet.slice(trimStart, trimEnd) var pages = Math.ceil(querySet.length / rows); - + if(pages === 0){pages = 1} return { 'querySet': trimmedData, 'pages': pages, @@ -44,12 +70,11 @@ function pageButtons(pages) { } for (var page = maxLeft; page <= maxRight; page++) { - if(page === state.page){ + if (page === state.page) { wrapper.innerHTML += `` - } - else{ + } else { wrapper.innerHTML += `` - } + } } if (state.page != 1) { @@ -65,20 +90,18 @@ function pageButtons(pages) { state.page = Number($(this).val()) - buildTable() + buildPage() }) + } - -function buildTable() { +function showTable() { var table = $('#table-body') - - var data = pagination(state.querySet, state.page, state.rows) - var myList = data.querySet - for(var i = 1; i<=myList.length; i++){ - var j = i + (state.page-1) * 10; - if(i%2 === 0){ + table.empty(); + for (var i = 1; i <= myList.length; i++) { + var j = i + (state.page - 1) * 10; + if (i % 2 === 0) { var row = ` ` + j + ` ${myList[i-1].mockedResponseId} @@ -95,7 +118,7 @@ function buildTable() { ` - }else{ + } else { var row = ` ` + j + ` ${myList[i-1].mockedResponseId} @@ -112,10 +135,76 @@ function buildTable() { ` - } + } table.append(row) } + for (var i = myList.length + 1; i <= state.rows; i++) { + var j = i + (state.page - 1) * 10; + if (i % 2 === 0) { + var row = ` + ` + j + ` + + + + ` + } else { + var row = ` + ` + j + ` + + + + ` + } + table.append(row) + } pageButtons(data.pages) } + +function sortTable() { + var sortBy = document.querySelector('.active').textContent + switch (sortBy) { + case "MessageId": + if (previousSort === "MessageId") { + state.querySet.sort((a, b) => (a.mockedResponseId > b.mockedResponseId) ? -1 : ((b.mockedResponseId > a.mockedResponseId) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.mockedResponseId > b.mockedResponseId) ? 1 : ((b.mockedResponseId > a.mockedResponseId) ? -1 : 0)); + } + break; + case "Media Type": + if (previousSort === "Media Type") { + state.querySet.sort((a, b) => (a.mediaType > b.mediaType) ? -1 : ((b.mediaType > a.mediaType) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.mediaType > b.mediaType) ? 1 : ((b.mediaType > a.mediaType) ? -1 : 0)); + } + break; + case "Http Status": + if (previousSort === "Http Status") { + state.querySet.sort((a, b) => (a.httpStatus > b.httpStatus) ? -1 : ((b.httpStatus > a.httpStatus) ? 1 : 0)); + } else { + state.querySet.sort((a, b) => (a.httpStatus > b.httpStatus) ? 1 : ((b.httpStatus > a.httpStatus) ? -1 : 0)); + } + break; + } + if (previousSort === sortBy) { + previousSort = "" + } else previousSort = sortBy; + myList = state.querySet; +} + +function prepareTable() { + data = pagination(state.querySet, state.page, state.rows) + myList = data.querySet +} + +function buildTable() { + sortTable(); + prepareTable(); + showTable(); +} + +function buildPage(){ + prepareTable(); + showTable(); +} diff --git a/target/classes/templates/etrack.html b/target/classes/templates/etrack.html new file mode 100644 index 0000000..70d1504 --- /dev/null +++ b/target/classes/templates/etrack.html @@ -0,0 +1,68 @@ + + + + + + R11 Klaus + + + + + + + +
+
+
+
+
To see your activity history use the form below +
+ +

+ + mockedResponseId + error + +

+ + localDateTimeFrom + Error + +

+ + localDateTimeTo + Error + +
+

...

+
+ +
+
+
+
+ + + + + + + + + + + +

#

MessageId

TimeStamp

Action

+
+
+
+
+
+
+
+ + + + diff --git a/target/classes/templates/index.html b/target/classes/templates/index.html index dc2f4e7..b62720f 100644 --- a/target/classes/templates/index.html +++ b/target/classes/templates/index.html @@ -10,30 +10,31 @@
-
+
-
+

In order to set mockup response please fill the form below: -
- - +
+ + - + - + - + @@ -54,7 +55,7 @@ @@ -68,47 +69,65 @@ - + + -
Mocked response id: Id Error
Mocked response body: Body Error
Mocked response http code status: HttpStatus Error
-
+ +
-
+ +
-

Mock has been saved

+
+

+
-

+

+

Mock has been saved


-
- - - - - - - - - - - -
#MessageIdMedia TypeHttp Status
+ + + + + + + + + + + + + +
+

#

+
+

MessageId

+
+

Media Type

+
+

Http Status

+
-
-
@@ -118,45 +137,28 @@
-
In order to set or get responses through curl or http tools you can use urls below. -
When you set your response simply set headers and media type of your request that you expect to get in the - response from the next step. -
http://localhost:8097/klaus/v1/delete/clientUUID should be here/{mockedResponseId} -
http://localhost:8097/klaus/v1/set/ clientUUID should be here/{mockedResponseId}?httpStatus={httpStatus} -
http://localhost:8097/klaus/v1/get/clientUUID should be here/{mockedResponseId} -
http://localhost:8097/klaus/v1/getAll/clientUUID should be here +
If you are keen to use the mocking service with bigger amount of messages or automate the process by inserting high amount of random messages please consider using the tools below: + +
http://[[${localhost}]]:8097/swagger-ui.html +
+
http://[[${localhost}]]:8097/klaus/v1/delete/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId} +
http://[[${localhost}]]:8097/klaus/v1/set/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}?httpStatus={httpStatus} +
http://[[${localhost}]]:8097/klaus/v1/get/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId} +
http://[[${localhost}]]:8097/klaus/v1/getAll/[[${mockedMessageDto.clientUUID}]] + +

- -
-
To see your activity history use the form below -
- -

- - mockedResponseId error -

- - localDateTimeFrom Error -

- - localDateTimeTo Error -
-

...

-
- -
-

+ \ No newline at end of file diff --git a/target/classes/templates/tools.html b/target/classes/templates/tools.html new file mode 100644 index 0000000..29ae2fc --- /dev/null +++ b/target/classes/templates/tools.html @@ -0,0 +1,128 @@ + + + + Blog - Release11 - nowoczesne technologie IT.2 + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+

Blog

  • Tytuł Artykul 4

    Tekst 100 znaków

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

  • Tytuł Artykul 3

    Tekst 100 znaków

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

  • Tytuł Artykul 2

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

  • Tytuł Artykul 1

    Tekst 100 znaków

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque

+ +
+
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java b/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java index c08984a..8c3d2f2 100644 --- a/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java +++ b/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java @@ -10,7 +10,7 @@ import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2020-09-11T10:05:20+0200", + date = "2020-09-21T16:25:27+0200", comments = "version: 1.3.1.Final, compiler: javac, environment: Java 14.0.1 (Oracle Corporation)" ) @Component diff --git a/target/test-classes/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.class b/target/test-classes/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.class index 32d6dae22021f086d5611e6511461a2c4590bd2e..e5039b50e92cc9b15b27f17b882cb4d65adbcd63 100644 GIT binary patch delta 342 zcmeyOKAWBE)W2Q(7#J9=7^Ek1nJ_v`p2#dRS&v(1ay^Uvp>zy vNIDszI)#DaEI{=laOa2tMHm>w@tX%SPMm1tm>7g5fEt(>B;mG5F)#oCnI|0% literal 5108 zcmcgw`F|8=9eyU+Fv~JP*m9IYA#4E?lI`SzTn&u9<|kaYq16>R_ob{_11dTdj1vuP<`H+Niv&kTkr=zpKRWD-sAgz-{<>$ zkC`hkKJgs@?f6#=Whj>sQBZ+p5-KOOGn$&y%rW)Q$b_D8B`mweFb#LFg!1Z|AsJB# zYrI7T*T|^{HD|nEn~FgeQdSfR7;tUF9E)P5gve;t(V|#QA^SyV4LclJj_a^i#ySP- zu|dMljFneyJ*R7q-q4^<=Cp#Nien5%?JhWmsXNZ?`iz7XJ$U>0x^FQU9ZN@QmJW$qZBvjCS6Y=y z5B458(ACp>GTqhR8^v}WXPB;Tk7^k`t>tyGdZ&U{iPf?G-hqLxTYFEY_D4}e*czJ} zn_{R%os6V{o1seBTI#ZSE34r!UNDpF^ z4UQUcwLDFd3XHK-myT<`VhcJI?8U1kC?gB3awPOrp9opgr|-3jkD^OL#kii!SptC` z1^dxUo8-w|ZH&luhiUb{o^dO=kxCypB#uZaxJ?{Uk<-uUxhVQLm)8ta%%v3^5_8Mk zaa-52V(2vrj$nYxJ(ftg>6JOsu^dN1*FUD1S5Yr zsdWN($hcF%>u^#+tx)GG_ezMLwGCGv(sBj8%klAN&$&w&KJbgd?|o>}$7wvpHD8HV3ZvyjWx zRb_Gpqm78bomZn}U6n6*juokFX9LH`4Q+5{O7A2Qaz;jT4O*QH5L2GRbX(b(&Jq5r zs}grPNEYk16X+mD7$Dq&)7e;GUz4a}PRTm=WHm=nB%>e;dfakBeb3+$TEd17tQxX& zPfl~3BFhJ4kTE76|$T`a+mG?gKE#0XceE47l=+`DLL zX((Sp0Ri6jB?6Y1Q!HD_^p}|=qXG-Y2CRae(GM7c={x#vNMV!{ly0{Pb)%mDp0=-@Zh88d_a}=VJIh{vhLz3jTyYGYoiW6-QnMQ~|u3 zGZzU8?p!leDYhyp)6{LRgwYwxl<=FKjK4|PvBVOkK$Yf)hz*y=m4V?%eAU2kMZ9vLzxF)h@#`<)hH@NZzbbyy ze1Av0+V5Y)u8XLj#h$uZ+!Eh6i|+V=SsaYtK8yZY98T|g9D~VO9B+@rPqkNwr;U+# z?JP!)36;w|mAk1fumMqAkImSKYTUp#=1thgryktM7qTsU@!E<(;xmkGxPxB)*v4;<|hND+Sk$!r{ncgkUpH;yk`dfKE~BAtH347 z5RmyhpJ4AYM*#F}XvJMWk96pZ#roo^Ca$k*-B|2$uJ z9v|WjK5^^`JOqOBxiX?Ca1iuL^8*V|M~srR$j#Wnww7G%Mm-L)P4k{2!$JAF@~G z*=Rl6D8$^4=I4IQv8TCr4a#1`!!pi!fA{^H6e(@Q2%h2cGW=xTv{(52Q~m@6o+U+o agWutKDhb57u7%fpfyVwT{*HfQ<9`9_kK6zN