AttrBundleParam bundle = (AttrBundleParam) actualArgument;
for (Map.Entry<AttributeValidator, Attribute> attr : bundle.getAttrs().entrySet()) {
validatorMap.remove(attr.getKey().getName());
if (attr.getValue().getCondition() != null
&& attr.getKey().isFlagSet(AttributeValidator.Flag.REQUIRED)) {
alertSink.add(new RequiredAttributeHasCondError(call, attr.getValue()));
}
}
}
newAttrBuilder.put(param.getKey(), visitAttribute(param.getValue()));
}
validateAttributeBundles(call, call.getAttrBundles(), validatorMap, allowedAttributes);
Map<String, Attribute> newAttrParams = newAttrBuilder.build();
// check for missing required attributes
for (FormalParameter parameter : callee.getParameters()) {
if (!parameter.hasDefault()) {
if (!newAttrParams.containsKey(parameter.getPrimaryName())) {
alertSink.add(new MissingAttributeError(call, parameter.getPrimaryName()));
} else {
Attribute fpAttribute = call.getAttributes().get(parameter.getPrimaryName());
if (fpAttribute != null && fpAttribute.getCondition() != null) {
alertSink.add(new RequiredAttributeHasCondError(call, fpAttribute));
}
}
}
}