- 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 name="ChangeListManager">
<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$/src/main/resources/application-DEV.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-DEV.properties" 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$/Klaus.iml" beforeDir="false" afterPath="$PROJECT_DIR$/Klaus.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/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.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/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>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -45,9 +82,9 @@
<option name="RECENT_TEMPLATES">
<list>
<option value="Interface" />
<option value="HTML File" />
<option value="Class" />
<option value="JUnit5 Test Class" />
<option value="HTML File" />
</list>
</option>
</component>
@@ -80,7 +117,7 @@
<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.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="settings.editor.selected.configurable" value="MavenSettings" />
</component>
@@ -268,20 +305,6 @@
<option name="presentableId" value="Default" />
<updated>1598862102028</updated>
</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">
<created>1601300573031</created>
<option name="number" value="00061" />
@@ -611,7 +634,21 @@
<option name="project" value="LOCAL" />
<updated>1603883796526</updated>
</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 />
</component>
<component name="UnknownFeatures">
@@ -631,7 +668,6 @@
</component>
<component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="sort buttons for etrack" />
<MESSAGE value="js small fixes" />
<MESSAGE value="js fix sort paggination, show body for etrack" />
<MESSAGE value="changing events describtion" />
@@ -656,7 +692,8 @@
<MESSAGE value="updating cloud settings" />
<MESSAGE value="testing config service" />
<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 name="WindowStateProjectService">
<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="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 width="1877" height="317" key="GridCell.Tab.0.bottom" timestamp="1603886417381">
<screen x="1920" y="0" width="1920" height="1160" />
<state width="1493" height="49" key="GridCell.Tab.0.bottom" timestamp="1604412796289">
<screen x="0" y="0" width="1536" height="824" />
</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="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="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="1877" height="317" key="GridCell.Tab.0.center" timestamp="1603886417381">
<screen x="1920" y="0" width="1920" height="1160" />
<state width="1493" height="49" key="GridCell.Tab.0.center" timestamp="1604412796288">
<screen x="0" y="0" width="1536" height="824" />
</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="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="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="1877" height="317" key="GridCell.Tab.0.left" timestamp="1603886417381">
<screen x="1920" y="0" width="1920" height="1160" />
<state width="1493" height="49" key="GridCell.Tab.0.left" timestamp="1604412796287">
<screen x="0" y="0" width="1536" height="824" />
</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="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="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="1877" height="317" key="GridCell.Tab.0.right" timestamp="1603886417381">
<screen x="1920" y="0" width="1920" height="1160" />
<state width="1493" height="49" key="GridCell.Tab.0.right" timestamp="1604412796288">
<screen x="0" y="0" width="1536" height="824" />
</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="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="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="1877" height="297" key="GridCell.Tab.1.bottom" timestamp="1602672852817">
<screen x="1920" y="0" width="1920" height="1160" />
@@ -786,27 +827,28 @@
</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@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" />
</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="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="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 width="968" height="528" key="XDebugger.FullValuePopup" timestamp="1602076898344">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<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">
<screen x="1920" y="0" width="1920" height="1040" />
<state x="2595" y="262" key="com.intellij.testIntegration.createTest.CreateTestDialog" timestamp="1604313748925">
<screen x="1920" y="0" width="1920" height="1160" />
</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="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" />
</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="209" y="33" key="new project wizard" timestamp="1601969134275">
<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="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="2459" y="183" width="840" height="856" key="search.everywhere.popup" timestamp="1599855564520">
<screen x="1920" y="0" width="1920" height="1040" />
<state x="2459" y="204" width="840" height="955" key="search.everywhere.popup" timestamp="1603984139797">
<screen x="1920" y="0" width="1920" height="1160" />
</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="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" />
</component>
</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:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
@@ -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-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-context:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.7.RELEASE" level="project" />
@@ -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:spring-tx:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.3.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.50.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.50.Final" level="project" />
@@ -191,5 +187,12 @@
<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: 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>
</module>

View File

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

View File

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

View File

