fix for history and allMessages table

This commit is contained in:
Szakalakamaka
2020-09-09 11:04:58 +02:00
parent 87eb042008
commit 34953ed003
44 changed files with 805 additions and 380 deletions

20
.idea/compiler.xml generated
View File

@@ -3,10 +3,26 @@
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<profile name="Annotation profile for Klaus" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false">
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.3.1.Final/mapstruct-processor-1.3.1.Final.jar" />
<entry name="$MAVEN_REPOSITORY$/com/jolira/hickory/1.0.0/hickory-1.0.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.3.1.Final/mapstruct-1.3.1.Final.jar" />
<entry name="$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12.jar" />
<entry name="$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/19.0/guava-19.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/puppycrawl/tools/checkstyle/8.14/checkstyle-8.14.jar" />
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
<entry name="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-container-default/1.6/plexus-container-default-1.6.jar" />
<entry name="$MAVEN_REPOSITORY$/org/springframework/spring-test/4.0.3.RELEASE/spring-test-4.0.3.RELEASE.jar" />
<entry name="$MAVEN_REPOSITORY$/org/springframework/spring-beans/4.0.3.RELEASE/spring-beans-4.0.3.RELEASE.jar" />
<entry name="$MAVEN_REPOSITORY$/org/springframework/spring-context/4.0.3.RELEASE/spring-context-4.0.3.RELEASE.jar" />
<entry name="$MAVEN_REPOSITORY$/joda-time/joda-time/2.9/joda-time-2.9.jar" />
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.12/lombok-1.18.12.jar" />
</processorPath>
<module name="Klaus" />
</profile>
</annotationProcessing>
@@ -16,7 +32,7 @@
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="Klaus" options="-parameters" />
<module name="Klaus" options="-parameters -Amapstruct.defaultComponentModel=spring" />
</option>
</component>
</project>

View File

@@ -2,6 +2,7 @@
<dictionary name="lomba">
<words>
<w>logstashes</w>
<w>paggination</w>
<w>workdir</w>
</words>
</dictionary>

View File

@@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.springframework.data:spring-data-redis:2.3.1.RELEASE">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.3.1.RELEASE/spring-data-redis-2.3.1.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.3.1.RELEASE/spring-data-redis-2.3.1.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.3.1.RELEASE/spring-data-redis-2.3.1.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -1,4 +0,0 @@
<changelist name="Uncommitted_changes_before_Update_at_25_08_2020_11_25_[Default_Changelist]" date="1598347544297" recycled="true" deleted="true">
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_25_08_2020_11_25_[Default_Changelist]/shelved.patch" />
<option name="DESCRIPTION" value="Uncommitted changes before Update at 25.08.2020 11:25 [Default Changelist]" />
</changelist>

289
.idea/workspace.xml generated
View File

