diff --git a/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcher.java b/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcher.java index daa80d9..44cfe97 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcher.java @@ -9,4 +9,6 @@ public interface ConditionMatcher { boolean matches(MockCondition condition, MockRequest request, Map pathVariables); String getType(); + + String getDisplayName(); } \ No newline at end of file diff --git a/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcherService.java b/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcherService.java new file mode 100644 index 0000000..09fa05f --- /dev/null +++ b/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcherService.java @@ -0,0 +1,29 @@ +package com.eactive.httpmockserver.api.condition; + +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service(value = "ConditionMatcherService") +public class ConditionMatcherService { + + private final Map matchers; + + private final List matchersList; + + public ConditionMatcherService(List matchersList) { + this.matchersList = matchersList; + this.matchers = this.matchersList.stream().collect(Collectors.toMap(ConditionMatcher::getType, Function.identity())); + } + + public ConditionMatcher getMatcher(String key) { + return matchers.get(key); + } + + public List getMatchersList() { + return matchersList; + } +} diff --git a/src/main/java/com/eactive/httpmockserver/api/condition/HeaderMatcher.java b/src/main/java/com/eactive/httpmockserver/api/condition/HeaderMatcher.java index dea40bc..87e2760 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/HeaderMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/HeaderMatcher.java @@ -17,4 +17,9 @@ public class HeaderMatcher implements ConditionMatcher { public String getType() { return "header"; } + + @Override + public String getDisplayName() { + return "Header"; + } } diff --git a/src/main/java/com/eactive/httpmockserver/api/condition/JsonPathMatcher.java b/src/main/java/com/eactive/httpmockserver/api/condition/JsonPathMatcher.java index 92e3a7d..b161757 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/JsonPathMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/JsonPathMatcher.java @@ -25,4 +25,9 @@ public class JsonPathMatcher implements ConditionMatcher { public String getType() { return "jsonpath"; } + + @Override + public String getDisplayName() { + return "JSON Path"; + } } diff --git a/src/main/java/com/eactive/httpmockserver/api/condition/PathMatcher.java b/src/main/java/com/eactive/httpmockserver/api/condition/PathMatcher.java index 5525dc3..9be3173 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/PathMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/PathMatcher.java @@ -17,4 +17,10 @@ public class PathMatcher implements ConditionMatcher { public String getType() { return "path"; } + + + @Override + public String getDisplayName() { + return "Path"; + } } diff --git a/src/main/java/com/eactive/httpmockserver/api/condition/QueryMatcher.java b/src/main/java/com/eactive/httpmockserver/api/condition/QueryMatcher.java index aa4c4e7..5c4003d 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/QueryMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/QueryMatcher.java @@ -18,4 +18,9 @@ public class QueryMatcher implements ConditionMatcher { public String getType() { return "query"; } + + @Override + public String getDisplayName() { + return "Query"; + } } diff --git a/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java b/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java index 7b70afb..4079cd8 100644 --- a/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java +++ b/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java @@ -1,6 +1,7 @@ package com.eactive.httpmockserver.api.controller; -import com.eactive.httpmockserver.api.condition.*; +import com.eactive.httpmockserver.api.condition.ConditionMatcher; +import com.eactive.httpmockserver.api.condition.ConditionMatcherService; import com.eactive.httpmockserver.api.dto.MockRequest; import com.eactive.httpmockserver.api.entity.MockCondition; import com.eactive.httpmockserver.api.entity.MockResponse; @@ -18,19 +19,18 @@ import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; import java.util.stream.Collectors; @RestController public class MockApiController { private final MockRouteService mockRouteService; - private final Map matchers; - public MockApiController(MockRouteService mockRouteService, List matchersList) { + private final ConditionMatcherService conditionMatcherService; + + public MockApiController(MockRouteService mockRouteService, ConditionMatcherService conditionMatcherService) { this.mockRouteService = mockRouteService; - this.matchers = matchersList.stream().collect(Collectors.toMap(ConditionMatcher::getType, Function.identity())); + this.conditionMatcherService = conditionMatcherService; } private static final Logger logger = LoggerFactory.getLogger(MockApiController.class); @@ -107,7 +107,7 @@ public class MockApiController { } for (MockCondition condition : conditions) { - ConditionMatcher matcher = matchers.get(condition.getType().toLowerCase()); + ConditionMatcher matcher = conditionMatcherService.getMatcher(condition.getType().toLowerCase()); if (matcher != null && !matcher.matches(condition, request, pathVariables)) { return false; } diff --git a/src/main/resources/templates/page/routes/mockRouteEdit.html b/src/main/resources/templates/page/routes/mockRouteEdit.html index 73ccfbe..db807c6 100644 --- a/src/main/resources/templates/page/routes/mockRouteEdit.html +++ b/src/main/resources/templates/page/routes/mockRouteEdit.html @@ -58,11 +58,8 @@
  • - + @@ -164,11 +161,8 @@ - +