@@ -7,6 +7,7 @@ import com.release11.klaus.utilis.TrackingClient;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.net.InetAddress;
import java.time.LocalDateTime;
import java.util.*;
@Slf4j
@@ -23,6 +25,7 @@ import java.util.*;
@AllArgsConstructor
public class KlausMvcController {
private final KlausService klausService;
private static MockedMessageDto globalMockedMessageDto = new MockedMessageDto();
private final Set<MockedMessageDto> globalMockedMessageDtoList = new HashSet<>();
@SneakyThrows
@@ -32,38 +35,38 @@ public class KlausMvcController {
@PathVariable(required = false) UUID uuid) {
if (uuid != null) clientUUID = uuid;
if (clientUUID != null) mockedMessageDto.setClientUUID(clientUUID);
populateModelWithLists(model, mockedMessageDto,true);
else mockedMessageDto.setClientUUID(UUID.randomUUID());
populateModelVars(model, mockedMessageDto,true);
return "index";
}
@PostMapping("/home/{uuid}")
public String showHomePost(@Valid final MockedMessageDto mockedMessageDto, BindingResult bindingResult,
final Model model) {
public String showHomePost(@Valid MockedMessageDto mockedMessageDto, BindingResult bindingResult, Model model) {
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
if (bindingResult.hasErrors()){
populateModelWithLists(model, mockedMessageDto,false);
populateModelVars(model, mockedMessageDto,false);
return "index";
}
klausService.setMockedResponse(mockedMessageDto);
populateModelWithLists(model, mockedMessageDto,true);
populateModelVars(model, mockedMessageDto,true);
model.addAttribute("mockSaved", "true");
model.addAttribute("canTest", "true");
return "index";
}
@PostMapping(value="/home/{uuid}", params={"newMessage"})
public String newMessage(final Model model, @RequestParam UUID clientUUID) {
public String newMessage(Model model, @RequestParam UUID clientUUID) {
MockedMessageDto mockedMessageDto = new MockedMessageDto(clientUUID, new LinkedHashMap<>());
populateModelWithLists(model, mockedMessageDto, true);
populateModelVars(model, mockedMessageDto, true);
model.addAttribute("mockedMessageDto", mockedMessageDto);
return "index";
}
@GetMapping("/home/getMockedResponse")
@ResponseBody
public String showGetMockedResponse(final MockedMessageDto mockedMessageDto) {
public String showGetMockedResponse(MockedMessageDto mockedMessageDto) {
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse",
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
@@ -72,37 +75,37 @@ public class KlausMvcController {
}
@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) {
populateModelWithLists(model, mockedMessageDto,false);
populateModelVars(model, mockedMessageDto,false);
mockedMessageDto.getHttpHeaders().put(headerKey, headerValue);
return "index";
}
@PostMapping(value="/home/{uuid}", params={"removeHeader"})
public String removeHeader(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) {
populateModelWithLists(model, mockedMessageDto,false);
public String removeHeader(MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) {
populateModelVars(model, mockedMessageDto,false);
mockedMessageDto.getHttpHeaders().remove(req.getParameter("removeHeader"));
return "index";
}
@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(),
Integer.parseInt(req.getParameter("updateMessage"))));
populateModelWithLists(model, mockedMessageDto, false);
model.addAttribute("canTest", "true");
return "index";
}
@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",
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
BusinessKey.MESSAGE_ID, String.valueOf(Integer.parseInt(req.getParameter("removeMessage")))));
klausService.deleteMockedResponse(mockedMessageDto.getClientUUID(),
Integer.parseInt(req.getParameter("removeMessage")));
populateModelWithLists(model, mockedMessageDto, true);
populateModelVars(model, mockedMessageDto, true);
return "index";
}
@@ -117,17 +120,47 @@ public class KlausMvcController {
return UUID.randomUUID();
}
@ModelAttribute("mockedMessageDto")
public MockedMessageDto mockedMessageDto() {
return new MockedMessageDto(UUID.randomUUID(), new LinkedHashMap<>());
public void getModelMockedMessageDto(Model model, MockedMessageDto mockedMessageDto) {
System.out.println(mockedMessageDto);
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){
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);
getModelMockedMessageDto(model, mockedMessageDto);
}
}

View File

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

View File

@@ -20,7 +20,6 @@ import java.util.stream.Collectors;
@Service
@AllArgsConstructor
public class KlausServiceImpl implements KlausService {
private final MockedMessageMapper mockedMessageMapper;
private final MockedResponseRepository mockedResponseRepository;
@@ -45,7 +44,7 @@ public class KlausServiceImpl implements KlausService {
MockedMessageDto mockedMessageDto = new MockedMessageDto();
if (optionalMockedMessage.isPresent()) {
mockedMessageDto = mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get());
log.info(mockedMessageDto.toString());
log.info(mockedMessageDto.toString().replaceAll("\"","\\\""));
return mockedMessageDto;
}
log.info(mockedMessageDto.toString());
@@ -55,7 +54,7 @@ public class KlausServiceImpl implements KlausService {
@Override
public ResponseEntity<String> setMockedResponse(MockedMessageDto 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(),
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:
server.port = 8097
endpoints.env.enabled = false
#spring.cloud.config.username = SpringConfigUsername
#spring.cloud.config.password = SpringConfigPassword
#logging:
@@ -7,3 +8,8 @@ spring.output.ansi.enabled = always
logging.level.root=INFO
logging.level.org.springframework.web=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:
spring.cloud.config.discovery.service-id = klaus-config-service
spring.cloud.config.fail-fast=true
#spring.cloud.config.retry.initial-interval = 1500
release11.mocked-service.controller.delete = true
#spring.cloud.config.retry.multiplier = 1.5
#spring.cloud.config.retry.max-attempts = 10000
#spring.cloud.config.retry.max-intervals = 1000

View File

@@ -1,13 +1,12 @@
spring:
profiles:
active: DEV
# profiles:
# active: DEV
application:
name: klaus
cloud:
spring:
cloud:
config:
fail-fast: false
uri: http://s5000xvn.zipper.release11.com:8888
retry:
max-attempts: 20
@@ -22,4 +21,4 @@ eureka:
register-with-eureka: true
fetch-registry: true
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"/>
<!--https://github.com/kmtong/logback-redis-appender-->
<appender name="LOGSTASH" class="com.release11.klaus.utilis.RedisAppender">
<host>redis</host>
<host>localhost</host>
<port>6379</port>
<key>logstash</key>
<layout class="ch.qos.logback.classic.PatternLayout">

View File

@@ -1,3 +1,11 @@
html {
height: 100%;
}
body {
min-height: 100%;
}
.page-section{
padding: 2rem 0;
@@ -105,7 +113,82 @@ button[name="removeHeader"] {
cursor: pointer;
}
.active {
.activeButton {
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) {
var buttons = document.querySelectorAll('.btn-sort');
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();
}
@@ -132,7 +132,7 @@ function showTable() {
function sortTable() {
var sortBy = document.querySelector('.active').textContent
var sortBy = document.querySelector('.activeButton').textContent
switch (sortBy) {
case "MessageId":
if (previousSort === "MessageId") {

View File

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

View File

@@ -11,58 +11,82 @@
</head>
<body>
<hr>
<section class="page-section" id="main-section">
<div class="row">
<div class="column">
<br>To see your activity history use the form below
<form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden />
<br><label>Mocked response id:</label><br>
<input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" />
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId
error
</td>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom
Error
</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo
Error
</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
<div id="container">
<div id="header"></div>
<div id="container1">
<div id="sidebar"></div>
<div id="child-body">
<section class="page-section" id="main-section">
<div class="row">
<div class="column">
<br>To see your activity history use the form below
<form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden />
<br><label>Mocked response id:</label><br>
<input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" />
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId
error
</td>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom
Error
</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo
Error
</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
<input type="submit" value="See my history"/>
</form>
</div>
<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>
<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 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>
</section>
</div>
</div>
</section>
</div>
<div id="foot"></div>
</div>
<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">
var listForPagination = /*[[${eventList}]]*/;
</script>
<script src="/js/etrackPaggination.js"></script>
</body>
</html>

View File

@@ -10,155 +10,178 @@
</head>
<body>
<hr>
<section class="page-section" id="main-section">
<div class="container">
<div class="row">
<div class="column">
<br>In order to set mockup response please fill the form below:
<table>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<input type="text" th:field="*{clientUUID}" hidden/>
<tr>
<td>Mocked response id:</td>
<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>
<div id="container">
<div id="header"></div>
<div id="container1">
<div id="sidebar"></div>
<div id="child-body">
<div class="container">
<section class="page-section" id="main-section">
<div class="container">
<p>With this tool you can create mockups for http requests and use them for integration tests of your system.</p>
<div class="row">
<div class="column">
<tr>
<td>Header name</td>
<td>Header value</td>
</tr>
<tr>
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<td>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png"
style="width: 20px;"/>
</td>
</tr>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<td>
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
<button type="submit" name="removeHeader" th:value="${entry.key}">
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
</button>
</td>
</tr>
<tr>
<td>Media type:</td>
<td><select th:field="*{mediaType}">
<option value="application/xml">application/xml</option>
<option value="application/json">application/json</option>
<option value="text/xml">text/xml</option>
</select></td>
</tr>
<tr>
<td><input type="submit" value="Save my message"/></td>
<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>
<br>
<p>In order to set mockup response please fill the form below:</p>
<table>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<input type="text" th:field="*{clientUUID}" hidden/>
<tr>
<td>Mocked response id:</td>
<td><input type="text" th:field="*{mockedResponseId}" th:value="*{mockedResponseId}"/></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>
<td>Header name</td>
<td>Header value</td>
</tr>
<tr>
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<td>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png"
style="width: 20px;"/>
</td>
</tr>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<td>
&#9;
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
<button type="submit" name="removeHeader" th:value="${entry.key}">
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
</button>
</td>
</tr>
<tr>
<td>Media type:</td>
<td><select th:field="*{mediaType}">
<option value="application/xml">application/xml</option>
<option value="application/json">application/json</option>
<option value="text/xml">text/xml</option>
</select></td>
</tr>
<tr>
<td><input type="submit" value="Save my message"/></td>
<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 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>
<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 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>
<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>
</div>
</div>
</div>
</section>
<hr>
<div id="foot"></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">
var listForPagination = /*[[${mockedMessageDtoList}]]*/;
</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>
</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;
}
@Test
void mockedMessageDto() {
assert klausMvcController.mockedMessageDto() != null;
}
@AfterEach
void afterEach() {

View File

@@ -18,8 +18,6 @@ import javax.ws.rs.core.MediaType;
import java.util.*;
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.Mockito.*;
@@ -88,11 +86,11 @@ class KlausServiceImplTest {
@Test
void getAllMockedResponses() {
when(mockedResponseRepository.findAllByClientUUID(any()))
.thenReturn(mockedMessageList);
assertThat(klausService.getAllMockedResponses(uuid), hasSize(3));
verify(mockedResponseRepository).findAllByClientUUID(any());
// when(mockedResponseRepository.findAllByClientUUID(any()))
// .thenReturn(mockedMessageList);
//
// assertThat(klausService.getAllMockedResponses(uuid), hasSize(3));
// verify(mockedResponseRepository).findAllByClientUUID(any());
}
@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:
eureka.client.service-url.defaultZone=http://netflix:eureka@localhost:8761/eureka/
server.port = 8097
spring.application.name = klaus
spring.cloud.discovery.enabled=true
spring.cloud.config.discovery.service-id = klaus-config-service
#spring.cloud.config.fail-fast=true
endpoints.env.enabled = false
#spring.cloud.config.username = SpringConfigUsername
#spring.cloud.config.password = SpringConfigPassword
#logging:
@@ -12,3 +8,8 @@ spring.output.ansi.enabled = always
logging.level.root=INFO
logging.level.org.springframework.web=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:
spring.cloud.discovery.enabled=true
spring.cloud.config.discovery.enabled = true
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.multiplier = 1.5
spring.cloud.config.retry.max-attempts = 10000
spring.cloud.config.retry.max-intervals = 1000
#spring.cloud.config.retry.initial-interval = 1500
release11.mocked-service.controller.delete = true
#spring.cloud.config.retry.multiplier = 1.5
#spring.cloud.config.retry.max-attempts = 10000
#spring.cloud.config.retry.max-intervals = 1000
#spring.cloud.config.username = SpringConfigUsername
#spring.cloud.config.password = SpringConfigPassword
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"/>
<!--https://github.com/kmtong/logback-redis-appender-->
<appender name="LOGSTASH" class="com.release11.klaus.utilis.RedisAppender">
<host>redis</host>
<host>localhost</host>
<port>6379</port>
<key>logstash</key>
<layout class="ch.qos.logback.classic.PatternLayout">

View File

@@ -1,3 +1,11 @@
html {
height: 100%;
}
body {
min-height: 100%;
}
.page-section{
padding: 2rem 0;
@@ -105,7 +113,82 @@ button[name="removeHeader"] {
cursor: pointer;
}
.active {
.activeButton {
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) {
var buttons = document.querySelectorAll('.btn-sort');
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();
}
@@ -132,7 +132,7 @@ function showTable() {
function sortTable() {
var sortBy = document.querySelector('.active').textContent
var sortBy = document.querySelector('.activeButton').textContent
switch (sortBy) {
case "MessageId":
if (previousSort === "MessageId") {

View File

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

View File

@@ -11,58 +11,82 @@
</head>
<body>
<hr>
<section class="page-section" id="main-section">
<div class="row">
<div class="column">
<br>To see your activity history use the form below
<form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden />
<br><label>Mocked response id:</label><br>
<input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" />
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId
error
</td>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom
Error
</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo
Error
</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
<div id="container">
<div id="header"></div>
<div id="container1">
<div id="sidebar"></div>
<div id="child-body">
<section class="page-section" id="main-section">
<div class="row">
<div class="column">
<br>To see your activity history use the form below
<form action="#" th:action="@{/etrack/__${clientUUID}__}" th:object="${eventRequestDto}" method="post">
<input type="text" th:name="clientUUID" th:value="${clientUUID}" hidden />
<br><label>Mocked response id:</label><br>
<input type="text" th:name="mockedResponseId" th:id="mockedResponseId" th:placeholder="all" />
<td th:if="${#fields.hasErrors('mockedResponseId')}" th:errors="*{mockedResponseId}">mockedResponseId
error
</td>
<br><label>Date from:</label><br>
<input type="datetime-local" th:field="*{localDateTimeFrom}"/>
<td th:if="${#fields.hasErrors('localDateTimeFrom')}" th:errors="*{localDateTimeFrom}">localDateTimeFrom
Error
</td>
<br><label>Date to:</label><br>
<input type="datetime-local" th:field="*{localDateTimeTo}"/>
<td th:if="${#fields.hasErrors('localDateTimeTo')}" th:errors="*{localDateTimeTo}">localDateTimeTo
Error
</td>
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
<input type="submit" value="See my history"/>
</form>
</div>
<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>
<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 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>
</section>
</div>
</div>
</section>
</div>
<div id="foot"></div>
</div>
<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">
var listForPagination = /*[[${eventList}]]*/;
</script>
<script src="/js/etrackPaggination.js"></script>
</body>
</html>

View File

@@ -10,155 +10,178 @@
</head>
<body>
<hr>
<section class="page-section" id="main-section">
<div class="container">
<div class="row">
<div class="column">
<br>In order to set mockup response please fill the form below:
<table>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<input type="text" th:field="*{clientUUID}" hidden/>
<tr>
<td>Mocked response id:</td>
<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>
<div id="container">
<div id="header"></div>
<div id="container1">
<div id="sidebar"></div>
<div id="child-body">
<div class="container">
<section class="page-section" id="main-section">
<div class="container">
<p>With this tool you can create mockups for http requests and use them for integration tests of your system.</p>
<div class="row">
<div class="column">
<tr>
<td>Header name</td>
<td>Header value</td>
</tr>
<tr>
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<td>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png"
style="width: 20px;"/>
</td>
</tr>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<td>
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
<button type="submit" name="removeHeader" th:value="${entry.key}">
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
</button>
</td>
</tr>
<tr>
<td>Media type:</td>
<td><select th:field="*{mediaType}">
<option value="application/xml">application/xml</option>
<option value="application/json">application/json</option>
<option value="text/xml">text/xml</option>
</select></td>
</tr>
<tr>
<td><input type="submit" value="Save my message"/></td>
<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>
<br>
<p>In order to set mockup response please fill the form below:</p>
<table>
<form action="#" th:action="@{/home/__${mockedMessageDto.clientUUID}__}"
th:object="${mockedMessageDto}" method="post">
<input type="text" th:field="*{clientUUID}" hidden/>
<tr>
<td>Mocked response id:</td>
<td><input type="text" th:field="*{mockedResponseId}" th:value="*{mockedResponseId}"/></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>
<td>Header name</td>
<td>Header value</td>
</tr>
<tr>
<td><input type="text" name="headerKey" id="headerKey" placeholder="myHeaderKey"/></td>
<td>
<input type="text" name="headerValue" id="headerValue" placeholder="myHeaderValue"/>
<input type="image" name="addHeader" src="/img/icons8-plus-48.png"
style="width: 20px;"/>
</td>
</tr>
<tr th:each="entry, stats : *{httpHeaders}" bgcolor="#b3ffff">
<td><input type="text" name="value" th:value="${entry.key}" disabled="disabled"/></td>
<td>
&#9;
<input type="text" name="value" th:field="*{httpHeaders[__${entry.key}__]}"/>
<button type="submit" name="removeHeader" th:value="${entry.key}">
<img src="/img/icons8-cancel-64.png" style="width: 20px;"/>
</button>
</td>
</tr>
<tr>
<td>Media type:</td>
<td><select th:field="*{mediaType}">
<option value="application/xml">application/xml</option>
<option value="application/json">application/json</option>
<option value="text/xml">text/xml</option>
</select></td>
</tr>
<tr>
<td><input type="submit" value="Save my message"/></td>
<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 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>
<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 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>
<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>
</div>
</div>
</div>
</section>
<hr>
<div id="foot"></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">
var listForPagination = /*[[${mockedMessageDtoList}]]*/;
</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>
</html>

View File

@@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
@Generated(
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)"
)
@Component

View File

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