@@ -19,12 +19,40 @@
<select />
</component>
<component name="ChangeListManager">
<list default="true" id="458cde88-df3d-44bc-9d57-a33823e2f1a6" name="Default Changelist" comment="" />
<list default="true" id="458cde88-df3d-44bc-9d57-a33823e2f1a6" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_5.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_3_1_RELEASE.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/static/js/paggination.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Klaus.iml" beforeDir="false" afterPath="$PROJECT_DIR$/Klaus.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausMvcController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausMvcController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/avataaars.svg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/favicon.ico" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/portfolio/cabin.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/portfolio/cake.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/portfolio/circus.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/portfolio/game.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/portfolio/safe.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/img/portfolio/submarine.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/mail/contact_me.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/mail/contact_me.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/assets/mail/jqBootstrapValidation.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/css/styles.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/index.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/startbootstrap-freelancer-gh-pages/js/scripts.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/META-INF/Klaus.kotlin_module" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/release11/klaus/controller/KlausMvcController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/release11/klaus/controller/KlausMvcController.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" />
</component>
<component name="CodeStyleSettingsInfer">
<option name="done" value="true" />
</component>
@@ -43,24 +71,36 @@
<option name="version" value="1" />
</component>
<component name="ProjectId" id="1gr9z2Qy2nJ7GZxG1xBZ0X6W3o2" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectViewState">
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/resources/static/img" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\css" />
</key>
<key name="CreateClassDialog.RecentsKey">
<recent name="com.release11.klaus.repository" />
<recent name="com.release11.klaus.service" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\img" />
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\images" />
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\assets\img" />
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static" />
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\css" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\js" />
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static" />
<recent name="D:\git\Szakalakamaka\Klaus\src\main\resources\static\assets\img" />
</key>
</component>
<component name="RunManager" selected="Application.KlausApplication">
<configuration name="KlausApplication" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
@@ -76,34 +116,17 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="KlausControllerTest.getMockedResponse" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration name="KlausApplicationTests.contextLoads" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="Klaus" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.release11.klaus.controller.*" />
<option name="PATTERN" value="com.release11.klaus.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="com.release11.klaus.controller" />
<option name="MAIN_CLASS_NAME" value="com.release11.klaus.controller.KlausControllerTest" />
<option name="METHOD_NAME" value="getMockedResponse" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
<option name="BSP.BeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration name="KlausMvcControllerTest.showHome" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="Klaus" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.release11.klaus.controller.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="com.release11.klaus.controller" />
<option name="MAIN_CLASS_NAME" value="com.release11.klaus.controller.KlausMvcControllerTest" />
<option name="METHOD_NAME" value="showHome" />
<option name="PACKAGE_NAME" value="com.release11.klaus" />
<option name="MAIN_CLASS_NAME" value="com.release11.klaus.KlausApplicationTests" />
<option name="METHOD_NAME" value="contextLoads" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
@@ -144,6 +167,23 @@
<option name="BSP.BeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration name="RedisConfigTest.jedisPool" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="Klaus" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.release11.klaus.config.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="com.release11.klaus.config" />
<option name="MAIN_CLASS_NAME" value="com.release11.klaus.config.RedisConfigTest" />
<option name="METHOD_NAME" value="jedisPool" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
<option name="BSP.BeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<option name="TEST_OBJECT" value="class" />
<method v="2">
@@ -155,9 +195,9 @@
<list>
<item itemvalue="Application.KlausApplication" />
<item itemvalue="JUnit.MockedResponseRedisRepositoryTest.setMockedResponse" />
<item itemvalue="JUnit.RedisConfigTest.jedisPool" />
<item itemvalue="JUnit.KlausApplicationTests.contextLoads" />
<item itemvalue="JUnit.MockedResponseRedisRepositoryTest.getMockedResponse" />
<item itemvalue="JUnit.KlausMvcControllerTest.showHome" />
<item itemvalue="JUnit.KlausControllerTest.getMockedResponse" />
</list>
</recent_temporary>
</component>
@@ -263,7 +303,105 @@
<option name="project" value="LOCAL" />
<updated>1599228713444</updated>
</task>
<option name="localTasksCounter" value="14" />
<task id="LOCAL-00014" summary="adding missing classes">
<created>1599229160686</created>
<option name="number" value="00014" />
<option name="presentableId" value="LOCAL-00014" />
<option name="project" value="LOCAL" />
<updated>1599229160686</updated>
</task>
<task id="LOCAL-00015" summary="- changing design of index.html&#10;- dynamic localhost value&#10;- adding possibility to access the page with clientUUID value in path variable to be able to continue your work faster">
<created>1599468175269</created>
<option name="number" value="00015" />
<option name="presentableId" value="LOCAL-00015" />
<option name="project" value="LOCAL" />
<updated>1599468175269</updated>
</task>
<task id="LOCAL-00016" summary="- changing log appender's DB">
<created>1599469144625</created>
<option name="number" value="00016" />
<option name="presentableId" value="LOCAL-00016" />
<option name="project" value="LOCAL" />
<updated>1599469144625</updated>
</task>
<task id="LOCAL-00017" summary="Refactoring:&#10;- add new headers form&#10;- global Model Attributes">
<created>1599483619095</created>
<option name="number" value="00017" />
<option name="presentableId" value="LOCAL-00017" />
<option name="project" value="LOCAL" />
<updated>1599483619095</updated>
</task>
<task id="LOCAL-00018" summary="adding remove button for httpHeaders form">
<created>1599493271888</created>
<option name="number" value="00018" />
<option name="presentableId" value="LOCAL-00018" />
<option name="project" value="LOCAL" />
<updated>1599493271888</updated>
</task>
<task id="LOCAL-00019" summary="fix for null headers">
<created>1599550125788</created>
<option name="number" value="00019" />
<option name="presentableId" value="LOCAL-00019" />
<option name="project" value="LOCAL" />
<updated>1599550125788</updated>
</task>
<task id="LOCAL-00020" summary="Refactoring:&#10;- splitting and renaming MockedResponseDto.class into MockedMessageDto and MockedMessage&#10;- cleaning pom&#10;- adding mapStruct&#10;- adding new operation; getAllMockedMessages">
<created>1599554899548</created>
<option name="number" value="00020" />
<option name="presentableId" value="LOCAL-00020" />
<option name="project" value="LOCAL" />
<updated>1599554899548</updated>
</task>
<task id="LOCAL-00021" summary="Refactoring:&#10;- splitting and renaming MockedResponseDto.class into MockedMessageDto and MockedMessage&#10;- cleaning pom&#10;- adding mapStruct&#10;- adding new operation; getAllMockedMessages">
<created>1599555054656</created>
<option name="number" value="00021" />
<option name="presentableId" value="LOCAL-00021" />
<option name="project" value="LOCAL" />
<updated>1599555054656</updated>
</task>
<task id="LOCAL-00022" summary="Refactoring:&#10;- splitting and renaming MockedResponseDto.class into MockedMessageDto and MockedMessage&#10;- cleaning pom&#10;- adding mapStruct&#10;- adding new operation; getAllMockedMessages">
<created>1599555071489</created>
<option name="number" value="00022" />
<option name="presentableId" value="LOCAL-00022" />
<option name="project" value="LOCAL" />
<updated>1599555071489</updated>
</task>
<task id="LOCAL-00023" summary="- default method for MockedMessageMapper interface&#10;- changing requests from MockedMessage to MockedMessageDto">
<created>1599562380701</created>
<option name="number" value="00023" />
<option name="presentableId" value="LOCAL-00023" />
<option name="project" value="LOCAL" />
<updated>1599562380701</updated>
</task>
<task id="LOCAL-00024" summary="- remove logs">
<created>1599562495034</created>
<option name="number" value="00024" />
<option name="presentableId" value="LOCAL-00024" />
<option name="project" value="LOCAL" />
<updated>1599562495034</updated>
</task>
<task id="LOCAL-00025" summary="pageable list for all messages">
<created>1599579109981</created>
<option name="number" value="00025" />
<option name="presentableId" value="LOCAL-00025" />
<option name="project" value="LOCAL" />
<updated>1599579109981</updated>
</task>
<task id="LOCAL-00026" summary="implementing buttons for all messages table">
<created>1599636401406</created>
<option name="number" value="00026" />
<option name="presentableId" value="LOCAL-00026" />
<option name="project" value="LOCAL" />
<updated>1599636401406</updated>
</task>
<task id="LOCAL-00027" summary="all messages table visible for all controllers">
<created>1599641271632</created>
<option name="number" value="00027" />
<option name="presentableId" value="LOCAL-00027" />
<option name="project" value="LOCAL" />
<updated>1599641271632</updated>
</task>
<option name="localTasksCounter" value="28" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@@ -279,6 +417,7 @@
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="renaming package name" />
<MESSAGE value="redis spring repo&#10;data indexes for redis repo" />
<MESSAGE value="adding processes for history search&#10;adding custom redis appender" />
@@ -291,77 +430,107 @@
<MESSAGE value="MvcExceptionHandler" />
<MESSAGE value="Etrack works!!!" />
<MESSAGE value="iml fix" />
<option name="LAST_COMMIT_MESSAGE" value="iml fix" />
<MESSAGE value="adding missing classes" />
<MESSAGE value="- changing design of index.html&#10;- dynamic localhost value&#10;- adding possibility to access the page with clientUUID value in path variable to be able to continue your work faster" />
<MESSAGE value="- changing log appender's DB" />
<MESSAGE value="Refactoring:&#10;- add new headers form&#10;- global Model Attributes" />
<MESSAGE value="adding remove button for httpHeaders form" />
<MESSAGE value="fix for null headers" />
<MESSAGE value="Refactoring:&#10;- splitting and renaming MockedResponseDto.class into MockedMessageDto and MockedMessage&#10;- cleaning pom&#10;- adding mapStruct&#10;- adding new operation; getAllMockedMessages" />
<MESSAGE value="- default method for MockedMessageMapper interface&#10;- changing requests from MockedMessage to MockedMessageDto" />
<MESSAGE value="- remove logs" />
<MESSAGE value="pageable list for all messages" />
<MESSAGE value="implementing buttons for all messages table" />
<MESSAGE value="all messages table visible for all controllers" />
<option name="LAST_COMMIT_MESSAGE" value="all messages table visible for all controllers" />
</component>
<component name="WindowStateProjectService">
<state x="574" y="128" key="#com.intellij.ide.util.MemberChooser" timestamp="1599035277816">
<state x="574" y="128" key="#com.intellij.ide.util.MemberChooser" timestamp="1599550232513">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="574" y="128" key="#com.intellij.ide.util.MemberChooser/0.0.1536.824@0.0.1536.824" timestamp="1599035277816" />
<state x="551" y="281" width="433" height="267" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes" timestamp="1598949032210">
<state x="574" y="128" key="#com.intellij.ide.util.MemberChooser/0.0.1536.824@0.0.1536.824" timestamp="1599550232513" />
<state x="432" y="337" key="#com.intellij.refactoring.move.MoveHandler.SelectRefactoringDialog" timestamp="1599492129736">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="551" y="281" width="433" height="267" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes/0.0.1536.824@0.0.1536.824" timestamp="1598949032210" />
<state x="178" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1599209436125">
<state x="432" y="337" key="#com.intellij.refactoring.move.MoveHandler.SelectRefactoringDialog/0.0.1536.824@0.0.1536.824" timestamp="1599492129736" />
<state x="551" y="281" width="433" height="267" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes" timestamp="1599555208141">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="178" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/0.0.1536.824@0.0.1536.824" timestamp="1599209436125" />
<state x="551" y="281" width="433" height="267" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes/0.0.1536.824@0.0.1536.824" timestamp="1599555208141" />
<state x="178" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1599551270234">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="178" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/0.0.1536.824@0.0.1536.824" timestamp="1599551270234" />
<state x="499" y="159" key="#com.intellij.refactoring.typeMigration.ui.FailedConversionsDialog" timestamp="1598966629552">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="499" y="159" key="#com.intellij.refactoring.typeMigration.ui.FailedConversionsDialog/0.0.1536.824@0.0.1536.824" timestamp="1598966629552" />
<state x="549" y="167" key="FileChooserDialogImpl" timestamp="1599137609663">
<state x="549" y="167" key="FileChooserDialogImpl" timestamp="1599229212212">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1599137609663" />
<state width="1493" height="180" key="GridCell.Tab.0.bottom" timestamp="1599228632916">
<state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1599229212212" />
<state width="1493" height="137" key="GridCell.Tab.0.bottom" timestamp="1599641190011">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.0.center" timestamp="1599228632916">
<state width="1493" height="124" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599598129320" />
<state width="1877" height="221" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599577341126" />
<state width="1493" height="137" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1599641190011" />
<state width="1493" height="137" key="GridCell.Tab.0.center" timestamp="1599641190010">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.0.left" timestamp="1599228632916">
<state width="1493" height="124" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599598129320" />
<state width="1877" height="221" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599577341126" />
<state width="1493" height="137" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1599641190010" />
<state width="1493" height="137" key="GridCell.Tab.0.left" timestamp="1599641190010">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.0.right" timestamp="1599228632916">
<state width="1493" height="124" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599598129320" />
<state width="1877" height="221" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599577341125" />
<state width="1493" height="137" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1599641190010" />
<state width="1493" height="137" key="GridCell.Tab.0.right" timestamp="1599641190010">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.1.bottom" timestamp="1599228632916">
<state width="1493" height="124" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599598129320" />
<state width="1877" height="221" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599577341126" />
<state width="1493" height="137" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1599641190010" />
<state width="1493" height="180" key="GridCell.Tab.1.bottom" timestamp="1599480862727">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.1.bottom/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.1.center" timestamp="1599228632916">
<state width="1493" height="180" key="GridCell.Tab.1.bottom/0.0.1536.824@0.0.1536.824" timestamp="1599480862727" />
<state width="1493" height="180" key="GridCell.Tab.1.center" timestamp="1599480862727">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.1.center/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.1.left" timestamp="1599228632916">
<state width="1493" height="180" key="GridCell.Tab.1.center/0.0.1536.824@0.0.1536.824" timestamp="1599480862727" />
<state width="1493" height="180" key="GridCell.Tab.1.left" timestamp="1599480862727">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.1.left/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.1.right" timestamp="1599228632916">
<state width="1493" height="180" key="GridCell.Tab.1.left/0.0.1536.824@0.0.1536.824" timestamp="1599480862727" />
<state width="1493" height="180" key="GridCell.Tab.1.right" timestamp="1599480862727">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state width="1493" height="180" key="GridCell.Tab.1.right/0.0.1536.824@0.0.1536.824" timestamp="1599228632916" />
<state width="1493" height="180" key="GridCell.Tab.1.right/0.0.1536.824@0.0.1536.824" timestamp="1599480862727" />
<state x="299" y="67" key="Maven.ArtifactSearchDialog" timestamp="1598862685882">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="299" y="67" key="Maven.ArtifactSearchDialog/0.0.1536.824@0.0.1536.824" timestamp="1598862685882" />
<state x="361" y="145" key="Vcs.Push.Dialog.v2" timestamp="1599228717329">
<state x="361" y="145" key="Vcs.Push.Dialog.v2" timestamp="1599641605158">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824@0.0.1536.824" timestamp="1599228717329" />
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599579111943" />
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824@0.0.1536.824" timestamp="1599641605158" />
<state x="478" y="145" width="579" height="592" key="find.popup" timestamp="1599562452922">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="478" y="145" width="579" height="592" key="find.popup/0.0.1536.824@0.0.1536.824" timestamp="1599562452922" />
<state x="209" y="33" key="new project wizard" timestamp="1598955672188">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="209" y="33" key="new project wizard/0.0.1536.824@0.0.1536.824" timestamp="1598955672188" />
<state x="425" y="187" key="run.anything.popup" timestamp="1599038237933">
<state x="425" y="187" key="run.anything.popup" timestamp="1599590801755">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="425" y="187" key="run.anything.popup/0.0.1536.824@0.0.1536.824" timestamp="1599038237933" />
<state x="425" y="187" key="run.anything.popup/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599590801755" />
<state x="425" y="187" key="run.anything.popup/0.0.1536.824@0.0.1536.824" timestamp="1599552366851" />
<state x="431" y="145" width="672" height="678" key="search.everywhere.popup" timestamp="1599210139274">
<screen x="0" y="0" width="1536" height="824" />
</state>

