From 6957c6f27ef8a15ae11727e68cde58c40eda0676 Mon Sep 17 00:00:00 2001 From: timtay-microsoft Date: Wed, 28 Oct 2020 15:30:48 -0700 Subject: [PATCH] Fixed issue in digital twins sample in deserializing into offsetDateTime OffsetDateTime wasn't be deserialized into correctly because the mapper saw the property as a string. It isn't ideal, but defining the type in our DigitalTwinPropertyMetadata as a String instead of an OffsetDateTime at least lets our sample run as expected. Also make the BasicDigitalTwinMetadata's property metadata map contain DigitalTwinPropertyMetadata values instead of object values --- .../core/BasicDigitalTwinMetadata.java | 6 +++--- .../core/DigitalTwinPropertyMetadata.java | 14 +++++++++++--- .../digitaltwins/core/ComponentSyncSamples.java | 1 + 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/BasicDigitalTwinMetadata.java b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/BasicDigitalTwinMetadata.java index 4eeb513d2a6a..963dd912e9d7 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/BasicDigitalTwinMetadata.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/BasicDigitalTwinMetadata.java @@ -25,7 +25,7 @@ public final class BasicDigitalTwinMetadata { private String modelId; @JsonIgnore - private final Map propertyMetadata = new HashMap<>(); + private final Map propertyMetadata = new HashMap<>(); /** * Creates an instance of digital twin metadata. @@ -56,7 +56,7 @@ public BasicDigitalTwinMetadata setModelId(String modelId) { * @return The metadata about changes on properties on a component. */ @JsonAnyGetter - public Map getPropertyMetadata() { + public Map getPropertyMetadata() { return propertyMetadata; } @@ -68,7 +68,7 @@ public Map getPropertyMetadata() { * @return The BasicDigitalTwin object itself. */ @JsonAnySetter - public BasicDigitalTwinMetadata addPropertyMetadata(String key, Object value) { + public BasicDigitalTwinMetadata addPropertyMetadata(String key, DigitalTwinPropertyMetadata value) { this.propertyMetadata.put(key, value); return this; } diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinPropertyMetadata.java b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinPropertyMetadata.java index fca1389b51f6..ef0e22f10b7c 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinPropertyMetadata.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinPropertyMetadata.java @@ -13,13 +13,13 @@ */ public class DigitalTwinPropertyMetadata { @JsonProperty(value = DigitalTwinsJsonPropertyNames.METADATA_PROPERTY_LAST_UPDATE_TIME, required = true) - private OffsetDateTime lastUpdatedOn; + private String lastUpdatedOn; /** * Gets the date and time the property was last updated. * @return The date and time the property was last updated. */ - public OffsetDateTime getLastUpdatedOn() { + public String getLastUpdatedOn() { return lastUpdatedOn; } @@ -28,8 +28,16 @@ public OffsetDateTime getLastUpdatedOn() { * @param lastUpdatedOn The date and time the property was last updated. * @return The DigitalTwinPropertyMetadata object itself. */ - public DigitalTwinPropertyMetadata setLastUpdatedOn(OffsetDateTime lastUpdatedOn) { + public DigitalTwinPropertyMetadata setLastUpdatedOn(String lastUpdatedOn) { this.lastUpdatedOn = lastUpdatedOn; return this; } + + /** + * Gets the date and time the property was last updated. + * @return The date and time the property was last updated. + */ + public OffsetDateTime getLastUpdatedOnOffsetDateTime() { + return OffsetDateTime.parse(lastUpdatedOn); + } } diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/samples/java/com/azure/digitaltwins/core/ComponentSyncSamples.java b/sdk/digitaltwins/azure-digitaltwins-core/src/samples/java/com/azure/digitaltwins/core/ComponentSyncSamples.java index b60698067d07..0604a806bd04 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/samples/java/com/azure/digitaltwins/core/ComponentSyncSamples.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/samples/java/com/azure/digitaltwins/core/ComponentSyncSamples.java @@ -145,6 +145,7 @@ public static void runComponentSample() throws JsonProcessingException { ConsoleLogger.print("Retrieved component for digital twin " + basicDigitalTwinId + " :"); for (String key : getComponentResponse.getContents().keySet()) { ConsoleLogger.print("\t" + key + " : " + getComponentResponse.getContents().get(key)); + ConsoleLogger.print("\t\tLast updated on: " + getComponentResponse.getMetadata().get(key).getLastUpdatedOnOffsetDateTime()); } // Clean up