com.networknt.schema.MessageSourceValidationMessage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of json-schema-validator Show documentation
Show all versions of json-schema-validator Show documentation
A json schema validator that supports draft v4, v6, v7, v2019-09 and v2020-12
/*
* Copyright (c) 2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.networknt.schema;
import java.util.Locale;
import java.util.Map;
import java.util.function.BiConsumer;
import com.networknt.schema.i18n.MessageSource;
public class MessageSourceValidationMessage {
public static Builder builder(MessageSource messageSource, Map errorMessage,
BiConsumer observer) {
return new Builder(messageSource, errorMessage, observer);
}
public static class Builder extends BuilderSupport {
public Builder(MessageSource messageSource, Map errorMessage,
BiConsumer observer) {
super(messageSource, errorMessage, observer);
}
@Override
public Builder self() {
return this;
}
}
public abstract static class BuilderSupport extends ValidationMessage.BuilderSupport {
private final BiConsumer observer;
private final MessageSource messageSource;
private final Map errorMessage;
private boolean failFast;
private Locale locale;
public BuilderSupport(MessageSource messageSource, Map errorMessage,
BiConsumer observer) {
this.messageSource = messageSource;
this.observer = observer;
this.errorMessage = errorMessage;
}
@Override
public ValidationMessage build() {
// Use custom error message if present
String messagePattern = null;
if (this.errorMessage != null) {
messagePattern = this.errorMessage.get("");
if (this.property != null) {
String specificMessagePattern = this.errorMessage.get(this.property);
if (specificMessagePattern != null) {
messagePattern = specificMessagePattern;
}
}
this.message = messagePattern;
}
// Default to message source formatter
if (this.message == null && this.messageSupplier == null && this.messageFormatter == null) {
this.messageFormatter = args -> this.messageSource.getMessage(this.messageKey,
this.locale == null ? Locale.ROOT : this.locale, args);
}
ValidationMessage validationMessage = super.build();
if (this.observer != null) {
this.observer.accept(validationMessage, this.failFast);
}
return validationMessage;
}
public S locale(Locale locale) {
this.locale = locale;
return self();
}
public S failFast(boolean failFast) {
this.failFast = failFast;
return self();
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy