diff --git a/build.gradle b/build.gradle index e84b386..68741a5 100644 --- a/build.gradle +++ b/build.gradle @@ -8,6 +8,8 @@ group = 'com.eactive' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' +compileJava.options.encoding = 'MS949' + repositories { mavenCentral() } @@ -15,7 +17,6 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springframework.boot:spring-boot-starter-web-services' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/com/eactive/httpmockserver/ApiController.java b/src/main/java/com/eactive/httpmockserver/ApiController.java index 5a9f7b1..090c209 100644 --- a/src/main/java/com/eactive/httpmockserver/ApiController.java +++ b/src/main/java/com/eactive/httpmockserver/ApiController.java @@ -34,7 +34,8 @@ public class ApiController { private ApiService apiService; @SuppressWarnings("deprecation") - @RequestMapping(value = "/mock-api/**") + //@RequestMapping(value = "/mock-api/**") + @RequestMapping(value = "/{_:^(?!plugins|dist|favicon.ico).*$}/**") public ResponseEntity mockApi(HttpEntity httpEntity, HttpServletRequest request, HttpServletResponse response) { logger.debug("=================================================="); @@ -71,7 +72,25 @@ public class ApiController { String.format("Method(%s) not allowed", request.getMethod())); } } - + + // sleep + if(api.getSleepSeconds() != null) { + int sleepSeconds = api.getSleepSeconds().intValue(); + if (sleepSeconds > 0) { + try { + System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); + System.out.println(String.format("Start Sleep %d Seconds.", sleepSeconds)); + System.out.println("..."); + Thread.sleep(sleepSeconds * 1000); + System.out.println("......"); + System.out.println(String.format("Finished Sleep %d Seconds.", sleepSeconds)); + System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + HttpHeaders responseHeaders = new HttpHeaders(); if (StringUtils.isNotBlank(api.getResponseContentType())) { responseHeaders.setContentType(MediaType.parseMediaType(api.getResponseContentType())); @@ -80,8 +99,15 @@ public class ApiController { } assignResponseHeaders(responseHeaders, api.getResponseHeaders()); + + // status code + int responseStatusCode = 200; + if (api.getResponseStatusCode() != null) { + responseStatusCode = api.getResponseStatusCode().intValue(); + System.out.println("Response Status Code=" + responseStatusCode); + } - return new ResponseEntity(assignResponseBody(api), responseHeaders, HttpStatus.OK); + return new ResponseEntity(assignResponseBody(api), responseHeaders, responseStatusCode); } private String assignServiceValue(HttpEntity httpEntity, HttpServletRequest request, String url) { diff --git a/src/main/java/com/eactive/httpmockserver/ApiInfo.java b/src/main/java/com/eactive/httpmockserver/ApiInfo.java index b401613..46e5474 100644 --- a/src/main/java/com/eactive/httpmockserver/ApiInfo.java +++ b/src/main/java/com/eactive/httpmockserver/ApiInfo.java @@ -10,7 +10,9 @@ import javax.persistence.Id; import javax.persistence.Index; import javax.persistence.Table; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.Digits; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Positive; @SuppressWarnings("serial") @Entity @@ -46,6 +48,12 @@ public class ApiInfo implements Serializable { @Column(length = 5000) private String responseHeaders; + @Digits(fraction = 0, integer = 3) + private Integer responseStatusCode; + + @Positive + private Integer sleepSeconds; + @Column(length = 5000) private String responseBody1; @@ -116,6 +124,22 @@ public class ApiInfo implements Serializable { this.responseHeaders = responseHeaders; } + public Integer getResponseStatusCode() { + return responseStatusCode; + } + + public void setResponseStatusCode(Integer responseStatusCode) { + this.responseStatusCode = responseStatusCode; + } + + public Integer getSleepSeconds() { + return sleepSeconds; + } + + public void setSleepSeconds(Integer sleepSeconds) { + this.sleepSeconds = sleepSeconds; + } + public String getResponseBody1() { return responseBody1; } @@ -136,7 +160,8 @@ public class ApiInfo implements Serializable { public String toString() { return "ApiInfo [id=" + id + ", apiGroupName=" + apiGroupName + ", apiName=" + apiName + ", url=" + url + ", serviceValue=" + serviceValue + ", method=" + method + ", responseContentType=" - + responseContentType + ", responseHeaders=" + responseHeaders + ", responseBody1=" + responseBody1 + + responseContentType + ", responseHeaders=" + responseHeaders + ", responseStatusCode=" + + responseStatusCode + ", sleepSeconds=" + sleepSeconds + ", responseBody1=" + responseBody1 + ", responseBody2=" + responseBody2 + "]"; } } diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico new file mode 100644 index 0000000..1380a92 Binary files /dev/null and b/src/main/resources/static/favicon.ico differ diff --git a/src/main/resources/templates/page/add-edit-api.html b/src/main/resources/templates/page/add-edit-api.html index 95f4d11..9977941 100644 --- a/src/main/resources/templates/page/add-edit-api.html +++ b/src/main/resources/templates/page/add-edit-api.html @@ -129,6 +129,30 @@ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+