View File

@@ -7,6 +7,7 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
@@ -14,6 +15,8 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
@@ -26,6 +29,9 @@
<orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.0" level="project" />
@@ -37,11 +43,15 @@
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.3.1.Final" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.1.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.3.1.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.1.RELEASE" level="project" />
@@ -54,12 +64,14 @@
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.vintage:junit-vintage-engine:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.11" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.11" level="project" />
@@ -71,9 +83,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.7.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.7.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: io.projectreactor:reactor-test:3.3.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
@@ -82,6 +91,12 @@
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.50.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.50.Final" level="project" />
@@ -89,24 +104,11 @@
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.50.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.50.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.50.Final" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis-reactive:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" name="Maven: com.cwbase:logback-redis-appender:1.1.6" level="project" />
<orderEntry type="library" name="Maven: net.logstash.logback:logstash-logback-encoder:6.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.0" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:3.3.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.8.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:3.3.0" level="project" />
<orderEntry type="library" name="Maven: jakarta.persistence:jakarta.persistence-api:2.2.3" level="project" />
</component>
</module>

84
pom.xml
View File

@@ -16,6 +16,10 @@
<properties>
<java.version>14</java.version>
<jedis.version>3.3.0</jedis.version>
<logback-redis-appender.version>1.1.6</logback-redis-appender.version>
<assertj.version>3.16.1</assertj.version>
<mapstruct.version>1.3.1.Final</mapstruct.version>
</properties>
<dependencies>
@@ -27,6 +31,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
@@ -44,29 +52,19 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
</exclusions>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.16.1</version>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -77,45 +75,16 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
<dependency>
<groupId>com.cwbase</groupId>
<artifactId>logback-redis-appender</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.4</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.2.6.RELEASE</version>
<version>${logback-redis-appender.version}</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
<version>${jedis.version}</version>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>2.2.3</version>
</dependency>
</dependencies>
<build>
@@ -124,6 +93,27 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<compilerArg>-Amapstruct.defaultComponentModel=spring</compilerArg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>

