/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.elasticsearch.schema.impl;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
final class ValidationErrorCollector {
private final Deque<ValidationContextElement> currentContext = new ArrayDeque<ValidationContextElement>();
private final Map<ValidationContext, List<String>> messagesByContext = new LinkedHashMap<>();
public void push(ValidationContextType contextType, String name) {
this.currentContext.addLast( new ValidationContextElement( contextType, name ) );
}
public void pop() {
this.currentContext.removeLast();
}
public void addError(String errorMessage) {
ValidationContext context = new ValidationContext( currentContext );
List<String> messages = messagesByContext.get( context );
if ( messages == null ) {
messages = new ArrayList<>();
messagesByContext.put( context, messages );
}
messages.add( errorMessage );
}
/**
* @return The collected messages mapped by their context.
*/
public Map<ValidationContext, List<String>> getMessagesByContext() {
return messagesByContext;
}
}