in resolver/src/main/java/org/apache/james/jspf/parser/RFC4408SPF1Parser.java [161:216]
private void initializePositions() {
ArrayList<TermDefinition> matchResultPositions = new ArrayList<TermDefinition>();
// FULL MATCH
int posIndex = 0;
matchResultPositions.ensureCapacity(posIndex + 1);
matchResultPositions.add(posIndex, null);
Iterator<TermDefinition> i;
TERM_STEP_REGEX_MODIFIER_POS = ++posIndex;
matchResultPositions.ensureCapacity(posIndex + 1);
matchResultPositions.add(TERM_STEP_REGEX_MODIFIER_POS, null);
i = termsFactory.getModifiersCollection().iterator();
while (i.hasNext()) {
TermDefinition td = i.next();
int size = td.getMatchSize() + 1;
for (int k = 0; k < size; k++) {
posIndex++;
matchResultPositions.ensureCapacity(posIndex + 1);
matchResultPositions.add(posIndex, td);
}
}
TERM_STEP_REGEX_QUALIFIER_POS = ++posIndex;
matchResultPositions.ensureCapacity(posIndex + 1);
matchResultPositions.add(posIndex, null);
TERM_STEP_REGEX_MECHANISM_POS = ++posIndex;
matchResultPositions.ensureCapacity(posIndex + 1);
matchResultPositions.add(TERM_STEP_REGEX_MECHANISM_POS, null);
i = termsFactory.getMechanismsCollection().iterator();
while (i.hasNext()) {
TermDefinition td = i.next();
int size = td.getMatchSize() + 1;
for (int k = 0; k < size; k++) {
posIndex++;
matchResultPositions.ensureCapacity(posIndex + 1);
matchResultPositions.add(posIndex, td);
}
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Parsing catch group positions: Modifiers[{}] Qualifier[{}] Mechanism[{}]",
TERM_STEP_REGEX_MODIFIER_POS, TERM_STEP_REGEX_QUALIFIER_POS, TERM_STEP_REGEX_MECHANISM_POS);
for (int k = 0; k < matchResultPositions.size(); k++) {
LOGGER
.debug("{}) {}", k,
(matchResultPositions.get(k) != null ? ((TermDefinition) matchResultPositions
.get(k)).getPattern().pattern()
: null));
}
}
this.matchResultPositions = Collections.synchronizedList(matchResultPositions);
}