Override getRecordsWithNotBlankFieldValues for non-String fields (#90)
* Override getRecordsWithNotBlankFieldValues in fflib_SObjects2 The base fflib_SObjects implementation casts every value to String, which throws a TypeException on Date/Datetime/Number/Lookup fields. This override generalises the check to "any non-null value, and for Strings also non-blank" so the helper works for every field type. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Update fflib_SObjects2.cls Rename method to getRecordsWithNonBlankFieldValues * Update fflib_SObjects2Test.cls Rename method to getRecordsWithNonBlankFieldValues * Update fflib_SObjects2.cls Rename variable Co-authored-by: Robin Weymans <robin.weymans@mylighthouse.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: William Velzeboer <6429417+wimvelzeboer@users.noreply.github.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
Robin Weymans
William Velzeboer
parent
368978bf20
commit
94129a9791
@@ -1078,6 +1078,29 @@ public virtual class fflib_SObjects2
|
||||
return getRecordsNotIn(sObjectField, new Set<String>{ value });
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides the fflib_SObjects base implementation, which casts every value to `String` and
|
||||
* uses `String.isNotBlank` — that throws a TypeException on Date / Datetime / Number / Lookup
|
||||
* fields. This override generalises to "any non-null value, and for Strings also non-blank",
|
||||
* so the helper works for every field type.
|
||||
*
|
||||
* @param field The field to check.
|
||||
*
|
||||
* @return The records whose value for `field` is non-null (and, for Strings, non-blank).
|
||||
*/
|
||||
protected override List<SObject> getRecordsWithNonBlankFieldValues(Schema.SObjectField sObjectField)
|
||||
{
|
||||
List<SObject> result = new List<SObject>();
|
||||
for (SObject record : getRecords())
|
||||
{
|
||||
Object value = record.get(sObjectField);
|
||||
if (value == null) continue;
|
||||
if (value instanceof String && String.isBlank((String) value)) continue;
|
||||
result.add(record);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@TestVisible
|
||||
protected virtual List<SObject> getRecordsNotIn(Schema.SObjectField sObjectField, Set<String> values)
|
||||
{
|
||||
@@ -1455,4 +1478,4 @@ public virtual class fflib_SObjects2
|
||||
}
|
||||
|
||||
public class DeveloperException extends Exception { }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user