// creating the custom array reader
InternalReadAccessor arrayReader = new SelfReferenceClassFieldReader( Object[].class,
"this" );
int index = 0;
Pattern pattern = (Pattern) context.getBuildStack().peek();
for ( AccumulateFunctionCallDescr func : functions ) {
// build an external function executor
AccumulateFunction function = context.getConfiguration().getAccumulateFunction( func.getFunction() );
if( function == null ) {
// might have been imported in the package
function = context.getKnowledgeBuilder().getPackage().getAccumulateFunctions().get(func.getFunction());
}
if ( function == null ) {
context.addError( new DescrBuildError( accumDescr,
context.getRuleDescr(),
null,
"Unknown accumulate function: '" + func.getFunction() + "' on rule '" + context.getRuleDescr().getName()
+ "'. All accumulate functions must be registered before building a resource." ) );
return null;
}
// if there is a binding, create the binding
if ( func.getBind() != null ) {
if ( pattern.getDeclaration( func.getBind() ) != null ) {
context.addError(new DescrBuildError(context.getParentDescr(),
accumDescr,
null,
"Duplicate declaration for variable '" + func.getBind() + "' in the rule '" + context.getRule().getName() + "'"));
} else {