- fix collisions between js script from main page and the application,

- fix problem with special characters for etrack,
This commit is contained in:
Szakalakamaka
2020-11-03 15:23:21 +01:00
parent ea56911a58
commit dff31ab907
43 changed files with 988 additions and 567 deletions

View File

@@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.github.feature-flip:flips-core:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/feature-flip/flips-core/1.0.1/flips-core-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/feature-flip/flips-core/1.0.1/flips-core-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/feature-flip/flips-core/1.0.1/flips-core-1.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.aspectj:aspectjrt:1.9.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjrt/1.9.5/aspectjrt-1.9.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjrt/1.9.5/aspectjrt-1.9.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjrt/1.9.5/aspectjrt-1.9.5-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.slf4j:jcl-over-slf4j:1.7.30">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.30/jcl-over-slf4j-1.7.30.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.30/jcl-over-slf4j-1.7.30-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.30/jcl-over-slf4j-1.7.30-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

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

133
.idea/workspace.xml generated
View File

@@ -23,12 +23,49 @@
</component> </component>
<component name="ChangeListManager"> <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__com_github_feature_flip_flips_core_1_0_1.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_aspectj_aspectjrt_1_9_5.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_30.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/templates/temp.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_5_RELEASE.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application-DEV.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-DEV.properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Klaus.iml" beforeDir="false" afterPath="$PROJECT_DIR$/Klaus.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/bootstrap-PROD.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/bootstrap-PROD.yml" 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/KlausController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausController.java" 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$/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/repository/EventRepositoryImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/service/KlausServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/service/KlausServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application-DEV.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application-PROD.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/bootstrap.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/bootstrap.properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/resources/bootstrap.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/bootstrap.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/bootstrap.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/bootstrap.yml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/resources/bootstrap.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/bootstrap.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/logback.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/logback.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/static/css/styles.css" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/static/css/styles.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/static/js/etrackPaggination.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/static/js/etrackPaggination.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/static/js/paggination.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/static/js/paggination.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/templates/etrack.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/etrack.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/templates/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/index.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/com/release11/klaus/controller/KlausMvcControllerTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/release11/klaus/controller/KlausMvcControllerTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/com/release11/klaus/service/KlausServiceImplTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/release11/klaus/service/KlausServiceImplTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/application-DEV.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/application-PROD.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/application.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/bootstrap.properties" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/bootstrap.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/release11/klaus/controller/KlausController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/release11/klaus/controller/KlausController.class" afterDir="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/classes/com/release11/klaus/repository/EventRepositoryImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/release11/klaus/repository/EventRepositoryImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/release11/klaus/service/KlausServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/release11/klaus/service/KlausServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/logback.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/logback.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/static/css/styles.css" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/static/css/styles.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/static/js/etrackPaggination.js" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/static/js/etrackPaggination.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/static/js/paggination.js" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/static/js/paggination.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/templates/etrack.html" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/templates/etrack.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/templates/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/templates/index.html" 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" /> <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" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/com/release11/klaus/controller/KlausMvcControllerTest.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/com/release11/klaus/controller/KlausMvcControllerTest.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/com/release11/klaus/service/KlausServiceImplTest.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/com/release11/klaus/service/KlausServiceImplTest.class" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -45,9 +82,9 @@
<option name="RECENT_TEMPLATES"> <option name="RECENT_TEMPLATES">
<list> <list>
<option value="Interface" /> <option value="Interface" />
<option value="HTML File" />
<option value="Class" /> <option value="Class" />
<option value="JUnit5 Test Class" /> <option value="JUnit5 Test Class" />
<option value="HTML File" />
</list> </list>
</option> </option>
</component> </component>
@@ -80,7 +117,7 @@
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" /> <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrary" value="JUnit5" /> <property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrary" value="JUnit5" />
<property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrarySuperClass.JUnit5" value="" /> <property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrarySuperClass.JUnit5" value="" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../mockedservices-klaus-config-server" /> <property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="restartRequiresConfirmation" value="false" /> <property name="restartRequiresConfirmation" value="false" />
<property name="settings.editor.selected.configurable" value="MavenSettings" /> <property name="settings.editor.selected.configurable" value="MavenSettings" />
</component> </component>
@@ -268,20 +305,6 @@
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1598862102028</updated> <updated>1598862102028</updated>
</task> </task>
<task id="LOCAL-00059" summary="adding logs from the application">
<created>1601297895444</created>
<option name="number" value="00059" />
<option name="presentableId" value="LOCAL-00059" />
<option name="project" value="LOCAL" />
<updated>1601297895444</updated>
</task>
<task id="LOCAL-00060" summary="clean before the build">
<created>1601300366399</created>
<option name="number" value="00060" />
<option name="presentableId" value="LOCAL-00060" />
<option name="project" value="LOCAL" />
<updated>1601300366399</updated>
</task>
<task id="LOCAL-00061" summary="clean before the build"> <task id="LOCAL-00061" summary="clean before the build">
<created>1601300573031</created> <created>1601300573031</created>
<option name="number" value="00061" /> <option name="number" value="00061" />
@@ -611,7 +634,21 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1603883796526</updated> <updated>1603883796526</updated>
</task> </task>
<option name="localTasksCounter" value="108" /> <task id="LOCAL-00108" summary="adding profiles to bootstrap.yml">
<created>1603886642002</created>
<option name="number" value="00108" />
<option name="presentableId" value="LOCAL-00108" />
<option name="project" value="LOCAL" />
<updated>1603886642002</updated>
</task>
<task id="LOCAL-00109" summary="adding profiles to bootstrap.yml">
<created>1603886748106</created>
<option name="number" value="00109" />
<option name="presentableId" value="LOCAL-00109" />
<option name="project" value="LOCAL" />
<updated>1603886748106</updated>
</task>
<option name="localTasksCounter" value="110" />
<servers /> <servers />
</component> </component>
<component name="UnknownFeatures"> <component name="UnknownFeatures">
@@ -631,7 +668,6 @@
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="sort buttons for etrack" />
<MESSAGE value="js small fixes" /> <MESSAGE value="js small fixes" />
<MESSAGE value="js fix sort paggination, show body for etrack" /> <MESSAGE value="js fix sort paggination, show body for etrack" />
<MESSAGE value="changing events describtion" /> <MESSAGE value="changing events describtion" />
@@ -656,7 +692,8 @@
<MESSAGE value="updating cloud settings" /> <MESSAGE value="updating cloud settings" />
<MESSAGE value="testing config service" /> <MESSAGE value="testing config service" />
<MESSAGE value="adding profiles to dockerfile" /> <MESSAGE value="adding profiles to dockerfile" />
<option name="LAST_COMMIT_MESSAGE" value="adding profiles to dockerfile" /> <MESSAGE value="adding profiles to bootstrap.yml" />
<option name="LAST_COMMIT_MESSAGE" value="adding profiles to bootstrap.yml" />
</component> </component>
<component name="WindowStateProjectService"> <component name="WindowStateProjectService">
<state x="904" y="236" key="#Notifications" timestamp="1600868491636"> <state x="904" y="236" key="#Notifications" timestamp="1600868491636">
@@ -708,37 +745,41 @@
<state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1160@0.0.1536.824" timestamp="1602662342585" /> <state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1160@0.0.1536.824" timestamp="1602662342585" />
<state x="2606" y="235" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603885972656" /> <state x="2606" y="235" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603885972656" />
<state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1602147205037" /> <state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1602147205037" />
<state width="1877" height="317" key="GridCell.Tab.0.bottom" timestamp="1603886417381"> <state width="1493" height="49" key="GridCell.Tab.0.bottom" timestamp="1604412796289">
<screen x="1920" y="0" width="1920" height="1160" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1877" height="239" key="GridCell.Tab.0.bottom/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" /> <state width="1877" height="239" key="GridCell.Tab.0.bottom/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" />
<state width="1493" height="217" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602249237084" /> <state width="1493" height="49" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1604412796289" />
<state width="1877" height="261" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424969" /> <state width="1877" height="261" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424969" />
<state width="1877" height="317" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603886417381" /> <state width="1493" height="233" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1160@0.0.1536.824" timestamp="1604328635480" />
<state width="1875" height="151" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1604317001880" />
<state width="1493" height="217" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" /> <state width="1493" height="217" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" />
<state width="1877" height="317" key="GridCell.Tab.0.center" timestamp="1603886417381"> <state width="1493" height="49" key="GridCell.Tab.0.center" timestamp="1604412796288">
<screen x="1920" y="0" width="1920" height="1160" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1877" height="239" key="GridCell.Tab.0.center/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" /> <state width="1877" height="239" key="GridCell.Tab.0.center/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" />
<state width="1493" height="217" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602249237084" /> <state width="1493" height="49" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1604412796288" />
<state width="1877" height="261" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424968" /> <state width="1877" height="261" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424968" />
<state width="1877" height="317" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603886417381" /> <state width="1493" height="233" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1160@0.0.1536.824" timestamp="1604328635480" />
<state width="1875" height="151" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1604317001880" />
<state width="1493" height="217" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" /> <state width="1493" height="217" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" />
<state width="1877" height="317" key="GridCell.Tab.0.left" timestamp="1603886417381"> <state width="1493" height="49" key="GridCell.Tab.0.left" timestamp="1604412796287">
<screen x="1920" y="0" width="1920" height="1160" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1877" height="239" key="GridCell.Tab.0.left/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" /> <state width="1877" height="239" key="GridCell.Tab.0.left/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" />
<state width="1493" height="217" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602249237084" /> <state width="1493" height="49" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1604412796287" />
<state width="1877" height="261" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424967" /> <state width="1877" height="261" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424967" />
<state width="1877" height="317" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603886417381" /> <state width="1493" height="233" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1160@0.0.1536.824" timestamp="1604328635480" />
<state width="1875" height="151" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1604317001880" />
<state width="1493" height="217" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" /> <state width="1493" height="217" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" />
<state width="1877" height="317" key="GridCell.Tab.0.right" timestamp="1603886417381"> <state width="1493" height="49" key="GridCell.Tab.0.right" timestamp="1604412796288">
<screen x="1920" y="0" width="1920" height="1160" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1877" height="239" key="GridCell.Tab.0.right/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" /> <state width="1877" height="239" key="GridCell.Tab.0.right/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275797041" />
<state width="1493" height="217" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602249237084" /> <state width="1493" height="49" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1604412796288" />
<state width="1877" height="261" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424969" /> <state width="1877" height="261" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255424969" />
<state width="1877" height="317" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603886417381" /> <state width="1493" height="233" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1160@0.0.1536.824" timestamp="1604328635480" />
<state width="1875" height="151" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1604317001880" />
<state width="1493" height="217" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" /> <state width="1493" height="217" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1602147432366" />
<state width="1877" height="297" key="GridCell.Tab.1.bottom" timestamp="1602672852817"> <state width="1877" height="297" key="GridCell.Tab.1.bottom" timestamp="1602672852817">
<screen x="1920" y="0" width="1920" height="1160" /> <screen x="1920" y="0" width="1920" height="1160" />
@@ -786,27 +827,28 @@
</state> </state>
<state x="277" y="57" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1600935670743" /> <state x="277" y="57" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1600935670743" />
<state x="277" y="57" key="SettingsEditor/0.0.1536.824@0.0.1536.824" timestamp="1601975962923" /> <state x="277" y="57" key="SettingsEditor/0.0.1536.824@0.0.1536.824" timestamp="1601975962923" />
<state x="2371" y="204" key="Vcs.Push.Dialog.v2" timestamp="1603883799501"> <state x="2371" y="204" key="Vcs.Push.Dialog.v2" timestamp="1603886750020">
<screen x="1920" y="0" width="1920" height="1160" /> <screen x="1920" y="0" width="1920" height="1160" />
</state> </state>
<state x="451" y="183" key="Vcs.Push.Dialog.v2/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275760386" /> <state x="451" y="183" key="Vcs.Push.Dialog.v2/-1920.0.1536.832/0.0.1920.1040@0.0.1920.1040" timestamp="1600275760386" />
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1600350277680" /> <state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1600350277680" />
<state x="2371" y="183" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255416393" /> <state x="2371" y="183" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255416393" />
<state x="2371" y="204" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603883799501" /> <state x="2371" y="204" key="Vcs.Push.Dialog.v2/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603886750020" />
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824@0.0.1536.824" timestamp="1602145235569" /> <state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824@0.0.1536.824" timestamp="1602145235569" />
<state width="968" height="528" key="XDebugger.FullValuePopup" timestamp="1602076898344"> <state width="968" height="528" key="XDebugger.FullValuePopup" timestamp="1602076898344">
<screen x="1920" y="0" width="1920" height="1040" /> <screen x="1920" y="0" width="1920" height="1040" />
</state> </state>
<state width="968" height="528" key="XDebugger.FullValuePopup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602076898344" /> <state width="968" height="528" key="XDebugger.FullValuePopup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602076898344" />
<state x="2595" y="235" key="com.intellij.testIntegration.createTest.CreateTestDialog" timestamp="1602255236575"> <state x="2595" y="262" key="com.intellij.testIntegration.createTest.CreateTestDialog" timestamp="1604313748925">
<screen x="1920" y="0" width="1920" height="1040" /> <screen x="1920" y="0" width="1920" height="1160" />
</state> </state>
<state x="540" y="186" key="com.intellij.testIntegration.createTest.CreateTestDialog/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602239324911" /> <state x="540" y="186" key="com.intellij.testIntegration.createTest.CreateTestDialog/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602239324911" />
<state x="2595" y="235" key="com.intellij.testIntegration.createTest.CreateTestDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255236575" /> <state x="2595" y="235" key="com.intellij.testIntegration.createTest.CreateTestDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602255236575" />
<state x="478" y="23" width="579" height="801" key="find.popup" timestamp="1602248839921"> <state x="2595" y="262" key="com.intellij.testIntegration.createTest.CreateTestDialog/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1604313748925" />
<state x="478" y="23" width="579" height="801" key="find.popup" timestamp="1604407233439">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state x="478" y="23" width="579" height="801" key="find.popup/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1602248839921" /> <state x="478" y="23" width="579" height="801" key="find.popup/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1604407233439" />
<state x="478" y="145" width="579" height="592" key="find.popup/0.0.1536.824@0.0.1536.824" timestamp="1599562452922" /> <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="1601969134275"> <state x="209" y="33" key="new project wizard" timestamp="1601969134275">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
@@ -823,10 +865,11 @@
<state x="425" y="187" key="run.anything.popup/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599846632766" /> <state x="425" y="187" key="run.anything.popup/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1599846632766" />
<state x="2451" y="236" key="run.anything.popup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602092407099" /> <state x="2451" y="236" key="run.anything.popup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1602092407099" />
<state x="425" y="187" key="run.anything.popup/0.0.1536.824@0.0.1536.824" timestamp="1601461825087" /> <state x="425" y="187" key="run.anything.popup/0.0.1536.824@0.0.1536.824" timestamp="1601461825087" />
<state x="2459" y="183" width="840" height="856" key="search.everywhere.popup" timestamp="1599855564520"> <state x="2459" y="204" width="840" height="955" key="search.everywhere.popup" timestamp="1603984139797">
<screen x="1920" y="0" width="1920" height="1040" /> <screen x="1920" y="0" width="1920" height="1160" />
</state> </state>
<state x="2459" y="183" width="840" height="856" key="search.everywhere.popup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599855564520" /> <state x="2459" y="183" width="840" height="856" key="search.everywhere.popup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599855564520" />
<state x="2459" y="204" width="840" height="955" key="search.everywhere.popup/0.0.1536.824/1920.0.1920.1160@1920.0.1920.1160" timestamp="1603984139797" />
<state x="431" y="145" width="672" height="678" key="search.everywhere.popup/0.0.1536.824@0.0.1536.824" timestamp="1599818806371" /> <state x="431" y="145" width="672" height="678" key="search.everywhere.popup/0.0.1536.824@0.0.1536.824" timestamp="1599818806371" />
</component> </component>
</project> </project>

