Our org uses a mix of a variety of open source packages including bluewolf-beyond/selector
This is a nifty package that allows construction of sobject list filters using a builder pattern that is more readable and reusable than classic Apex.
For example (here, in an fflib domain method for Assets.cls):
private List<SObject> getCancelledAssets(Map<Id,Sobject> existingRecords) {
Select.Filter hasCancelledStatusFilter =
Select.Field.isEqual(Asset.Status, 'Cancelled');
if (existingRecords != null) {
return Select.Field.hasChanged(Asset.Status)
.andX(hasCancelledStatusFilter)
.filter(Records,existingRecords);
}
else {
return hasCancelledStatusFilter.filter(Records);
}
}
When running this, the developer got this stacktrace :
System.NullPointerException
LineNumber:39
Message:Attempt to de-reference a null object
Stacktrace:Class.Select.FieldReference.SchemaFieldReference.getFrom: line 39, column 1
Class.Select.FieldChangedPredicate.evaluate: line 22, column 1
Class.Select.AndPredicate.evaluate: line 51, column 1
...
What could be the reason?