ConditionMatcher instance -> component
This commit is contained in:
@@ -7,4 +7,6 @@ import java.util.Map;
|
||||
|
||||
public interface ConditionMatcher {
|
||||
boolean matches(MockCondition condition, MockRequest request, Map<String, String> pathVariables);
|
||||
|
||||
String getType();
|
||||
}
|
||||
@@ -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<String, String> pathVariables) {
|
||||
return condition.getValue().equals(request.getHeader(condition.getKey()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "header";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String, String> pathVariables) {
|
||||
@@ -17,4 +20,9 @@ public class JsonPathMatcher implements ConditionMatcher {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "jsonpath";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String, String> pathVariables) {
|
||||
return condition.getValue().equals(pathVariables.get(condition.getKey()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "path";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String, String> pathVariables) {
|
||||
return condition.getValue().equals(request.getParam(condition.getKey()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "query";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String, ConditionMatcher> matchers;
|
||||
private final Map<String, ConditionMatcher> matchers;
|
||||
|
||||
|
||||
public MockApiController(MockRouteService mockRouteService) {
|
||||
public MockApiController(MockRouteService mockRouteService, List<ConditionMatcher> 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);
|
||||
|
||||
Reference in New Issue
Block a user