From ee859da1a78ca534852333165ddc2a4805a3b1d8 Mon Sep 17 00:00:00 2001 From: Daniel Chang Date: Thu, 29 Aug 2024 13:37:37 -0400 Subject: [PATCH] force observable field to exist (#4616) --- .../controller/dataservice/ModelController.java | 7 +++++++ .../hmiserver/service/data/ModelService.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/controller/dataservice/ModelController.java b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/controller/dataservice/ModelController.java index 3a1ad89094..c73970f028 100644 --- a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/controller/dataservice/ModelController.java +++ b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/controller/dataservice/ModelController.java @@ -255,6 +255,13 @@ ResponseEntity getModel( log.debug("Unable to get the, or empty, provenance search models_from_document for model " + id); } + // Force observable to empty-list if null or not specified + if (model.get().getSemantics() != null) { + if (model.get().getSemantics().getOde().getObservables() == null) { + model.get().getSemantics().getOde().setObservables(new ArrayList()); + } + } + // Return the model return ResponseEntity.ok(model.get()); } catch (final Exception e) { diff --git a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/ModelService.java b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/ModelService.java index 04b140c713..a8ca116a46 100644 --- a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/ModelService.java +++ b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/ModelService.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.micrometer.observation.annotation.Observed; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -159,6 +160,13 @@ public Model createAsset(final Model asset, final UUID projectId, final Schema.P }); } + // Force observable to empty-list if null or not specified + if (asset.getSemantics() != null) { + if (asset.getSemantics().getOde().getObservables() == null) { + asset.getSemantics().getOde().setObservables(new ArrayList()); + } + } + if (asset.getHeader() != null && asset.getHeader().getName() != null) { asset.setName(asset.getHeader().getName()); } @@ -197,6 +205,14 @@ public Optional updateAsset( if (asset.getHeader() != null && asset.getHeader().getName() != null) { asset.setName(asset.getHeader().getName()); } + + // Force observable to empty-list if null or not specified + if (asset.getSemantics() != null) { + if (asset.getSemantics().getOde().getObservables() == null) { + asset.getSemantics().getOde().setObservables(new ArrayList()); + } + } + final Optional updatedOptional = super.updateAsset(asset, projectId, hasWritePermission); if (updatedOptional.isEmpty()) { return Optional.empty();