From deb53dade222a0c02342e29ac84afa1dfea6ef59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=98=84=EC=84=B1=ED=95=84?= Date: Wed, 23 Aug 2023 11:20:04 +0900 Subject: [PATCH] ConditionMatcher instance -> component --- .../api/condition/ConditionMatcher.java | 2 ++ .../httpmockserver/api/condition/HeaderMatcher.java | 7 +++++++ .../api/condition/JsonPathMatcher.java | 8 ++++++++ .../httpmockserver/api/condition/PathMatcher.java | 7 +++++++ .../httpmockserver/api/condition/QueryMatcher.java | 8 ++++++++ .../api/controller/MockApiController.java | 13 ++++--------- 6 files changed, 36 insertions(+), 9 deletions(-) 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 52fa579..daa80d9 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/ConditionMatcher.java @@ -7,4 +7,6 @@ import java.util.Map; public interface ConditionMatcher { boolean matches(MockCondition condition, MockRequest request, Map pathVariables); + + String getType(); } \ No newline at end of file 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 f988b0f..dea40bc 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/HeaderMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/HeaderMatcher.java @@ -2,12 +2,19 @@ package com.eactive.httpmockserver.api.condition; import com.eactive.httpmockserver.api.dto.MockRequest; import com.eactive.httpmockserver.api.entity.MockCondition; +import org.springframework.stereotype.Component; import java.util.Map; +@Component public class HeaderMatcher implements ConditionMatcher { @Override public boolean matches(MockCondition condition, MockRequest request, Map pathVariables) { return condition.getValue().equals(request.getHeader(condition.getKey())); } + + @Override + public String getType() { + 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 35f021b..92e3a7d 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/JsonPathMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/JsonPathMatcher.java @@ -4,9 +4,12 @@ import com.eactive.httpmockserver.api.dto.MockRequest; import com.eactive.httpmockserver.api.entity.MockCondition; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; +import org.springframework.stereotype.Component; import java.util.Map; + +@Component public class JsonPathMatcher implements ConditionMatcher { @Override public boolean matches(MockCondition condition, MockRequest request, Map pathVariables) { @@ -17,4 +20,9 @@ public class JsonPathMatcher implements ConditionMatcher { return false; } } + + @Override + public String getType() { + return "jsonpath"; + } } 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 0207da1..5525dc3 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/PathMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/PathMatcher.java @@ -2,12 +2,19 @@ package com.eactive.httpmockserver.api.condition; import com.eactive.httpmockserver.api.dto.MockRequest; import com.eactive.httpmockserver.api.entity.MockCondition; +import org.springframework.stereotype.Component; import java.util.Map; +@Component public class PathMatcher implements ConditionMatcher { @Override public boolean matches(MockCondition condition, MockRequest request, Map pathVariables) { return condition.getValue().equals(pathVariables.get(condition.getKey())); } + + @Override + public String getType() { + 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 91103db..aa4c4e7 100644 --- a/src/main/java/com/eactive/httpmockserver/api/condition/QueryMatcher.java +++ b/src/main/java/com/eactive/httpmockserver/api/condition/QueryMatcher.java @@ -2,12 +2,20 @@ package com.eactive.httpmockserver.api.condition; import com.eactive.httpmockserver.api.dto.MockRequest; import com.eactive.httpmockserver.api.entity.MockCondition; +import org.springframework.stereotype.Component; import java.util.Map; + +@Component public class QueryMatcher implements ConditionMatcher { @Override public boolean matches(MockCondition condition, MockRequest request, Map pathVariables) { return condition.getValue().equals(request.getParam(condition.getKey())); } + + @Override + public String getType() { + 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 47f0b4e..7b70afb 100644 --- a/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java +++ b/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java @@ -19,23 +19,18 @@ 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; - Map matchers; + private final Map matchers; - - public MockApiController(MockRouteService mockRouteService) { + public MockApiController(MockRouteService mockRouteService, List matchersList) { this.mockRouteService = mockRouteService; - this.matchers = new ConcurrentHashMap<>(); - matchers.put("query", new QueryMatcher()); - matchers.put("path", new PathMatcher()); - matchers.put("header", new HeaderMatcher()); - matchers.put("jsonpath", new JsonPathMatcher()); - + this.matchers = matchersList.stream().collect(Collectors.toMap(ConditionMatcher::getType, Function.identity())); } private static final Logger logger = LoggerFactory.getLogger(MockApiController.class);