View File

@@ -1,12 +1,14 @@
package com.release11.klaus.controller;
import com.release11.klaus.model.MockedMessageDto;
import com.release11.klaus.utilis.BusinessKey;
import com.release11.klaus.utilis.TrackingClient;
import com.release11.klaus.model.MockedResponseDto;
import com.release11.klaus.model.MockedMessage;
import com.release11.klaus.service.KlausService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -25,6 +28,15 @@ public class KlausController {
private final KlausService klausService;
@RequestMapping(value = "klaus/v1/getAll/{clientUUID}")
public ResponseEntity<String> getAllMockedResponses(@PathVariable UUID clientUUID){
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
BusinessKey.MESSAGE_ID, "all"));
List<MockedMessageDto> mockedMessages = klausService.getAllMockedResponses(clientUUID);
return new ResponseEntity<>(mockedMessages.toString(), HttpStatus.OK);
}
@RequestMapping(value = "klaus/v1/get/{clientUUID}/{mockedResponseId}")
public ResponseEntity getMockedResponse(@PathVariable UUID clientUUID,
@PathVariable int mockedResponseId){
@@ -44,10 +56,10 @@ public class KlausController {
BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId)));
MockedResponseDto mockedResponseDto = new MockedResponseDto(clientUUID, mockedResponseId,
MockedMessageDto mockedMessageDto = new MockedMessageDto(clientUUID, mockedResponseId,
requestEntity.getHeaders().getContentType().toString(), requestEntity.getBody(),
requestEntity.getHeaders().toSingleValueMap(), httpStatus);
return klausService.setMockedResponse(mockedResponseDto);
return klausService.setMockedResponse(mockedMessageDto);
}
}

View File