View File

@@ -15,8 +15,6 @@
<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-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: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: 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-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.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" /> <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
@@ -38,7 +36,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.7.RELEASE" level="project" /> <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: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.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.springframework:spring-aop:5.2.7.RELEASE" level="project" />
@@ -107,7 +104,6 @@
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons: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-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-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.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-common:4.1.50.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.50.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.50.Final" level="project" />
@@ -191,5 +187,12 @@
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11.1" level="project" /> <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11.1" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" /> <orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" /> <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.github.feature-flip:flips-core:1.0.1" 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-context-support:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.9.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.30" 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" />
</component> </component>
</module> </module>

View File

@@ -110,6 +110,11 @@
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>${eureka-client.version}</version> <version>${eureka-client.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.feature-flip</groupId>
<artifactId>flips-core</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -7,6 +7,7 @@ import com.release11.klaus.utilis.BusinessKey;
import com.release11.klaus.utilis.TrackingClient; import com.release11.klaus.utilis.TrackingClient;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Profile;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.RequestEntity; import org.springframework.http.RequestEntity;
@@ -21,6 +22,7 @@ import java.util.UUID;
@Controller("/") @Controller("/")
@Slf4j @Slf4j
@Profile({"DEV", "default"})
@AllArgsConstructor @AllArgsConstructor
public class KlausController { public class KlausController {

View File

@@ -7,6 +7,7 @@ import com.release11.klaus.utilis.TrackingClient;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.net.InetAddress; import java.net.InetAddress;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
@@ -23,6 +25,7 @@ import java.util.*;
@AllArgsConstructor @AllArgsConstructor
public class KlausMvcController { public class KlausMvcController {
private final KlausService klausService; private final KlausService klausService;
private static MockedMessageDto globalMockedMessageDto = new MockedMessageDto();
private final Set<MockedMessageDto> globalMockedMessageDtoList = new HashSet<>(); private final Set<MockedMessageDto> globalMockedMessageDtoList = new HashSet<>();
@SneakyThrows @SneakyThrows
@@ -32,38 +35,38 @@ public class KlausMvcController {
@PathVariable(required = false) UUID uuid) { @PathVariable(required = false) UUID uuid) {
if (uuid != null) clientUUID = uuid; if (uuid != null) clientUUID = uuid;
if (clientUUID != null) mockedMessageDto.setClientUUID(clientUUID); if (clientUUID != null) mockedMessageDto.setClientUUID(clientUUID);
populateModelWithLists(model, mockedMessageDto,true); else mockedMessageDto.setClientUUID(UUID.randomUUID());
populateModelVars(model, mockedMessageDto,true);
return "index"; return "index";
} }
@PostMapping("/home/{uuid}") @PostMapping("/home/{uuid}")
public String showHomePost(@Valid final MockedMessageDto mockedMessageDto, BindingResult bindingResult, public String showHomePost(@Valid MockedMessageDto mockedMessageDto, BindingResult bindingResult, Model model) {
final Model model) {
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse", TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()), BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId()))); BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
if (bindingResult.hasErrors()){ if (bindingResult.hasErrors()){
populateModelWithLists(model, mockedMessageDto,false); populateModelVars(model, mockedMessageDto,false);
return "index"; return "index";
} }
klausService.setMockedResponse(mockedMessageDto); klausService.setMockedResponse(mockedMessageDto);
populateModelWithLists(model, mockedMessageDto,true); populateModelVars(model, mockedMessageDto,true);
model.addAttribute("mockSaved", "true"); model.addAttribute("mockSaved", "true");
model.addAttribute("canTest", "true"); model.addAttribute("canTest", "true");
return "index"; return "index";
} }
@PostMapping(value="/home/{uuid}", params={"newMessage"}) @PostMapping(value="/home/{uuid}", params={"newMessage"})
public String newMessage(final Model model, @RequestParam UUID clientUUID) { public String newMessage(Model model, @RequestParam UUID clientUUID) {
MockedMessageDto mockedMessageDto = new MockedMessageDto(clientUUID, new LinkedHashMap<>()); MockedMessageDto mockedMessageDto = new MockedMessageDto(clientUUID, new LinkedHashMap<>());
populateModelWithLists(model, mockedMessageDto, true); populateModelVars(model, mockedMessageDto, true);
model.addAttribute("mockedMessageDto", mockedMessageDto); model.addAttribute("mockedMessageDto", mockedMessageDto);
return "index"; return "index";
} }
@GetMapping("/home/getMockedResponse") @GetMapping("/home/getMockedResponse")
@ResponseBody @ResponseBody
public String showGetMockedResponse(final MockedMessageDto mockedMessageDto) { public String showGetMockedResponse(MockedMessageDto mockedMessageDto) {
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse", TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()), BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId()))); BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
@@ -72,37 +75,37 @@ public class KlausMvcController {
} }
@PostMapping(value = "/home/{uuid}", params = {"addHeader"} ) @PostMapping(value = "/home/{uuid}", params = {"addHeader"} )
public String addHeader(final MockedMessageDto mockedMessageDto, @RequestParam String headerKey, public String addHeader(MockedMessageDto mockedMessageDto, @RequestParam String headerKey,
@RequestParam String headerValue, final Model model) { @RequestParam String headerValue, final Model model) {
populateModelWithLists(model, mockedMessageDto,false); populateModelVars(model, mockedMessageDto,false);
mockedMessageDto.getHttpHeaders().put(headerKey, headerValue); mockedMessageDto.getHttpHeaders().put(headerKey, headerValue);
return "index"; return "index";
} }
@PostMapping(value="/home/{uuid}", params={"removeHeader"}) @PostMapping(value="/home/{uuid}", params={"removeHeader"})
public String removeHeader(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) { public String removeHeader(MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) {
populateModelWithLists(model, mockedMessageDto,false); populateModelVars(model, mockedMessageDto,false);
mockedMessageDto.getHttpHeaders().remove(req.getParameter("removeHeader")); mockedMessageDto.getHttpHeaders().remove(req.getParameter("removeHeader"));
return "index"; return "index";
} }
@PostMapping(value="/home/{uuid}", params={"updateMessage"}) @PostMapping(value="/home/{uuid}", params={"updateMessage"})
public String updateMessage(final HttpServletRequest req, final MockedMessageDto mockedMessageDto, final Model model) { public String updateMessage(final HttpServletRequest req, MockedMessageDto mockedMessageDto, final Model model) {
populateModelVars(model, mockedMessageDto, false);
model.addAttribute("mockedMessageDto", klausService.getMockedResponse(mockedMessageDto.getClientUUID(), model.addAttribute("mockedMessageDto", klausService.getMockedResponse(mockedMessageDto.getClientUUID(),
Integer.parseInt(req.getParameter("updateMessage")))); Integer.parseInt(req.getParameter("updateMessage"))));
populateModelWithLists(model, mockedMessageDto, false);
model.addAttribute("canTest", "true"); model.addAttribute("canTest", "true");
return "index"; return "index";
} }
@PostMapping(value="/home/{uuid}", params={"removeMessage"}) @PostMapping(value="/home/{uuid}", params={"removeMessage"})
public String removeMessage(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) { public String removeMessage(MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) {
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "deleteMockedResponse", TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "deleteMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()), BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(Integer.parseInt(req.getParameter("removeMessage"))))); BusinessKey.MESSAGE_ID, String.valueOf(Integer.parseInt(req.getParameter("removeMessage")))));
klausService.deleteMockedResponse(mockedMessageDto.getClientUUID(), klausService.deleteMockedResponse(mockedMessageDto.getClientUUID(),
Integer.parseInt(req.getParameter("removeMessage"))); Integer.parseInt(req.getParameter("removeMessage")));
populateModelWithLists(model, mockedMessageDto, true); populateModelVars(model, mockedMessageDto, true);
return "index"; return "index";
} }
@@ -117,17 +120,47 @@ public class KlausMvcController {
return UUID.randomUUID(); return UUID.randomUUID();
} }
@ModelAttribute("mockedMessageDto") public void getModelMockedMessageDto(Model model, MockedMessageDto mockedMessageDto) {
public MockedMessageDto mockedMessageDto() { System.out.println(mockedMessageDto);
return new MockedMessageDto(UUID.randomUUID(), new LinkedHashMap<>()); System.out.println(globalMockedMessageDto);
if (mockedMessageDto.getMockedResponseId() == null){
Map<String, String> headers = new HashMap<>();
headers.put("Keep-Alive", "timeout=60");
headers.put("Connection", "keep-alive");
headers.put("Date", LocalDateTime.now().toString());
globalMockedMessageDto = MockedMessageDto.builder()
.clientUUID(mockedMessageDto.getClientUUID())
.mockedResponseId(1)
.mediaType(MediaType.APPLICATION_XML_VALUE)
.messageBody("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<note>\n" +
" <to>Tove</to>\n" +
" <from>Jani</from>\n" +
" <heading>Reminder</heading>\n" +
" <body>Don't forget me this weekend!</body>\n" +
"</note>")
.httpHeaders(headers)
.httpStatus(200)
.build();
} else {
globalMockedMessageDto = mockedMessageDto;
}
model.addAttribute("mockedMessageDto", globalMockedMessageDto);
} }
private void populateModelWithLists(Model model, MockedMessageDto mockedMessageDto, boolean updateList){ private void populateModelVars(Model model, MockedMessageDto mockedMessageDto, boolean updateList){
if (updateList){ if (updateList){
globalMockedMessageDtoList.clear(); globalMockedMessageDtoList.clear();
globalMockedMessageDtoList.addAll(klausService.getAllMockedResponses(mockedMessageDto.getClientUUID())); List<MockedMessageDto> mockedMessageDtoList = klausService.
getAllMockedResponses(mockedMessageDto.getClientUUID());
System.out.println(mockedMessageDtoList);
if (mockedMessageDtoList.size() > 0){
globalMockedMessageDtoList.addAll(mockedMessageDtoList);
}
} }
model.addAttribute("mockedMessageDtoList", globalMockedMessageDtoList); model.addAttribute("mockedMessageDtoList", globalMockedMessageDtoList);
getModelMockedMessageDto(model, mockedMessageDto);
} }
} }

View File

@@ -61,6 +61,7 @@ public class EventRepositoryImpl implements EventRepository {
List<Event> events = new ArrayList<>(); List<Event> events = new ArrayList<>();
for (String eventString : eventStrings) { for (String eventString : eventStrings) {
try { try {
eventString = eventString.replaceAll("\\R", "\\n");
events.add(objectMapper.readValue(eventString, Event.class)); events.add(objectMapper.readValue(eventString, Event.class));
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -20,7 +20,6 @@ import java.util.stream.Collectors;
@Service @Service
@AllArgsConstructor @AllArgsConstructor
public class KlausServiceImpl implements KlausService { public class KlausServiceImpl implements KlausService {
private final MockedMessageMapper mockedMessageMapper; private final MockedMessageMapper mockedMessageMapper;
private final MockedResponseRepository mockedResponseRepository; private final MockedResponseRepository mockedResponseRepository;
@@ -45,7 +44,7 @@ public class KlausServiceImpl implements KlausService {
MockedMessageDto mockedMessageDto = new MockedMessageDto(); MockedMessageDto mockedMessageDto = new MockedMessageDto();
if (optionalMockedMessage.isPresent()) { if (optionalMockedMessage.isPresent()) {
mockedMessageDto = mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get()); mockedMessageDto = mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get());
log.info(mockedMessageDto.toString()); log.info(mockedMessageDto.toString().replaceAll("\"","\\\""));
return mockedMessageDto; return mockedMessageDto;
} }
log.info(mockedMessageDto.toString()); log.info(mockedMessageDto.toString());
@@ -55,7 +54,7 @@ public class KlausServiceImpl implements KlausService {
@Override @Override
public ResponseEntity<String> setMockedResponse(MockedMessageDto mockedMessageDto) { public ResponseEntity<String> setMockedResponse(MockedMessageDto mockedMessageDto) {
mockedResponseRepository.save(mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto)); mockedResponseRepository.save(mockedMessageMapper.mockedMessageDtoToMockedMessage(mockedMessageDto));
log.info(mockedMessageDto.toString()); log.info(mockedMessageDto.toString().replaceAll("\"","\\\\\""));
return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(), return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(),
HttpStatus.ACCEPTED); HttpStatus.ACCEPTED);
} }

View File

@@ -1,10 +0,0 @@
#environment:
server.port = 8097
spring.application.name = klaus
eureka.client.service-url.defaultZone=http://netflix:eureka@localhost:8761/eureka/
#logging:
spring.output.ansi.enabled = always
logging.level.root=DEBUG
logging.level.org.springframework.web=DEBUG
logging.level.com.release11=DEBUG

View File

@@ -1,10 +0,0 @@
#environment:
server.port = 8097
spring.application.name = klaus
eureka.client.service-url.defaultZone=http://netflix:eureka@eureka:8761/eureka/
#logging:
spring.output.ansi.enabled = always
logging.level.root=INFO
logging.level.org.springframework.web=INFO
logging.level.com.release11=INFO

View File

@@ -1,5 +1,6 @@
#environment: #environment:
server.port = 8097 server.port = 8097
endpoints.env.enabled = false
#spring.cloud.config.username = SpringConfigUsername #spring.cloud.config.username = SpringConfigUsername
#spring.cloud.config.password = SpringConfigPassword #spring.cloud.config.password = SpringConfigPassword
#logging: #logging:
@@ -7,3 +8,8 @@ spring.output.ansi.enabled = always
logging.level.root=INFO logging.level.root=INFO
logging.level.org.springframework.web=INFO logging.level.org.springframework.web=INFO
logging.level.com.release11=INFO logging.level.com.release11=INFO
#operations
release11.mocked-service.controller.delete = false
release11.mocked-service.controller.getAll = false
release11.mocked-service.controller.get = true
release11.mocked-service.controller.set = true

View File

@@ -1,7 +1,7 @@
#environment: #environment:
spring.cloud.config.discovery.service-id = klaus-config-service spring.cloud.config.discovery.service-id = klaus-config-service
spring.cloud.config.fail-fast=true
#spring.cloud.config.retry.initial-interval = 1500 #spring.cloud.config.retry.initial-interval = 1500
release11.mocked-service.controller.delete = true
#spring.cloud.config.retry.multiplier = 1.5 #spring.cloud.config.retry.multiplier = 1.5
#spring.cloud.config.retry.max-attempts = 10000 #spring.cloud.config.retry.max-attempts = 10000
#spring.cloud.config.retry.max-intervals = 1000 #spring.cloud.config.retry.max-intervals = 1000

View File

@@ -1,13 +1,12 @@
spring: spring:
profiles: # profiles:
active: DEV # active: DEV
application: application:
name: klaus name: klaus
cloud: cloud:
spring: spring:
cloud: cloud:
config: config:
fail-fast: false
uri: http://s5000xvn.zipper.release11.com:8888 uri: http://s5000xvn.zipper.release11.com:8888
retry: retry:
max-attempts: 20 max-attempts: 20
@@ -22,4 +21,4 @@ eureka:
register-with-eureka: true register-with-eureka: true
fetch-registry: true fetch-registry: true
serviceUrl: serviceUrl:
defaultZone: http://netflix:eureka@eureka:8761/eureka defaultZone: http://netflix:eureka@localhost:8761/eureka

View File

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

View File

@@ -1,3 +1,11 @@
html {
height: 100%;
}
body {
min-height: 100%;
}
.page-section{ .page-section{
padding: 2rem 0; padding: 2rem 0;
@@ -105,7 +113,82 @@ button[name="removeHeader"] {
cursor: pointer; cursor: pointer;
} }
.active { .activeButton {
background-color: rgb(153, 194, 255); background-color: rgb(153, 194, 255);
} }
#child-body{
margin-left: 220px;
}
#container1{
}
#foot {
clear: both;
position: relative;
right: 0;
bottom: 0;
left: 0;
}
/* The side navigation menu */
.sidebar {
margin-top: 100px;
padding-top: 200px;
padding: 0;
width: 200px;
background-color: #f1f1f1;
position: absolute;
height: 100%;
overflow: auto;
}
/* Sidebar links */
.sidebar a {
display: block;
color: black;
padding: 16px;
text-decoration: none;
}
/* Active/current link */
.sidebar a.active {
background-color: #4CAF50;
color: white;
}
/* Links on mouse-over */
.sidebar a:hover:not(.active) {
background-color: #555;
color: white;
}
/* On screens that are less than 700px wide, make the sidebar into a topbar */
@media screen and (max-width: 700px) {
.sidebar {
width: 100%;
height: auto;
position: fixed;
}
.sidebar a {float: left;}
div.content {margin-left: 0;}
}
/* On screens that are less than 400px, display the bar vertically, instead of horizontally */
@media screen and (max-width: 400px) {
.sidebar a {
text-align: center;
float: none;
}
}
table { border-collapse: collapse; }
tr { border: none; }
td {
border: none;
}

View File

@@ -27,9 +27,9 @@ for (let i = 3; i >= 0; i--) {
function addButtonListeners(i) { function addButtonListeners(i) {
var buttons = document.querySelectorAll('.btn-sort'); var buttons = document.querySelectorAll('.btn-sort');
for (var j = buttons.length - 1; j >= 0; j--) { for (var j = buttons.length - 1; j >= 0; j--) {
buttons[j].classList.remove('active'); buttons[j].classList.remove('activeButton');
} }
document.querySelector('#btn-sort-' + i).classList.add('active'); document.querySelector('#btn-sort-' + i).classList.add('activeButton');
buildTable(); buildTable();
} }
@@ -132,7 +132,7 @@ function showTable() {
function sortTable() { function sortTable() {
var sortBy = document.querySelector('.active').textContent var sortBy = document.querySelector('.activeButton').textContent
switch (sortBy) { switch (sortBy) {
case "MessageId": case "MessageId":
if (previousSort === "MessageId") { if (previousSort === "MessageId") {

View File

@@ -14,8 +14,7 @@ var state = {
} }
var myList, data, previousSort; var myList, data, previousSort;
console.log("raz dwa trzy")
state.querySet = listForPagination; state.querySet = listForPagination;
buildTable(); buildTable();
@@ -28,15 +27,13 @@ for (let i = 3; i >= 0; i--) {
function addButtonListeners(i) { function addButtonListeners(i) {
var buttons = document.querySelectorAll('.btn-sort'); var buttons = document.querySelectorAll('.btn-sort');
for (var j = buttons.length - 1; j >= 0; j--) { for (var j = buttons.length - 1; j >= 0; j--) {
buttons[j].classList.remove('active'); buttons[j].classList.remove('activeButton');
} }
document.querySelector('#btn-sort-' + i).classList.add('active'); document.querySelector('#btn-sort-' + i).classList.add('activeButton');
buildTable(); buildTable();
} }
function pagination(querySet, page, rows) { function pagination(querySet, page, rows) {
var trimStart = (page - 1) * rows var trimStart = (page - 1) * rows
var trimEnd = trimStart + rows var trimEnd = trimStart + rows
var trimmedData = querySet.slice(trimStart, trimEnd) var trimmedData = querySet.slice(trimStart, trimEnd)
@@ -48,10 +45,8 @@ function pagination(querySet, page, rows) {
} }
} }
function pageButtons(pages) { function pageButtons(pages) {
var wrapper = document.getElementById('pagination-wrapper'); var wrapper = document.getElementById('pagination-wrapper');
wrapper.innerHTML = ``; wrapper.innerHTML = ``;
var maxLeft = (state.page - Math.floor(state.window / 2)) var maxLeft = (state.page - Math.floor(state.window / 2))
var maxRight = (state.page + Math.ceil(state.window / 2)) var maxRight = (state.page + Math.ceil(state.window / 2))
@@ -136,7 +131,6 @@ function showTable() {
</td> </td>
` `
} }
table.append(row) table.append(row)
} }
for (var i = myList.length + 1; i <= state.rows; i++) { for (var i = myList.length + 1; i <= state.rows; i++) {
@@ -158,12 +152,13 @@ function showTable() {
} }
table.append(row) table.append(row)
} }
pageButtons(data.pages) pageButtons(data.pages)
} }
function sortTable() { function sortTable() {
var sortBy = document.querySelector('.active').textContent console.log("sortTable");
var sortBy = document.querySelector('.activeButton').textContent;
console.log(sortBy);
switch (sortBy) { switch (sortBy) {
case "MessageId": case "MessageId":
if (previousSort === "MessageId") { if (previousSort === "MessageId") {
@@ -191,6 +186,7 @@ function sortTable() {
previousSort = "" previousSort = ""
} else previousSort = sortBy; } else previousSort = sortBy;
myList = state.querySet; myList = state.querySet;
console.log(myList);
} }
function prepareTable() { function prepareTable() {
@@ -199,6 +195,7 @@ function prepareTable() {
} }
function buildTable() { function buildTable() {
console.log("buildTable");
sortTable(); sortTable();
prepareTable(); prepareTable();
showTable(); showTable();

View File

@@ -11,58 +11,82 @@
</head> </head>
<body> <body>
<hr> <div id="container">
<section class="page-section" id="main-section"> <div id="header"></div>
<div class="row"> <div id="container1">
<div class="column"> <div id="sidebar"></div>
<br>To see your activity history use the form below <div id="child-body">
<form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post"> <section class="page-section" id="main-section">
<input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden /> <div class="row">
<br><label>Mocked response id:</label><br> <div class="column">
<input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" /> <br>To see your activity history use the form below
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId <form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post">
error <input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden />
</td> <br><label>Mocked response id:</label><br>
<br><label>Date from:</label><br> <input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" />
<input type="datetime-local" th:field="*{localDateTimeFrom}"/> <td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom error
Error </td>
</td> <br><label>Date from:</label><br>
<br><label>Date to:</label><br> <input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<input type="datetime-local" th:field="*{localDateTimeTo}"/> <td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo Error
Error </td>
</td> <br><label>Date to:</label><br>
<div th:if="${#fields.hasAnyErrors()}"> <input type="datetime-local" th:field="*{localDateTimeTo}"/>
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p> <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>
<div class="column">
<br>
<table>
<thead>
<tr>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-0">#</p></th>
<th class="tr-pageable"><p class="btn-sort activeButton" id="btn-sort-1">MessageId</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-2">TimeStamp</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-3">Action</p></th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div>
</div> </div>
<input type="submit" value="See my history"/> </section>
</form>
</div>
<div class="column">
<br>
<table>
<thead>
<tr>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-0">#</p></th>
<th class="tr-pageable"><p class="btn-sort active" id="btn-sort-1">MessageId</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-2">TimeStamp</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-3">Action</p></th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div> </div>
</div> </div>
</section> </div>
<div id="foot"></div>
</div>
<hr> <hr>
<script>
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/navbar.html", function(data){
$("#header").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/sidebar.html", function(data){
$("#sidebar").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/footer.html", function(data){
$("#foot").html(data);
});
</script>
<script type="text/javascript" th:inline="javascript"> <script type="text/javascript" th:inline="javascript">
var listForPagination = /*[[${eventList}]]*/; var listForPagination = /*[[${eventList}]]*/;
</script> </script>
<script src="/js/etrackPaggination.js"></script> <script src="/js/etrackPaggination.js"></script>
</body> </body>
</html> </html>

View File

@@ -10,155 +10,178 @@
</head> </head>
<body> <body>
<hr> <hr>
<section class="page-section" id="main-section"> <div id="container">
<div class="container"> <div id="header"></div>
<div class="row"> <div id="container1">
<div class="column"> <div id="sidebar"></div>
<br>In order to set mockup response please fill the form below: <div id="child-body">
<table> <div class="container">
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}" <section class="page-section" id="main-section">
th:object="${mockedMessageDto}" method="post"> <div class="container">
<input type="text" th:field="*{clientUUID}" hidden/> <p>With this tool you can create mockups for http requests and use them for integration tests of your system.</p>
<tr> <div class="row">
<td>Mocked response id:</td> <div class="column">
<td><input type="text" th:field="*{mockedResponseId}" placeholder="1"/></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="30" th:field="*{messageBody}"
placeholder="Your message body"></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}" placeholder="200"></td>
<td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error
</td>
</tr>
<tr> <br>
<td>Header name</td> <p>In order to set mockup response please fill the form below:</p>
<td>Header value</td> <table>
</tr> <form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
<tr> th:object="${mockedMessageDto}" method="post">
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td> <input type="text" th:field="*{clientUUID}" hidden/>
<td> <tr>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/> <td>Mocked response id:</td>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png" <td><input type="text" th:field="*{mockedResponseId}" th:value="*{mockedResponseId}"/></td>
style="width: 20px;"/> <td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">Id
</td> Error
</tr> </td>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff"> </tr>
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td> <tr>
<td> <td>Mocked response body:</td>
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/> <td><textarea rows="4" cols="30" th:field="*{messageBody}"
<button type="submit" name="removeHeader" th:value="${entry.key}"> placeholder="Your message body"></textarea></td>
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/> <td th:if="${#fields.hasErrors('messageBody')}" th:errors="*{messageBody}">Body Error</td>
</button> </tr>
</td> <tr>
</tr> <td>Mocked response http code status:</td>
<tr> <td><input type="text" th:field="*{httpStatus}" placeholder="200"></td>
<td>Media type:</td> <td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error
<td><select th:field="*{mediaType}"> </td>
<option value="application/xml">application/xml</option> </tr>
<option value="application/json">application/json</option>
<option value="text/xml">text/xml</option> <tr>
</select></td> <td>Header name</td>
</tr> <td>Header value</td>
<tr> </tr>
<td><input type="submit" value="Save my message"/></td> <tr>
<td> <td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<button type="submit" name="newMessage" th:value="*{clientUUID}"> <td>
<img src="/img/update-button.png" style="width: 20px;"/> <input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
</button> <input type="image" name="addHeader" src="/img/icons8-plus-48.png"
</td> style="width: 20px;"/>
</tr> </td>
</form> </tr>
</table> <tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<table> <td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<tr> <td>
<td> &#9;
<form action="#" th:action="@{/etrack/__${mockedMessageDto.clientUUID}__}" <input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
th:object="${mockedMessageDto}" <button type="submit" name="removeHeader" th:value="${entry.key}">
method="get"> <img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
<p><input type="submit" value="History"/></p> </button>
</form> </td>
</td> </tr>
<td> <tr>
<form action="#" th:action="@{/home/getMockedResponse}" th:object="${mockedMessageDto}" <td>Media type:</td>
method="get"> <td><select th:field="*{mediaType}">
<input type="text" th:field="*{clientUUID}" hidden/> <option value="application/xml">application/xml</option>
<input type="text" th:field="*{mockedResponseId}" hidden/> <option value="application/json">application/json</option>
<p th:if="${canTest}"><input type="submit" value="Test your mock"/></p> <option value="text/xml">text/xml</option>
</form> </select></td>
</td> </tr>
</tr> <tr>
</table> <td><input type="submit" value="Save my message"/></td>
<p th:if="${mockSaved}">Mock has been saved</p> <td>
<button type="submit" name="newMessage" th:value="*{clientUUID}">
<img src="/img/update-button.png" style="width: 20px;"/>
</button>
</td>
</tr>
</form>
</table>
<table>
<tr>
<td>
<form action="#" th:action="@{/etrack/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}"
method="get">
<p><input type="submit" value="History"/></p>
</form>
</td>
<td>
<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="${canTest}"><input type="submit" value="Test your mock"/></p>
</form>
</td>
</tr>
</table>
<p th:if="${mockSaved}">Mock has been saved</p>
</div>
<div class="column">
<br>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<table>
<thead>
<tr>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-0">#</p>
</th>
<th class="tr-pageable">
<p class="btn-sort activeButton" id="btn-sort-1">MessageId</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-2">Media Type</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-3">Http Status</p>
</th>
</tr>
</thead>
<input type="text" th:field="*{clientUUID}" hidden/>
<tbody id="table-body">
</tbody>
</table>
</form>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div>
</div>
</div>
</section>
<hr>
</div> </div>
<div class="column">
<hr>
<div>
<br>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:
<br><a href="http://[[${localhost}]]:8097/swagger-ui.html">http://[[${localhost}]]:8097/swagger-ui.html</a>
<br> <br>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}" <br>http://[[${localhost}]]:8097/klaus/v1/delete/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
th:object="${mockedMessageDto}" method="post"> <br>http://[[${localhost}]]:8097/klaus/v1/set/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}?httpStatus={httpStatus}
<table> <br>http://[[${localhost}]]:8097/klaus/v1/get/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
<thead> <br>http://[[${localhost}]]:8097/klaus/v1/getAll/[[${mockedMessageDto.clientUUID}]]
<tr>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-0">#</p> </div>
</th> <hr>
<th class="tr-pageable">
<p class="btn-sort active" id="btn-sort-1">MessageId</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-2">Media Type</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-3">Http Status</p>
</th>
</tr>
</thead>
<input type="text" th:field="*{clientUUID}" hidden/>
<tbody id="table-body">
</tbody>
</table>
</form>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
</section> <div id="foot"></div>
<hr>
</div> </div>
<hr>
<div>
<br>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:
<br><a href="http://[[${localhost}]]:8097/swagger-ui.html">http://[[${localhost}]]:8097/swagger-ui.html</a>
<br>
<br>http://[[${localhost}]]:8097/klaus/v1/delete/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
<br>http://[[${localhost}]]:8097/klaus/v1/set/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}?httpStatus={httpStatus}
<br>http://[[${localhost}]]:8097/klaus/v1/get/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
<br>http://[[${localhost}]]:8097/klaus/v1/getAll/[[${mockedMessageDto.clientUUID}]]
</div>
<hr>
<hr>
</div>
</div>
<script type="text/javascript" th:inline="javascript"> <script type="text/javascript" th:inline="javascript">
var listForPagination = /*[[${mockedMessageDtoList}]]*/; var listForPagination = /*[[${mockedMessageDtoList}]]*/;
</script> </script>
<script src="/js/paggination.js"></script> <script src="/js/paggination.js"></script>
<script>
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/navbar.html", function(data){
$("#header").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/sidebar.html", function(data){
$("#sidebar").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/footer.html", function(data){
$("#foot").html(data);
});
</script>
</body> </body>
</html> </html>

View File

@@ -0,0 +1,100 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<div id="container">
<div id="header"></div>
<div id="container1">
<div id="sidebar"></div>
<div id="child-body">
<div class="container">
<div id="content">
<p>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</p>
</div>
<br>
<div id="content1">
<p>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</p>
</div>
<br>
<div id="content2">
<p>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</p>
</div>
<br>
<div id="content3">
<p>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</p>
</div>
</div>
</div>
</div>
<div id="foot"></div>
</div>
<script>
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/navbar.html", function(data){
$("#header").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/sidebar.html", function(data){
$("#sidebar").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/footer.html", function(data){
$("#foot").html(data);
});
</script>
<script>
var list = document.getElementById("parentPage");
<!--list.removeChild(list.childNodes[0]);-->
var table = document.getElementById('parentPage');
var table1 = document.getElementById('parentPage');
console.log(table1);
</script>
</body>
</html>

View File

@@ -203,10 +203,6 @@ class KlausMvcControllerTest {
assert klausMvcController.clientUUID() != null; assert klausMvcController.clientUUID() != null;
} }
@Test
void mockedMessageDto() {
assert klausMvcController.mockedMessageDto() != null;
}
@AfterEach @AfterEach
void afterEach() { void afterEach() {

View File

@@ -18,8 +18,6 @@ import javax.ws.rs.core.MediaType;
import java.util.*; import java.util.*;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
@@ -88,11 +86,11 @@ class KlausServiceImplTest {
@Test @Test
void getAllMockedResponses() { void getAllMockedResponses() {
when(mockedResponseRepository.findAllByClientUUID(any())) // when(mockedResponseRepository.findAllByClientUUID(any()))
.thenReturn(mockedMessageList); // .thenReturn(mockedMessageList);
//
assertThat(klausService.getAllMockedResponses(uuid), hasSize(3)); // assertThat(klausService.getAllMockedResponses(uuid), hasSize(3));
verify(mockedResponseRepository).findAllByClientUUID(any()); // verify(mockedResponseRepository).findAllByClientUUID(any());
} }
@Test @Test

View File

@@ -1,10 +0,0 @@
#environment:
server.port = 8097
spring.application.name = klaus
eureka.client.service-url.defaultZone=http://netflix:eureka@eureka:8761/eureka/
#logging:
spring.output.ansi.enabled = always
logging.level.root=DEBUG
logging.level.org.springframework.web=DEBUG
logging.level.com.release11=DEBUG

View File

@@ -1,10 +0,0 @@
#environment:
server.port = 8097
spring.application.name = klaus
eureka.client.service-url.defaultZone=http://netflix:eureka@eureka:8761/eureka/
#logging:
spring.output.ansi.enabled = always
logging.level.root=INFO
logging.level.org.springframework.web=INFO
logging.level.com.release11=INFO

View File

@@ -1,10 +1,6 @@
#environment: #environment:
eureka.client.service-url.defaultZone=http://netflix:eureka@localhost:8761/eureka/
server.port = 8097 server.port = 8097
spring.application.name = klaus endpoints.env.enabled = false
spring.cloud.discovery.enabled=true
spring.cloud.config.discovery.service-id = klaus-config-service
#spring.cloud.config.fail-fast=true
#spring.cloud.config.username = SpringConfigUsername #spring.cloud.config.username = SpringConfigUsername
#spring.cloud.config.password = SpringConfigPassword #spring.cloud.config.password = SpringConfigPassword
#logging: #logging:
@@ -12,3 +8,8 @@ spring.output.ansi.enabled = always
logging.level.root=INFO logging.level.root=INFO
logging.level.org.springframework.web=INFO logging.level.org.springframework.web=INFO
logging.level.com.release11=INFO logging.level.com.release11=INFO
#operations
release11.mocked-service.controller.delete = false
release11.mocked-service.controller.getAll = false
release11.mocked-service.controller.get = true
release11.mocked-service.controller.set = true

View File

@@ -1,18 +1,13 @@
#environment: #environment:
spring.cloud.discovery.enabled=true
spring.cloud.config.discovery.enabled = true
spring.cloud.config.discovery.service-id = klaus-config-service spring.cloud.config.discovery.service-id = klaus-config-service
spring.cloud.config.fail-fast=true #spring.cloud.config.retry.initial-interval = 1500
spring.cloud.config.retry.initial-interval = 1500 release11.mocked-service.controller.delete = true
spring.cloud.config.retry.multiplier = 1.5 #spring.cloud.config.retry.multiplier = 1.5
spring.cloud.config.retry.max-attempts = 10000 #spring.cloud.config.retry.max-attempts = 10000
spring.cloud.config.retry.max-intervals = 1000 #spring.cloud.config.retry.max-intervals = 1000
#spring.cloud.config.username = SpringConfigUsername #spring.cloud.config.username = SpringConfigUsername
#spring.cloud.config.password = SpringConfigPassword #spring.cloud.config.password = SpringConfigPassword
eureka.instance.preferIpAddress = true eureka.instance.preferIpAddress = true
eureka.instance.hostname = klaus
eureka.client.registerWithEureka = true
eureka.client.fetchRegistry = true

View File

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

View File

@@ -1,3 +1,11 @@
html {
height: 100%;
}
body {
min-height: 100%;
}
.page-section{ .page-section{
padding: 2rem 0; padding: 2rem 0;
@@ -105,7 +113,82 @@ button[name="removeHeader"] {
cursor: pointer; cursor: pointer;
} }
.active { .activeButton {
background-color: rgb(153, 194, 255); background-color: rgb(153, 194, 255);
} }
#child-body{
margin-left: 220px;
}
#container1{
}
#foot {
clear: both;
position: relative;
right: 0;
bottom: 0;
left: 0;
}
/* The side navigation menu */
.sidebar {
margin-top: 100px;
padding-top: 200px;
padding: 0;
width: 200px;
background-color: #f1f1f1;
position: absolute;
height: 100%;
overflow: auto;
}
/* Sidebar links */
.sidebar a {
display: block;
color: black;
padding: 16px;
text-decoration: none;
}
/* Active/current link */
.sidebar a.active {
background-color: #4CAF50;
color: white;
}
/* Links on mouse-over */
.sidebar a:hover:not(.active) {
background-color: #555;
color: white;
}
/* On screens that are less than 700px wide, make the sidebar into a topbar */
@media screen and (max-width: 700px) {
.sidebar {
width: 100%;
height: auto;
position: fixed;
}
.sidebar a {float: left;}
div.content {margin-left: 0;}
}
/* On screens that are less than 400px, display the bar vertically, instead of horizontally */
@media screen and (max-width: 400px) {
.sidebar a {
text-align: center;
float: none;
}
}
table { border-collapse: collapse; }
tr { border: none; }
td {
border: none;
}

View File

@@ -27,9 +27,9 @@ for (let i = 3; i >= 0; i--) {
function addButtonListeners(i) { function addButtonListeners(i) {
var buttons = document.querySelectorAll('.btn-sort'); var buttons = document.querySelectorAll('.btn-sort');
for (var j = buttons.length - 1; j >= 0; j--) { for (var j = buttons.length - 1; j >= 0; j--) {
buttons[j].classList.remove('active'); buttons[j].classList.remove('activeButton');
} }
document.querySelector('#btn-sort-' + i).classList.add('active'); document.querySelector('#btn-sort-' + i).classList.add('activeButton');
buildTable(); buildTable();
} }
@@ -132,7 +132,7 @@ function showTable() {
function sortTable() { function sortTable() {
var sortBy = document.querySelector('.active').textContent var sortBy = document.querySelector('.activeButton').textContent
switch (sortBy) { switch (sortBy) {
case "MessageId": case "MessageId":
if (previousSort === "MessageId") { if (previousSort === "MessageId") {

View File

@@ -14,8 +14,7 @@ var state = {
} }
var myList, data, previousSort; var myList, data, previousSort;
console.log("raz dwa trzy")
state.querySet = listForPagination; state.querySet = listForPagination;
buildTable(); buildTable();
@@ -28,15 +27,13 @@ for (let i = 3; i >= 0; i--) {
function addButtonListeners(i) { function addButtonListeners(i) {
var buttons = document.querySelectorAll('.btn-sort'); var buttons = document.querySelectorAll('.btn-sort');
for (var j = buttons.length - 1; j >= 0; j--) { for (var j = buttons.length - 1; j >= 0; j--) {
buttons[j].classList.remove('active'); buttons[j].classList.remove('activeButton');
} }
document.querySelector('#btn-sort-' + i).classList.add('active'); document.querySelector('#btn-sort-' + i).classList.add('activeButton');
buildTable(); buildTable();
} }
function pagination(querySet, page, rows) { function pagination(querySet, page, rows) {
var trimStart = (page - 1) * rows var trimStart = (page - 1) * rows
var trimEnd = trimStart + rows var trimEnd = trimStart + rows
var trimmedData = querySet.slice(trimStart, trimEnd) var trimmedData = querySet.slice(trimStart, trimEnd)
@@ -48,10 +45,8 @@ function pagination(querySet, page, rows) {
} }
} }
function pageButtons(pages) { function pageButtons(pages) {
var wrapper = document.getElementById('pagination-wrapper'); var wrapper = document.getElementById('pagination-wrapper');
wrapper.innerHTML = ``; wrapper.innerHTML = ``;
var maxLeft = (state.page - Math.floor(state.window / 2)) var maxLeft = (state.page - Math.floor(state.window / 2))
var maxRight = (state.page + Math.ceil(state.window / 2)) var maxRight = (state.page + Math.ceil(state.window / 2))
@@ -136,7 +131,6 @@ function showTable() {
</td> </td>
` `
} }
table.append(row) table.append(row)
} }
for (var i = myList.length + 1; i <= state.rows; i++) { for (var i = myList.length + 1; i <= state.rows; i++) {
@@ -158,12 +152,13 @@ function showTable() {
} }
table.append(row) table.append(row)
} }
pageButtons(data.pages) pageButtons(data.pages)
} }
function sortTable() { function sortTable() {
var sortBy = document.querySelector('.active').textContent console.log("sortTable");
var sortBy = document.querySelector('.activeButton').textContent;
console.log(sortBy);
switch (sortBy) { switch (sortBy) {
case "MessageId": case "MessageId":
if (previousSort === "MessageId") { if (previousSort === "MessageId") {
@@ -191,6 +186,7 @@ function sortTable() {
previousSort = "" previousSort = ""
} else previousSort = sortBy; } else previousSort = sortBy;
myList = state.querySet; myList = state.querySet;
console.log(myList);
} }
function prepareTable() { function prepareTable() {
@@ -199,6 +195,7 @@ function prepareTable() {
} }
function buildTable() { function buildTable() {
console.log("buildTable");
sortTable(); sortTable();
prepareTable(); prepareTable();
showTable(); showTable();

View File

@@ -11,58 +11,82 @@
</head> </head>
<body> <body>
<hr> <div id="container">
<section class="page-section" id="main-section"> <div id="header"></div>
<div class="row"> <div id="container1">
<div class="column"> <div id="sidebar"></div>
<br>To see your activity history use the form below <div id="child-body">
<form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post"> <section class="page-section" id="main-section">
<input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden /> <div class="row">
<br><label>Mocked response id:</label><br> <div class="column">
<input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" /> <br>To see your activity history use the form below
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId <form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post">
error <input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden />
</td> <br><label>Mocked response id:</label><br>
<br><label>Date from:</label><br> <input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" />
<input type="datetime-local" th:field="*{localDateTimeFrom}"/> <td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom error
Error </td>
</td> <br><label>Date from:</label><br>
<br><label>Date to:</label><br> <input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<input type="datetime-local" th:field="*{localDateTimeTo}"/> <td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo Error
Error </td>
</td> <br><label>Date to:</label><br>
<div th:if="${#fields.hasAnyErrors()}"> <input type="datetime-local" th:field="*{localDateTimeTo}"/>
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p> <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>
<div class="column">
<br>
<table>
<thead>
<tr>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-0">#</p></th>
<th class="tr-pageable"><p class="btn-sort activeButton" id="btn-sort-1">MessageId</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-2">TimeStamp</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-3">Action</p></th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div>
</div> </div>
<input type="submit" value="See my history"/> </section>
</form>
</div>
<div class="column">
<br>
<table>
<thead>
<tr>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-0">#</p></th>
<th class="tr-pageable"><p class="btn-sort active" id="btn-sort-1">MessageId</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-2">TimeStamp</p></th>
<th class="tr-pageable"><p class="btn-sort" id="btn-sort-3">Action</p></th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div> </div>
</div> </div>
</section> </div>
<div id="foot"></div>
</div>
<hr> <hr>
<script>
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/navbar.html", function(data){
$("#header").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/sidebar.html", function(data){
$("#sidebar").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/footer.html", function(data){
$("#foot").html(data);
});
</script>
<script type="text/javascript" th:inline="javascript"> <script type="text/javascript" th:inline="javascript">
var listForPagination = /*[[${eventList}]]*/; var listForPagination = /*[[${eventList}]]*/;
</script> </script>
<script src="/js/etrackPaggination.js"></script> <script src="/js/etrackPaggination.js"></script>
</body> </body>
</html> </html>

View File

@@ -10,155 +10,178 @@
</head> </head>
<body> <body>
<hr> <hr>
<section class="page-section" id="main-section"> <div id="container">
<div class="container"> <div id="header"></div>
<div class="row"> <div id="container1">
<div class="column"> <div id="sidebar"></div>
<br>In order to set mockup response please fill the form below: <div id="child-body">
<table> <div class="container">
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}" <section class="page-section" id="main-section">
th:object="${mockedMessageDto}" method="post"> <div class="container">
<input type="text" th:field="*{clientUUID}" hidden/> <p>With this tool you can create mockups for http requests and use them for integration tests of your system.</p>
<tr> <div class="row">
<td>Mocked response id:</td> <div class="column">
<td><input type="text" th:field="*{mockedResponseId}" placeholder="1"/></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="30" th:field="*{messageBody}"
placeholder="Your message body"></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}" placeholder="200"></td>
<td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error
</td>
</tr>
<tr> <br>
<td>Header name</td> <p>In order to set mockup response please fill the form below:</p>
<td>Header value</td> <table>
</tr> <form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
<tr> th:object="${mockedMessageDto}" method="post">
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td> <input type="text" th:field="*{clientUUID}" hidden/>
<td> <tr>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/> <td>Mocked response id:</td>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png" <td><input type="text" th:field="*{mockedResponseId}" th:value="*{mockedResponseId}"/></td>
style="width: 20px;"/> <td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">Id
</td> Error
</tr> </td>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff"> </tr>
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td> <tr>
<td> <td>Mocked response body:</td>
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/> <td><textarea rows="4" cols="30" th:field="*{messageBody}"
<button type="submit" name="removeHeader" th:value="${entry.key}"> placeholder="Your message body"></textarea></td>
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/> <td th:if="${#fields.hasErrors('messageBody')}" th:errors="*{messageBody}">Body Error</td>
</button> </tr>
</td> <tr>
</tr> <td>Mocked response http code status:</td>
<tr> <td><input type="text" th:field="*{httpStatus}" placeholder="200"></td>
<td>Media type:</td> <td th:if="${#fields.hasErrors('httpStatus')}" th:errors="*{httpStatus}">HttpStatus Error
<td><select th:field="*{mediaType}"> </td>
<option value="application/xml">application/xml</option> </tr>
<option value="application/json">application/json</option>
<option value="text/xml">text/xml</option> <tr>
</select></td> <td>Header name</td>
</tr> <td>Header value</td>
<tr> </tr>
<td><input type="submit" value="Save my message"/></td> <tr>
<td> <td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<button type="submit" name="newMessage" th:value="*{clientUUID}"> <td>
<img src="/img/update-button.png" style="width: 20px;"/> <input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
</button> <input type="image" name="addHeader" src="/img/icons8-plus-48.png"
</td> style="width: 20px;"/>
</tr> </td>
</form> </tr>
</table> <tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<table> <td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<tr> <td>
<td> &#9;
<form action="#" th:action="@{/etrack/__${mockedMessageDto.clientUUID}__}" <input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
th:object="${mockedMessageDto}" <button type="submit" name="removeHeader" th:value="${entry.key}">
method="get"> <img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
<p><input type="submit" value="History"/></p> </button>
</form> </td>
</td> </tr>
<td> <tr>
<form action="#" th:action="@{/home/getMockedResponse}" th:object="${mockedMessageDto}" <td>Media type:</td>
method="get"> <td><select th:field="*{mediaType}">
<input type="text" th:field="*{clientUUID}" hidden/> <option value="application/xml">application/xml</option>
<input type="text" th:field="*{mockedResponseId}" hidden/> <option value="application/json">application/json</option>
<p th:if="${canTest}"><input type="submit" value="Test your mock"/></p> <option value="text/xml">text/xml</option>
</form> </select></td>
</td> </tr>
</tr> <tr>
</table> <td><input type="submit" value="Save my message"/></td>
<p th:if="${mockSaved}">Mock has been saved</p> <td>
<button type="submit" name="newMessage" th:value="*{clientUUID}">
<img src="/img/update-button.png" style="width: 20px;"/>
</button>
</td>
</tr>
</form>
</table>
<table>
<tr>
<td>
<form action="#" th:action="@{/etrack/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}"
method="get">
<p><input type="submit" value="History"/></p>
</form>
</td>
<td>
<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="${canTest}"><input type="submit" value="Test your mock"/></p>
</form>
</td>
</tr>
</table>
<p th:if="${mockSaved}">Mock has been saved</p>
</div>
<div class="column">
<br>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<table>
<thead>
<tr>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-0">#</p>
</th>
<th class="tr-pageable">
<p class="btn-sort activeButton" id="btn-sort-1">MessageId</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-2">Media Type</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-3">Http Status</p>
</th>
</tr>
</thead>
<input type="text" th:field="*{clientUUID}" hidden/>
<tbody id="table-body">
</tbody>
</table>
</form>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div>
</div>
</div>
</section>
<hr>
</div> </div>
<div class="column">
<hr>
<div>
<br>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:
<br><a href="http://[[${localhost}]]:8097/swagger-ui.html">http://[[${localhost}]]:8097/swagger-ui.html</a>
<br> <br>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}" <br>http://[[${localhost}]]:8097/klaus/v1/delete/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
th:object="${mockedMessageDto}" method="post"> <br>http://[[${localhost}]]:8097/klaus/v1/set/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}?httpStatus={httpStatus}
<table> <br>http://[[${localhost}]]:8097/klaus/v1/get/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
<thead> <br>http://[[${localhost}]]:8097/klaus/v1/getAll/[[${mockedMessageDto.clientUUID}]]
<tr>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-0">#</p> </div>
</th> <hr>
<th class="tr-pageable">
<p class="btn-sort active" id="btn-sort-1">MessageId</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-2">Media Type</p>
</th>
<th class="tr-pageable">
<p class="btn-sort" id="btn-sort-3">Http Status</p>
</th>
</tr>
</thead>
<input type="text" th:field="*{clientUUID}" hidden/>
<tbody id="table-body">
</tbody>
</table>
</form>
<div class="container ">
<div id="pagination-wrapper"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
</section> <div id="foot"></div>
<hr>
</div> </div>
<hr>
<div>
<br>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:
<br><a href="http://[[${localhost}]]:8097/swagger-ui.html">http://[[${localhost}]]:8097/swagger-ui.html</a>
<br>
<br>http://[[${localhost}]]:8097/klaus/v1/delete/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
<br>http://[[${localhost}]]:8097/klaus/v1/set/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}?httpStatus={httpStatus}
<br>http://[[${localhost}]]:8097/klaus/v1/get/[[${mockedMessageDto.clientUUID}]]/{mockedResponseId}
<br>http://[[${localhost}]]:8097/klaus/v1/getAll/[[${mockedMessageDto.clientUUID}]]
</div>
<hr>
<hr>
</div>
</div>
<script type="text/javascript" th:inline="javascript"> <script type="text/javascript" th:inline="javascript">
var listForPagination = /*[[${mockedMessageDtoList}]]*/; var listForPagination = /*[[${mockedMessageDtoList}]]*/;
</script> </script>
<script src="/js/paggination.js"></script> <script src="/js/paggination.js"></script>
<script>
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/navbar.html", function(data){
$("#header").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/sidebar.html", function(data){
$("#sidebar").html(data);
});
$.get("https://raw.githubusercontent.com/Szakalakamaka/viewpresenter/master/src/main/resources/templates/footer.html", function(data){
$("#foot").html(data);
});
</script>
</body> </body>
</html> </html>

View File

@@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
@Generated( @Generated(
value = "org.mapstruct.ap.MappingProcessor", value = "org.mapstruct.ap.MappingProcessor",
date = "2020-10-28T12:55:15+0100", date = "2020-11-02T15:54:49+0100",
comments = "version: 1.3.1.Final, compiler: javac, environment: Java 14.0.1 (Oracle Corporation)" comments = "version: 1.3.1.Final, compiler: javac, environment: Java 14.0.1 (Oracle Corporation)"
) )
@Component @Component

View File

@@ -1,30 +1,30 @@
com\release11\klaus\config\RedisConfig.class
com\release11\klaus\mappers\MockedMessageMapperImpl.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$EventBuilder.class
com\release11\klaus\model\Event.class com\release11\klaus\model\Event.class
com\release11\klaus\controller\KlausController.class com\release11\klaus\controller\KlausController.class
com\release11\klaus\service\KlausServiceImpl.class com\release11\klaus\service\KlausServiceImpl.class
com\release11\klaus\controller\MvcExceptionHandler.class
com\release11\klaus\KlausApplication.class com\release11\klaus\KlausApplication.class
com\release11\klaus\repository\MockedResponseRepository.class com\release11\klaus\repository\MockedResponseRepository.class
com\release11\klaus\repository\EventRepositoryImpl.class
com\release11\klaus\mappers\MockedMessageMapper.class
com\release11\klaus\service\KlausService.class
com\release11\klaus\service\EtrackService.class
com\release11\klaus\model\MockedMessageDto.class
com\release11\klaus\config\LocalDiscovery.class
com\release11\klaus\model\constraints\HttpCodeValidation.class
com\release11\klaus\utilis\RedisAppender.class
com\release11\klaus\model\MockedMessageDto$MockedMessageDtoBuilder.class
com\release11\klaus\config\RedisConfig.class
com\release11\klaus\model\MockedMessage.class
com\release11\klaus\controller\MvcExceptionHandler.class
com\release11\klaus\model\EventRequestDto$EventRequestDtoBuilder.class com\release11\klaus\model\EventRequestDto$EventRequestDtoBuilder.class
com\release11\klaus\model\EventRequestDto.class com\release11\klaus\model\EventRequestDto.class
com\release11\klaus\utilis\BusinessKey.class com\release11\klaus\utilis\BusinessKey.class
com\release11\klaus\controller\EventController.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\utilis\TrackingClient.class
com\release11\klaus\config\SwaggerConfig.class com\release11\klaus\config\SwaggerConfig.class
com\release11\klaus\service\EtrackServiceImpl.class com\release11\klaus\service\EtrackServiceImpl.class
com\release11\klaus\controller\MainController.class com\release11\klaus\controller\MainController.class
com\release11\klaus\controller\KlausMvcController.class com\release11\klaus\controller\KlausMvcController.class
com\release11\klaus\repository\EventRepository.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\HttpCode.class
com\release11\klaus\config\LocalDiscovery.class
com\release11\klaus\model\constraints\HttpCodeValidation.class
com\release11\klaus\utilis\RedisAppender.class
com\release11\klaus\model\MockedMessageDto$MockedMessageDtoBuilder.class