jimblackler / jsonschemafriend

A JSON Schema loader and validator, delivered as a Java library.
Apache License 2.0
49 stars 23 forks source link

Regular expression validation with CachedRegExPatternSupplier #72

Open QEnvelope opened 5 months ago

QEnvelope commented 5 months ago

Hi, would it be possible to replace CachedRegExPatternSupplier.map by a synchronized map? Or define custom supplier implements RegExPatternSupplier is recommended?


import java.util.WeakHashMap;

public class CachedRegExPatternSupplier implements RegExPatternSupplier {
  private final RegExPatternSupplier wrapped;
  private final WeakHashMap<String, RegExPattern> map = new WeakHashMap<>();

  public CachedRegExPatternSupplier(RegExPatternSupplier wrapped) {
    this.wrapped = wrapped;
  }

  @Override
  public RegExPattern newPattern(String pattern) throws InvalidRegexException {
    RegExPattern regExPattern1 = map.get(pattern);
    if (regExPattern1 == null) {
      regExPattern1 = wrapped.newPattern(pattern);
      map.put(pattern, regExPattern1);
    }
    return regExPattern1;
  }
}

Thanks!