AggregateRule[] aggregateRules = indexingConfig.getAggregateRules();
if (aggregateRules == null) {
return;
}
try {
ItemStateManager ism = getContext().getItemStateManager();
for (int i = 0; i < aggregateRules.length; i++) {
boolean ruleMatched = false;
// node includes
NodeState[] aggregates = aggregateRules[i].getAggregatedNodeStates(state);
if (aggregates != null) {
ruleMatched = true;
for (int j = 0; j < aggregates.length; j++) {
Document aDoc = createDocument(aggregates[j],
getNamespaceMappings(),
index.getIndexFormatVersion());
// transfer fields to doc if there are any
Fieldable[] fulltextFields = aDoc.getFieldables(FieldNames.FULLTEXT);
if (fulltextFields != null) {
for (int k = 0; k < fulltextFields.length; k++) {
doc.add(fulltextFields[k]);
}
doc.add(new Field(FieldNames.AGGREGATED_NODE_UUID,
aggregates[j].getNodeId().getUUID().toString(),
Field.Store.NO,
Field.Index.NOT_ANALYZED_NO_NORMS));
}
}
}
// property includes
PropertyState[] propStates = aggregateRules[i].getAggregatedPropertyStates(state);
if (propStates != null) {
ruleMatched = true;
for (int j = 0; j < propStates.length; j++) {
PropertyState propState = propStates[j];
String namePrefix = FieldNames.createNamedValue(
getNamespaceMappings().translateName(propState.getName()), "");
NodeState parent = (NodeState) ism.getItemState(propState.getParentId());
Document aDoc = createDocument(parent, getNamespaceMappings(), getIndex().getIndexFormatVersion());
try {
// find the right fields to transfer
Fieldable[] fields = aDoc.getFieldables(FieldNames.PROPERTIES);
Token t = new Token();