static TwinMetadata tryExtractFromMap()

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;
    }