mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Avoid NPE; just noop
This commit is contained in:
@ -93,7 +93,13 @@ public class DateTimeDisplayValueBehavior implements FieldDisplayBehavior<DateTi
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Instant instant = record.getValueInstant(field.getName());
|
Instant instant = record.getValueInstant(field.getName());
|
||||||
|
|
||||||
|
if(instant == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of(defaultZoneId));
|
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of(defaultZoneId));
|
||||||
record.setDisplayValue(field.getName(), QValueFormatter.formatDateTimeWithZone(zonedDateTime));
|
record.setDisplayValue(field.getName(), QValueFormatter.formatDateTimeWithZone(zonedDateTime));
|
||||||
}
|
}
|
||||||
@ -115,8 +121,13 @@ public class DateTimeDisplayValueBehavior implements FieldDisplayBehavior<DateTi
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Instant instant = record.getValueInstant(field.getName());
|
Instant instant = record.getValueInstant(field.getName());
|
||||||
String zoneString = record.getValueString(zoneIdFromFieldName);
|
if(instant == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String zoneString = record.getValueString(zoneIdFromFieldName);
|
||||||
|
|
||||||
ZoneId zoneId = null;
|
ZoneId zoneId = null;
|
||||||
if(StringUtils.hasContent(zoneString))
|
if(StringUtils.hasContent(zoneString))
|
||||||
@ -131,7 +142,7 @@ public class DateTimeDisplayValueBehavior implements FieldDisplayBehavior<DateTi
|
|||||||
// we probably(?) don't need a stack trace here (and it could get noisy?), so just info w/ the exception message... //
|
// we probably(?) don't need a stack trace here (and it could get noisy?), so just info w/ the exception message... //
|
||||||
// and we expect this might be somewhat frequent, if you might have invalid values in your zoneId field... //
|
// and we expect this might be somewhat frequent, if you might have invalid values in your zoneId field... //
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
LOG.info("Exception applying zoneIdFromFieldName behavior", logPair("message", e.getMessage()), logPair("table", table.getName()), logPair("field", field.getName()), logPair("id", record.getValue(table.getPrimaryKeyField())));
|
LOG.info("Exception applying zoneIdFromFieldName behavior", logPair("message", e.getMessage()), logPair("table", table.getName()), logPair("field", field.getName()), logPair("id", record.getValue(table.getPrimaryKeyField())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,6 +101,7 @@ class DateTimeDisplayValueBehaviorTest extends BaseTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -124,6 +125,25 @@ class DateTimeDisplayValueBehaviorTest extends BaseTest
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
void testNullValue()
|
||||||
|
{
|
||||||
|
QInstance qInstance = QContext.getQInstance();
|
||||||
|
QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY);
|
||||||
|
|
||||||
|
table.withField(new QFieldMetaData("timeZone", QFieldType.STRING));
|
||||||
|
table.getField("createDate").withBehavior(new DateTimeDisplayValueBehavior().withZoneIdFromFieldName("timeZone"));
|
||||||
|
|
||||||
|
QRecord record = new QRecord().withValue("createDate", null).withValue("timeZone", "UTC");
|
||||||
|
ValueBehaviorApplier.applyFieldBehaviors(ValueBehaviorApplier.Action.FORMATTING, qInstance, table, List.of(record), null);
|
||||||
|
assertNull(record.getDisplayValue("createDate"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -131,8 +151,8 @@ class DateTimeDisplayValueBehaviorTest extends BaseTest
|
|||||||
void testValidation()
|
void testValidation()
|
||||||
{
|
{
|
||||||
QInstance qInstance = QContext.getQInstance();
|
QInstance qInstance = QContext.getQInstance();
|
||||||
QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY);
|
QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY);
|
||||||
QFieldMetaData field = table.getField("createDate");
|
QFieldMetaData field = table.getField("createDate");
|
||||||
table.withField(new QFieldMetaData("timeZone", QFieldType.STRING));
|
table.withField(new QFieldMetaData("timeZone", QFieldType.STRING));
|
||||||
|
|
||||||
Function<Consumer<DateTimeDisplayValueBehavior>, List<String>> testOne = setup ->
|
Function<Consumer<DateTimeDisplayValueBehavior>, List<String>> testOne = setup ->
|
||||||
|
Reference in New Issue
Block a user