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

org.mockserver.model.PathModifier Maven / Gradle / Ivy

package org.mockserver.model;

import com.fasterxml.jackson.annotation.JsonIgnore;

import java.util.Objects;
import java.util.regex.Pattern;

import static org.mockserver.model.NottableString.string;

public class PathModifier extends ObjectWithJsonToString {

    private int hashCode;
    private String regex;
    @JsonIgnore
    private Pattern pattern;
    private String substitution;

    public String getRegex() {
        return regex;
    }

    /**
     * 

* The regex value to use to modify matching substrings, if multiple matches are found they will all be modified with the substitution * for full details of supported regex syntax see: http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html *

*

* If a null or empty substitution string is provided the regex pattern will be used to remove any substring matching the regex *

*

* For example: *

*
     * regex: ^/(.+)/(.+)$
     * substitution: /prefix/$1/infix/$2/postfix
     * then: /some/path => /prefix/some/infix/path/postfix
     * or: /some/longer/path => /prefix/some/infix/longer/path/postfix
     * 
* * @param regex regex value to match on */ public PathModifier withRegex(String regex) { this.regex = regex; this.hashCode = 0; return this; } public String getSubstitution() { return substitution; } /** *

* The pattern to substitute for the matched regex, matching groups are supported using $ followed by the group number for example $1 *

*

* If a null or empty substitution string is provided the regex pattern will be used to remove any substring matching the regex *

* * @param substitution the value to substitute for the regex */ public PathModifier withSubstitution(String substitution) { this.substitution = substitution; this.hashCode = 0; return this; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (hashCode() != o.hashCode()) { return false; } if (!super.equals(o)) { return false; } PathModifier that = (PathModifier) o; return Objects.equals(regex, that.regex) && Objects.equals(substitution, that.substitution); } @Override public int hashCode() { if (hashCode == 0) { hashCode = Objects.hash(super.hashCode(), regex, substitution); } return hashCode; } @JsonIgnore private Pattern getPattern() { if (pattern == null && regex != null) { pattern = Pattern.compile(regex); } return pattern; } public NottableString update(NottableString path) { return string(update(path.getValue()), path.isNot()); } public String update(String path) { Pattern pattern = getPattern(); if (pattern != null) { if (substitution != null) { return pattern.matcher(path).replaceAll(substitution); } else { return pattern.matcher(path).replaceAll(""); } } return path; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy