From f5ff368c2441ea12d67004749e766bfe8f850486 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Fri, 15 Aug 2025 16:34:32 -0700 Subject: [PATCH 1/4] Log exceptions so we get a stack trace --- .../snprc_scheduler/services/SNPRC_schedulerServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/snprc_scheduler/src/org/labkey/snprc_scheduler/services/SNPRC_schedulerServiceImpl.java b/snprc_scheduler/src/org/labkey/snprc_scheduler/services/SNPRC_schedulerServiceImpl.java index c74bb1bfd..779ae927e 100644 --- a/snprc_scheduler/src/org/labkey/snprc_scheduler/services/SNPRC_schedulerServiceImpl.java +++ b/snprc_scheduler/src/org/labkey/snprc_scheduler/services/SNPRC_schedulerServiceImpl.java @@ -1,5 +1,6 @@ package org.labkey.snprc_scheduler.services; +import org.apache.logging.log4j.Logger; import org.json.JSONArray; import org.json.JSONObject; import org.labkey.api.action.ApiUsageException; @@ -17,6 +18,7 @@ import org.labkey.api.security.User; import org.labkey.api.snd.SNDService; import org.labkey.api.snprc_scheduler.SNPRC_schedulerService; +import org.labkey.api.util.logging.LogHelper; import org.labkey.snprc_scheduler.SNPRC_schedulerManager; import org.labkey.snprc_scheduler.SNPRC_schedulerSchema; import org.labkey.snprc_scheduler.SNPRC_schedulerUserSchema; @@ -36,6 +38,8 @@ */ public class SNPRC_schedulerServiceImpl implements SNPRC_schedulerService { + private static final Logger LOG = LogHelper.getLogger(SNPRC_schedulerServiceImpl.class, "Timeline errors"); + public static final SNPRC_schedulerServiceImpl INSTANCE = new SNPRC_schedulerServiceImpl(); private SNPRC_schedulerServiceImpl() @@ -306,6 +310,7 @@ public JSONObject saveTimelineData(Container c, User u, JSONObject json, BatchVa } catch (RuntimeException e) { + LOG.error("Exception saving timeline data", e); errors.addRowError(new ValidationException(e.getMessage())); } } From 6c25c2ac9976decde5552002aa44b6f8ffe2883e Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Fri, 15 Aug 2025 19:02:20 -0700 Subject: [PATCH 2/4] Fix --- .../org/labkey/snprc_scheduler/SNPRC_schedulerManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java b/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java index f3d5ddd89..ad9225e9e 100644 --- a/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java +++ b/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java @@ -43,6 +43,8 @@ import java.util.Map; import java.util.Set; +import static org.labkey.api.exp.api.ExperimentService.asInteger; + public class SNPRC_schedulerManager { private static final SNPRC_schedulerManager _instance = new SNPRC_schedulerManager(); @@ -547,7 +549,7 @@ public void updateTimelineItems(Container c, User u, List timeline if (insertedRow != null) { timelineItem.setObjectId((String) insertedRow.get(0).get(TimelineItem.TIMELINEITEM_OBJECT_ID)); - timelineItem.setTimelineItemId((Integer) insertedRow.get(0).get(TimelineItem.TIMELINEITEM_TIMELINE_ITEM_ID)); + timelineItem.setTimelineItemId(asInteger(insertedRow.get(0).get(TimelineItem.TIMELINEITEM_TIMELINE_ITEM_ID))); timelineItem.setDirty(false); } From 2bdfba32715a007f75ecc6bd7ae721d9605651a3 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Fri, 15 Aug 2025 21:23:48 -0700 Subject: [PATCH 3/4] Fix another Integer cast --- .../snprc_scheduler/SNPRC_schedulerManager.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java b/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java index ad9225e9e..d7e0c0b75 100644 --- a/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java +++ b/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java @@ -818,17 +818,14 @@ public void updateTimelineAnimalItems(@NotNull Container c, @NotNull User u, @No timelineAnimalItem.setObjectId(new GUID().toString()); timelineAnimalItemRows.add(timelineAnimalItem.toMap(c)); - if (!timelineAnimalItemRows.isEmpty()) - { - List> insertedRow = qus.insertRows(u, c, timelineAnimalItemRows, errors, null, null); + List> insertedRow = qus.insertRows(u, c, timelineAnimalItemRows, errors, null, null); - // add updated values returned from db call - if (insertedRow != null) - { - timelineAnimalItem.setObjectId((String) insertedRow.get(0).get(TimelineAnimalJunction.TIMELINE_ANIMAL_JUNCTION_OBJECT_ID)); - timelineAnimalItem.setRowId((Integer) insertedRow.get(0).get(TimelineAnimalJunction.TIMELINE_ANIMAL_JUNCTION_ROW_ID)); - timelineAnimalItem.setDirty(false); - } + // add updated values returned from db call + if (insertedRow != null) + { + timelineAnimalItem.setObjectId((String) insertedRow.get(0).get(TimelineAnimalJunction.TIMELINE_ANIMAL_JUNCTION_OBJECT_ID)); + timelineAnimalItem.setRowId(asInteger(insertedRow.get(0).get(TimelineAnimalJunction.TIMELINE_ANIMAL_JUNCTION_ROW_ID))); + timelineAnimalItem.setDirty(false); } } // delete existing row From 3b8cb01c1523c31f95462752d81f5a3b5065b150 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Sat, 16 Aug 2025 07:49:37 -0700 Subject: [PATCH 4/4] One more cast removal that isn't flagged by the tests --- .../src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java b/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java index d7e0c0b75..bcfa91bab 100644 --- a/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java +++ b/snprc_scheduler/src/org/labkey/snprc_scheduler/SNPRC_schedulerManager.java @@ -738,7 +738,7 @@ public void updateTimelineProjectItems(Container c, User u, List