All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mockserver.matchers.HashMapMatcher Maven / Gradle / Ivy

package org.mockserver.matchers;

import org.mockserver.collections.CaseInsensitiveRegexHashMap;
import org.mockserver.logging.MockServerLogger;
import org.mockserver.model.HttpRequest;
import org.mockserver.model.KeysAndValues;

/**
 * @author jamesdbloom
 */
public class HashMapMatcher extends NotMatcher {

    private final MockServerLogger mockServerLogger;
    private final CaseInsensitiveRegexHashMap hashMap;

    public HashMapMatcher(MockServerLogger mockServerLogger, KeysAndValues keysAndValues) {
        this.mockServerLogger = mockServerLogger;
        if (keysAndValues != null) {
            this.hashMap = keysAndValues.toCaseInsensitiveRegexMultiMap();
        } else {
            this.hashMap = null;
        }
    }

    public boolean matches(final HttpRequest context, KeysAndValues values) {
        boolean result = false;

        if (hashMap == null || hashMap.isEmpty() || values == null) {
            result = true;
        } else if (values.toCaseInsensitiveRegexMultiMap().containsAll(hashMap)) {
            result = true;
        } else {
            mockServerLogger.trace(context, "Map [{}] is not a subset of {}", this.hashMap, values);
        }

        return not != result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy