in iothub/device/iot-device-client/src/main/java/com/microsoft/azure/sdk/iot/device/twin/TwinMetadata.java [149:178]
static TwinMetadata tryExtractFromMap(Object metadata) {
if (!(metadata instanceof Map)) {
return null;
}
String lastUpdated = null;
Integer lastUpdatedVersion = null;
String lastUpdatedBy = null;
String lastUpdatedByDigest = null;
for (Map.Entry<? extends String, Object> entry : ((Map<? extends String, Object>) metadata).entrySet()) {
String key = entry.getKey();
if (key.equals(LAST_UPDATE_TAG)) {
lastUpdated = (String) entry.getValue();
} else if (key.equals(LAST_UPDATE_VERSION_TAG)) {
if (!(entry.getValue() instanceof Number)) {
throw new IllegalArgumentException("Version in the metadata shall be a number");
}
lastUpdatedVersion = ((Number) entry.getValue()).intValue();
} else if (key.equals(TwinMetadata.LAST_UPDATED_BY)) {
lastUpdatedBy = entry.getValue().toString();
} else if (key.equals(TwinMetadata.LAST_UPDATED_BY_DIGEST)) {
lastUpdatedByDigest = entry.getValue().toString();
}
}
if ((lastUpdatedVersion != null) || !Tools.isNullOrEmpty(lastUpdated)) {
return new TwinMetadata(lastUpdated, lastUpdatedVersion, lastUpdatedBy, lastUpdatedByDigest);
}
return null;
}