List of usage examples for org.apache.lucene.util.automaton Operations concatenate
static public Automaton concatenate(Automaton a1, Automaton a2)
From source file:org.elasticsearch.xpack.core.security.authz.permission.FieldPermissions.java
License:Open Source License
private static Automaton initializePermittedFieldsAutomaton(final String[] grantedFields, final String[] deniedFields) { Automaton grantedFieldsAutomaton;//from ww w .j a v a 2 s.c o m if (grantedFields == null || Arrays.stream(grantedFields).anyMatch(Regex::isMatchAllPattern)) { grantedFieldsAutomaton = Automatons.MATCH_ALL; } else { // an automaton that includes metadata fields, including join fields created by the _parent field such // as _parent#type Automaton metaFieldsAutomaton = Operations.concatenate(Automata.makeChar('_'), Automata.makeAnyString()); grantedFieldsAutomaton = Operations.union(Automatons.patterns(grantedFields), metaFieldsAutomaton); } Automaton deniedFieldsAutomaton; if (deniedFields == null || deniedFields.length == 0) { deniedFieldsAutomaton = Automatons.EMPTY; } else { deniedFieldsAutomaton = Automatons.patterns(deniedFields); } grantedFieldsAutomaton = MinimizationOperations.minimize(grantedFieldsAutomaton, Operations.DEFAULT_MAX_DETERMINIZED_STATES); deniedFieldsAutomaton = MinimizationOperations.minimize(deniedFieldsAutomaton, Operations.DEFAULT_MAX_DETERMINIZED_STATES); if (subsetOf(deniedFieldsAutomaton, grantedFieldsAutomaton) == false) { throw new ElasticsearchSecurityException("Exceptions for field permissions must be a subset of the " + "granted fields but " + Strings.arrayToCommaDelimitedString(deniedFields) + " is not a subset of " + Strings.arrayToCommaDelimitedString(grantedFields)); } grantedFieldsAutomaton = Automatons.minusAndMinimize(grantedFieldsAutomaton, deniedFieldsAutomaton); return grantedFieldsAutomaton; }