@@ -1,25 +1,25 @@
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;
import com.release11.klaus.utilis.TrackingClient;
import com.release11.klaus.model.MockedResponseDto;
import com.release11.klaus.service.KlausService;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.*;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
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.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.*;
@Slf4j
@Controller
@@ -28,66 +28,78 @@ import java.util.UUID;
public class KlausMvcController {
private final KlausService klausService;
@GetMapping("/login")
public String login() {
return "login";
}
@GetMapping("/home")
public String showHome(Model model, @RequestParam UUID clientUUID) {
model.addAttribute("mockedResponseDto", new MockedResponseDto(clientUUID, 1,
"application/xml", "body", new HashMap<>(), 200));
@GetMapping({"/home", "/home/{uuid}"})
public String showHome(final MockedMessageDto mockedMessageDto, Model model,
@RequestParam(required = false) UUID clientUUID,
@PathVariable(required = false) UUID uuid) {
if (uuid != null) clientUUID = uuid;
if (clientUUID != null) mockedMessageDto.setClientUUID(clientUUID);
model.addAttribute("mockedMessageDtoList", klausService.getAllMockedResponses(clientUUID));
return "index";
}
//TODO refactor
@PostMapping("/home")
public String showHomePost(@Valid MockedResponseDto mockRsp, BindingResult bindingResult, Model model,
@RequestParam(required = false) String[] header,
@RequestParam(required = false) String[] value) throws Exception {
if (bindingResult.hasErrors()) {
return "index";
}
@PostMapping("/home/{clientUUID}")
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(mockRsp.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockRsp.getMockedResponseId())));
log.info(mockRsp.toString());
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.valueOf(mockRsp.getMediaType()));
if (header!=null){
for (int i = 0; i < header.length; i++) {
httpHeaders.set(header[i], value[i]);
}}
MockedResponseDto mockedResponseDto = new MockedResponseDto(mockRsp.getClientUUID(), mockRsp.getMockedResponseId(),
mockRsp.getMediaType(), mockRsp.getMessageBody(), httpHeaders.toSingleValueMap(), mockRsp.getHttpStatus());
klausService.setMockedResponse(mockedResponseDto);
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
klausService.setMockedResponse(mockedMessageDto);
model.addAttribute("mockedMessageDtoList", klausService.getAllMockedResponses(mockedMessageDto.getClientUUID()));
model.addAttribute("mockSaved", "true");
return "index";
}
@GetMapping("/home/getMockedResponse")
@ResponseBody
public String showGetMockedResponse(MockedResponseDto mockedResponseDto) {
public String showGetMockedResponse(final MockedMessageDto mockedMessageDto) {
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(mockedResponseDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseDto.getMockedResponseId())));
return klausService.getMockedResponse(mockedResponseDto.getClientUUID(),
mockedResponseDto.getMockedResponseId()).toString();
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
return klausService.getMockedResponse(mockedMessageDto.getClientUUID(),
mockedMessageDto.getMockedResponseId()).toString();
}
private void setHeaders(MockedResponseDto mockedResponseDto, String[] header, String[] value){
@RequestMapping(value = "/home/{clientUUID}", params = {"addHeader"})
public String addRow(final MockedMessageDto mockedMessageDto, @RequestParam String headerKey,
@RequestParam String headerValue) {
mockedMessageDto.getHttpHeaders().put(headerKey, headerValue);
return "index";
}
@RequestMapping(value="/home/{clientUUID}", params={"removeHeader"})
public String removeHeader(final MockedMessageDto mockedMessageDto, final HttpServletRequest req) {
mockedMessageDto.getHttpHeaders().remove(req.getParameter("removeHeader"));
System.out.println(mockedMessageDto);
return "index";
}
@SneakyThrows
@ModelAttribute("localhost")
public String localhost() {
return InetAddress.getLocalHost().getHostName();
}
@ModelAttribute("clientUUID")
public UUID clientUUID(){
public UUID clientUUID() {
return UUID.randomUUID();
}
@ModelAttribute("mockedMessageDto")
public MockedMessageDto mockedMessageDto() {
return new MockedMessageDto(UUID.randomUUID(), 1,
"application/xml", "body", new LinkedHashMap<>(), 200);
}
@ModelAttribute("eventsDto")
public EventRequestDto eventsDto(){
public EventRequestDto eventsDto() {
return EventRequestDto.builder()
.localDateTimeFrom(LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
.localDateTimeTo(LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIDNIGHT))

View File

@@ -1,20 +1,12 @@
package com.release11.klaus.model;
import com.release11.klaus.utilis.BusinessKey;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.lang.Nullable;
import javax.persistence.Entity;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@Data
@Entity
@Builder
@ToString
@NoArgsConstructor

View File

@@ -63,7 +63,6 @@ public class EventRepositoryImpl implements EventRepository {
try {
events.add(objectMapper.readValue(eventString, Event.class));
} catch (JsonProcessingException e) {
System.out.println(e);
e.printStackTrace();
}
}

View File

@@ -1,13 +1,15 @@
package com.release11.klaus.repository;
import com.release11.klaus.model.MockedResponseDto;
import com.release11.klaus.model.MockedMessage;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.UUID;
@Repository
@Transactional
public interface MockedResponseRepository extends CrudRepository<MockedResponseDto, String>{
public interface MockedResponseRepository extends CrudRepository<MockedMessage, String> {
List<MockedMessage> findAllByClientUUID(UUID clientUUID);
}

View File

@@ -1,15 +1,16 @@
package com.release11.klaus.service;
import com.release11.klaus.model.MockedResponseDto;
import org.springframework.http.HttpStatus;
import org.springframework.http.RequestEntity;
import com.release11.klaus.model.MockedMessageDto;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service
public interface KlausService {
void deleteMockedResponse(UUID clientUUID, int mockedResponseId);
List<MockedMessageDto> getAllMockedResponses(UUID clientUUID);
ResponseEntity<String> getMockedResponse(UUID clientUUID, int mockedResponseId);
ResponseEntity<String> setMockedResponse(MockedResponseDto mockedResponseDto);
ResponseEntity<String> setMockedResponse(MockedMessageDto mockedMessageDto);
}

View File

@@ -1,6 +1,9 @@
package com.release11.klaus.service;
import com.release11.klaus.model.MockedResponseDto;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.release11.klaus.mappers.MockedMessageMapper;
import com.release11.klaus.model.MockedMessage;
import com.release11.klaus.model.MockedMessageDto;
import com.release11.klaus.repository.MockedResponseRepository;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -9,35 +12,48 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
@Slf4j
@Service
@AllArgsConstructor
public class KlausServiceImpl implements KlausService {
private final ObjectMapper objectMapper;
private final MockedMessageMapper mockedMessageMapper;
private final MockedResponseRepository mockedResponseRepository;
@Override
public void deleteMockedResponse(UUID clientUUID, int mockedResponseId) {
}
@Override
public List<MockedMessageDto> getAllMockedResponses(UUID clientUUID) {
return mockedResponseRepository.findAllByClientUUID(clientUUID).stream()
.map(mockedMessageMapper::mockedMessageToMockedMessageDto)
.collect(Collectors.toList());
}
@Override
public ResponseEntity<String> getMockedResponse(UUID clientUUID, int mockedResponseId) {
log.info("KlausServiceImpl, operation getMockedResponse, clientId {}, mockedResponseId {} ",
clientUUID, mockedResponseId);
String key = clientUUID.toString() + "_" + mockedResponseId;
Optional<MockedResponseDto> optMockedResponseDto = mockedResponseRepository.findById(key);
MockedResponseDto mockedResponseDto = optMockedResponseDto.get();
MockedMessage mockedMessage = mockedResponseRepository.findById(key).get();
HttpHeaders httpHeaders = new HttpHeaders();
mockedResponseDto.getHttpHeaders().forEach(httpHeaders::set);
return new ResponseEntity<>(mockedResponseDto.getMessageBody(), httpHeaders,
Objects.requireNonNull(HttpStatus.valueOf(mockedResponseDto.getHttpStatus())));
if(mockedMessage.getHttpHeaders() !=null)mockedMessage.getHttpHeaders().forEach(httpHeaders::set);
return new ResponseEntity<>(mockedMessage.getMessageBody(), httpHeaders,
Objects.requireNonNull(HttpStatus.valueOf(mockedMessage.getHttpStatus())));
}
@Override
public ResponseEntity<String> setMockedResponse(MockedResponseDto mockedResponseDto) {
mockedResponseRepository.save(mockedResponseDto);
log.info("KlausServiceImpl, operation setMockedResponse, mockedResponseDto {} ", mockedResponseDto.toString());
public ResponseEntity<String> setMockedResponse(MockedMessageDto mockedMessageDto) {
mockedResponseRepository.save(mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto));
log.info("KlausServiceImpl, operation setMockedResponse, mockedMessage {} ", mockedMessageDto.toString());
return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(),
HttpStatus.ACCEPTED);
}

View File

@@ -3,7 +3,7 @@
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!--https://github.com/kmtong/logback-redis-appender-->
<appender name="LOGSTASH" class="com.release11.klaus.utilis.RedisAppender">
<host>localhost</host>
<host>redis-image</host>
<port>6379</port>
<key>logstash</key>
<layout class="ch.qos.logback.classic.PatternLayout">

View File

@@ -1,3 +1,4 @@
.page-section{
padding: 2rem 0;
}
@@ -11,4 +12,56 @@
content: "";
display: table;
clear: both;
}
}
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
button:hover { font-weight: 600; }
button:hover i { margin-right: 20px; }
button:focus {
outline: none;
}
.pageable {
border: 1px solid rgba(0, 0, 0, .11);
;
padding: 10px;
}
.tr-pageable{
margin-left:1000px;
}
.controls-item {
display: inline-block;
}
.btn {
margin: 1px;
}
button[name="allMessagesClicked"] {
color: #00b3b3;
}
#pagination-wrapper button {
background: none;
border: 2px solid #00b3b3;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}
button[name="removeHeader"] {
position: absolute;
background: none;
border: none;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}

View File

@@ -2,51 +2,64 @@
<html lang="en" xmlns:th="http://thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/js/main.js">
document.getElementById('localDateTimeFrom').valueAsDate = new Date();
</script>
<link href="css/styles.css" rel="stylesheet" />
<title>R11 Klaus</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Lato:100,300,600" rel="stylesheet" type="text/css">
<link href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css">
<link href="/css/styles.css" rel="stylesheet"/>
</head>
<body>
<hr>
<div><br>In order to set mockup response. Please send the response, that you want to receive, on:
<br>http://localhost:8097/klaus/v1/set/ <a th:text="${mockedResponseDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}?httpStatus=200
<div><br>In order to set mockup response please fill the form below:
</div>
<section class="page-section" id="main-section">
<section class="page-section" id="main-section" >
<div class="container">
<div class="row">
<div class="column">
<br>You can also simply fill and submit the below form:
<form action="#" th:action="@{/home}" th:object="${mockedResponseDto}" method="post">
<div class="column" >
<br>You can also simply fill and submit the below form:
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<table>
<input type="text" th:field="*{clientUUID}" th:placeholder="*{clientUUID}" hidden/>
<tr>
<td>Mocked response id:</td>
<td><input type="text" th:field="*{mockedResponseId}"/></td>
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">Id Error</td>
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">Id
Error
</td>
</tr>
<tr>
<td>Mocked response body:</td>
<td><textarea rows="4" cols="50" th:field="*{messageBody}"></textarea></td>
<td><textarea rows="4" cols="30" th:field="*{messageBody}"></textarea></td>
<td th:if="${#fields.hasErrors('messageBody')}" th:errors="*{messageBody}">Body Error</td>
</tr>
<tr>
<td>Mocked response http code status:</td>
<td><input type="text" th:field="*{httpStatus}"></td>
<td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error</td>
<td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error
</td>
</tr>
<tr>
<td>Header name</td>
<td>Header value</td>
</tr>
<tr>
<td>Provide mocked response headers:</td>
<td><a href="#" id="addHeader" onclick="addFields()">Add a new header</a>
<table>
<tr>
<td><div id="headers"></div></td>
</tr>
</table>
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<td>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png"
style="width: 20px;"/>
</td>
</tr>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<td>
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
<button type="submit" name="removeHeader" th:value="${entry.key}" >
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
</button>
</td>
</tr>
<tr>
@@ -68,7 +81,8 @@
<p th:if="${mockSaved}">Mock has been saved</p>
</td>
<td>
<form action="#" th:action="@{/home/getMockedResponse}" th:object="${mockedResponseDto}" method="get">
<form action="#" th:action="@{/home/getMockedResponse}" th:object="${mockedMessageDto}"
method="get">
<input type="text" th:field="*{clientUUID}" hidden/>
<input type="text" th:field="*{mockedResponseId}" hidden/>
<p th:if="${mockSaved}"><input type="submit" value="Test your mock"/></p>
@@ -78,43 +92,70 @@
</table>
</div>
<div class="column">
Your mocked requests:
<br>
larum ispum srutum tutum
<table>
<thead>
<tr>
<th class="tr-pageable">#</th>
<th class="tr-pageable">MessageId</th>
<th class="tr-pageable">Media Type</th>
<th class="tr-pageable">Http Status</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div>
</div>
</div>
</section>
<hr>
<div>
<br>In order to use the mocked response in your integration tests or simply
get your mocked response please send a request to
<br>http://localhost:8097/klaus/v1/get/<a th:text="${mockedResponseDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}
<br>You will receive the same body and headers as you sent them in the step 1.
</div>
<hr>
<div>
<br>To see your activity history use the form below
<form action="#" th:action="@{/eventsForm}" th:object="${eventsDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${mockedResponseDto.clientUUID}" hidden/>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom Error</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo Error</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
<input type="submit" value="See my history"/>
</form>
</div>
<hr>
</div>
<hr>
</div>
<hr>
<div>
<br>In order to set or get responses through curl or http tools you can use urls below.
<br>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.
<br>http://<a th:text="@{__${localhost}__}">localhost</a>:8097/klaus/v1/set/ <a
th:text="${mockedMessageDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}?httpStatus={httpStatus}
<br>http://<a th:text="@{__${localhost}__}">localhost</a>:8097/klaus/v1/get/<a
th:text="${mockedMessageDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}
<br>http://<a th:text="@{__${localhost}__}">localhost</a>:8097/klaus/v1/getAll/<a
th:text="${mockedMessageDto.clientUUID}">clientUUID should be here</a>
</div>
<hr>
<div>
<br>To see your activity history use the form below
<form action="#" th:action="@{/eventsForm}" th:object="${eventsDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${mockedMessageDto.clientUUID}" hidden/>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom Error
</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo Error</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
<input type="submit" value="See my history"/>
</form>
</div>
<hr>
</div>
</div>
<script type="text/javascript" th:inline="javascript">
var mockedMessageDtoList = /*[[${mockedMessageDtoList}]]*/;
</script>
<script src="/js/paggination.js"></script>
</body>
</html>

View File

@@ -3,12 +3,14 @@
<head>
<meta charset="UTF-8">
<title>Login</title>
<script src="/js/main.js"></script>
<script>var mockedMessageDtoList = "[[${mockedMessageDtoList}]]";
console.log(mockedMessageDtoList.mockedResponseId);
console.log(mockedMessageDtoList);</script>
<link href="css/styles.css" rel="stylesheet" />
</head>
<body>
<div><br>Please move to the next step with your own client UUID: </div>
<form action="#" th:action="@{/home}" method="get">
<form action="#" th:action="@{/home/{path}(path=${type})}" method="get">
<br><label >Please provide your client UUID:</label><br/>
<input type="text" name="clientUUID" value="436c4774-038f-4540-9c18-2691ca9b53d4" />
<input type="submit" value="Proceed"/>

View File

@@ -3,11 +3,15 @@ package com.release11.klaus;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class KlausApplicationTests {
@Test
void contextLoads() {
}
}

View File

@@ -1,13 +1,22 @@
package com.release11.klaus.config;
import com.release11.klaus.mappers.MockedMessageMapper;
import com.release11.klaus.model.MockedMessage;
import com.release11.klaus.model.MockedMessageDto;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.JedisPool;
import java.util.HashMap;
import java.util.UUID;
@SpringBootTest
class RedisConfigTest {
@Autowired
MockedMessageMapper mockedMessageMapper;
@Test
void jedisPool() {

View File

@@ -11,13 +11,6 @@ class KlausControllerTest {
@Test
void getMockedResponse() {
LocalDate localDate = LocalDate.now();
LocalDate localDate1 = LocalDate.now();
System.out.println(localDate.compareTo(localDate1));
System.out.println(localDate1);
Period period = Period.between(localDate, localDate1);
System.out.println(period);
}
@Test

View File

@@ -18,8 +18,6 @@ class KlausMvcControllerTest {
@Test
void showHome() {
EventRequestDto eventRequestDto = EventRequestDto.builder().
localDateTimeTo(LocalDateTime.now()).build();
System.out.println(eventRequestDto);
}
}

View File

@@ -3,18 +3,14 @@ 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.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@SpringBootTest
class MockedResponseRedisRepositoryTest {
@@ -37,21 +33,29 @@ class MockedResponseRedisRepositoryTest {
.thread("main")
.build();
String eventString = objectMapper.writeValueAsString(event);
System.out.println(eventString);
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\":\"MockedResponseDto(compositePrimaryKey=null, clientUUID=436c4774-038f-4540-9c18-2691ca9b53d4, mockedResponseId=1, mediaType=application/xml, messageBody=body, httpHeaders=null, httpStatus=200)\" dsads}das";
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() {
void setMockedResponse() throws JsonProcessingException {
List<MockedMessageDto> 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<String> stringList = new ArrayList<>();
stringList.add("ddddd");
stringList.add("www");
stringList.stream().filter(s -> s.length() > 3).forEach(System.out::println);
List<String> mockedMessageDtoList1 = new LinkedList<>();
for (MockedMessageDto mockedMessageDto : mockedMessageDtoList){
mockedMessageDtoList1.add(objectMapper.writeValueAsString(mockedMessageDto));
}
mockedMessageDtoList1.forEach(System.out::println);
}

View File

@@ -1,21 +1,8 @@
package com.release11.klaus.service;
import com.release11.klaus.model.MockedResponseDto;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.*;
import java.net.URI;
import java.util.UUID;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
@SpringBootTest
class KlausServiceImplTest {
@@ -30,7 +17,7 @@ class KlausServiceImplTest {
// private final static URI uri = URI.create("http//:localhost:8080");
// private static ResponseEntity<String> mockedResponseEntity;
// private static RequestEntity<String> mockedRequestEntity;
// private static MockedResponseDto mockedResponseDto = new MockedResponseDto(uuid, 1, "application/xml", "body",
// private static mockedMessage mockedMessage = new mockedMessage(uuid, 1, "application/xml", "body",
// new HttpHeaders(), 200);
//
// @BeforeAll
@@ -55,7 +42,7 @@ class KlausServiceImplTest {
// when(mockedResponseRedisRepository.setMockedResponse(any()))
// .thenReturn(mockedResponseEntity);
//
// ResponseEntity<String> responseEntity = klausServiceImpl.setMockedResponse(mockedResponseDto);
// ResponseEntity<String> responseEntity = klausServiceImpl.setMockedResponse(mockedMessage);
// assertThat(responseEntity).isNotNull();
// verify(mockedResponseRedisRepository).setMockedResponse(any());
// }

View File

@@ -3,7 +3,8 @@
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!--https://github.com/kmtong/logback-redis-appender-->
<appender name="LOGSTASH" class="com.release11.klaus.utilis.RedisAppender">
<host>localhost</host>
<host>localhost
</host>
<port>6379</port>
<key>logstash</key>
<layout class="ch.qos.logback.classic.PatternLayout">

View File

@@ -1,3 +1,4 @@
.page-section{
padding: 2rem 0;
}
@@ -11,4 +12,56 @@
content: "";
display: table;
clear: both;
}
}
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
button:hover { font-weight: 600; }
button:hover i { margin-right: 20px; }
button:focus {
outline: none;
}
.pageable {
border: 1px solid rgba(0, 0, 0, .11);
;
padding: 10px;
}
.tr-pageable{
margin-left:1000px;
}
.controls-item {
display: inline-block;
}
.btn {
margin: 1px;
}
button[name="allMessagesClicked"] {
color: #00b3b3;
}
#pagination-wrapper button {
background: none;
border: 2px solid #00b3b3;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}
button[name="removeHeader"] {
position: absolute;
background: none;
border: none;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}

View File

@@ -2,51 +2,64 @@
<html lang="en" xmlns:th="http://thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/js/main.js">
document.getElementById('localDateTimeFrom').valueAsDate = new Date();
</script>
<link href="css/styles.css" rel="stylesheet" />
<title>R11 Klaus</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Lato:100,300,600" rel="stylesheet" type="text/css">
<link href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css">
<link href="/css/styles.css" rel="stylesheet"/>
</head>
<body>
<hr>
<div><br>In order to set mockup response. Please send the response, that you want to receive, on:
<br>http://localhost:8097/klaus/v1/set/ <a th:text="${mockedResponseDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}?httpStatus=200
<div><br>In order to set mockup response please fill the form below:
</div>
<section class="page-section" id="main-section">
<section class="page-section" id="main-section" >
<div class="container">
<div class="row">
<div class="column">
<br>You can also simply fill and submit the below form:
<form action="#" th:action="@{/home}" th:object="${mockedResponseDto}" method="post">
<div class="column" >
<br>You can also simply fill and submit the below form:
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<table>
<input type="text" th:field="*{clientUUID}" th:placeholder="*{clientUUID}" hidden/>
<tr>
<td>Mocked response id:</td>
<td><input type="text" th:field="*{mockedResponseId}"/></td>
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">Id Error</td>
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">Id
Error
</td>
</tr>
<tr>
<td>Mocked response body:</td>
<td><textarea rows="4" cols="50" th:field="*{messageBody}"></textarea></td>
<td><textarea rows="4" cols="30" th:field="*{messageBody}"></textarea></td>
<td th:if="${#fields.hasErrors('messageBody')}" th:errors="*{messageBody}">Body Error</td>
</tr>
<tr>
<td>Mocked response http code status:</td>
<td><input type="text" th:field="*{httpStatus}"></td>
<td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error</td>
<td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error
</td>
</tr>
<tr>
<td>Header name</td>
<td>Header value</td>
</tr>
<tr>
<td>Provide mocked response headers:</td>
<td><a href="#" id="addHeader" onclick="addFields()">Add a new header</a>
<table>
<tr>
<td><div id="headers"></div></td>
</tr>
</table>
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<td>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png"
style="width: 20px;"/>
</td>
</tr>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<td>
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
<button type="submit" name="removeHeader" th:value="${entry.key}" >
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
</button>
</td>
</tr>
<tr>
@@ -68,7 +81,8 @@
<p th:if="${mockSaved}">Mock has been saved</p>
</td>
<td>
<form action="#" th:action="@{/home/getMockedResponse}" th:object="${mockedResponseDto}" method="get">
<form action="#" th:action="@{/home/getMockedResponse}" th:object="${mockedMessageDto}"
method="get">
<input type="text" th:field="*{clientUUID}" hidden/>
<input type="text" th:field="*{mockedResponseId}" hidden/>
<p th:if="${mockSaved}"><input type="submit" value="Test your mock"/></p>
@@ -78,43 +92,70 @@
</table>
</div>
<div class="column">
Your mocked requests:
<br>
larum ispum srutum tutum
<table>
<thead>
<tr>
<th class="tr-pageable">#</th>
<th class="tr-pageable">MessageId</th>
<th class="tr-pageable">Media Type</th>
<th class="tr-pageable">Http Status</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div>
</div>
</div>
</section>
<hr>
<div>
<br>In order to use the mocked response in your integration tests or simply
get your mocked response please send a request to
<br>http://localhost:8097/klaus/v1/get/<a th:text="${mockedResponseDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}
<br>You will receive the same body and headers as you sent them in the step 1.
</div>
<hr>
<div>
<br>To see your activity history use the form below
<form action="#" th:action="@{/eventsForm}" th:object="${eventsDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${mockedResponseDto.clientUUID}" hidden/>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom Error</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo Error</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
<input type="submit" value="See my history"/>
</form>
</div>
<hr>
</div>
<hr>
</div>
<hr>
<div>
<br>In order to set or get responses through curl or http tools you can use urls below.
<br>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.
<br>http://<a th:text="@{__${localhost}__}">localhost</a>:8097/klaus/v1/set/ <a
th:text="${mockedMessageDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}?httpStatus={httpStatus}
<br>http://<a th:text="@{__${localhost}__}">localhost</a>:8097/klaus/v1/get/<a
th:text="${mockedMessageDto.clientUUID}">clientUUID should be here</a>/{mockedResponseId}
<br>http://<a th:text="@{__${localhost}__}">localhost</a>:8097/klaus/v1/getAll/<a
th:text="${mockedMessageDto.clientUUID}">clientUUID should be here</a>
</div>
<hr>
<div>
<br>To see your activity history use the form below
<form action="#" th:action="@{/eventsForm}" th:object="${eventsDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${mockedMessageDto.clientUUID}" hidden/>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom Error
</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo Error</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
<input type="submit" value="See my history"/>
</form>
</div>
<hr>
</div>
</div>
<script type="text/javascript" th:inline="javascript">
var mockedMessageDtoList = /*[[${mockedMessageDtoList}]]*/;
</script>
<script src="/js/paggination.js"></script>
</body>
</html>

View File

@@ -3,12 +3,14 @@
<head>
<meta charset="UTF-8">
<title>Login</title>
<script src="/js/main.js"></script>
<script>var mockedMessageDtoList = "[[${mockedMessageDtoList}]]";
console.log(mockedMessageDtoList.mockedResponseId);
console.log(mockedMessageDtoList);</script>
<link href="css/styles.css" rel="stylesheet" />
</head>
<body>
<div><br>Please move to the next step with your own client UUID: </div>
<form action="#" th:action="@{/home}" method="get">
<form action="#" th:action="@{/home/{path}(path=${type})}" method="get">
<br><label >Please provide your client UUID:</label><br/>
<input type="text" name="clientUUID" value="436c4774-038f-4540-9c18-2691ca9b53d4" />
<input type="submit" value="Proceed"/>

View File

@@ -0,0 +1,27 @@
com\release11\klaus\config\RedisConfig.class
com\release11\klaus\mappers\MockedMessageMapperImpl.class
com\release11\klaus\model\MockedMessage.class
com\release11\klaus\model\Event$EventBuilder.class
com\release11\klaus\model\Event.class
com\release11\klaus\controller\KlausController.class
com\release11\klaus\service\KlausServiceImpl.class
com\release11\klaus\controller\MvcExceptionHandler.class
com\release11\klaus\KlausApplication.class
com\release11\klaus\repository\MockedResponseRepository.class
com\release11\klaus\model\EventRequestDto$EventRequestDtoBuilder.class
com\release11\klaus\model\EventRequestDto.class
com\release11\klaus\utilis\BusinessKey.class
com\release11\klaus\controller\EventController.class
com\release11\klaus\repository\EventRepositoryImpl.class
com\release11\klaus\mappers\MockedMessageMapper.class
com\release11\klaus\utilis\TrackingClient.class
com\release11\klaus\service\EtrackServiceImpl.class
com\release11\klaus\controller\KlausMvcController.class
com\release11\klaus\repository\EventRepository.class
com\release11\klaus\service\KlausService.class
com\release11\klaus\service\EtrackService.class
com\release11\klaus\model\MockedMessageDto.class
com\release11\klaus\model\constraints\HttpCode.class
com\release11\klaus\model\constraints\HttpCodeValidation.class
com\release11\klaus\utilis\RedisAppender.class
com\release11\klaus\model\MockedMessageDto$MockedMessageDtoBuilder.class

View File

@@ -1,8 +1,23 @@
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\KlausApplication.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\model\MockedResponseDto.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\service\KlausService.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\config\RedisConfig.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\repository\MockedResponseRepository.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\controller\KlausController.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\service\KlausServiceImpl.java
D:\git\Szakalakamaka\R11-Klaus\src\main\java\com\release11\klaus\controller\KlausMvcController.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\model\Event.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\utilis\TrackingClient.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\config\RedisConfig.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\controller\KlausController.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\repository\EventRepositoryImpl.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\controller\EventController.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\KlausApplication.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\model\constraints\HttpCodeValidation.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\service\EtrackService.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\utilis\BusinessKey.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\model\MockedMessageDto.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\service\EtrackServiceImpl.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\controller\KlausMvcController.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\service\KlausService.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\repository\MockedResponseRepository.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\model\EventRequestDto.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\utilis\RedisAppender.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\mappers\MockedMessageMapper.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\service\KlausServiceImpl.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\controller\MvcExceptionHandler.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\repository\EventRepository.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\model\MockedMessage.java
D:\git\Szakalakamaka\Klaus\src\main\java\com\release11\klaus\model\constraints\HttpCode.java